From aaab950f95cd4100d758b082e826d3b431b5031c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wojciech=20=C5=81ukasik?= Date: Tue, 9 Jun 2020 15:21:36 +0200 Subject: [PATCH] generowanie kodu --- __pycache__/agent.cpython-37.pyc | Bin 1960 -> 1994 bytes __pycache__/coder.cpython-37.pyc | Bin 0 -> 1784 bytes __pycache__/data.cpython-37.pyc | Bin 2311 -> 3121 bytes __pycache__/field.cpython-37.pyc | Bin 1606 -> 1625 bytes __pycache__/mcda.cpython-37.pyc | Bin 2370 -> 2651 bytes __pycache__/product.cpython-37.pyc | Bin 455 -> 964 bytes __pycache__/supply.cpython-37.pyc | Bin 1272 -> 2256 bytes agent.py | 2 + coder.py | 76 + environment.yml.orig | Bin 0 -> 4282 bytes field.py | 2 + img/codes/arial_bold.ttf | Bin 0 -> 780124 bytes img/shelf2.png | Bin 0 -> 691 bytes main.py | 52 +- product.py | 26 +- venv/Lib/site-packages/PIL/BdfFontFile.py | 112 + venv/Lib/site-packages/PIL/BlpImagePlugin.py | 420 ++ venv/Lib/site-packages/PIL/BmpImagePlugin.py | 380 ++ .../site-packages/PIL/BufrStubImagePlugin.py | 73 + venv/Lib/site-packages/PIL/ContainerIO.py | 118 + venv/Lib/site-packages/PIL/CurImagePlugin.py | 74 + venv/Lib/site-packages/PIL/DcxImagePlugin.py | 95 + venv/Lib/site-packages/PIL/DdsImagePlugin.py | 178 + venv/Lib/site-packages/PIL/EpsImagePlugin.py | 419 ++ venv/Lib/site-packages/PIL/ExifTags.py | 320 ++ .../site-packages/PIL/FitsStubImagePlugin.py | 76 + venv/Lib/site-packages/PIL/FliImagePlugin.py | 176 + venv/Lib/site-packages/PIL/FontFile.py | 114 + venv/Lib/site-packages/PIL/FpxImagePlugin.py | 242 ++ venv/Lib/site-packages/PIL/FtexImagePlugin.py | 106 + venv/Lib/site-packages/PIL/GbrImagePlugin.py | 96 + venv/Lib/site-packages/PIL/GdImageFile.py | 85 + venv/Lib/site-packages/PIL/GifImagePlugin.py | 885 +++++ .../Lib/site-packages/PIL/GimpGradientFile.py | 139 + venv/Lib/site-packages/PIL/GimpPaletteFile.py | 58 + .../site-packages/PIL/GribStubImagePlugin.py | 74 + .../site-packages/PIL/Hdf5StubImagePlugin.py | 73 + venv/Lib/site-packages/PIL/IcnsImagePlugin.py | 376 ++ venv/Lib/site-packages/PIL/IcoImagePlugin.py | 324 ++ venv/Lib/site-packages/PIL/ImImagePlugin.py | 377 ++ venv/Lib/site-packages/PIL/Image.py | 3417 +++++++++++++++++ venv/Lib/site-packages/PIL/ImageChops.py | 328 ++ venv/Lib/site-packages/PIL/ImageCms.py | 985 +++++ venv/Lib/site-packages/PIL/ImageColor.py | 300 ++ venv/Lib/site-packages/PIL/ImageDraw.py | 564 +++ venv/Lib/site-packages/PIL/ImageDraw2.py | 107 + venv/Lib/site-packages/PIL/ImageEnhance.py | 103 + venv/Lib/site-packages/PIL/ImageFile.py | 683 ++++ venv/Lib/site-packages/PIL/ImageFilter.py | 535 +++ venv/Lib/site-packages/PIL/ImageFont.py | 853 ++++ venv/Lib/site-packages/PIL/ImageGrab.py | 104 + venv/Lib/site-packages/PIL/ImageMath.py | 253 ++ venv/Lib/site-packages/PIL/ImageMode.py | 64 + venv/Lib/site-packages/PIL/ImageMorph.py | 245 ++ venv/Lib/site-packages/PIL/ImageOps.py | 551 +++ venv/Lib/site-packages/PIL/ImagePalette.py | 221 ++ venv/Lib/site-packages/PIL/ImagePath.py | 19 + venv/Lib/site-packages/PIL/ImageQt.py | 200 + venv/Lib/site-packages/PIL/ImageSequence.py | 75 + venv/Lib/site-packages/PIL/ImageShow.py | 207 + venv/Lib/site-packages/PIL/ImageStat.py | 147 + venv/Lib/site-packages/PIL/ImageTk.py | 300 ++ venv/Lib/site-packages/PIL/ImageTransform.py | 102 + venv/Lib/site-packages/PIL/ImageWin.py | 230 ++ venv/Lib/site-packages/PIL/ImtImagePlugin.py | 93 + venv/Lib/site-packages/PIL/IptcImagePlugin.py | 226 ++ .../site-packages/PIL/Jpeg2KImagePlugin.py | 314 ++ venv/Lib/site-packages/PIL/JpegImagePlugin.py | 807 ++++ venv/Lib/site-packages/PIL/JpegPresets.py | 247 ++ .../site-packages/PIL/McIdasImagePlugin.py | 75 + venv/Lib/site-packages/PIL/MicImagePlugin.py | 113 + venv/Lib/site-packages/PIL/MpegImagePlugin.py | 83 + venv/Lib/site-packages/PIL/MpoImagePlugin.py | 141 + venv/Lib/site-packages/PIL/MspImagePlugin.py | 193 + venv/Lib/site-packages/PIL/PSDraw.py | 237 ++ venv/Lib/site-packages/PIL/PaletteFile.py | 55 + venv/Lib/site-packages/PIL/PalmImagePlugin.py | 226 ++ venv/Lib/site-packages/PIL/PcdImagePlugin.py | 64 + venv/Lib/site-packages/PIL/PcfFontFile.py | 247 ++ venv/Lib/site-packages/PIL/PcxImagePlugin.py | 206 + venv/Lib/site-packages/PIL/PdfImagePlugin.py | 243 ++ venv/Lib/site-packages/PIL/PdfParser.py | 995 +++++ .../Lib/site-packages/PIL/PixarImagePlugin.py | 70 + venv/Lib/site-packages/PIL/PngImagePlugin.py | 1340 +++++++ venv/Lib/site-packages/PIL/PpmImagePlugin.py | 164 + venv/Lib/site-packages/PIL/PsdImagePlugin.py | 315 ++ venv/Lib/site-packages/PIL/PyAccess.py | 346 ++ venv/Lib/site-packages/PIL/SgiImagePlugin.py | 231 ++ .../site-packages/PIL/SpiderImagePlugin.py | 324 ++ venv/Lib/site-packages/PIL/SunImagePlugin.py | 136 + venv/Lib/site-packages/PIL/TarIO.py | 67 + venv/Lib/site-packages/PIL/TgaImagePlugin.py | 246 ++ venv/Lib/site-packages/PIL/TiffImagePlugin.py | 1916 +++++++++ venv/Lib/site-packages/PIL/TiffTags.py | 499 +++ venv/Lib/site-packages/PIL/WalImageFile.py | 123 + venv/Lib/site-packages/PIL/WebPImagePlugin.py | 360 ++ venv/Lib/site-packages/PIL/WmfImagePlugin.py | 175 + .../site-packages/PIL/XVThumbImagePlugin.py | 78 + venv/Lib/site-packages/PIL/XbmImagePlugin.py | 94 + venv/Lib/site-packages/PIL/XpmImagePlugin.py | 130 + venv/Lib/site-packages/PIL/__init__.py | 135 + venv/Lib/site-packages/PIL/__main__.py | 3 + .../__pycache__/BdfFontFile.cpython-37.pyc | Bin 0 -> 2354 bytes .../__pycache__/BlpImagePlugin.cpython-37.pyc | Bin 0 -> 10459 bytes .../__pycache__/BmpImagePlugin.cpython-37.pyc | Bin 0 -> 7119 bytes .../BufrStubImagePlugin.cpython-37.pyc | Bin 0 -> 1618 bytes .../__pycache__/ContainerIO.cpython-37.pyc | Bin 0 -> 2678 bytes .../__pycache__/CurImagePlugin.cpython-37.pyc | Bin 0 -> 1352 bytes .../__pycache__/DcxImagePlugin.cpython-37.pyc | Bin 0 -> 2026 bytes .../__pycache__/DdsImagePlugin.cpython-37.pyc | Bin 0 -> 4437 bytes .../__pycache__/EpsImagePlugin.cpython-37.pyc | Bin 0 -> 7459 bytes .../PIL/__pycache__/ExifTags.cpython-37.pyc | Bin 0 -> 7479 bytes .../FitsStubImagePlugin.cpython-37.pyc | Bin 0 -> 1606 bytes .../__pycache__/FliImagePlugin.cpython-37.pyc | Bin 0 -> 3950 bytes .../PIL/__pycache__/FontFile.cpython-37.pyc | Bin 0 -> 2189 bytes .../__pycache__/FpxImagePlugin.cpython-37.pyc | Bin 0 -> 3605 bytes .../FtexImagePlugin.cpython-37.pyc | Bin 0 -> 3453 bytes .../__pycache__/GbrImagePlugin.cpython-37.pyc | Bin 0 -> 1843 bytes .../__pycache__/GdImageFile.cpython-37.pyc | Bin 0 -> 1732 bytes .../__pycache__/GifImagePlugin.cpython-37.pyc | Bin 0 -> 16467 bytes .../GimpGradientFile.cpython-37.pyc | Bin 0 -> 3046 bytes .../GimpPaletteFile.cpython-37.pyc | Bin 0 -> 1310 bytes .../GribStubImagePlugin.cpython-37.pyc | Bin 0 -> 1660 bytes .../Hdf5StubImagePlugin.cpython-37.pyc | Bin 0 -> 1606 bytes .../IcnsImagePlugin.cpython-37.pyc | Bin 0 -> 9124 bytes .../__pycache__/IcoImagePlugin.cpython-37.pyc | Bin 0 -> 7049 bytes .../__pycache__/ImImagePlugin.cpython-37.pyc | Bin 0 -> 6756 bytes .../PIL/__pycache__/Image.cpython-37.pyc | Bin 0 -> 91272 bytes .../PIL/__pycache__/ImageChops.cpython-37.pyc | Bin 0 -> 8083 bytes .../PIL/__pycache__/ImageCms.cpython-37.pyc | Bin 0 -> 31362 bytes .../PIL/__pycache__/ImageColor.cpython-37.pyc | Bin 0 -> 6379 bytes .../PIL/__pycache__/ImageDraw.cpython-37.pyc | Bin 0 -> 12530 bytes .../PIL/__pycache__/ImageDraw2.cpython-37.pyc | Bin 0 -> 3746 bytes .../__pycache__/ImageEnhance.cpython-37.pyc | Bin 0 -> 3537 bytes .../PIL/__pycache__/ImageFile.cpython-37.pyc | Bin 0 -> 13927 bytes .../__pycache__/ImageFilter.cpython-37.pyc | Bin 0 -> 16541 bytes .../PIL/__pycache__/ImageFont.cpython-37.pyc | Bin 0 -> 32656 bytes .../PIL/__pycache__/ImageGrab.cpython-37.pyc | Bin 0 -> 2090 bytes .../PIL/__pycache__/ImageMath.cpython-37.pyc | Bin 0 -> 8103 bytes .../PIL/__pycache__/ImageMode.cpython-37.pyc | Bin 0 -> 1265 bytes .../PIL/__pycache__/ImageMorph.cpython-37.pyc | Bin 0 -> 7352 bytes .../PIL/__pycache__/ImageOps.cpython-37.pyc | Bin 0 -> 14436 bytes .../__pycache__/ImagePalette.cpython-37.pyc | Bin 0 -> 5489 bytes .../PIL/__pycache__/ImagePath.cpython-37.pyc | Bin 0 -> 221 bytes .../PIL/__pycache__/ImageQt.cpython-37.pyc | Bin 0 -> 4170 bytes .../__pycache__/ImageSequence.cpython-37.pyc | Bin 0 -> 2254 bytes .../PIL/__pycache__/ImageShow.cpython-37.pyc | Bin 0 -> 5729 bytes .../PIL/__pycache__/ImageStat.cpython-37.pyc | Bin 0 -> 3707 bytes .../PIL/__pycache__/ImageTk.cpython-37.pyc | Bin 0 -> 7736 bytes .../__pycache__/ImageTransform.cpython-37.pyc | Bin 0 -> 3472 bytes .../PIL/__pycache__/ImageWin.cpython-37.pyc | Bin 0 -> 8043 bytes .../__pycache__/ImtImagePlugin.cpython-37.pyc | Bin 0 -> 1219 bytes .../IptcImagePlugin.cpython-37.pyc | Bin 0 -> 4259 bytes .../Jpeg2KImagePlugin.cpython-37.pyc | Bin 0 -> 5869 bytes .../JpegImagePlugin.cpython-37.pyc | Bin 0 -> 16766 bytes .../__pycache__/JpegPresets.cpython-37.pyc | Bin 0 -> 5292 bytes .../McIdasImagePlugin.cpython-37.pyc | Bin 0 -> 1337 bytes .../__pycache__/MicImagePlugin.cpython-37.pyc | Bin 0 -> 2272 bytes .../MpegImagePlugin.cpython-37.pyc | Bin 0 -> 1905 bytes .../__pycache__/MpoImagePlugin.cpython-37.pyc | Bin 0 -> 3672 bytes .../__pycache__/MspImagePlugin.cpython-37.pyc | Bin 0 -> 3081 bytes .../PIL/__pycache__/PSDraw.cpython-37.pyc | Bin 0 -> 5776 bytes .../__pycache__/PaletteFile.cpython-37.pyc | Bin 0 -> 1274 bytes .../PalmImagePlugin.cpython-37.pyc | Bin 0 -> 7001 bytes .../__pycache__/PcdImagePlugin.cpython-37.pyc | Bin 0 -> 1187 bytes .../__pycache__/PcfFontFile.cpython-37.pyc | Bin 0 -> 5136 bytes .../__pycache__/PcxImagePlugin.cpython-37.pyc | Bin 0 -> 3546 bytes .../__pycache__/PdfImagePlugin.cpython-37.pyc | Bin 0 -> 3663 bytes .../PIL/__pycache__/PdfParser.cpython-37.pyc | Bin 0 -> 26107 bytes .../PixarImagePlugin.cpython-37.pyc | Bin 0 -> 1157 bytes .../__pycache__/PngImagePlugin.cpython-37.pyc | Bin 0 -> 28515 bytes .../__pycache__/PpmImagePlugin.cpython-37.pyc | Bin 0 -> 3011 bytes .../__pycache__/PsdImagePlugin.cpython-37.pyc | Bin 0 -> 5206 bytes .../PIL/__pycache__/PyAccess.cpython-37.pyc | Bin 0 -> 11070 bytes .../__pycache__/SgiImagePlugin.cpython-37.pyc | Bin 0 -> 3954 bytes .../SpiderImagePlugin.cpython-37.pyc | Bin 0 -> 6541 bytes .../__pycache__/SunImagePlugin.cpython-37.pyc | Bin 0 -> 1921 bytes .../PIL/__pycache__/TarIO.cpython-37.pyc | Bin 0 -> 1439 bytes .../__pycache__/TgaImagePlugin.cpython-37.pyc | Bin 0 -> 3701 bytes .../TiffImagePlugin.cpython-37.pyc | Bin 0 -> 46038 bytes .../PIL/__pycache__/TiffTags.cpython-37.pyc | Bin 0 -> 9408 bytes .../__pycache__/WalImageFile.cpython-37.pyc | Bin 0 -> 2086 bytes .../WebPImagePlugin.cpython-37.pyc | Bin 0 -> 7332 bytes .../__pycache__/WmfImagePlugin.cpython-37.pyc | Bin 0 -> 3418 bytes .../XVThumbImagePlugin.cpython-37.pyc | Bin 0 -> 1432 bytes .../__pycache__/XbmImagePlugin.cpython-37.pyc | Bin 0 -> 2017 bytes .../__pycache__/XpmImagePlugin.cpython-37.pyc | Bin 0 -> 2237 bytes .../PIL/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 3794 bytes .../PIL/__pycache__/__main__.cpython-37.pyc | Bin 0 -> 210 bytes .../PIL/__pycache__/_binary.cpython-37.pyc | Bin 0 -> 2387 bytes .../_tkinter_finder.cpython-37.pyc | Bin 0 -> 486 bytes .../PIL/__pycache__/_util.cpython-37.pyc | Bin 0 -> 1101 bytes .../PIL/__pycache__/_version.cpython-37.pyc | Bin 0 -> 183 bytes .../PIL/__pycache__/features.cpython-37.pyc | Bin 0 -> 4618 bytes venv/Lib/site-packages/PIL/_binary.py | 88 + .../site-packages/PIL/_imaging.cp37-win32.pyd | Bin 0 -> 2208768 bytes .../PIL/_imagingcms.cp37-win32.pyd | Bin 0 -> 190976 bytes .../PIL/_imagingft.cp37-win32.pyd | Bin 0 -> 503808 bytes .../PIL/_imagingmath.cp37-win32.pyd | Bin 0 -> 17408 bytes .../PIL/_imagingmorph.cp37-win32.pyd | Bin 0 -> 10240 bytes .../PIL/_imagingtk.cp37-win32.pyd | Bin 0 -> 12288 bytes venv/Lib/site-packages/PIL/_tkinter_finder.py | 16 + venv/Lib/site-packages/PIL/_util.py | 30 + venv/Lib/site-packages/PIL/_version.py | 2 + .../site-packages/PIL/_webp.cp37-win32.pyd | Bin 0 -> 440320 bytes venv/Lib/site-packages/PIL/features.py | 173 + .../Pillow-7.1.2.dist-info/INSTALLER | 1 + .../Pillow-7.1.2.dist-info/LICENSE | 30 + .../Pillow-7.1.2.dist-info/METADATA | 135 + .../Pillow-7.1.2.dist-info/RECORD | 198 + .../Pillow-7.1.2.dist-info/WHEEL | 5 + .../Pillow-7.1.2.dist-info/top_level.txt | 1 + .../Pillow-7.1.2.dist-info/zip-safe | 1 + 213 files changed, 28117 insertions(+), 21 deletions(-) create mode 100644 __pycache__/coder.cpython-37.pyc create mode 100644 coder.py create mode 100644 environment.yml.orig create mode 100644 img/codes/arial_bold.ttf create mode 100644 img/shelf2.png create mode 100644 venv/Lib/site-packages/PIL/BdfFontFile.py create mode 100644 venv/Lib/site-packages/PIL/BlpImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/BmpImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/BufrStubImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/ContainerIO.py create mode 100644 venv/Lib/site-packages/PIL/CurImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/DcxImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/DdsImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/EpsImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/ExifTags.py create mode 100644 venv/Lib/site-packages/PIL/FitsStubImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/FliImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/FontFile.py create mode 100644 venv/Lib/site-packages/PIL/FpxImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/FtexImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/GbrImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/GdImageFile.py create mode 100644 venv/Lib/site-packages/PIL/GifImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/GimpGradientFile.py create mode 100644 venv/Lib/site-packages/PIL/GimpPaletteFile.py create mode 100644 venv/Lib/site-packages/PIL/GribStubImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/Hdf5StubImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/IcnsImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/IcoImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/ImImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/Image.py create mode 100644 venv/Lib/site-packages/PIL/ImageChops.py create mode 100644 venv/Lib/site-packages/PIL/ImageCms.py create mode 100644 venv/Lib/site-packages/PIL/ImageColor.py create mode 100644 venv/Lib/site-packages/PIL/ImageDraw.py create mode 100644 venv/Lib/site-packages/PIL/ImageDraw2.py create mode 100644 venv/Lib/site-packages/PIL/ImageEnhance.py create mode 100644 venv/Lib/site-packages/PIL/ImageFile.py create mode 100644 venv/Lib/site-packages/PIL/ImageFilter.py create mode 100644 venv/Lib/site-packages/PIL/ImageFont.py create mode 100644 venv/Lib/site-packages/PIL/ImageGrab.py create mode 100644 venv/Lib/site-packages/PIL/ImageMath.py create mode 100644 venv/Lib/site-packages/PIL/ImageMode.py create mode 100644 venv/Lib/site-packages/PIL/ImageMorph.py create mode 100644 venv/Lib/site-packages/PIL/ImageOps.py create mode 100644 venv/Lib/site-packages/PIL/ImagePalette.py create mode 100644 venv/Lib/site-packages/PIL/ImagePath.py create mode 100644 venv/Lib/site-packages/PIL/ImageQt.py create mode 100644 venv/Lib/site-packages/PIL/ImageSequence.py create mode 100644 venv/Lib/site-packages/PIL/ImageShow.py create mode 100644 venv/Lib/site-packages/PIL/ImageStat.py create mode 100644 venv/Lib/site-packages/PIL/ImageTk.py create mode 100644 venv/Lib/site-packages/PIL/ImageTransform.py create mode 100644 venv/Lib/site-packages/PIL/ImageWin.py create mode 100644 venv/Lib/site-packages/PIL/ImtImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/IptcImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/Jpeg2KImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/JpegImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/JpegPresets.py create mode 100644 venv/Lib/site-packages/PIL/McIdasImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/MicImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/MpegImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/MpoImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/MspImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/PSDraw.py create mode 100644 venv/Lib/site-packages/PIL/PaletteFile.py create mode 100644 venv/Lib/site-packages/PIL/PalmImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/PcdImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/PcfFontFile.py create mode 100644 venv/Lib/site-packages/PIL/PcxImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/PdfImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/PdfParser.py create mode 100644 venv/Lib/site-packages/PIL/PixarImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/PngImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/PpmImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/PsdImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/PyAccess.py create mode 100644 venv/Lib/site-packages/PIL/SgiImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/SpiderImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/SunImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/TarIO.py create mode 100644 venv/Lib/site-packages/PIL/TgaImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/TiffImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/TiffTags.py create mode 100644 venv/Lib/site-packages/PIL/WalImageFile.py create mode 100644 venv/Lib/site-packages/PIL/WebPImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/WmfImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/XVThumbImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/XbmImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/XpmImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/__init__.py create mode 100644 venv/Lib/site-packages/PIL/__main__.py create mode 100644 venv/Lib/site-packages/PIL/__pycache__/BdfFontFile.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/BlpImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/BmpImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/BufrStubImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ContainerIO.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/CurImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/DcxImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/DdsImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/EpsImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ExifTags.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/FitsStubImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/FliImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/FontFile.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/FpxImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/FtexImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/GbrImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/GdImageFile.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/GifImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/GimpGradientFile.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/GimpPaletteFile.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/GribStubImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/Hdf5StubImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/IcnsImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/IcoImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/Image.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImageChops.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImageCms.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImageColor.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImageDraw.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImageDraw2.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImageEnhance.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImageFile.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImageFilter.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImageFont.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImageGrab.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImageMath.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImageMode.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImageMorph.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImageOps.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImagePalette.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImagePath.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImageQt.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImageSequence.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImageShow.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImageStat.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImageTk.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImageTransform.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImageWin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/ImtImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/IptcImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/Jpeg2KImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/JpegImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/JpegPresets.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/McIdasImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/MicImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/MpegImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/MpoImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/MspImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/PSDraw.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/PaletteFile.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/PalmImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/PcdImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/PcfFontFile.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/PcxImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/PdfImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/PdfParser.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/PixarImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/PngImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/PpmImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/PsdImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/PyAccess.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/SgiImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/SpiderImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/SunImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/TarIO.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/TgaImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/TiffImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/TiffTags.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/WalImageFile.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/WebPImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/WmfImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/XVThumbImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/XbmImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/XpmImagePlugin.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/__init__.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/__main__.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/_binary.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/_tkinter_finder.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/_util.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/_version.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/__pycache__/features.cpython-37.pyc create mode 100644 venv/Lib/site-packages/PIL/_binary.py create mode 100644 venv/Lib/site-packages/PIL/_imaging.cp37-win32.pyd create mode 100644 venv/Lib/site-packages/PIL/_imagingcms.cp37-win32.pyd create mode 100644 venv/Lib/site-packages/PIL/_imagingft.cp37-win32.pyd create mode 100644 venv/Lib/site-packages/PIL/_imagingmath.cp37-win32.pyd create mode 100644 venv/Lib/site-packages/PIL/_imagingmorph.cp37-win32.pyd create mode 100644 venv/Lib/site-packages/PIL/_imagingtk.cp37-win32.pyd create mode 100644 venv/Lib/site-packages/PIL/_tkinter_finder.py create mode 100644 venv/Lib/site-packages/PIL/_util.py create mode 100644 venv/Lib/site-packages/PIL/_version.py create mode 100644 venv/Lib/site-packages/PIL/_webp.cp37-win32.pyd create mode 100644 venv/Lib/site-packages/PIL/features.py create mode 100644 venv/Lib/site-packages/Pillow-7.1.2.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/Pillow-7.1.2.dist-info/LICENSE create mode 100644 venv/Lib/site-packages/Pillow-7.1.2.dist-info/METADATA create mode 100644 venv/Lib/site-packages/Pillow-7.1.2.dist-info/RECORD create mode 100644 venv/Lib/site-packages/Pillow-7.1.2.dist-info/WHEEL create mode 100644 venv/Lib/site-packages/Pillow-7.1.2.dist-info/top_level.txt create mode 100644 venv/Lib/site-packages/Pillow-7.1.2.dist-info/zip-safe diff --git a/__pycache__/agent.cpython-37.pyc b/__pycache__/agent.cpython-37.pyc index ff5fefdee584f627e4f1677380611d63b7ffa562..734f2302e2e92c9beedfb010895ade028197d30e 100644 GIT binary patch delta 530 zcmZ3%e~O>iiI#Uc2&m&_3XrH`$;?gHuVT?F$V+$Aj1ra2y)0W8t-xBDLAqFggxgC-gegE) z<~E=d*knzPA`XxgJBVNd61OH-vq>5V0a=<%MIgIwu_omw7Nwwjh$lC{EHyqYzo;B2 zsXzG$TUweJ$P7^66v=`JIS`=)A`oE#W`P2vhzUr5oK_5qRSqT&0S;ykZVqm+IM8Np Nm>LYtlP9oC004emX#xNM delta 498 zcmX@bzk;9FiI_3fDj<1x7d<$GD~t(MJDfJx-5@P0cS~RQC@sbYFdf- z;uV>l9Xa&~F4AR8{B-~yy zB1{3YGPePxz$R;Q6mfv0*g*svkcgT*mrc?@5XjPGDgxPci!~`fu_y)ILp-_pWvTIL z`9$WkRrcv@=pgO~W)*8zN>LtTRpb)@U?HQmrn_(->O z8@{gRHoSO#iq*VW+2CH8_A^^|?hd5~XYh;R!1M$U!pB~reU4ULfti5EzDG-18sNub z+1v1DXagLvzUodj##zycg;kXyIKND*>KBjd==kH!JD+TBn6b{&%?C8x%X+5TymkNT zT4$}Z*&FJNRz`=m&S;CL@ti7z@kAtAlA1v0==lgZdJ6!?GlD5Df!bpMI1FLB8NpdX z!mbUfGA#-#R&7{jIvA>ZjvtlBc};^+$CMW z3Go2@-qNAtS_AIr$l*Hh4c&0K34B+#9Bu=D!-a#n^T6Nf1&1#I7kbg*mw+GXrL*&1 z#(B4kw6||%XVv=sVWEN6Y&aUzsK|iVF@S~#1HkLn-!8@+eBTBKySd2{+4;aK$~3@- zHXKqq=yUKR8y;pwF+2eN*oIYJJj^JOtDUD=40^+2NEhF!>w1mz_$~}rlFQ?NczOq8 zFTVMk==nccc2A|*wRJ-MB;1r9xrg^1NS zb}URZ!Fb`B`d&i|mMHB%QOD9WPg)asDvp(DpUi29)u}x8Cu(nA*Ct}(vuHi>A!-e* zwXp2zCRPh3^5oJaIK_Gsyr;O;P1M(4-i~G7!6TfGz>u!M#Dd<2J6iu2ZOO~N)0b*9 zr93URwo#ZX#_UYL;sxaNbvWuUR>ZRR+{DuQJ5WW~yeN(uSm_!|MRo1SUl|Sh@uI5~ zN5SQj-sAbKR1~pc1)(;K6P|$~RuHQO*#Rk_#Ao>>7P2HVG|tT7D6_uF9%0KtS^`(; z!z>PMZA3#o?imz^p?uJXo|SzobfR{c-Y7M@e}4e29%ZS?wsKbcTiBvngz@AWihn^g zL`y7+Ie7XM(Qe#G)PsBX9YM#yloq~mDc3LhRH|Z}svRIST(&$DBrbYG{r?P6n PEJaZ*@}qjR9JT)h2L^g} literal 0 HcmV?d00001 diff --git a/__pycache__/data.cpython-37.pyc b/__pycache__/data.cpython-37.pyc index 6a5342b6eab0c12bcd9593d65d2afad5959ebe26..98d830a12131fc5faf60053150ecb43fe22772c7 100644 GIT binary patch delta 903 zcmX|<%}*0S7{=Su!Umxf1tA{H5))DqKN7!UG(l)92&Gs>sIH0*J3~9{(8bwZNhc&V z#>9)a>dB*CJR%-FX}I_&c+i8Vjemj{pJ}&lGPA$;dFOrKXD9pW=>B*%H#pcI!}GlQ zb3HQ>i~ZI?_qhz1!SePJ`&ldAq#2r`({zAducqj+h-bhP;3Lpy!8vdqT!_xx0MCKb z(C5K7BYgq92rklox&$tPPvOi69i_|Q33`i`X&=1})^qRB<^WxZ4&6n;YWq-%UPQqf zIEhA6&?}Ly8{LceKG*{50S~|r!P=;3A$=^=&Y* z#(l!~5UG*Ql(J7e&dicvwsKs)s8eGdSF>V=ZFx>R+w7z#+kFa5aC?hcy&f0OnB?QS zC|x1Da9!edjR=RU(V`?yfO50UeD0e$7D&mg9#*Y}_={j5a=Xl#x8qX9N!=mgXPp|F zBimf?tvWL+WK*#4PZM%*92=G9Jd;FHvn(5RyHO^GFB~46Kx&zJzWDah%=0=oOV~U! zM|`)=ogj^L(Ul&N$}C87_=N=qr1@_LQkxCO5vX+c`rM%I%SLz>qLsXm<9;x<3hwsD z`)R?mobTDBr?f=kO2@m delta 133 zcmdle(JrLn#LLUY00bMv?!|5AV_mb zkgrv#hR3#Sd@aUkT)?UB|a}TGd&|Izo=Mi@&%S$ zCq+1Rvw}eqCX?$~T{7iBx)eZ! zDu~bk5eR33Ss=F-F#`!UAT9>^l7opuo`ac#3oHtBga}B5I*0%{2P}$V$YdQhNk$d` D(_~qP delta 393 zcmcb~bBu@AiI_9ceYLk~UDNR1j6rmvkP6927@GwCQo8@$&>{-K^{b?fCzOEfp8X>1#(*vGmu~f;$jXU!NJ5K$HC0O c1s2t0DG~;$Py-Q6AOfTo!;s1LY?6%30Q~Au=l}o! diff --git a/__pycache__/mcda.cpython-37.pyc b/__pycache__/mcda.cpython-37.pyc index a51297a23ec784757ab4f8f2d3f374ac4308af95..4355183d984b7477d1c6bce76c81970824daef33 100644 GIT binary patch literal 2651 zcma)8-EJH;6t-tPv$LB`8q$;`{Yl%DmQ0~lD5xzZ&?GHTBotLj)uL4>nyg2gO=kZ* zv&{x(uEGQG0J#V^NW1_q!kuqG;-)Kc!6mAY;5(jVn?zLVtbC4rY#;l4=f}G=JX~V< zdf)x_^w% zGb6iB#YWG}WKwtN%43DcXDQ_xAWllT=)@AR&yxbloV zi(LhIPELb+^1QqNUX&N*40uUil5c?z$;&IuztYEDna?%9+8;%)Pv-Su8S58_j1U(E~>DaU={R;HtBZbPB&1{un{P2hqan-YbS05QKa2QDC^yZ zw%6*lD#w2Mh+Am)(BcJtDl*=jF}fR_wTH(Bwbk#Rv)U?226`r7r(rA zWA4V>YNINH>+Nk_q`i*=fJG3*ggfJwWSqi%n|rG8bs$T-|`IN|w+^kw-R~t3JR{l4q8*GCN_?o?@9ug%nc^)G^eZ zf@K!VoXpJ%sg>}=f@`fQ2F{76Zd%w8sWZ-QvCM)=4mfEmyp}c_+Hh_HP>8=$oA+AU zM9Ow}B2vD?U#Y41TACc(3kW0*?nOxauazn6Jx5lP`%26EadY6pIl!#05_##p_h>i> zAm7!ccA$brn1m`ej#6fqSw=x?;>`CnU(|f5GE{x(=}IY&-f!Y=qf#7b(R}OBamRw? z6oO?jiXLsZ!$UDc=@`#~Fhq>7JbsqXaPJ78J~CFfu(nDY=%e5-pqYqD(5bPE^)?bl zv9beC+-F}`GEQ;UyLm)*<$D)Yp%sxRX<+>!&#o*2M zL~8xWIqQsJmI@4#$K(xV5K5qvS4lexn|cU!4wXZ8Q8~=jwHvhCVN)Wr`900+npZX7 zIG$NkM>7k!9Vqz_XT(&s0GKrf(8joj-f2F{N4Q#md;kumnuBJ*@$z(I3Er}d116Jr zy}weV-lq70D;kT`mKGqnF6~V85;8oo_hFQovp@S36@}82rwGnXruI@N6PN*8xoT?8=wfAJaD?Pt&PyQT{Ijsa5L#u`O{t2;zK z0`c97+w3;hLZ#+0)Lwhvxp?hV_)Oc4pr`KA>SN(QTwQO);ei)F$BOtS2!*{%p>Iki zJZbzn3YiCwy8Hrp7qYVPuV;K+=IT@I9QfJBfJ&?JbA*oZF{J|UEfA7am`p0npx Yc$RCjt!#N-{>qQqUco!#jd;`l0Y>8^QUCw| delta 1190 zcmY*YOHUL*5bo~j8HRoE2Ib-M5@CD*iKu8$5eafIgai%A7$nQq1aud6=@}H`Y?fp_ zc++G&7{dYY-uwX?^jC~WPwOx6rd6{7Yft*?udBYQuA1rj(RSEUnn@;O49Az--ygq; zGxn15%6G7T*NFjh#b^rquE%2i|JjG`hLm5N1N&@Z>2B%mUW&T{qpd?NU&f8ayGBcm7jOQS1Z zt2i*GN;fegLk-X{aMIhki_`5utH;W$$k$m>0557j^SCFy z^h;j@o)zi_h@#x}JgurO^I5h6Mg5=msn31c$q@BUmMt;$$=8c=d)}8(@N0Bv$8LG- ztqo#oz8YTDW@#VgSZ2N~YP*a79X*Xl*G3EV+ZPAY6I4LyBj?N`0dC63u_JAg6=@aN z%i$v1K3rzoean$5QefwnT&VoPQT_CE2`od=t5jDBt`S@zm_!Kmf_k#$S%z(F?QE_& zN?j+bSx|YH-N|@vC=1GY7HXU6T{T5fH6MwT$;?LHbrw-h>U(H%DKFy&m-r-tcV>U7 zi8t^BH}Q$#RP+fKtb}d2JB32-h254>PTF%;A?>AC>10Y(E%fA0r7%cE7i*kYbmJz7 xMXgcFn$n^o2hbLpQ=9n_*vUD!=pwoFlbOO09aNDp%@|e`<4u}bXLg$ne*q^(_{IPL diff --git a/__pycache__/product.cpython-37.pyc b/__pycache__/product.cpython-37.pyc index c5d2555af12938ca13d899404e7bb12fa59a4007..02a046d2cdcca60a31cae6ca7a5406dc63499efd 100644 GIT binary patch literal 964 zcmb7CKX2499QB|4Yq@KY3K9ciL*k@TRUIpYu7H36RiH`?(FrTW<_IKrhm#w6%GR>5 zAie=B-+-Bq;e~+-!3qNt@0VQA4efv>H7;Nlb?5 zP{PJZoGtMiLvUFaVEzH2jXz~}T+s^FRMM`CptWt^!lo5dOpm`P-m%p&nZ6QtAKS>Islv`J- zz%S-B?skAL47z5nuSYdDC`O38WTmGfsdON}MrPG-e;5Lk-ftP^&N7AV>l8bitH zP4w~#pbHN1iD;!SF0VSanx^gHl-liIk< Ui^C>2KczG$)efZVGY~TX06K#k6aWAK diff --git a/__pycache__/supply.cpython-37.pyc b/__pycache__/supply.cpython-37.pyc index fb3c123dd040b474f2f7ab4b29cd70110759f0f2..85be24534613df8a1265051dd4032e2f23189c42 100644 GIT binary patch literal 2256 zcmds3$!^p@5bgFh!(=5HAYos^GLVE24oCgsaW+!`9H3A$dlK0m9D3-JY= z-joO2$WDV7HzpGC7zwwS#*@Eyfb9{~T1IpW_A0+*d z8fN$rHCm$I%kVzg8D;E%=j_*rA7k|32N-_5#D2ZRKGwC5i4W}TXZ){Id=4=4PLQ7S z2lhGtvEIp&d3pYzI#i-R%=lST2h|Zq5B?~_*NH#ItV@>g6D2(Mao~8wnajfy z#Gfp&bBf`S&r=MKc~3L^8QRCQ3}2QfA@gl<`&T}PkIL+wc=dpj+)faTgU0SgIN*p%V>>i_=S=edC zI=@WEn)TCm7{}IYbz^0{ge18F@2*5G8zeoG#G2kU-StjBg8^?P?&*9Uk3n0jsMoeZ z`l1&ao#WiiPXVrA*k6AhW!kz%t2_le0=SEzpliqnoxeiIT@6k2ln&c`lDg41N$`mv z{|^1zLcgKoxVs)rW2_Ij2RK7Ovq$kuZK4TuT-|Erb-ec;@D(rtm<3z}90lwrXgCHZ zybZ!6(H+%r>;Q%0R~1NYCHYwo-U)-3zfaw{y7VaPsVH0`%_@a4UAlRHW`1sdZYk|0 zNxU(eY}k6!=rGgED$K&=Ulvjnk@O>hke)LvYw|y6j+vwN{Hc{x9R*rZD<9KCCbp_(C((B&1$r+= zpAbWt>@65%n4!%U`6YrzP&i`USa)ndX{EYtTfsf*WY%wXd!5W&fY3A3bhGjyrA)D3 ziymaf?*0Vihe7Uksik8CLI%>K->@7kHf>B6;|<^7V<_^+;5#aOD2DzrhqN)UX{*=T T^xq=Z*Wq>=5DdzyTV4GDUy$gR delta 198 zcmca0_=A(riINCIRH7Fr+Z%Fyt~uF)}iwFr_fJFhnt>umm$` zvc3c<)?~cJ9#E8@Qkq`CuV9*3tGKbPm5Hr}0jNu1vL)-z$-Zn_ zj7pO$*zDO@Kx#@R?`11rH+*=$rxj;*EQtcRl Kykd}A9%cYhmL+ch diff --git a/agent.py b/agent.py index 01ebf4e..7d3db93 100644 --- a/agent.py +++ b/agent.py @@ -14,6 +14,8 @@ class Agent: self.image = pygame.image.load('img/' + turn + '.png') self.rect = self.image.get_rect() self.screen_rect = screen.get_rect() + self.item = None + self.is_busy = False self.rect.center = (position_x, position_y) diff --git a/coder.py b/coder.py new file mode 100644 index 0000000..733e5a7 --- /dev/null +++ b/coder.py @@ -0,0 +1,76 @@ +from PIL import Image, ImageDraw, ImageFont +# img = Image.new('RGB', (504, 112), color='white') +# d = ImageDraw.Draw(img) +# fnt = ImageFont.truetype('D:\Studia\Projects\AL-2020\img\codes\\arial_bold.ttf', 75) +# d.text((30, 30), "10010101249", font=fnt, fill=(0, 0, 0)) +# img.save('img/codes/test.png') + + +def code_mass(mass): + if mass < 100: + return '0' + str(mass) + else: + return str(mass) + + +def code_price(price): + return str(int(price * 100)) + + +def code_size(size): + if size == 'small': + return '1' + elif size == 'medium': + return '2' + else: + return '3' + + +def code_color(color): + if color == 'black': + return '01' + if color == 'gold': + return '02' + if color == 'purple': + return '03' + if color == 'brown': + return '04' + if color == 'blue': + return '05' + if color == 'white': + return '06' + if color == 'red': + return '07' + if color == 'orange': + return '08' + if color == 'yellow': + return '09' + if color == 'silver': + return '10' + + +def code_shape(shape): + if shape == 'rectangle': + return '01' + if shape == 'pack': + return '02' + if shape == 'square': + return '03' + if shape == 'jar': + return '04' + if shape == 'egg': + return '05' + + +def create_image(product): + string = code_color(product.color) + code_shape(product.shape) + code_mass(product.mass) + \ + code_shape(product.shape) + code_price(product.price) + print(string) + img = Image.new('RGB', (560, 112), color='white') + d = ImageDraw.Draw(img) + fnt = ImageFont.truetype('D:\Studia\Projects\AL-2020\img\codes\\arial_bold.ttf', 75) + d.text((30, 30), string, font=fnt, fill=(0, 0, 0)) + path = 'img/codes/' + product.name + '.png' + img.save(path) + return path + diff --git a/environment.yml.orig b/environment.yml.orig new file mode 100644 index 0000000000000000000000000000000000000000..2d49dc683da9d324797e86b05a9a69e6764a5888 GIT binary patch literal 4282 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 z

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%0DY~$7p}272wabWZbjZ&_^a7PqMFJK6 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

a!vBc6Jj7)nd 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ҭ$3{5ackJola))rnGZ~`DAxSC=f^pyp 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 wb2tUM}FGf!Pk(R6bX~)j)NnZ z$Z;lN8M|NE9dsQG;v1QImQoin`t;!dP?6+Ay;3H-F+CeV31ae>~d-!(#t9EmglHiCNZY^ zLPc^P$RVSh%(!acoPM>O4H%fN262-23$l4V*fRV0)#%$QDzU{y?OK9n@i^k62SQ_)2K$(H=myOc$om!7)2 zts~!(oRI&<^-DWkcDEU2P(ff9fYvwYxHaSST8-K{c}cKfy3tz@%9z-&WI0gF<{KWk zVM(^h?_%>oEB!cxkDZ_|QVx{+vd50^jD6vwHjMp0=uhj!ZDV(OEV4(EJd)k!GawC4 z;kBOK;dh|vBuw?ce?m)c;Hjlh&8hLiz=Up$1A1tG3Re% zOv=jGAx)A_S5xpoH)iFQhG5Lq)Y$9JK{#wRBb-68MtXdmv8G0s63O`rAa>V2Uk|=X zIeaM;5H$LV{sE^zP(DtxM)O{SDTAY+|A5fNG^H^SET?B;?PvDwi%&hNWgxjQdfBP! zrKMDIpyj0Lmt3mOyd=uyld|1YPU>o(GV;sGx$H?(+Ph9NoIB&v_y8JBnQ`f*qsf8z zr8A~4xMb#(mdmoIOzG~NI<2F7$|>27X;TTmGl1Xc#acsBRzFj9v^Sz&z18Zn!G8y=xbV`! zo|kBEao=NKwP#rmJhMFTz(k_p$6Ke&%K8>9vL-HAWY{=o;vDOp>@(lAFE0|!ehR$( zesP`~pT#MbxIyRb1S-*su$B8uzjD)#15XeUHNqY4Ei|4;toc~A19Dh2K`rT#2 z-DSaHsa3bETiJ($;0y>bzr7 z;0k8eQV*!{j?;>JOpGKb)kLu} z6g0DmQYx4f3#veiq#X_61UyJ{sP-pIvSB;Yn&x)xCZnkzWr$(20zcJFR3iRu$?m0~ z04M96l<8w0(=DNw@474X^jy!Q)7A znD9*6b8vToT!@2K>8o~!VnOv-%B2+1tgACvJ zY*|4P&F$j*$#Qqn0?w>bp+C2I@wI6>BS5E8i7r*H5 zKL=X`dj5{GSvt>fG5BA@X31p5bwdPEzGgIN=e4>6iJpARc?M%wprI$xlBd4BbkwjP zMG7G8OD1WzdJgh7a~TO#xa#m0bG(nwZO9^b$Rmn`*T_se)BNmCCYn&Nl8;Ccb8 zZ^;zM&T+%TZ@t4JBOkz__H)ma9=rYcb^nKIDX&{_;nT5p@~c%Pd03)QQq&-cNfd_8 z|9`S}R5qCe$pFtYZ#}&7En2&&_>8`IUK%mHsPDO(P2C|GM&H})4Nx@ae$|Bp4{jAZ z+aN2$HoHpE!Kxeh$m27I^DPXFf-0l44XPl}N zKsQgCR;2H0V@ILrR6!x)l`dTez*rRK$wWL0hh!yFPp%4`n)ce*v1$tV1*R`P3En z7Jcg6oACuF)u(nB@FmrOFWxA=;J6}s_n40j`PTXPa(vn7+bI$;(m4f|v_B~9@L{MH z_=ILStf4$e_7Rw$f!!){k=Tu#7sntsjbAd;0}mML@mo6hzyrpwt=*`j*teE=^?8Q< z(q5gny{dK_Oo-AKe9hQroM)8x7!Mhb8fA%UUKkfDi~ znT`9A;MvHG#Q2QZjXbE9Jn-i_*&%k6jWPv$#6k7oahx#6iN|p@mBp7p5?_eX(Q&wE z4`<7vXm8{@1!EmWOgiCCXK@-w1A+vd_KEV4f-Vsq1Z%t~h_PgMh1n6G>n->|iL)Mf z;69vo*xSf z_L3@@>~b9>2Ysx>KvYcJ8I)YQ>wyQ@o#J--+S;{iOOMn21RpX9vAjF+E};9to3G$c z;2#>c;r?y3DU2Myg+JaL_)d1?twi^KH(voKCavA1DFwH?(hhmu3|Elfo}~GBA7Ekl z?ZGEgj^y*;DKhJ-y6j>6m3V`pT)s)^G>90obb!I1o!WDEByKRk55LCk6YU=^Ef#tD zb@uNI#9CcdH! z@BJ+~)H<)g+gA$@?MSc@{{N3{iBXamZQM_k78ouU>u<%sw@9zChs3&8u}6W2Nu&q- zkBVx4XRAcK!0D=&OTDgM9`9v_-d=E6yqzsXcr@LD{vh%k;}*2J+{J`7Lj(0dKBj@P z`am5W3wmiZfCm0BYr`kRIx_mckZ-M@=KtolIC6DjXKMU-MIX%{k@oU*tq*1S6MGqp z#LW%I?d3z*OY&b#BFh%mfjxphGsPU7kxY`ye0kmTv6osq0k?K9pV$(Of=V>pKZL!k zfrmZ9DzrU%WlOR}1BtcGFYT*^hjxIAz$Pot#gOBR$PRc1A_xzqv&X>vB>zIWZ6`aU zvr_=o+s?<6R?R%kpX9U4<3F*bt*vIBH;jRK9e=Xi?$=w=tu^z!VGO+MINa?t{IqDm z@FV8<6&T=-;r=Pddfdvthks~NZP+42CN{z$Of0Ap=V3&hIf>@hBJG!cBKB&A^c&VD zU9Fx4*KSvGc~X1>aVDcNm9L4ek8X;}QZxn!ZW%5{sbW%%#EQukez+Q`j%Iv8H2A{g z;^fApya$exqe(egJ-WDc1Sjq#w0105+B^QdZxi!w*an4PpR>k$L~P19b6zFAh&eA* zXUV8*W!{Ik)wwlp@88(P-s0Typ}Zh}-GeA$0?$9Wdb;F%gu(JBh{E?GW8M zJ25$#O{ut91Ez>~_$p}i3xcm?1*`+CQ{yXa^qp;11mca2-VpPEv5~(i`pnV#NS{L= z^7FU)f()FO!F#;yeUI}X{2wST05766-~H@2V;7&$)d-9;!Jqkh{tF#1P4=<) zyP;-08SOr;w~P2{@HhH$=?4Bqf#*)z5A%%--vyqLbPQ6jj^~X@FS}L;Ay^tqr#zp^=&|lmQ-$!FfY%%cpkC@-%hVNpxa)blSPm_0Oha@4y zpc~qKxwM#lN33I>){gxV|3K&0V634l4W8h0fG4$R@QB|@{{!5%JHZ|~L4GjNpA3d}UZv({9tMPwOB_Z6oF)8I>O9g*Pi@Jox00f7^-R^?75rQ^imgrZvJ zPtsjzw^qn3V%}&sfOe3F*`6$uvhCpz+UjQvC(zI$@HauM@c;@~>2t>IO_&)QdxmfOWTg#O(Yr_eZE{}wTyrVQE<&uEc;Mt2R-FA~7c zm(EvDmQhA!<3tA4GSsGWDbxnGBNx|UyC^!5wBY}$JLl)Cp-cs zAZ~Qxr0Vn(%nxcqK_mkdQ<7u&cBn8~P{z(nTufqGbp6r3*5mC~nRtl6TjDsp3Ee^9 z%{+s62=F#TIt<<6vzz5u49EIgTVpW@tQ|FCB3>LM0yZV z-P-|edz`i0_7|>Y70Y8Sm(Z>Ml6rD9K`U89=@7+46Ex8TO*BChO^AsmHYRo^6`a#DV^8lkU!EeZ()ab(` z>+DJ3XWtX+!hoQQ1K=HkpYd=yEf$4L1U0hzN*L8C)-5TWkM>+Tut?IRnAf&7x;dCC z#T?i0c#_#E4@^=L@WH2^!hD)G^Sv$N4r@ty9600xU$9xplLXHo*pLq@JgBLO)$kwz zQ{2^nDeis1#N79@iI{t}qSPw$tWI zJY2xDe5S_!(!-oRJ;FY!<*^WR6>9@bsRg#XZwonp1xdP&%)foo^`o(JsWcydtkFt!MIhmH@9LczE8&ANUE4ayks$!W6m5~ zm)n>-lpD<{a1iZS-U0o;zhj_dJtF@M!yU&^I*FLmDd0!Mopgu8-UWg~>3V>+KDq<6 z_1($;33C^An&N~S+i(5a4$(e0zh~HVg|;pqQJm zd;;&EFfd{LgwYAg1hFz=v}0E$7;l*l%5;Xk5OhZ8PSAspd3y>(5Yq8vH-<*av_~+s zHS4q@VB{wdu}H_0Vi`s!co#)+nVZz`T45XWj*TASUlQ#v)Y=Of9lV%H z!HCbVDySR8g8FI4PSRQL1TF6nd`OIe`H{_&Xdd!$jSd=v9`Gf@KVq*1Z14nW^SK;Bzf3Xbj=$3G#2Hp*0;9XbYeaM_KW_~yD zS8L#1R|_v1tiby+1 zEFMs3{ygFSCh)5}n|f^?i349;S{k_ovo?ic(3b_d|& z0RJ@jZCr)W(BM)Gs?lZcmGQT#wbH{97K^z9qH(g|Uzcco*}np4R(0upWxuJ{h`%LwH zfPa8+T05YM*W)6LFxAc-G#>sK&J*i}J1(u4onMv@U~eUUS!1z5UbxhOOac+4X z7W+8ssLv^LKzbEp{Q3MfUabFlG0w?ioPDS^a-9^_d=l-ZUSzgy0GW(Y-6=N_ID@=T z;BA4{Puft%Tcg{2ysYa5y*@AKK#YSu#dpcAjbov4pu-Eh1Big&L*Att7)eRM$6fOu zXfNyzAl;^Be5}|Vys$0Rz{Y)ZO&x6L^J8G|tA&kw=TB%)XRO&R;Oa8ogMeFOD+k4GN8S8n;v5NFGXmmf(xTmQ-a4Zu1@4xnbj zcrC4OB~s_yrE?1HbZKW)?7M(-nb?Q_lnw!omP;t;{_tEvBDb9Ai+3X?n^p^&Nj%L@ z!hwDUV{RY)!?u%7B9*Zw%eQu}SHZ@-ljw&1RE&E-BKxnf*}l8Y+0=krr8bM4*weFd zzdUK2gg(M%YyBbKQ5Mlz<2~Iu$cmh0YI&hl-+n}T3GIu49*3*2Xd-*MS-d;ny}Wy zEfU$7X!Msco$2&uqS^**D{SaApr%l>7o);lJoS;HLG7G^FPV0HG50zR3k{16L&&np zx`p#6UO$#<@&*9a!KQQfvA`Z@-ajeB?z0Wqj{a5i*7GbLKkvgI8*ErvjsIn8s=@aw zFdEN$M&@0lggMQ<@veN=imo+Xo4SU(VB2|LO?7qWPKf;2amdHv)_L>sW4*4A)m9#> zE#J1HZB5&zw&6BythVf5Hx|x-yhZS>Jn=g4ttU0U#gO(9`79Z0sjvZ(U+deCNbAu) z`YanvuSnx<>bKj{lm=5gG?%&7c>P{RcEUwcT1C0S{_cV972TlM->H`FICbW{$}IK0 ztsnQ0=%0lhj`e2;vMaKivcp*%wEt2qSsg|V-_+>39>!0Q2X7H%KIFyRlw?vepBzkL z8m}T7XY#mdKvt%6TMy&#pM_B~4GjjJ0mF82cH79KfUrIaSw-sGg3v)mwG^L$lCgdC zUNz|RF{Vn$kuUsDl|i^da;74OE{tfyn}uB3Ed==v-KGjKb+AW9>GgwPH?gK#*syK= zMX+h!rrFxONjuhg&bi2^M-QW$(`}UEcleoL0&_nAe+WClXKJ=vb5jqSdWYcsIEq*v zxIvOvCrmSaY>=&|dT!mq2-8bXN<=UCQ#Tgzpufvl5$I==c}V z+2($Y%ETQjeg}iV;{p!V+a|hL*I{A5|T7i-;ZZv8LXZR`aJE}*63;lKW| z!vC@)v8Mz-3(9o+{BT%kSY#++;55usVHnzc>f4X(*4v}H0<|}cZ9lpddf)vu@L%4w zNYiv}O$v3Wx(o?TSLnyP>iQh2^l8xhSgNCF^4;jq(PwkbI6wKVK2EsVaH4Tw#U0b< zaHWq!?{oY(o6+ZL!E-cxy)t|zUdjC6RwzBIwr*-2Zr$5zlv*kL#@Aai@r!^uPS;_Cd&_$HOJw_P4{;d`BRok?#m;0?ZGYhU`XoLKfDk zvG4Zv?MGN^xqU1y+E>LEy5H;Dzs#D@9`-xD8MFndgUsO*Tx*{_uFs*GJ}r753!J}oTgr**SpyQ2bbW*FE|P}C{Uz1G*0{$xPm53zbxPZ%ManI@I5C)5 zkuVG-4kx&jNc_cP2^$`*!z>HF(Zj>odCh*)4|@VqeGaQrrcNskhF65)?coaN!}7Ud zG=d>VQfKw%q{A?9$$ipdX*ueEDK4Zln1_!;DDi337baF!zL&ACy0M6V{9VSPb(wC_ z)XmA0xONueYSw5IjaCaf3Y zA1R31W(m3VxN(S=eEj2l8g|_taaXr!=TjQd&Kq*r#u&W?jMa(i+mA3qxqTog+SmA! z;C$A%e_8r(?R?@nFzKcaoRYndIcxQO4%PID=zVH5JE8m3_tAAH#7;3+%ib0gF~Jw9 z#alljy%EwKRNr6MokaiW-YAdL7b&XuuZ}*ZzmO#~Jia2mTh^WO6V-_W69*?MaFWCD zoK+PdNFwF2Yx=$}{col31QlKngA){KLXYU%RV#&{Fa8+6An0)#G%n&8+NqwrnXPcb zi1NIOxCqWwoGdd=Rv)~7B<8G~s5PL!qY^}3VV)qzH4P^GmPsF*MiES)aXL?D;?AdZ z-f9Fzcl%Ldd(g7Rvfg5#V&TIUIcc%bFtFAk`Gu+1WsDmKjBAYRjl)KxWHbih#@YcB zAfklCvDNQ=^CE2=@-D(ShcV7c6yIdQY=@AR8Wy+jZ>@pcOpwcP4P)Q}EM&SrKnK_) z?#F5R{rEay7BKe=$t$)-$SXH)&15Qbb((qy#4HiWYwYgUXIYse>|w@FiSq&fR&js* zu}tqh1q8U)`ykb~AA!HME|qt6i}uxL2f}rI`ihhJdn)5h%6_zQ4%hVQ(ff=$j-X`?U$0>O;;jNw`5E~$xOB#u7>u(Sb#yG| zSJUtHntrF{Pvg>QvqZn?WBZX@XS@M4l;jOH_vNXog)K%RSguBK2HsUO(I~EHyr{uP zU^(iZuT$hcWuCH78BhilLtM!#D-g#EAyz*IIMw>us)enctf`xsn$n=AQhym#T|dH{ z%_*XL-cWNl&LUp3CW`!i`dm+&Rm6mQNzPVbTg)NWm~T>sF;Rq>&%=kkBKFv*&sr!7 zW!qvMd^*1$8+>6eAb)twzvd2{1{sA#)fv5%{JcLp5FL!JK{j5~_bcnc5|%5x5BT4R zwGg(2v#jr@K^o7$GPgnY<4@@7NzGgbG z{V!@@`gCn$Pdm|+>DCbX5%HU`u!-MHfiEn}O=JDj2Br;8TQg0AI&IoVfU5BXGx z?X49)%>)zv0DO6RD9xpGnjSD&jp1FB?{J33^jn2{M0l}sc;coqq7#aDmHC2@3DHO1 zBF4%Sf5TX-(Im%6>-5eftBl)!mFO>Quq`d(p#;&yVG#ewvqdAK9UToe`&Gj4H~%yX(6MkL??^tt;(>fX4Xg zuJ5yo2g~%()+S;G$Hvwm=CJCAAhl?I2=MRw9C1?kp!? zc_I0u9+vP?sKDw`6LqjY+;c(m^{$60d>1M(3#waL-aFL0u2+_NiVda}4(p@&UFdxB_oZuV{Ub0#Fg}8+z#~yQLv<-q zID{F>f14{tdH!`{L00+uj5T`vx}dv{JJ#Ris&RsK9sawGHG}p`=sdz#2Kxoyjmo+% zR*}&ypA-A_VZIy%BkV8ZI?{~q%OUJM((z-%mt)+qKg_q|uN(UT+y#~QU%CtEJ(tE7 z_pb2KZ%NwWP%9n(99+I@>tTpD;c;Oc|3rKu7~-9{0;5$$0r5;L=J6rV#)4+*=OW&X z$A@#GXXJ6=2wO-64njyO^GOMv_`}|nPqap19~l?spMPr}15@aHBqxDq)0=SxW``P* zrKu+gynXod^NHYzH|QF8Sho)E!{4NJc*HMi-;RmG$d82}%CL)o6FN`;&QDHE-1zPiUOuj`ugcU2Egf`fA@~t9;%t8LK;w=p+)x>gxPo{_6Ma@;>4Is~cD6 z`G4PW$62q=|Np+@(tTgIUi~ik`;I&M2O3x03*tST?gfo{#kgnF{-WA%d4K<=_i^Go z~-V9INp4BA{fGk zSAmg4bpdJ0WMRFM#xv;&o?Sl=VbdEQ#&{;aabXA>-}o@bGx?1RL)iSrhcTWBunMDW z%M*MZHoyvujOvr6v*rqXoY*8d2Dde^gk5laSSK_S>ac|TSFz`f;pS^WFK4PQ#89?J zkVWWkG#!@bj&onNO^)H_G~Q{jbL->%)%HY;M849cYisR&HGI4u z#hSI%jala5f44CO|E{qQVx49A9bPKH=fui7|5`Joz^CBXW5+qH%kCfRID%i+*bb}w zS)p-ell(K|RIzV=gPD>xOy|vG$I^MT80%EkQyuHCFrn^?3QgqZM>ze zO_(671|2>3h-SA${chdfxxd;kwJyb5jx$}B`;je(>`j`^uh~h7Hwar$7wDeiOx9&( zDceT2pc7h8Yi$S=7p~1ihvSBnM?Kf2QBgewI22wXg{ZX~(ESxG%WYrr4FP9x=K z)7tN6pGRDg@b$1cM0=#9s^(l6MO0YT4#K!J-w86@G=@u=xL%d0j9vssa z`B6rb7!LUshA4f{)ms`GwD1uz4`CCb+zetK*hjLgP_90^4Qj9mk;H)tfX zzU7wOWnoYBYxJxyvk>ealQT znI*}D5W;fW-vWa1Fqb?PKD{i1x7O@4bySAWKP-_da3G(_#TTs*@^p&F3 zqLjK&H3e;Lt(u$f_dhdXvGu*z?|olj=H5GV=bm%^=bZn(c=3jAwwrae*}TG7|0Gg- zm;fo>Ca}e96`!p`+Zu_4Gcv+MDcI3(#p!kOV&_XdzJxF96ZT^F zO|Qw3z!k}K92M~>p2U@w{hjUJ7b)ZS!PvOYzalv=ji;3cgbIH%Taj+K;~>U{1jOGo zI7&WDDSN+Rkc&V4)SCFoCx-v@v3BnNO@ za@}o8SIdwNB>&1QCEgNXoi$sFVI8zvqj0HOj72W@r^q6hV7-|F>pZFZ3vZ9-it+Y^Hl$vsT-7DS4+%N;J+3I$q0TcoGH<~NrX8i>@uDVmk zHMTgeWMN!e&=^W{e{ED{wx&Y5_f_PMN#4#hu6-DnF2_Yq8gf|ws-5m}jVp}H^q`4V z?hS5U7!vG5rw!?U)0Q;PQCs%|Z=agS@iu-K5TrHgDj_9{oKrZke5%&*moRpLs#M=1 zEPHqp(!`?a!=}5UDnFme;D82r&~9VX;SbCe7c*Qom*M6m9-Dighj|hl)dcw*q|~{R zy+<~*w*n`XY0YXL#LqqmJV4y5;5_Ws1kV!1>i3|XMN1hu%7NF1nN_)ZpA6I z;PigZGLs@ny-cEqC;KxSZcv3-oDP;jcG1J$<5wn76$pLYda`?+t)F!qEcC7e zsm@PQrn)*is|*;Yb=hEc{=^S#G;!BiPCy@HV)2{Gcs=w@;dJg|8 z#O(cdv__l?rGHI#CU=AF>qyz^dt!pYQ@;oM@MMWA3-;vSAq-q%GpBS}r)(14mT$>} zgA3uaH1N4dC=YKZu2;M7SB>sooxC4- zND;#&zU_4izJ=#Kka+v1M2|cjpLcokUbqs0jy%1!=n_vGq0(k2I^vbS@GC)02-zAf zAS{a{<~?4-yp%eQP;Y^kKCQiOygU6lMlN=n(mnFh)y_dp>MN-b1vRPzg%_#GzuPDc zk;A+E-^Hz{=~4pMdQ_3NtM+~1oBvzfT41U7%DsFVZe>PqhC+6sN)#3D#;wmc%s==2 z%MxKit=8uAv)5g>qJ2%jGi5aygq-&dMpvaydKcynK3=Wyup3+8Oju?R*#QTy`Rx zb9p)3r2cR1AP)9P>7$yWalj55DfpbiRV-tWoL+G{yuNmSC-`vbqsn0@mG>jzV>jjM zhL^C zOY_cX8i@+Uo4|rq3(Oum zsDSM@2e3(uySZBFG! zW`%BqjZ2JcjU|T09s3wEI(xO*+I(%XrrD{C({Lw&qal8Ejk|mFH=sLeH`~ z*0>HIeSwNT^uyyuBcy_=7)UeFC{5j8F~78=XD$A)rEv-SBXL4>jCG&c3**lN*bk2B%SI#Ip))Ik;ow@N*Z0z@hX zN7UZ*;BHl2tg~Y%?4%b**7mibog5gkt=}}ZY5@|{J+^-w*?ifva%2ODYcGxs2`fMc zkI8wP{LfO)BEb?OD_VpQ7}ORI6_-M3$)-&$MNy|jT&cXLAc_=@jw(&U%+}7&I$Dv) z?Nkwm9g|`WQCx|`q+JSara652fGed>AIac?Y;4FS!K;IwP|QeRJT zLL_=n7$fngg)z$ePj7SR5c-|+&p$7=+4XD0>jcp6N~KZ8VHC8PG312u6$5}M*k=Rw z9CkXkqQoJm$72}3C-58a_Y#Yx`-{VQx5CnWCEcgI!_6;d;x0chIf#g9l6;37>xk~eVt74}DK zhuj`e@D)`6#0T=lR>#IW3p^h>a*7T)X?heJLneM3)3^<>DO$E5s-NH_PhpVQ{%+QG z=}Fdyp637uekuB&P`0DTmHhsu=Y zrHR5~Ln6hLZ@XBh=-Cd)+6=`oUj*U;x@d>~vz_n;P;*C1=ZhdI3NB@BITS;rJ38A5 zS3?zA%Y4xDN(FB+U}P#$Bp7;LUn(U3`BLhoo!7j*=(_6{f5=8od97xn)zy38z5F_B zI=j_c#CEV3?_Pem<9iQUzv=T6>nD#*yo`N+{kuQ0j$&5lbgj~6>Io&OWR!aLiFx7u zPKIQv_R$FzsjR8wlY20uwz-x&LiN@4P4z;rXJJP?7ViloXuY>SSucp;&c?^bXT|5m z^+;(Pb;Bbfl*(voSPfKG88*MoTT}0_`|L_GnMB>bB&}>;G*3tKkH|2Q%v9B*Xp*;L zafR@Uih9j(2pj7DLJ+r?nW57BqB4er;$=0dxM-ZUe%uU?eo3k6Dxhpm-IIvKSegYFZ@netPHcTGqNMXjYtHE z>%|(eL5SJV5XnMxc6F6)jg3#R9k+3t$IdRd-)LW97g2kyy}w=9?Ip=$O4+elG1d}0 z7UP~+BGwXH8CxA&AJZKomaVHnp$`-FB&g&EFWJVNcVxS1mG>ag=><@7V}?$CW8g9>n=>`^=JPi9ZDBbh9BHOEEmI@3v$J(vD zYwG2Wz_Ks)vW4u*S0AaGI$k(ipSj|XBdZc$z1H*@f661i8dL5TKaOUuwZ6O>sdQ=2 z&Oy%8nb@;Ek)c6}pmx#-tbt48tR~zX=6g!sDB*u}{>906*x3WNb;ZM1%6AC1 zhoO4zQiYX8=T)&PGn#<$q@gD$J*r6dl*_JXo{r{hq(tgj+M^yT%tI^8Cp_2zuqBs_Fz3IX#qlZ&C~?o+%?EvpxaVeWT}rvgFTNao@4XeY`h!UB$!>edj)HB z6BP+D=XwL`SN`kyKGaIew_RWoI#F9u&f>Vv?#UzOtu(tUwzt(s3OCl;{fAPgJe91G z^OH(OFf+XwP=FU_Kmo9zN= zO`r9?fB3q=?_y4F=^BKZ9koim^4fN#Co0oc*qnKw=5npZ<<7XPyq;>WD-uU$jgq*d zLa&m_W1A~~f7RNmt*9H8)RE=(YI9UgZ8}5tQeIM>HfkIhwKg!CDfI7RNk?pu=j%PKP>yQZX!cKpC3tO?b1ljfzv|4gjK^2lje9+YfZ^KDZa( zC@t7g?cVmr&h}hRLb)ZE%Mz~bfAdmo1n*K6??A2CF?B$#`5FnlkT2CFDp?aQPkcb| z1#|;BgAU=4{-E_iJTqxUHe!A7&T4jx>g=8Ddv|YKF|nfkmDxvDFVFP&^TarxwYq-b zcSqiD@t3Wu`PvKTSF|R>%Z5GJ`IVZv`{}jp?!VY}40{Op7ZRrSC~|?4^{tXMo6ZV9 zY-mYUq`-GV0e@ktChtq)?Q+3<_^>hI3nmi2u-_f6NV!}-!Bo2$OC%i*5%huZ*w&|* z=$~Rwr?6&*rY?YDSWTH#z4IwNQ>510w#Wxdp_ERw1Pcy-#Rfa|A_RP`La(Qw&4&ZN<9aAO+_ z0N>?uZ?}6pXSVKY_r6x-)ZcFR<#Jw$vf6h8yGfY^NN5(8e(|ccZB`qQTYC%2k7nE3 z+hd2?C6UA_&X#K4adk^?-o>ER1Fn-8ZkMd$=}U=}FXgNB<>V_BpeuQf4+AMt>C+xv zXuZDIy2a|a4u3592JFOvg$oy2S08!Y`q_^Lv$L$tg%=Yr8*?_>T0<|(vi{EOg%{x` zq1@kf)P5P}tV$WIjOCT)<|X`ozLtwp-UFHF9Blf4g#(rkcxb@y2564{OmAYgRh4X7 z<+mz%q>{auV)vD>2R+Olhz9uZ$VCzUZiF>gv4{F@@5`?n!}_^c4;QOJkr)@7?7G4+o|WWi zXH50P_Qkj(HmiIdMbk64C?AP{VydURsjfFwnU?BSc`Pk2TnEDPX#RxInbCkL&DxoL zr0N{dyV^T~jTq4|yt)t1G}u~d%zmt&&sKA^hTCdNYj{aXO?k~-HILRjTcd?*Jefp> z4;!DEm6?}WpHWw4j%B(sB9X~v_=TA#GMh5L%&03ek6`0Z8_Xhu+2F<1Y=1SYHd5I_ zNnkyZn&(^T;~rR*=lK@-R{J!YPuU3^obo^w$KxXEOev;9*>zrqj2n?nuBMdR zEZNY|z#E9nN~?2GTs(k%-_hzl1jNw+8`Z(qwnnmZ;4a{kMk*KEMz$*jt56c@j>eYG z))%ql@JEDqTn8S|MwpyX3f+#s1$dWytvt52DiV9+JN#>9L6lBTifY*AfnKVLtQ-&u zh-_s#1ZFN$!B`5k7XRuPmTro^42QfL-Xj7i37^8S4`gq@?1$g^xi$4%7OVcxmls&i zOuyysYq#yV?DpQ)-z%ToSzdSK&`-abWc~2q1;$xs@3{l5H~73=(;qm?v~Hd^u72ic z4s#D3hQBq=fH5H7TEn!<}TWwSQ z!d7ketgER?S5_EKrA!0^PgMUZA zSKo~GLp7o1koZpM-q7ZdKz8&M!AF8Sg2D(go4qtz%5`7Z#~qciO0M+`_2h=$vo09Q zRHrKiFZH>j-b7hx(jJXQYomgqGkLV$;r1nUZ`hmh3hy>%za!h$vA^Am#f$@?Q(Aw( ztytBC|8n^j->`}!Is6BXjpPdJInqcpHInN9H(5Zf#5aEPOQKzRzHFlvi?{gCmjklR z31HyDKLIQ(auD@$z`{;C8Y`@hiPnqLtV^d^JI7m}{JQ0ybI)bjacuBRHhUTyG>-M0 zJo#SpfHmQl!$w-`M=c)t;?D<|--MsPj-v@z)4F7kX;7CB>oUadH_s0FeTq+@PKix@ zLp`c~uBvVn7mo>5Gki|J+fj}1s}O36Yfi6+D@+69A1TWZ;^X+uTznfkAMWRAE~uW9 z%CHoUn@^!e@HswqhHtEo3tzy;?E;MmRdFXPl6j}Q%zcJ?tXmzp!wtFKopf`j?slQ5 zX1XTtDMi6Fk0;^b1Lt{Gd)9;RJm%5pgISUh?ege!k;SEI^O(oHEbnDia6aHd@iMm# zA=|9X`W~~DyhG3?0cPW#JSV@0iST6HG)rIg3s-I2(R6}tWJ!n9!Q94c0|}PGY)CZqcM-p1AgJx zygt>Zd)$WGUIK>&={XXM7d%HAQJukE?QvyYEv{KElJa#!xD3-~;tm_tZU7qb80(Fl z#y&$ez(-MT!%g^-j^OONw_9hk0oIH3vfd~haelUXm->s>Zm_Hyw%=fN-eA4*%Nv=var=#o z-^hl1j(w;pLF+Qxqxx3GtDu|8IAt0eNP4oP=1_#2JBGxDaIw0Ym6g<$@S&OdhC0#L zH4wY+?9hZWlVd6-M8||CM(wtwB;cnu;ojA{&zJNtj!_ zP%$h{sx~D9Mkk44r{|b8rq8LVP%t0fRF)*O@?q2IkLICvMoId9{pbOWl{I;#pSNGK zpI8Zg#^HgLVKuxa_c=AvUeCg*>OjWLM1FN%RERt{4*Hn`+9Bn0=K{~ZPYHhh<=-85K>!n`q+efo0ceh^DIp&cq z)}E*S^X5liz2xi(O;wR$eFmIw9a}Z%#Sd0|-Z=C!rYyOMy>!juSf$yLD(zIi8aO;M z>&$akKKRtkIbYp9!0gp;?zphQa@O9_)|&n!#|+|q*`V>~vJKXAUs-RiSh4Nw%Tm9* zij8~l`EREO51j73ds6w(J4&AU;a6+le}7ENIp+@M-{pb8)K`XEms+oU|FU1aa;#=> z{Y9gI+PTuu)m!`*_C3i?zcFtsRoNRVo9lnx&$mTcX`H5|lJ&iASurF`L`&5?%+JM;@+F&*Tn4MFV9GC~>5*c&=o3Wy#!|-Ft}SQ|w`! zU;`FZHD7HzbWhzI$B4p zhuNCx)^?U$WBruXO@C@S`!l_bvJS6d=UcDh-11Lf%>KN_@?&p$l}nWK)EVm87?lS; zpb7AAS*01fbQDsAO;u(obCEUdIwaQGV_x{JD<+(K?)lTMzp3BA`B(SoHT$Bfv(7BB z4L4QfJF+R|$*O_9s;YVo6w}J{4MDHBwEXNb*DhFa!6hSy-f~0V#w#!LhbK+p`hdYx z@Gm{{yo%U)H(Yk!d6(TFE=fDwJ$v`gq%TpjZ|?<^_5(^0to*DOJApO=&S+Dd_LBFp zY~gVOK*SA^~v?AqBEWtN0pxs+x`AJz*JE9bHq(9ekvd-@-WPupVy)OJ4&qd85+ej(1oEqmP@(Zh_?u}g z_Gk%>8(Ps_Id&-4!LpsZpl>7|l#zz2(x2j2e6(uGHBTJpwc5k|^0%;?Piqe}yuUHp z;I;f|zMcP$|A}h@_!!RF2-z5(O-<>@#s!OlWZIa8CQTfjDrA$}99J6Z4b7nUz zPib?gG09k9JZ`9O*pJ%z5)>I8p=huPvrW40phmZPL;}cJoNTl6McL*7xJ6T&ZdRGD zZc>4<`Q_A_^##kIW$j}$_}rLPvQ6Mbg;&Bp=v1a{bm-ExDeMd9^`lJFgiRL?#lbV0 zX^@tw-3$gJ`F2$8gO%1469l*&Q82%Ph=Ja;$4Xy=vEnr_8Ngoc9d(MAEEAQ)x;4QJ z;mh&L>#Ps1zn(>}W52et?AJTk!`3CVjvlurvbE@kPnl_&UftsaU3Pv?_kcnpg{wJm zc-~|7$>R+@AQdcM34VB==N;mQ*B5fVnw|+B)$n)%{sQg6&Iq)|z}NwzecXW9+r(%(qEy|DdVxm{HzD{sa7i2MiS+qXjFAK70eSL-n zgUI<(=P&bT@TCxSo=_sh?P|yjb>%~)(R!w(B7RX;r`EW`!HA;<`qPam;U+aI>dJcb zP&mXzI1q;15vEDZ;CEmWLt!oA6?Iyzzswu2sjaWBVPuobdTYQJYuQK^l&QnJzZES1 zLE=S-$vCNgE9f_1ka|%Hk@5>-3zuqeA|Tbe z&3&xhEPc%#%M5nG+~=O3eXjL~bEfF|dFtH{Sp7Tq_pW+j#@N6=YVHJM^Pzp4T%rws*8$S?j^!&F@D`+*-WrYP z?+>oU43a|b9|5KXLIG}E!EfS_wwMcXoR*?M;fZ2e*s^kRmmXQC&pSv@mmxg(P? zjgovO>`YW=t9f7_KLCiS z*0{&FifU_*6%f_mnfx8rum9++-wAt?-rt$#PeQ@T{`*@nUqU(8ny5dG`ARE2m3|1! zg6rSmO^{t-4wuK~ZIBz90ImChIejr7Ul@Km%pH+fgx{ZH_G~oE?YU@bO%EYNAZ(wGCDaFm3sBVi(4EuUI{8BuA++!+p7%yPKP6dwHD+`RTlBrc}dbR9#D# zE>rb5z5Y~QcPehAJv?ewqDObsu$s!ayDpYd;)~;J;xL59gPzJnB@c^A@Qbu1-B=aM zfIg|?LDmptL6Xi+5fLOOIIeRSDY%OQbkQV4Qg>@dOGjg4t9+x6X)EH!;$)G`O@Ej! zt+3BzFjZzyA!?==3k1|m0zufoRwH&FxjR9FN#98PzW(%-3pPEmG*ss*e`7~Jn_kQufZF8pIb! z2s;SE32(+_%7XN`a&>z=odRj8f9MY>tgtOQ3-I-I0~Am^4TvBfr^8MB^%O{*4xdwD zq76L(3ZgA{V=X_17@=CF4^xWcFUccs%Tco$3n-K7n|d*IFr`lJ&8i3nnclq`&Iw-_ z=9A+W$9Xs&1Q50+j50mu$P~cSiz&STo?Z=f*-XolfJ1=k-P4tU&C^qrsLEC?s#;&A z*}YZst9V1znkrsZ6_eO1EP58f<|MG?;?YdZjL||3;o1Xp_9|53<{M(iV|+i9>{zc- z%R@qH=k8PBiIq!XbPLE$f#}ES%eFgIh2o@ew^r>>E*1HW+RraLOt@UP5ZngREh8duENzO)fw^Z zK+RRJLUow^rYw4)_)Y(8{~EvQ5&msVHOqruy?bWdaOq4(JQaxwtlEkq__GB5n&2XG zH3>&DzE$oui1~q*(Cgms7RE|9bCZ@E%n-3c!UJe$fu7siJNLq{c~Z&X>rYUY;BO!I zHz19+SO*NDEuAocQb1i1{%vhUk|i}RV2LK;+nOLuhAK~oxynz%yz$msS**SNR6w(; zC6nhAFu{I+_H z3cZX+39wZvm_dKWv~NHV9K1!7_6f*;+iutGc6Xd*R)J|rxwGE4VY`v*4F(xnSa_35 ziluzSUI60}Qmg5kOZucCMWQzBU~Rbd!Lpyda^8sl7&L0?oW*RPaP_Yp_((3wqSh6> zZ1v&`Ixb{AdVki``A(19O3$w@TRvQ?5#-#8qn#!bm0_L^dt-IX;Bb_lZpjEJL)dy%$ zyIM~UOJe%&an%(txUcEI9i4OlYHZfunzMM<_gI^#_2+~_mUoZe2$X0D+H!ay-RQfRoeshZA( z%DP)sMfUVZLqSFYh$MxTa9j!Gcp42X*pjzaKl2QW%CWp`osYQTFEEzTrb}ZgqM6Zv z4yRt(7|ew5Kn}5LD9Q_iBqa}gQ8A{yaKOPJX11aZxYXv61SDIlZmJF$5rhoOp;+e^ zM)tM#TFfe43B#QVVwNH>B;q0APzJo931~y99}3q9bfhy^0J^hTo=9(sr zTA|S#Bj7CnH!JB0k9PeIGF?PjM!4(qO-_FvPQ;%-k7MWvWH%aI(Br4Mf*dznN^+hf zc9RlKZ(4L)ULJd&EssD`(Y(Fnhy=7hPXL&&2>4$Zihjfou^l+1C}t_B{wuZ0<2rVs ztHo1nL&ED=r*KUJp8+-_BbABRf_-^(!K8^-Etqsp+vWM{>O8$ZnzZ1miIWzzom04k z!y!C#l#OtyJ_OEh?EmD0yP5q@uD984&%)|T*b)k!w;RdvmUrz|Hu9tF_h`pZen>4H zr5Hz8z2y;bJGu#hgmi8CaDsR#<}ngR79JG>4h_?{qI}JJ%9Zd1-i*8^CMSj-b*l`) z?^WUTym_l}rS_g`NF>=|Yv7!I7_&mOd@8tWq#`(Y3 ze+J)cL^=le`+wj3-E*z34J+91sq@7FFy!gDg0Jhk9IJT3zZnltDPCkH7GXHtQXTWP zfOt(JP3gY#zX^!H@AMdP?6H^Gz3d2hR$3>`$RpE_bJTrSMMi4?WG3)-zMmiFy23Z$ zR2bc`k+iv8$pVvO7QxZbzXGBlWT8IBqF=r#Q4`ku)9RI6M;n@Q?RGc;!|@#+Xrzoy zDxyXxixH)|Ycq!p7|N|(m@V4Xn|k)9h+G&uP+eTm46PER)w=tR=Ej z5H``NxqoA=>Xq-!E%wQ}lwMk@tBW1E#nZY?wei^~>BiZ3+bkPT z+8SV@XEvLz^7#gGji}P?Z115q(CYqVMr&<7)V9~(--}T|lU6C3;CYbZZPw_uGxzM7 zxt2Zu++SFko0a_qW9hm|U8LNl$H6ZQHz_BfO(WtBOOdG&@1t=nc;1Bg_J2jevD=_n z!H|fC19E*D0-7Y^cNJ*3COIGwan|(%^#)}Q>P)+ov&{Zw_&Q*%FKlf|H39_^93oR*I5%g~f(4U^ z$f`Fim^5jDB)|%{_NW_JKm8E+2anQbIux7Nmb3}GPE|O~9#D9$ELmNGq%N#nlrT52 zQho!tSMEl|un~$rLfZ!?uo2k)XPYiXgN%}Oug153c1aa{CkR;k-#WlFbsm5kDhs_a zoC#al*y-H$!yUS6_x$*3&13M|2dpZs zkqY7?(BHmh3d(V(#$jtRSQ2j9b{OOl7T~lSssmMe6kW}>A82idNDp#~6DfEGj2Z)8 zNX?Pvh;iurTW{_DZ#~|9hL7Z0>snx)udI;#Vt+Gr3cvWjU=qQ{75KwIfj?aFPwXMa za`O5ASN%Nk+rkJ!0faY?D5_^Nqv~gi`mi!BT z8(hA_WiO#cu^GQCae>{I10+WEG#;N=BNZ;KYLjxr_{LoU-n6N)Zxh(k zrpEA`!k(D4KpR}#6PGWL>kPIoZ3%2$PGy|gbELjRe_#Kbu4eSL`d0lQF0@+5(~j+q z-#Px|(3~R_b%d!o)x~yfgi``vQo-5eNpY;|zEojqh{Wj40M#wdPfwCz%x`cQ#M=1=P{>%W6Ih)_UIXd3Rb z4x!pr8}b%iZT3aYFoEbmGdw7tuxIV-?cxkOb}%?kyM_RJ%>l<%pTNGdCWK&GvDp&<}@c^ zc`t4!m&{sLlY%`W<>cxX>({N;v}xAs><4V#fWQZUo`Q+A%Uwg3z5W5B|r1e8Nt z;27Xn<)BLTyAHdK11r09H9(_uL)26JNKEAyZsEt`xO$_mOJhyYWU51N=+l(fOX0Mo z_lPGc*TCmy0NnZreX@SB4)_2X00mr&j+?pa`us@$6hFV#zr=q(Tn+rp@Z%ZojMod7 z1o)KJK(zKmE4#3Ogn~v~uhTtCbz@v=9C17hkBE zKd$}b>tC=tt!ovmzBz~y+%0vTeU%n=o;k3QO=1@?F(bm(ma=_&Y^OsU(R)OWM3Z}!*@gvy@bT0dw4>uog7R}rEcg;S@vW7CV zY<`(K8*huL>O)ysI-Je1g1$e8V1$s(=J(Vm>a+EtR7m}PX$D$kxHTt;IbEOFnc(vh zixNB$rztB-XN-$nSGzcO`CVz3u(=c@vr0PgV<+kO{HWJ-wHXfkox!RyTQ1XFR;I)f zsbs%YQETdRmgHlu?|Iy;3mUtgDP@TF?T!No?&(%R!@vd@@9x|UmISG&{0^$#7w}zR-~Y$@0YH`Wa%`d&knqMNa7*q;tZH)5ZG#R z34$;lfqjh#E^eR@5iLb{h?M@j7i6dO+%A3;*!&GoL+j!R6Km=MNb(q@Pxaj=Y!fnU3NqgKF80o7qk zy(6P;5M~f`XNtOk0N}SuT~i2JJ+6xVz`kS+C}LeNSro}bz98?)g^87^VDPCVJ7uU7 ztdIU-jb~5tnDx%2mYZ+7X>rSVZvWEy6e#xN=g#ccxu##C@9UMG{4hIX9A=P0a(O5yF)GmjBXus~|3~mHbPQ_r+P)cn3>VPP< zRCd7X#l33g-6#L>x?E4Cs9p49T2FkATuy!A61_AFBtdx;D6NP{*XM*Mg1q&c35T*W`l4{y}(xZh0~ou@jb2DcxrU$=gYi@G*gZ(?c+3HxVMsO^h&G}iF&8G4vwcuY zWMR3XNj=o=B@{$bc_Diu+4jj7r-MFf>mXM`a@LpdByYhKq7C3#Ehcy7Zn%L(AA5{# zX04YTn#(@wTKb12)}wO1AAxVgMHmC;aMi)Mu@=>t^7;aKE$b#p{4z;i=Yel3=-Q}} z>tj;aG4(06St_npnG=jeB*ATErDgElEk$5$AQIqin}_vtv$6IWcHRt*&&G6ZiN^b? zY$Tt;d4Jd!pd|83H!H>Eb@8wsN;!>qN;u`lR?=iD+6dtofZLR*&FkHy6_mD!egJ`1 zOf~3a@ekKTCzZ-HiUKv0cNWFc7(h!z54)}3>QmM$pB}S*K4gTo_3lOA88+g*OQtVf zI{lKl)0Zuob_oxDYVBoBe}3SWrOQX0dE=rV+&Xg5ppm!UI&$D3AS{N8R23Mz4YuvS znah@WndS|7@AHZqT`OFVxOTW+b!ibtvtyKFszW`~!E{^L#z!IVC%n5uIzLlo&5Yg1 zRPk%D>A?Aeg__{aPCfSvw#{5;{G z!2^=+Qy?h?^=^S3 zniEQqTF@?JUz9A13>XGf;p9_%XI@P}vPvZZPf_K|%P3T2ma=}@2zJ6+_e$1U{DXV{ z(fR#Hxn|vYAq$oN==~3$%vc{!W%qry?AF_s(LO@_W7h}j%P8I&fQL>s8)CNG(xqv* zCL?K;d!%QI=YG#x3W4Yc&lw12+^<6*KU0~eZ~)L?qZl#+lxjSDhGVRQ3wW3H*Ggh# z0iaWRMI0U?jM;L1^VhID*nLa@8y#hzGwiD+%Kge(MZBoIulx;a9wp#$zT-UR>~g}Q z&TP7~#Nn-~q1xXb2P@Sb2>9j!)vZ><;$>=8Y07O>rC_||N&t5jzVsRL%Ou(CH~MOl zbTCZV6XdFe+8uJs3F6ryJrCf00C#WtSD-V+Xm9csM+}AZ8gIjU+XDE8gYtq;KN;Ii zTbJF0JIz8n&=zc@2-&v4wTZ>-crqrCIJY#u}XB zs0IL=Dq#O1A(R6 zYRraN8aIO^3Is_M*csdx^71cEdO;E(RMob- zqbLk?oGt|rous+%pv{MiBJ(d94-#1^zEEyII)^!*{6J~4DQ2+9`xiXxiroL{=&m{? zDWK8RGNSW`hwi`gjTdjdI_>2z$TS*DM;+)PLv= zcMNIz>T_#~_mv9=)bh|ni|@Si-g~dV;^#ANVf=w!kDfd6-g|%e$dMbS&bfTrvc*#_ zykcs)YeGM8qhmoQMuCo0Dt+Mf=~>#qmi1!GbhebUWC^)3nvO1{UkIx)pWd4;L#i|B z^2JhRRVgLsPx*SL#)EAygb{Z@YI+-QQiAG`VZp5cV38dwdNs(@7|l%pMN_Ki+=LT| zMj;>)DF>ZI`=cJX{oQwOf8dhYk9~jcw^@47keM@w3}WeT&;9;mvoEpUzH!c+8_hH3 z%sInk_q_e>S+lxjXNO}1BrRxk9IliS@!2wV6Pdsv^b;lo zw`vC##3Co76htcOrWCno*-M5E3!LT@QzzL%aM(DJy!CgR2h5zl)_ULifX`rSt+(5) zFP^`taSs3F!U^X_OD!xo>!qdEr|vlMDqUY<3@MC(^MwE$KXDya60E^Ib8!i~sO0LB z%_X}^)M`6xvX8J&wu66*sXbLe@qs+1LJDOLd(6)5MhSEFcaL`Su!l|dUhKWb3vA?N zh%AFFYBnK?=_2I74SC$|jH@K*a+Q>L+(qjDfMcEGd58XhU@3a@Ogdvth{05l$Y74 zS9Y1z@#z-I2u_+(mAd(2ixhSsp^d3p#fb zijnvQD-p5-q=!6370|k@467?QO}@W#HaoiBeN)f)n3gl%wM;d$`gwN8M-wtE%1X}Y zVGh4K5`s+g<;|dz7=yMSV<_ZV-$c6Z3y zDIijD*1|s)0P^Jm-ZjL~(jXx}?)1=h9`c<4M@%gS`Qw(ZFG)lXiZ zC$H1pYhP)VYdsB_mvrytie(PhQ6Pd}TE^}zV@4Ts%ynPqUg{Q0oos+MM&s{zk9oP* z=RsCdz8;B4yP_fyr5vS*K#!`xEq<-kPyFa66KX=jzlgD*qj@$sAQWey{o%2bN**d} zyQw<;USx!LDatlSnLk>(%C{fc)_kQ($Q$C&z!?XOca6Uy6qeRjQWq(qm%0c;;gOpS zcra8HJrm(1M2rkFMpEN53c-gW%d zA-IG2)pAGN87DRW%<@Ejx07viGKX`3bByz0=QGY%oNqdf>zqrS{P{T3;`ha$jPH*B zHmQpZvP;)$dD&hm%LUnzgHT&pebU(WYCnc=K)HakU0xl^%WJ5_?BKaV%hT5P01$mP^W4jB&>&mS_pC_$i7%tb>qB;p1$-}=#>2T zEbH~>;$@d&{TY|gpN$zhXw1Wh5;v^4>dxG$7ntuLc%?Tm-!;ku<}@jhj5MYg{FO@9 zqOH{UPK}M#W@wjdLbIj4uBcHn!8seXEUJ-C9?30WT+XN283+kYYa$*B#+jUvI8x@y z9bu>;2lOBS|5mb6)jAzn=^|a~g|?qaNPnWQl!pOyH+E=NTl>LQvQhO1p)Di|fwTqy zWSIm5g)Ox($;%gIX^NlmFsZdy-`Mi(%89Ae#Ffu(8T{>Y2A(nSds%nrmIaSJw&0eK zJNrF+aL%_!&1&o2yKUC*r;Iy$+n{vA*av4!oH*mbu?^`#+s+<01-J+zx71m24qSt4 z#Kx#|2p1VM%j$D9!99|TA80lc6k-jqsmt9+V z$PLY0Sw=xFs-O)X`3<%Sw%ImHq^8+yi3%botp_^1AUp?%?aNX22_*FaZ6Pfe28(~7 zt;mith^3?}FRrj6aHXwE^t@sIURb!7&jRsi?K_!8e_R`2Q8DAW88=ND>$TownTn4t z`^BrT9vPA`cvtcMsL2}-Nt@Q=6Z?cp*XODv+y2`=d zu(48G4;%jzHoyrJ=9$Lz#xhi--)3kfM!C_;5K;Xh{b_x>uG)0AM}I^ATo+W+g{yi{ zuhLQbL^qJ+mCUzUBxQgZnISvi^FWifP&Fl~*<(gZf_ZZGYEY0Yg4qNZZI#u)gGsF0 z2)2cAM#=@?YKTW9cUZd_?8@64P)231omIgJL)V}JMY2Mu9EE1+7?7%M7puX~V5#kI zFXT>=MnLKLEmI113!+$=-gdmv29#SI=UAom32j_TA=j--gu)viuu51;D_Jh!Wa5u+ zPPML{_*-_{f%0Wb*qcX=h{K&vvw0RQ4+XetvjA7Jl^!$uNMotqBR?Rod$YMbBA@E> zdJ?Nxv~G7xXaXL98g2u$K(WYKv)g*gK$-xhqLSTLu%6E9 zL_Ld34zbt7A}hppTW7G&&OvAYg1!0ShvM*4ht^qtInFj(*jz$s#G0HB*m*(uYm~O_ ziko~OKsiXUSnU>DRCX>Xgp~dka9GV7ZvxPWQ7R-8sQpnMu_wR4j#--F!-&gfBtd-}--PYfY0M?3-d+>3LH=?AGzvGVWN*I%m{0wB>GXt@zd~J3A>e1C= zdW!YcSlC55H{o_vGOx!X)IJkEdN|@VW{*<)0*34mt2Z$bF2($BZVw_vn@$vwt*FJx z#uB$9+x{92{xzyI)U9x%d6jlPV)PeKx|4zhPqMkvz9UHyLf%e*qVK7Yczjkp!Qwe+ zJR1obmp9&Py+z>o&b;)M)sq2@7XS@$=io^a9&E#tY(;MLEfa=ZBO&6lemSF}2oNsk zzYXvxLFDcTxDvYA^$vECgDvFjV$P=8=h}JbKQK}alN*$an9`4KRN^6;TA2R}B0ssG zf_b97e1c!^R(_w7LrSzQ|JHATZhpZow+BdFpK>c;+-9NF%h3TO9dFLG$i^GB3 z%X4nsGdksRbk1``=MN=5oz`e2`sh>!!B!=n+9YjM=nR~4X%?7RO#I9^Mhw0u3yyHtFvHWG)4H{pfvsd&t^$&Fsv-h+Qu!|)QcBx~bI2vdW6*wpB^czDO+0hK$%PvYlck`hxRZYFHt=W2>0BHh#sUfqqSS2Lee*Tnwsu@UpljCm*xZ(v>Nl<$Gu#|=&!Q{dW9#`vBkOv6xo{;LeS074 zQ1uUHO}+QQ*2~YmWgVuXI2U8&+~>9{Hu2Q+pgay8d6ITuLE16(z%wpGEi6WwbAo?? z5)u4mI4M-!(B+6Rd#vmC>|x9Hur~?&iNn@Hwv^hKj1S^yLnuA5q}U61vI1xnY@J)Z zfjscN%(PvkTwo&PqjM~d=V9r{e!j||#WQ^H<*Lq$;o@8&VyJ>NKzl(`X(sQ~gcteB zyhhU409nRx(yqcBC?2tHs}jhsS7#H^lo`!7@S%Y-VVJBj*ZNo-;o+t4XCuakkyo{5r z|5dJyEQDnhaK4N4URPq;n5rlqh7FN zswxjV-T-7wIfIR5+zz`hlpwWiJA0Y^iT#5a4(LP4E-DS6L9o__!Y)-tUIv)|7)#v084Td94~Gutb6`3=1)^9 zuqM?an%k%pmO3i&d65;NgVrIIHhk(o?i{&?eM*b*tCza>&2jv`1o@|XFXpTG8ZM^u zOF5EiuhQ0NV!C#z#;=oxCe#WLh7)q}SUpDS`sy$8b-43< z{-f?OkHDDi$`7|7M#e+R2V~U?#`3%e-U?SJsm7CdD_mg_$@MJN6RBpnrki+68Zg=g z44&o8#p7_(GPsIN;HVLV4d9xGq6}Pz(;y$r0IbJ0DNdcgfN`mme-!bmZ+Gs-^cT?( z`NN$YXTf^LDxtze-Z3Dh5ieWwU-%`v{{{9YU)s44eC=iY{vzHR`F|Kob@y0I1G&y} zP}LgD`A_2^Bx+N*cnp-xi9FMS4;IELLy-h+_bDTx!F119_gH+GB`oTk7`elmw`T{t z=cN;4xq{yd{=AXBig@f-!5o$=wcEi)JWe#|Kg8n_|9NR)RD@|^6bO%`pO|~nmPs+a zAe>7(I=q`C9u$AQ@z!_Wz4hihZ+i2+TW{JoXyo^-j)xcCHEOVU<%8ub?^^o7=ighr z^3Hefn|g`$>@&|^HUl`Z(2p|#Q_44VjalJIFeT0uR4YTq1ElI0|Ri{QdT_EZdo&;k7+ zg;tVG*3C_srX2JPcr(aUL~-(@cMxY<*I3uIG@tpzYmYzv+7o9sx4iZ<{E10KsurC; z-skA^={xUy+Q;D=fBuc{ymJ`ClH+<))M8v-NXY%SG`mN+IWg*+48txNbcbRmng-5% zlah$oh*sJQJbBRyLX@&-{s30PZad+)K*&()phfL9jeSQiy=@O0vZen8O?_UQpSf(# zmFHCqPe#<`Kb~0W^jLR_!=BiraaYU_8P*4SN$+%b--s?op=CwfGgKpHC34h_2u=>l zoPs5KhycC^^?*Xr(CE<9q3t0kVbFauFyGGF?T0By*F=CWJd=i}+>y2L23(iRu|-&+zc^d?i1IP0OWE5RX6@hWDPg3w%C)6;#ZNLr;dbgm#Az zco{;7KTHAL3Y8v7J3+`P=|Pbg%#wzq4rxO2<)jd{Kvoh3v2O47-RsCQ}Go^*JKcByI{q zR~1>UMVqIs*N$mjnyzsY|7Rn(k82FIy2HGSQ5DckHflzsIK{9F(nNw2H(M} zRObA{Qt2d}35*cL(TWk)TYIcGML_d^wMYCv)V&E{ROPh?e!uVDJNv%RWSPm#WU^}*%!rxO%@46L^c%yq5>|YihElqZfMnjilTiAB*>;ho<-}z*19hswbrFB(7x9C z)J*=rb7vB;wePikegFUav*gZ9X6D{|zVn^$eCPbm@6-+Wv18S-Zc@B&xY(19=N!CH z$3{skChe5C&n!5}>(OBFyflNdtR!jEz$QY?Ph#2aPsOFPKQJ!+xm6gBv<$Q0FTH`Fv@9RT(M z!4JkIa)_RkjXC+Wef&zf3J;!VuLB#xR-p2B8ehP~QReey zuni}*d@6|KKhlYh5+9sTzd}#sO!8F28`OK(Yv2zX*yV=T4SckT6`LANT&p*jP(C3` zfU2UigTMmtfDuhK$*O;2(!0=J3Lw-&& zXJn3OFbB-saFc1biBk@=SU*lbLofHBuCv|FHriROeJas1Gn3t}^)On$iYf4*SgpP$ zAFpphX7fGd__Owk_d_(Bb_gNa5ym2|I66aYe~1b6?`Vj_7xg`bCC4umq*p&Sih4Y8 zV;syAWXp+1k?5PBLpCQJdWKJa2y7@Ss1WsIM61 zlOD-s#{8^&{!KnBbksTc7{@fn3Wqq&v49T6jt0j#;QWzS=Y|{EE;MBT8FGGjWOzzg zK2pxgS8Lc-4QjWhQDTpoG@6jn{}d!!AcVyG6{}#bF!Op;j+>97P{x)v%A0oh-MN}F zlDTu8n{9I=Lydp$fn!Q^3uY3!MTpX(uV!$%YX_?o+B+(eKqH*Su+R`d^ZvmxNJn!s zP&=k?K>UNfB>s!auROjeTvnYKo0aJ?7)IlfUiV(&C!zZ`Ay>Fw@f$P&O)=Qd3;{#2 zLG*}%gQViqu%TwCFnTd(oFOZOYZ07yW)ko30#Pf(m=ToXbq5j^5L%nCPUsQjkkA4% zj{2L7=X8L!E-Jo3h2RojMHTH2$oHWCXt_0@oR9-bD=GCcfKTBkw@tle-K4RjCTv(S zZQnDU6N@9E@`)3R!|d%vt5z<$tMh_ob0??n{A6Uq)JqfN#tp)m;nzuPq&-5BkQ9b6 zv$C2L=`}9SFJ#feMB#`+6cyRP0WZ2j23H~$t%;6`-Vl}EM4&9{h*_&y^?n@->Q3tT z3f%@BR}lZ!#f(Ch4MOM7 z2Yj8*?($d;ru+RMSaKD*c+`dZ3DQJ!O@&&!AyO$tMhA;k(FUJ}LWYD|{0zj=9YuBG zXqF@PO63#q<3az}bd-`$aEA}60Bv+np=avbprMD-gzU8XQ<90|V41vv<}b=6$e+z4 z{ZoxXMjw&=4Fgr>KBHPfS~EV>kk>J~IBd+mP;O~itjPV?gw&|iuO)N-tO-${_~F6^pTm%4wKx~d$XgyS7&dIj^ar+H znD^=h7bNPhD9OSOuBEL!YeRj`gtMypZS{-%q`U|E8W8SKif`j=2S31H0ZOrhJ%K84U)lt zTOF9C&zw0)yRCx7xi>RK?fjpbqR$aZ{yVoxQ}nMUDg2$ko}@pSG-h2>_>D za6lKdG_Hc@v<~>(SqZXRoahF~0bM7^I&`qfB@M99rkQxY`;))WfkRC+(;$?k_yuyk z2(X;)O|!Ih8OziarEPqMb_|uK>Ri%z`O#FA$4bVYm;20FpFcf)^u+1+Z)~0RG!Mr{ zj3|gQ(Rg-6&HT`7tIogcfd$JJUASm;S)w{VD!oU{$SRv;)nH_=t10vqM)s=f0~e3E zYFy8|#8>$TTqWS=&u1~UB%GLpxNbG@SVXUGvI-uXC*%=*o(}9?u!U*Ux1%p5WTn@e z{n9>&%B+e?f2Nqc-zz4am28v^KC`+-hK)KctX}NS|65u0@1*n6;>kE9X<#Nl3fb(M zI-0%9V?}2{UgN%iyq-^eAm2Q^Fe;9Qd^#3BH@+gNitFtyi8yqMV&pIL`=C=1;gmAi zXhU6{ilsMGc`VP8wSItRiD2_c7VFH~nsp?rFH541;H&ZQy(~E^%glqeIB+Bmnn|!9 zibILCMA{;v5V1u}*I23AHJVozJi*$0)5 z36=70`dylQW=CF8LZ3rghFnFuig^6zHX@VhuPJ&yqjhA=sfSN56^}2apm*B5FH?a% zhmf(t>i|3hKafXN@3kuU6Dz3}<{QgsE;T(?duqVHZm z=U2r;D`R=(=NI$aUtBe5P08T73+pPLiOi}l%1TQOtn}RAR2?H z(b2C&>|i1xn=Rl{r5jR03M3XX{TI?jzq(Cb=}N>M7>R&}K4}OcgWQhDq9miXvtOp) z5p=)wF|YqVIirLo)K9BQKpZNhQJuH60=t2@^YHubU!Ur0c%u0H^1Rr}(4?TNzIbwM zQ|0IFUZp*O2^#+5ODu&8=gH)0)AQ$Ud%6) z_*?nx%?NuvkKOBk+JDghu3yso*}d+k-3Q(8B358@GZ%}p1VZEtFikac1y)t+R^;<42Z%Q_UY-h|R98v}4hou184!@+uN}WM^E&@x@CCGv+{jr z{gi8eGI`jT33slU+O_w=d+(lH8spK|HXIXOSz|nwuuoaAd{x^|?!9o?Wf!I%eD{ra zM>LSWk_=xEP>}iF`>a;4*3_*TR<~C8@FK)zM3~ny13`nhP>Q>O+obnOi zpP}Q+t4=E2EEN+!rtDXA6Td(WVJ*(3`i%iB&WHQhQFsu{Jk`8$gfEwT(c2fe0f+I$Q4JiRV{lImc zQm#a0bgl6&Bd;|+V%%jE&oZ!|84$wu8;T6#CqO{xsTJR&dg(3wCwiWxr&NVFjo-xi zoBU(WzvRph{^)ux{*e+9Xw}Ga5ULinvz3bO_dL z+JR&uN~+P&wa12JqPprKOrF8S(ypBnZvZwS1WWO9&?0A24R{es5D~SidsJI3@|Oi$;(Q%TEiIZMfjMqjJy96?2WG#ijt9?oCR>>J55ldzW}6lNXVe#x~P7 z(+L=2bR+CAtuq}p$yyWc3Oj4;sIfIm@9swmFc6 zAODSzjDo<`Mo6Y}r;bWFbV!5`%;RjgKhZ3(5LO@(QwJFPHS~lFzAQDg?IRxtlQ^^L z^d6uARIBOW2d3vQf`B3P#Q^H%9@#p$=DfP$k*H@_S#D|NMBlz` ztv`9J(#=wn2F+~1|Or4^I64Y_6nj(@cuy(-P=dh@p1wT(+H~P1!$Y2i0Apkij z5J7u-k4mcE23Y{Rscut|`8f!!9>}An%Xn#;;~zFsNSO_kPQrju3Ef}S&xxKR4}3Vg zyu9*}iyl1s^P=);)8a)%ar`V4M?CPx)+txdId{f+zj|n9+^IAGo$hMC+SOGuAX+xLtUg5R42l#IasoH0&>xTNT8BpuSy zxFag@p6LB~aeV63ilS#SH{ZNX>7*$0l0cr-~G&)#7L{>zB;gxBZ;;Kbbh@-|wGP91WLFy+<5*_rjG6Q+JB*EnIck z{JY;9Q9o^VQ?n|61AB>e$(s@5yjamoKCEpPqr=vNbHYp}_ zLPz7$m}oHR)G)Zqh_CEozA*{CIAhDQ{E z4qCF4wN#~^3E;D?p;H!@I&_+8)An6^t=rD~XY@c#>XH8%q(-meHSDlr+kG*~IRVy1V zWY4E|US^n-gVtPkVe_2P|F1=xbQA8Obtm_k>n5=l4^Jaz0f0a362i91Zu=G?Yw>`3v@<8 zNNPFl1CVo25FOU<9I&@Di$8lgH4nalzx;7FJ#|IeH(=?y2jqwNC%A8o(4~Y36$-Eg zcCe`TEu=+2W`9=EuvX$z6`#hw$xtxjB0z0CzUbqB+2{tK46zn&)i)@?7L{I@D^+2|+e`}iY?yx4R z{vP3LRrTy&FVM)GvN8OV)Ng*4dhZuow@F)itN7uRmwiHGYJmM62AdZV?o>i*c3-dc zYk971p}bPQ8SW_7`8Z%nqKp>0G_ZMCCLZVl0-bzgr!7|&QPPb3xD(9#c%-rjblYJQ z=yrVA@C4z#t`+tR?+G$)i=0GYbmC|fO|A^K&+6q;-if?bG8Ike0)SgUeK9dr(Z1v_ zVCY!&)2<#^OjN@z4qLT+PL0P?GiUj#;<0r_g@tXkQ^sF%$@nR?ZH0wJbz`|vIXf6U zTe+hlk+^!yS@Q?i)()P3)|jgki3VIvmGBb(1lR+wP%i9L$}&}42IF3}6hblr>2BKP z{Dt!kCpxdkJT+i=_s9G-e$f>`vYFxy)Cbfl+JW&LFgNH!j%Zfe$B}5Yr(`N9;@VMB zRX~uCo#1{61SCYFAJ}OY79ty0(hql_m4m{YAlOI1;ZQx0ibtQPrfU7Gt=c7&Xn(Pj zQ$7C-5CW^hfNZewRY3#P(jvVjMm8g}5b{q(k6ZQQwtW-Mee|kxXU`hFu%YhRU!PUk zcvk(~fU&u| zHcHzh%@WYTNNDK}$t_c7OZ_n@)91Eh_yMUBha?nDoh9VHr2XnvJz*L$6Xo-LsgE-g zCG`b!WF`yrguNu%v6u7;1x!?i{%4GR8D=-;vOndr{|vBEZf0_2yAHa(bxC_v?4`I; zf3u#~>-Xqi)W4_4ceYGHgzDqR}W?EkR4%B38;4tN{-I zKO9ZFmx#Y8xkel8ZNkCEI#7%m0JkAA3PfeB)^tN?&4L)HR@27l>@{KY`bpf(m~SWhV6 zN=lcGux3(hHKP3&kGwg*YSg$@X9v#bvr_Vhs`Mh>1eqhZLf!RZ*n%io#Si4JV zk9MFF0V$P18*){k^4?{~@N80oov>S6fV)lv)az)=CP0ckaNz}d%VzbwXTjtEZXWxB2 zlcsMfZo6kf#rRhymq}~~>`WBd%q7LhpQFvJ?_?kFs=5fA7-Ys)1SoOq}w@}B8F&*2EteOnAIb=7| zYqtd1%tUZvo_M(kE_Jq0d{N{d%dAcwBlCq=7x){Rk2L%WkTz)9x%%f(hm6*iUm92u zV8=Hb?lwp>3{3pM$j&3}4jH*yM(GLqmKyaC7R(@RppfqaCJGV1elR4(rVzsiDU)8mn|h4>iG8ZJ%f=o~ zsOnoQoD`R+ai`dhPLL7t{o-Z}{)2$4KLjyJ;wFG$KyyvpKTYXK5*3Zw(~%^;e;a@c zhgEsvyRaR+1fFqXpPx=buqHS9dj56?p>6ZU9*t3l%2`Y-ftAH?47AxI?c z+dh=eE&VOu7KO8Cx>Wy#Z@cvSTwAOOkku!+{=d^_dJsO-L;rVuCf<75XM#?puHm1E zt5ttt$G^&72>cCy;k(WPh2zcQ<{gVpy9*Ct&3qUt_80ELf8{NxMaJQRf7n}?y5(k1bpP}}=QJ)<2ox5?UUbRvOQ;J}7Y$<9xtOY9LKaoP}3dsryO@JpB| z5gfC{2fJ)mazOicxKTC0xLV++SAD|oonH4nT5XJwyB=l*Q)zvi0>}d!2{3F^QA!i- z*fVwNSjE)MF1?35^47HC#0s#;Q_#s9K^c~s=Yo$p5QZCoi-@+_7p$FmLlIw7f7_Mi zgLFSI7qxx1&lSFC>avZmK37sPdDI2P@re^EOHx0%sJ;1|SIS*k(Ir{$_imeb%ZS>e zo2E7nyL8T!#^J*UlO0c8EpFk9|LL{=!86wWhhY96{{Q9L&$NH{+7Ef@V1JFm5v8c! zh_$~440Yn0^2b=fY3Z-m-K`UKSp2(@0y(|<|$wV7qp4ia>-MC*oB8s2N zObxCqp#tSsH6MTxkh1=)1$}W)hR&?ut&AI18`c^+4bpjriwqnNz(xO%1MoN3e*}Hu z7{K$S_~PGQ|5I20g#)14n^Ap1Z7sIDW}ygO&$Q^WjsyhPX-%B%5f{T7iGN;w;MgG+ zuZ|x&bl6_+j}t33X4@cvZ{i`*a|LI zvg)a9JLE=%uDe(%rckoA7^PXo$ufAQixsOM9pKGAohxBAaN?)@n8rc z3`9BujR&tHcm4eHh*`ynI|RER1Pto2%^}ng=5K)-HI^m7WYiTt?W$AXS)dWUn7e7@ zA!ak6=LryX;g}z#*>0G)YglV2xA&9Yw<>10jJ;%(VjEu(jyL{j@pBfNzf^Ni^Vk{g z!KLMo7p<}mahEPDKy5@(ZBs!}^QF&tmK0`RFmL$qddtlEp+Ei8h;!!`XbXHthflJ_ z4=$=2J80I==g%vRW1d5n;>#E-7otqnPYO15X>}sf&#>Y_g?Z5w^z9G@r z`mOnEId)NXiD|fqQp_cbPAr*s}GhFO|tZC!-U0JKI)JUUx$D9`SWN$7Pw|(;! zgzX%DPL;`e4aCjz2jrctGbKslm!>6NpA)f?#L>^8?@9Iv+UcS*b{F`%_hR@3QQM7% z^hR4xoR%&ceXx#Ux)wO{s@W%F&Y67Ph+$yS8pQHvUa;NI=hL{^QnNsl{Vck@H?on6 z*{wsw+ic0Pa3lI=p%N$``95n=uqa+MyJ$%fKoZnR(}5UJR4T74Y^YHxDkN{13I#w= zf+GlmvqK3h1w*Z2$yyjJ1cbG4w|Gq#IHR%4*=cbmqR|FyCTH#R3JpvzHb5D=!1=mc zL>m*UJsgS_7Dl6j-)|S{$`hsN`Ay%dH)SRCMvc*&*ezD=f|ap~!eEp<)GG$NVplAV zgxy}cTTCb>bQe@ixM(xens+nH^_cIO+*$Pis~`1nqN)>nH5DsR&<+26fLOrf;gKDX zmTDAj;$2|XsqZHn!c)AH^2qAD1BWsnOgja18oVRTSQCQQf+2(IJ2Cfa(!`eGSR|(I zaBFJGisCOK0%})yZ6c3)K87U6^;hmo9r#gwDC}#D@3`jN;@Fy&57xNOcD!&y$Eydw z$Ti#YfA_?_n-loysJv^J1p z8GJUyro))pYzCKLuo-wR`VgBz(1%9EvP=zBz<;!x)m)Fx0tcyN2e$X{v7<1w1Qa?1 zQL0j>2SBAk6-%55xx+nDC6lZLD;1`2W(NPME}`6(lbt`*FwSi(_FcYw;*3!3l!-Gm zPY)?6^pA)+&s(V()p;zGtY1N8G-9^R>3&Iyvumk+Ia>MDt+^d?eae2%of9%Y+x6+gZVSS0l`q|b;-s~<>D61*HghkMROA0rvOlnAf3Mm%2+m7~ZlRw{fD!F(TPmR_P5!hbAk1 zd74#)c@ZZDxwd(v=6qcw8mt>q>5XOQx_n;J)6`+Po|S6>UB(*tA+b(%Vq6I?G(_7O?INZL!}rKgR;v8MRi&HcE#!lI!-zexOZ4Oh*nhzV;}^} zDGLV`oFEyE0{F;PunA%y$Y$86&ney(L;bBIr^D*CMi8+E{1CTKMc@YxLre#b9SGPCl29SWS6c(eo+npIl`Gi_2=!eWj6=@@jzpG& zToS^sph_I+DLGc4Vz&V1au=ZZIZ{&#`w`Y=mT_A3Sb6FbgK^sU3#$rCH#k!FC4#w6 z==1gEGo1G5{W9)Gh7v&a=ojvIM;g?-9DR}ak$)W>kMkDH)1Sz!(vK^zH zfzXW|JAzVXR~#M#n`oS4Cl##Wrna9sHo1Ro>I9a0QC^Q)l2?$A-U1#hS9SuFR$rld7$!o)oU%&?;{_Pj z3B`!tNfy1&Voh_NDmi)R)J{5XW#HWND!vRARY11td_MY32!%g_)8-60#enGKiWG81 z5>f{WpQ%+E?D_$4=&NP~f;g1sGr%KiAbE(Sm$nRtYzO={BH&943@^G=d!UgE@}aCv zOx+wK=Throb&GQIbLyH?pBY%$oHLutYYfUwvs%!Us`n0g@3+mS@XG^{?+!3J$j$I9yZID3p=z$SPi4Xt9t|= z%C-I3)OhPF#gr3Gc(_|<$#p~!tUb6xYe@)!r^Gt|5O)IvQ&gG&fOd?cr?w&;4$%yV z?wtrrj8*g?6Kd0OJFLHGgkucnDK})vGD$El-S`&R@^BY`zhrClHWwCeHs_+wAnzN@xf zU4fAUBc>|a6JST6`l?OLOD083#EEbi_ItS^otjab1QeD{N z))oy~QdC!8-5Acv%bj8|8(nrsw5rxICiSGp7k25qsElBJ_d|~7Yp#SvsoN>~e6fT8 z7;>oFszvujF{Bt3tyV#3#-=r*l+uVovEvAOL#e25@#`v=BUTl<#xr&2{6!NqV74QL ziFq7Qn1byW1jm!2R23DIqVUuy@W9(N-LPZjjO`Jkm=#uEC{Zfr_ybnA#bR>1Ny?2{ zd%_)1ObU)BBS5)|)|Ci=1U^T}0a0-x2Muk7d|SSfFBrt8|hehPJqjGleN005%nTCdk-qfd4z$ey}0!W~;Dd zt4V4s1jmjZ9$2r{1sSiYJ>&XkpBFh#7_igk%3hC7PxQ(30Y5Ryet58|GSFay&Euv%rJIXL=!VXOb+`ZoKz|VoG>&9L%3>Mc?kYF)ABmi`_35v=q8K zhDF_lgRZ{%J}Gu>fz5Z}L}{*l)F{11WB1CIf}ka;xwKg0_UBZ4uBys5f}{*wUJF@1 z-=~?0t^K1=3sJ5`_ zTuMnv`da=MzO!$ya7wID&+{^iv=YC%wz%!DX-fnk~4Ujp_Y)Y1=|PN!@c7mLbRsMpSNtytG2&P`x1X?RXUwh-f*o z70-4*sc=-5Qp#{ASt3ENi6d^3@z`Pi0h8=WlkKQHN^;xg)JNa0lgq{GZx4ypMAw8h z^ICl6-BKlTcTS+iA`Q|wqERkZ@vM@@%r3KBZ{bM`yTNj&g*zM?X5WkJK#!g-yq?|SV?^m5V@oAmA-f}QE?d-zeoMZ$zkA=MPF2#?Zy;3PdbRjo_WOoU=k zA#9WLLS7FDUeE^o?$pOye{?MM*3VoIvgK^dOJ96zp*ADzk2`0K@&7vK@>^1$_5Owz zKt^ZvokA~yB-WUvO0Jg8XK%2Nm^4=RqK=OR*nn&8^X+fgKLQp2#NIt!XzuwmE}HW$ zC{$0E#bTs;u;Cu`d@t_dSG$~MvqiSZ(jI;gYxsu~A^0JqvcbYr$PlvE!-m_DuzQ-r!$wNAK~_yAd{)jf=dKhie{+oyAkYOSpw| z6+LA9vGFS-*ALZ0uyzcu3&ZQ+PvDAnck6U^+g??=uj~L$oI!;Lg!?keq)51}kSw+t zkZzjPCQTz|Wyq-JB@>8{fs7F(PI=N(T1&iaOzPuBS=HZmGM_j{bp0SXcf`;It=sn9 z@{{~gi>~K4rY=hB#f{L5_0S6)G-Imbe9Oq@X)Z@M2T`LrS2Ir|YOQ;5sSMMObJI`* zgowUFbjhR$7!503CptMWQUaTLo&5?xd}k0KO&fb=%vAx}<@I0x={Rd*7j6Gl>f_Y- zgXc-MybD*PK1n?ZhN3KEFM4qbh%%xlRV94DQHpsBmAcoMMw#w3iR^Fc<*VIR=;a>% zBKo_3SapUTsydj_KN>&qi%9RJKECeq)FU6ej{@NGOKx~#+z98fycCQH6UzF&LPyg| ztX^9bH{GG1Cta0pH`&)T)mZ#o_ET#wt zrE|p=*rpoABF)jX@HXrgYMFM9W;cHT?Y8F#VhhMH)~W5x`x^><-iyxJfPs7nxPq#a z(8_ba>0=$B8u`INGzYmlbsgy+l5?pE;*a|d12;$P+c8w+1L|@{-*S5z!AwYMbPE7- zKzsUyGv4Mr{i;X&ab+Z2RS}(>K9u{-sZ$FU9L>C#`a1LAy7VzxaYLlCDjcmyy_r77 zTuazhlhThTfA?1vbj^}_%@qUJ9Q<#t7dTU~B6H64q5q0f+gQu@oqXwn?>kTAzc~;3 zMypJ6-+!))mM{GqC%gUj1@Pg&WsgZq_*IAt7HJ9AOI)NGD0Uls)#VU#b4v8Z;ES8FntretQyrANwskfEx%aSt=QC$i2QN-<17CswcKk6&Pr*IS=A#aEMh==j~0%Za>W21!lZiTtS z+-crwmP0sj*l)08Gp+hNZH2Z&D~7b4TJF@M9f=~$M&T_dGSYUG;hto2P%XplM9*uq z!=i3!NnAil`UiYh$_20!+C2DL@2S34P2WvyuCRGK^V0ORcoKrw=7kUY`zO6#oENe3 zo^E|#g4&JHQEl9VBTZ&{P90k5NNs=Uh+VvTL~I+8D7?Ue{tADGf1_Wr;empO>-FW={y>ayTyg!||Kj?~`p(vj0;7oQ zX5=|P(TQ!Ix!$>ck$IJ2NxG$ObS_YjZm)V&Y*uHY!@G`X_`zWsr+fWOF?+p;{a)l* z;=RZx{!i|C2i>xIzLp8<`MO4{m!X7kdtL?Dk7n;SZ;w}8;yvPh&x`m)(7P57C16r1 zMUOv8`ayqMNq5pOwJ!UfvC}N>JD?paJiQAUAt8HzHtyubCqY5+KO8kPZUNu;UKTr% zrS34gE=;N$jcL=>jfSEhH3qx+VIwln1`Wou+)(Bjn%iU{)TTb`w%8I`>QJU{2+Eio zxI5YvCDpx1-`>=6c2ZN7(Mc{>yeSCgUAU=$CrmSl-bVYba$&FL25pHDwmeHSNc@rP zA{{nQ&bOVU9pZA^xyR!nW5x^C*WsWRLUJnWcyf*wvy zCKWD>9$i_fuxIFg>9+Bg#-AoHUIEtX^qQ0iN{V;pb@8`k05^?Pd*b_Na^Pw6Z<$Dl|;E zsmFQL$({MT8G8~?$g1KxJW}#Y4L1d|vudU>byD3A=b4P5OF!j<@#Wfr_ps|M&DC=He7h0u6XF;XqPcBCsouM#2*1 zwj5rBlcEk$4VMC3MHFciZ&0a<<^MR`wey8TsSOv*dxc&2{9$(C-1&EGNgcm`bLuw} zCO`7y^&1~%!3Y0z!}PA!&5ZAzv}WtX=*6wA@AJ10r|y|M@96fOzc|De|NP~yT`xV% z^6z_a?H!vor;fKwe3*sV_Z~(6X*ARB+rsx5jcDb(utqI+3;hX zF~N_?F`}D{9(;=-kS&I^qJhh3d@E@YVgx@fwt@tYj$5D)Q`I1 zij<&v#m-2+)|ICLqGLH6xGcULbk0zzYCwJ=#A;Qk4pXbvv|2%`(5%;?SOWN8`q?RD zj#Gjz06GQfQp^fkgsnB6p`0_s5VfSNwp(lI9Vylfy7&Qpd!~x(hF8sA1181qnzz_1y1%w_?%Ld}GR&ZhtbQ@i(j|+>okR zIO6QF!!Ln6(!J8AKtIgzLhFTX%B(Bcjf}5wu;saHa`{JfYTBOW9#?_f%@~tR+iI)|Tuqk+dcGf~~Tma$O~Szn034l|7YGWo2Un zb0jJql{Sp{a`5fMwJ`4a9+N5GM~y^xgbIvNj5A=bnu8{KV8{W9Url3<&Y}=*{4?ysY;Ap zxuUU*g%+%M_vIh_{s%9=e&t0AuK0D=wakBQ*YOpLz-cmV{^V;PJA3is>DRHT^Cqp? z+}yro>iUm_#kYG=8R<7`#@mN>WN3At^#9l6_brQ8}{eyl*3XDwS&wzh14nWQbN z7HkC-q@)!EEd?73dJ3e1g2974yr!C0yU^zovaPGsCN$B4fW=afO$|PGgo}(Ziz?d# zr)8UY*e}}y-!EH=TaX6!OZPj^`zufK?5cD#VD@CD6j_{DIq0g6A(iEgS6wwM$$wip z_{uArlGVx&K47_vR=xG`y3|Kk{Cvmdw=BN$?U$}Nb?KXLth|VauAj1C$+TN>Lqh0U-!e-%h<%<{IvV0y`ON;JvVJ+*7xsxsuPK(FoG$7YvGJ?XEp#i;YwswsWp*zp8}pD)ufva+ zlb!4Q(#eY)>_x|0j{kIsD;ygfTO8sH2Xo^yE3Iyq)#`TQi$Vsc%V2OiY+75$?r_=d z4yMzJCJoG}&Ea%;C4(KGuo^=nJd-_qjfZJG9uNQ6^A$BjYWB?bh+0nwT*chr=T>|L zS~Pei@T}=|`KX3t%whAm3$=Ax-U!y`-Rx;a?{uKgi;>&Ve9nW$0M(cysElu2`Z~gP z=vL8#sRC*~ikt)ZWqV!i<&D4-QFH_Dk?!DlqpgHud%iOdL`8-7Wk`tSbcY37rqhBI zf3U{}eNTbbSs+%kJoMIy)aEg;?N*EI_d}NO8Hr}w)aMtA!&Cb@Qn$U+8BD#*8(ICr z`#Zm3<5P!u(GP#flArdT=zSVbudb2zroLvr)bO+&J|AO8>y!o^HpeNmw7|M@{lkDH zHaRJD=xReQ57cnLKKM0Rp**80VDbqXi`nnTqm^bqI-2<{Mm;L%b2WK95+YYRq&R#D zJyM8dwYi^i8x{HZ;(YS^LB&BwWggne=nJ3`)h#?_QBT2be z25t@TxdApJFgL&h9&^lGgPt@5v@x6f0gKU>rOR>TpVa1_Yz9ee4!}J*n2OX96}A5% zM}>m}F+vQB8AySRa5zg* zr}$L!#i{kv#Y?YEjk?<73P0?ynxlF$J3R%M4FAcsKHKl${xXq?B!HnFmYw@ z)*$x>ndD+0xc=zkyX`O7IT~+n5Vwe2XSR5KT3=Yu1pJW*9eNH47=WtyB1J) zi;d#qKEFj9;Z|eN$k95M){t%`q*e3m)<7^psmOJXjSflcKx}roQir6OMKGgoKj01P zBty0pZE4q{F)f-&<)N!88`5l?4LAb|saAv5u@m+JJ#7tYV^pO8jq@td$*x7a4y9^Z zmMv-x`BGlC;#X|$gnwH$tDsCuc6xl5BEyd46p)w4Rc4^fGYklzDX*hxX8-)7l75UQ zh8fvE$|;kxl^Iucuz>=+QU1QcRp%%eqf0QfVYmrsDbYWUwQwQA1!BY*%UEA0zs2K2 z5!BI-ud7Xcs&l1IRW@yoG1t`8MVHPx()k}<*WUD>lSdsETcy-NE=A>vd$Qq`%a~nDu z8%7u&4$^ABj9v1 z+l+Shvi%+Vr*_faB!UOFLgbs;H5}sBqBZA(UH3G+g)r`s)awwo4=~5p?Qa#Q)&WGJVU^; zxJ8-gi!yhDRe^@9B(FF(6wb~Q91@BSKrU;uOK!cvkS@cmjpuphx|ut?Cc!RGu(?$% zQ5A^ghNQAl#lezz2``ChZFY~rq?aY_D3diX%1xAIZ76^RdB4zf_)u#-N(R&vEEKot zU~3hg5VjDs?X4{SJf7R|BVG-A2bx*>rP?y09%GO4LF}behb>Le7AIF1c?Nn3cwKdq zmBH}J(0MhTi(Y89J8nEWtGZ!o?SyH!O;u`?pO%gtJ?bY7=Pj6cY+35D>DT<^^4(7@ zx~@F+=g8*$*(L8EdxD+)v-78|8aD0OrNz<7hZ<_)@n6)(lZ%J?&mMg4-TyXaWODeX z%8qHd?od_LdR3NT$WlO0rT{xziTFXut6|fTXn9K~zV7+b!^fh`5d6{Le<0>cGdi4N zIkCs95)K7F0L`#E*botp#R;V{P?|7>@WbVt>*RBt%bk3WiRn$uYc?^nDaZ7TNz9Q< zPKPsQG`WmM6Ta(&GS=csB#a}Bla1nJ;{hXY#8(>8U(=~KI&`o;GaVN@u5yTHIi7Ox zchGyt;d1bhgPn3PvC(mngX8=<*Sl3q@BSGpuWGDl zYD~R;eMxxAomafW7ocBW@8$N}?i@Xhbbc7@(hKk%vVZ6(oYbVc~HT90!o3p+h#)|f`=*IiR+djPOr(qZ?#WuOM>+xCB+FLGI_t@Qc!F^-W z{p?YB6zVS`&mdj&b0ji%z>Yno7^$fguRzy$uEFw82@N_woM!^g0(Q?Ht%yb{E27Z~ z=?_r^v!fLih))koO%tB!`?+8dX6_M0;L}Eop~ebdDK&{Y@NZ!GTOh1J7d3I6yiwjJ ziwY)tPcs!?pjSJvWrE`LCHe$ZDQtrc?a=|!g#KFqLefYD4pLzSJirn!sdH`v7k9b>tK{@XH(>kXku9qa#s3I6FL{qY|VSa`J<2 z{rgH5azMdQ5FZNWcUZ;um7;vrcXRnw->n;sBl0Oehf;2p2P~i>3wr`;BP;?er{Ohd z#T-x}ho9pOtpUhc<@HU&eroa)Fe;hHwIu(7fidvXIMgH%Bc%Tqfachtk3kNjK$R8Cc4)miN1-)e= zXu-7_Su4SZNeWG`tFfL8p^cj5Lq|^lY z2IO9hLaR~`Lx%Es&FdP8`p@5~*@-8zUah~S0(4n#94Sa6!DhzKQOrPc&gQ5Z=N(2# z#bSZC1(h#p84`65raE{AUWJsP5lbm5Arc{Sb*NUp;Z*M%y|15oaCPUJSJ@LUR;8|E zSKpj0{T(#Pkh)mfjCIEhzUOVqSutXeIlx&Ai9c-J zY2|m@*rR!S^7xApW{%~=&_dM*_=g?g;g56O?tl*LzZ4MYav0U!tUq5Huz0e;YcA8(X8!LDq4Zc3CF0yJ@NXit`WJd`*)xaDDLd-_wM5ONhe@ck;S#_q= zd7r6@M7;?9B9&B4-V`lBf_Qz+(CfY(JbdNVBO6)hhwI<{(OOoOI-L6G;)}zTYgRt- zC2QpFTPI(by65Va>5I<0;=TJHn*P{R?d?x-|4WxWJZ(Y>acRN_AtpDEVse^w&<#Ei zqw|4p=;uoOBQN`qu@zdtg_xBPL&mHxlp_JQI&d<;u^2f50fz^GTVI6_n;G;6RW~zq zR7PSm<=Q3c0{UsokCWiKsIB5~5~lT?(y%&4*wiR7R1k^hN`A(<`G5FF^*X zoCR?1}%B|acO5%PLS83eAqk4x{bdgaQtwpF-NMXl{I19NIm~}oYTvA<&Dy)Q8Z=c0A@rqsu3uTH&C)+HFJk^D}P z$Fxm^3s~Nz)6mYWOKXsYIL$w1`;wMfntTJ_EKW(Cz4$i|@k8S9-i;}l`QUA_zTv5f zSmO@k@}r7XkM>t)8<0>Yqh!$vLcHqOq3T0wjUI}n;)h_&tEn<-Fep{gASHrsDbLKE zdfwby=iXWszvGVhoDKQtVY-2A@V`mRg~@UbV&CR&6m@8U^aWtHvcg{Faa(wL;Vmp> zo_t@lA}Qx2L%w`(Wu&N7{cK-Mn5^cy&D|&)C6uuGS@acEKZu0_dG<)loDgQ#o@D85caU_gVZ zhfOvPakHR1?&fh!zujUDHl9*YYLY-4gMgo^;BF{5exWx;Ora2P_<6g<5sEA5SGZCb zPrxoD4C1i@}M>-1)-Av20vIAF&Q*{l6=$QA(^1k}>RS;xnJ zPUQ>raX@u#N2xZd3KkE)UaIbQ;)iVSF3r4y0{Zx~l)?F>%p7gefh`sR*QkZgR|RQj zLnVn6aCVFEuej~(nN`PH@u@V_RX~oEp;O=S~IF@&WhiyAA>el-JuTCGq&89ww zUa3bpa|Cw&E5(U78o_<6=*Vw=Sc0%1AX~uVe+I34;OMW78!IK~bZa zd{T-qX#` z!H-=0XOHgOx%&qEKNtV${@^zuhkHPtMDbjph&p6JDXRco2&SLv+u>``b3R-G3}RLF z0o$-(@&kLVGgqEe9XAN#=@q&~n2wUL5qZ|&}z+HSgR_;C4|4?kQ% zd0*By7U$a2e=eDe6~sW~lA@9*5qIVp=i;)Jvy;3JIthAUbQngE;QP-Np|D-`9-Qd1 zo7$u|R;>6iEthNhwg}e=k7LYD-J%}Ehle1N$_mwi&1@j98(&*H?yQ=+vx{rbI;%E$ z&Ul!jzJ9E~9y!<76noePfIoV|x~vgfj#ul%6dAiK2hKTji)akq(`^PW{3$^Coe1Hn zaDV4h;ush#n|Ox;s#-!zpietm^?|PdFn?>rnFsz(*^fFj73Po081CmKAecYKFP;!o zn7^#T{QctXU``>JzmvuOYnXoz^asJUKL*k;{}0YA>QaLZwG}>)JyDL}|4Go{A`FD4fSLX`*QZJ7&4?-f> z?lPJ!Q*!fi!j0ASbwx`s@A}3`hlCd}1K>*_pY!A%L5~P$etvnP)-c*I)gT7ZB+SZk zVD8~^drK0)?pUZcbF>+)e#b&k)XKsm>Zty6tddRsm$x{fp_!-&QnU%56`4t~q}dg{ zc%8T*+R$i7vg@P{ZWXYHkan}^^(sIQ$sTL}q_P!8^7k}A>3+}GFyJ_cw zpAK5DT=wkbi>I~Edv^NL*@#AxFJIqxom?gUP6*3|5RV8xfiLijT*V9MW=mmvVMn1v z54IJG4TWLt0N(4L{aoM9zU%na;whZ3D1APZG6{llC(}5P5Fu2EdR>3-`-DM#tK}*U z;l1vr?~}_I85oaZ6Dv^B(N^4EER8HKbeizZt%QB~2j36u{%T&T>BRT{6yMKf!nPTA zqS=cto4!-UZ2cYYL0ohBnR1rn?2q^+hhoI?9%Z^{Mz$(G=O1`4VT<^*0eNycjy4!& z^sOOOxma4jucjI@y^3t>vU^cOacYMpEoy?GWw1y8s_#kPr;N}EN~~x+2JTbj!BVCx zEw<{^p`fu)@AL0_Z~FS=-T2;%TOK`G&(;tJ@W7%FZl=0l5PG0k6cLOnPus$^%s-IZ(DLw)B8h#j$(d}hs8MP`l6j_{0jP>Gc)pMUOigp1{+s=kul z<#J8oy+SV4WPhpH%w`nxGAlS6n=G>}k|nK=IAI!3`_Ft%NTk}N4ow#HY?EpS%GqSh z^wHZH72GLRI(=eXBxrIfEUXMlh82G>5mqpJ<6+hjJ`&~?VI|xWZVz{cw}$tJ-wW%) z{rFJ~MP`invbd1re{Ha12IPE(QVtOpJyh(Gu;Tz*Ux$)gmJC@cEIk&H4t$+uBe>)bitmc2EZ9RdU}U-*8WVI>8bLuXG^}gb z*s!fZ+St(3aH>HR8f*;}D5h)2>zdMrDwCvy%xs-`qxqB>yZh>nbAh^PPFCadU5a{8 z^2#d{K~yX)sa{uoq*{(wGi!CQTB&ZqEBo<^wweZ1b(@k&Y;M!2V|s|hfvV%F<)B^V z17jN(-o>C3Lf4yzrecJPuVi^~Phf=YxAobpv$+ibgZAuBpzHc=DNQO| z`@i)25Dzi*O#{#8HpCPjMB%qxVSN^6v3N~rgEB+WhYW@#rqw2nc0aAV6aj6}McMm| zc&-ovrK(=YLFC65Z%i;7f>k*zORttVf-T-^bsC-$%dvy^iP7$m*9-pmO7wFLQMTN6 zvNN%Y0l#w#$K@$sy4JR46cm!A3=KT-G>eiyAt(sA{=07S+7sA7M_b*bK~ zckD<%UDcTWs~V$T)fm<}hK>2oRi)Rcf5rE}M$VGPXcjUl0pI}aF_QK>~z zNE62Qzm)m@pUINHfJll*OUT(sJOaj6iNXi9~1)cKK80(CVQ2+mq+SJ!sd z?yo&jd#YB`Uc0WA*V3?I@llV3#p)4+SC&LA4O(sbd`n@dX#q*=sd!x5fb*osra~B{ znJr8Q(-4c7HI>aS6U#^eazapmKPg#dB^WHumXvmuZY>p?N}Eg9m5M@X9FYIaiRq}G zu$1n;R6QZc1?hyD^+EOf-q(=LPLCPF`tmm@%_zhTmA94i?DA4?Hl3xcqpY)RYgtd( ziLz5=+IU$zURYNq(G}4>sz=--9o18o{Xf*b33yx8wKjbAK1Z`G9nFKS$+Be0jxF1g zr#OjE<^h785C{o`xIlm~B~BT_m_Qi=$alDRg$SfzHjH`#KS0`Li~)vmKo61Xnu*X9qgi<_^}|!8+*T9U3qiI*6tC z?Ie5yPdkXG9mLZP;%UbyPmgD+E(i7Vc65}l&C)qIeT$&iW3B8^E2Q5CTCg>*bGNXr zFi_Z67%muA7d90*SRmFd9Bl$tP1!H7cl1me9~)oy+U4~d!PNE$X~qmyrHf9di%u68ojx#~ zPydp8m9jXu4#U%Bni_KaHXI=Gxo+udS6WD*=(I0hYBC!R;C=eu&9Q$ez0Wy!_N09I zed2unPFzplcRA_ncwb;EXN`1=7L;1GG}g6{+@LF$&#H2&xHhc|u~Wz(|4t;jh-AGq%OpemcxePeQD744_Z8(jznN&rPih1 zO&v=q&eSSAm7S?rDu<`Q2O;O5HUo7%{tsT4_Jh38a0Tx7_oe$CQ67+{YAw8_rpDvZ zcxt_+HMPFEHKm0b3InOlDc+4+&o|B3RvjA@c-Pkbvnyy#?hJl zapVY0=^6^7mg7HyAOH3Hphwop3uW3vqjbRa+}rp@;@A`0(=|@ID&+_MpS)L^QanRh zr2G-r{Ug!Wcrof;K9HtqZkhLHw`51MawwZb00TuO*n`_p6+w@h9eYtqkEHoXn$Zhe zr?ir-Eo2UD3y}l(AH25EtN$lrz*CN0rz|qfkgAPN(34`|XUR804(Is{^l5%ebKf3* z$^KG>j37NgWczB4)Ib=2w6i9u`ZbmyQY@a-swU!zrUc*$R6J;jO^Lz8P+}xujwNDv z+te)XkU(4Nz1wn%V_DA-EtbCkz8{(Xe>9sAWx7Qux--J%1x)rKuD_80J#N2rxsTGTJ z3g-HXh*NO|>|qy*KWl)oZm;kv&AF)eyy^4r?O~>)-{1~g#MRonsM2$GPxFd%*BSCF z<5qv~4ChQodl%+DqHNt!9k51~Gm-|EwZ=>~jN8`(1RK;if6>P{PEZegA*tTG;o=V>{&sfPIi> zjatYUgym)odVGai#v1Fh&Dl^@Bp3+-*v_qao3q|#ywa#uN%bmvNa|e~3@SWX^Th$X zZ%fqX51A6*zr15|7!OuVT>T}e3XjEX+Kcs!krWSXU*&lyG6 zcr+7-PuGn@7|o>9s0?ex1Qw|k!O0rU6$fB*MI10Gn<@-;xuU`efb3mn&8%6gP^>^D z6Qu%IQ5k`_BEpd2Afa}l{0p?prPfIl7QiSh^~dV9CF#bz|O&4 zkM*5jlf7cfCdTi)_#2rCul+F6az>-ld!ky1I!-@{%MDd*%Cnc9yI}F)oflp8T-{p_ z?afcSKG*fmU*|nkbJmaj4tKV({+dhd=H7W`$Fac__HUVo+y+wzyT*9}EKs5^Mn7b)t`>`FM&`g(E=SO67He z;DXvi?}+B9<7f9L8W_uo{Q) zBCVpj+V4lOAVJ|Ip`a@e6Np1C_a-(clmw0?SWPlb>U8 zx@{a?HICc9N{h$ixNWixtU$2uj`zV9*cUgDb+8IXfg;QSO10s(N9plDa9uq%9>D!R zCuCkT;_QQ+LgpmC1nEGf7nV5O|*{LfkW1Zsx$u z%`^ASRA!PHqZ6FW8DSUxU-%3j5T>EQdf67*ps5kzpgOewWwdEYG~)_0F~#>Wqi3|XZNK{F8#KQS zfN-TI4@loHMS@5G87`?y;pqni7y}Ts3*PvKWk(g9)Xwj zftCYBt-)}RuZ=KkG#up?C8PkEI%MXK^X;%bS&KVejX4wGOLc=LLdp)}O9S}Q&=5my zGfk?u<1%u>li)H-=$wg}oW7V3T{b>Dwbkqj*u2)-v?jc&I7UpQeNs~*?Q!G^-H70} z3}eD@n=vs`$(n%lL>(aNZdT=mFlBimZ!nkuMC=P0e6p!xdQ3BS_$)tdoj9rC};=<^OgcmJi^kl zDLV*r$6pz8ZARrnIvun*YuT|{1^}5$HMd!+VZH3T^-(k$M7%*eZ3Miz--DS)=%zrVP?Z?Ji#0*ywE> zrRqeWOj3Ij5nQwjyqBInWk$&NZ~tauYzFP@pjv!?iXdt)*7NgYqNwlddHD>dM}%FN@EuFu|Jd~(^B+<*(5(Ethk?-TG7zj0hi`- zj46=Xn9mqe;cJDus?y2&j5V65N_KYnB)c_JW$#L2{xPN=S*?J2NLeQs;SLRBDhEnn zTU0nl=pblmbOCqqQZ0t&{6=d{I+e|68H(~}CZyt0+E-bT4hOolE)rQeyxi64q%sp0 z498l~$kQG3b^BKNWO^9z?ei(U=;HOQ2fUAO@+8=L*y}X8Jf8;;NhMl!OnkU zXzb_xFH1Tyjo9wNZj7YX_dbB)-*{&~uB78qQ+2ZF7ASdII3}XWS+L0DHt)i|Y9aF;S_CZ3Tk1^}YC3+@JARVWd)*EdK}pVSZIqhJs z-Cilxs5RVfu+*T{`#slwv!nQa6}WL5Gu-~OmzT~8 ztL$*|`s#CPt4^AcXmhuAT=T-I#c#6{)YeIAv4-7~F6>#%e(}KeE6(`Es#G({Cw}Z@ z^jF>k`d3IzEW0C35(>I=L|cd_sfyMLe!%*k71KE|UCd$#8KA?tpYtmknW53w$S(^q zqs#AtPWM4)__QiyLprAv5*q5U6S06ZhF4=+CKGjMjYc|bq|{HYKf9hA>qY0KwZXK^ zd$E^Wy#ykpCEPaDI7fSdOtdLF7(Emnj*dhvCOPVWo^J^Tv;ZBv0PM*?z1JK`N2_52 zlX;oYGEp&_#!8w#$_}B^hYAEg&%2?Q%WOmYjYI(dy3QxXPn98bM#EIky&s~Fx&l!4 zj-Q0mr>Vq3@k7mgDMV3O$tPMz)qm-P`Q-|iob*~ zJn6BL%2zHGphQBqKo-jF;9a%!!yQ559O~Iew5fQ)g28ZMW%SDEebJ|)$}EMgRIXHb zkgwPG66C&$r{^oZQPc=qJ0v#OzF9gR`W&^BT6$$g6D?~QkN-a)G42kib5 zz1W}bSzJ?~z0OE?2zpgX-`No$dQoEm=GJ%$r-j+<@I8P6l-C0droydSHUe23QwnTy zDC8v7xkIZoImPgKC~u&IM=fFqkxe!m9ciZrWvL`IKn-`uDL_j>4kyTQoV7Vrq6Y0W z>ao*>#TYfvp0jC*VF2YZxxPTJ?FIUW3bmx#6D?dztFO^ zz=Ah2Gq6l~A81=V{=#g=0*qZ{VfR>o zF~#btCRXtWssMjk9jWFP33V!c>Gf$PptJ^)>B7WTW^QGz%`XJl(g0f-V41+Z0d5E| zQ^3{XVi^~!buojBo#I;I`nyY(n$>2$x_Lbi+(w#}n&xww`LyPR&Ahdl8Jbhgt<67g z{$sPj(%yVe^ApXotGS{+mmSD%&hE=9&g|=1Zp|*QXTYp+$n~?d8k1<~n28}HeYW*z z=oqpo)RNn4>k~g5vY9M4^vXEoidklxg!)p=6ezSR`?4&XaAwdMlW`_!YE%qkTS(9( zAz766ARLuoAP(S-4B_`QB;s0JizEw8c;xX>@TE7Xg-?ZI$94x7aRlZcCVm4-uryOb zf<=oLXecV}0BivK)K5Q>LWgYW$DcL$ju-Mm(%=zICXhaOiLLpT1gxOfo@r}neZcQDJP2#lyhEikhw#OSmcSEoKC+5z>y5BTjm;8Uj)B%RREj&?Zf^!hZX35% zc?tT^hp7UHlWSU_H^9-a7w8KN1{7ytH&e8Vkk2SpqG=!FC#pn4vIQqknqb$vezX9N zq|M^@#GSEN4B{(R6RJwy z9vwQQALF4zqt@}*dteI8r?CfN!ujkblmKjql7TI>NPT_ED5?w7li4VPgt?q@kx5-T z_X4G+o!@!ZH4jg%vRg_z;`-}ZcxY%gX%2^%87jJJ=eg_7$jofLb81Q6{dxFjj}>nn zF7AaOIKkV3nH&tL29o?HI-pZ*#}0eY=Aj{O!&)VtERpZS+)qFjB?x;xQ5~pOW$r>l zD`-H7GXa4(gEE-_5NF`04{LJ(Hsd11nNzDDujY?e@2uwkaIrZqw$$~si$Cpp!Npy; zOq#pAoFj4;1DKct-~!>8$x!7qz#cGY4o3((-1(Ic_&54e(rL9CbaeU~0=JjQT%wJ_ z7H^jRpyjMV7;CMbnI674d|sHF!_1b-wdVMNW&yv!ZH7wNgR(?W`wj!lI}}G!Xkdb8 z0?fn-!oI84x*K~MUvGT3@kpaVY8-6DZfk7xrs5hVlR4we6c=o?R+%dO^?q*k3o|g} zbz<&TB9_2`O(f#TLFWDD`ZWAtQnEOkBbc;BCzFIMj0^;Cg!C;(aE?Nzjs5 z!P?)vyuSF!VP<0^thmn{$)0jad&*OB-O!uYo^|fci!NGm>W#OYdj5GQ-}U~tpL+J& z^7E|gx5eij-r5ddG~sWqUjChDc6@`*C}zE)hWknQwWmLiq2rHimt`X}?3D*3D_{X0 zLX|Tc8^j&Lw5K@ivRAuqaA;yi1Z7}GNoz|F@ive_Eik-ulNkpT;6j<0;ZBA&xRCN+X zZ6E9iM+6S|NVdW>4e0BpKS*D|-gPS@69o$lIs+Cpw zs^-RqXr$#S#N6=1m5~;2q@^knt!z-8jfG}&OQc}MFrG^_Tbn80l9QOj8X>v2Eo7Te zLpm`fWuOz)K2&A#cx@l5d4bX@*OE#+J)1H*^WFKL{PMg~q2#6JLQ_RrYjoyNvJ_1e z1{|+D-UX)|J&tvbV-CfNT6~s97-~ukW0N?ZIAm!O>N}J5feC68YKGKo!-RB=mQJE| zdw2)@??_U#3)x`_uTQcq$szPZ33rPIz>>RskkII83Yq!_IMo>zE;A(Md|e|7$1IN# zr+8aSi<@L6cIn43aCEf^;8BD;;F@8UY@k#9p$=KdmSJ9yQih~d_B&{H5SR{!x;+0z zKd!*4Z~?xM#G`LAI2OHV1hue2G6?Y zqIul|cNrCnu60KMgzOtAo_O=VpDdlho7YvISrgtc>!zcB=97wVSd^B^x9eJZf8h7E z-pO7sDdCN*nQt#{Wqn6~{^0t)BXrK8ka-fi*e0E})kZ!s22G)@$M^v=7~o4FEpO#% zjD$s!48QVv1BD?OUE8XxVGIbe{j!dXfK``#TTt*d$UPi~p)v-MIOKpAqC=j%qWJ#W zwJdZ6``2QQ{p%iffAL((wUqCJ+t^I;wK$>AR9VD4sQRY?L!+k+Wa~qhWnzK3ECik7)-Qkq8lRX#S@VtN-zJeV1=dVBC zJB7WtqU+S2PL@4q%B&ev&fW9Mm3IMHSYEJ)egA>&cV0F`y4FiM6zl^4f=hd}xY4uI z1K8jl72IJphK=*E5tOjPo$)HzzAk_+XxM1MY;dcF_8AScCg92r zXrJ2JA z;kLA>?}21Uap^DN1rS!ZX7hP+T8NHNqxd&UKhZW*YMe>e3d(_k*n)DfxYm?wU%a9z z%Whad$(?tvzOK32yy7ezsoPlSEcUN==euT3yy?y*>!wehJmYIizApBu*sCR4 z{Z`PbUV2xH*VZzTey~TYqC691S+!HuvA^nK>w)Y=8_#BC9#5sCIuc2TNo*!7je>H^ z9kySlKTPvTt{c{mb$MP^ltlsM8b_+)rq% z!ayXwMzG^h!#K4dsJ<=X_Kn|F%O{k8+V-ms*J96F8e^z9m!sce! zs%gsO_x|>`_dc%7Tw!r^E&nb1<2S0=XVu?efBfz8E{EkT_TubG7hgPS_OEVOyY_}( z?Fm%&XMX>y{NP~zSHI8nSHk|~(k;;YdS0(V`hiw|S^Z7*+~2@1XE!r`x_qI`mzpmy z^ULiw+qoL6ON2LQ2>Y32pHt-PgzcB{AXcknL|VvEXMzopj3tp6GAAi9v?F0lSp$#^ zPih{F!`4g{1r>q4T+&#Z#&}5VO<~+2KX|-xr~A)1=3~cuEGY!CQYZylrgXOZF;I+* zwoyEBz&Gg-?V_Oz#Svr@5Fl&`q5ZgY+(r3mch8+s-4>hgx6WDglk1D0mT}p~=ixrt z^!iIDo#VOBaZ>VvNzv^O0Q$cK#|}C!0v%rvdALUD>E|Uo0x2~xjID`qg0D?8Yi+o8 zeCka`+&W~e*OO}^Kw5Wp9cOidh}Mkh^yr0A9u=82O^w?csv_3F1`IDXxt(6%13#&G zVM<7K>EQ;}(1f&F4fV6vh_u?Tmyvb+4iOH4h;H@Z@zG8Y4AjFv`U8D3o@%AKk}}D@ z0B)Z@E^F35j%rVj<<3}W$@qL(v2&DYZKGK;uKx44P(jd*!QujuE6Yl^XpXt5C8;Y@ z@+!PuuP?Kv!fa0`Bpkb59J`^2Arh&x)JurM^v315Ef&pzOr$r^p08p*GtEg%?RWeGxde6ovhz-Z@;l0?`O zUr2H-8Apn}Ur22oUHJ1c8pw0Yi7l*O>>Hy=_+QhhhLB@kF18JTB1W_(Jh``v(KJV% zHFg?#-K2?=_|j@t*EX?@Pu~y?ZSZMXjk%NQg72*t)klB z3g1hr#mTLmK!mX-o!wGCt;MDxRXz;FYfLRwr?L1nAfT?FHaJZ-?VI-cw0Eb;)24N< zL$HRnTzWu#UFA(`uew^5Rkcaw>dbhiDZ?`fj1m~`9O>juos9Bb@XRnv177iA!bv0m z*EI;i>%f|n<`O8?rEpj&+q-<3h{NN5j%sVDqR;tipWmN8)d-iZ&~DJ}K1fXcoR?!? ztvK)UiSXO5n%tc0y7HQ-9emF?PW|<8@$W^z!A(8hg}dO&cV1qPd1_DaYT?G+c;hJ- zpL=R?V2p>h;>*8fvp?t2z4_kV@b*4CtncevArJZ?4=UM0&FNHQAQrNeuAs{+QE`HH zX|%ckXcVAjtoAFw&Di80^z(cC%hR4-JoR%M%7sn)Bqd6s&!dbcWHsj_4!ANpG8TOmcpe+?Qd zh>HmTGTrB7mphr}>~(Ty_=Yg62uH&6!^^@)!v+VH%MEKTL`%YvKLpr7U~_mdM@2cDQUT|+MubKoaY{cgLy&V> ze^7msAj?UPFURk&Px__qLkD4YKyr~6pa)72{0w#@NTLr8h3GPT?ocwq*@bbBF*12& zyjZ%U`1h{~7|6M7DY9Y{E}S^VME1_D#b*pJeD*QBym-ygPatzvLl&9AGmmtVrs`yt z6{p*2RV6{Y9UgbuDJFw&gN;rRf6a=6GYDi%%y1yZPUe${PYCe~af6%1hW`Bhl8MC4 z<96Z?S?G*$w`O<&;*m+$6&D!)2HDUiJ^sAZj4F&Ma^CN^uv5Kkrpzo*#n=eA!&Yaw z)|xS*xndX?PZfm&jc+!-*C;pEc@uQj?M)L*b?J0%Wjbhd&=yFwwHnp*u~vqEt&I{` zc_=6o2xvUG9#4mZ#$d3coz}CgKM&aPqX$Txs7K#8T24`mycxW;{iSi)bY_v#`NBHO z=NAjc(=kVlrqGmf&^}k*__y(-5E`2jap``AZDCj2Wd9!l2WH$ChG;$fz5QNr{l%s8t7w>4x1nw{6^JBI5)$U3veA zDKU`#pVP*qna8O3xqRz5dd@wSytOY&wvKH2*{DRA9D~PZcwscxDxHftnv`ozz&6Q? z^y;mV`y$UrUX3W{D(qI}K1#24Fz(p^>|2w=`DHm(jGYP_&7skxsw^c{cy>?jv{aeX zdd=E42u-RB7J}ntVTTCn9MqGi-9m)uIn$DD;_`jbE}^0(9I8^nG9BB~c2J zaMvYhXgwwO@SR7>=NjO=U<0MG%R+s>T1xI=P!14^|2sK7oq53Uq<9tnd`?0dljDRb=yL|=Y7RJo7+s9;& zTPi_nC3>^r`H{;uTAz9uMV$M)3 z#2rR8o@pkWxMA%QJaMY4RDO&sT6U#+t9qaMs;Wqs4Z=~#>-96;B$hAp-{k+cUzR~C zn-Mm((+lf1?DM+=VV}nxaC&`CuQMI?dBb6!E8q^KVRZ+CE~hK(_60mJqm4l?tlSYT z3p0-9G3^QeB&^&UelpArVPAMfSe}98<*Fb%G02*bb&BYgbCPg=Bkt*7hCk#{6<09e z^}z;rJ6+bYEYyAOp&@wPU<6nM7xMsIA(&6U2BQv?xP@O}*LPxOmOgYzpPi)-ZlOd! zaZdjW*+X1Ll$`!+|K|lr(nbu#+^jE{zB}J~ySR(3E8fW#|KI?dSG<>1T{k8k+SuIU zE}rCa@z<=TXenMqwi0HPh@5elxt^C)?7p#du&Sqnk&8p+WjP(}51t$3=LRniV)PP5 z*0Zqd0vEr)brsUV!9Xyry1c6D8Z%Q-F*KreQ2JM$p)OM8Me2SPW6HW!q<@hx4u3xV zD|ZDh3~-nmX2WO#m;!sd9M&M_Pzk1N)5d3UtMGx8#Vyq&m9n^H7enNh^c*e7d3?sU zd`3!RbXfly`isLu#HXPnpA+1P(P<;?NWzXgJ4YoR>uC|QMt*fC+cu8krBNey!c>Fb zKNm9>s)XM^gV0ag5ieTg2^5l)e|-Tc%{4!*;i>l4_L=Q+U3_AEUR*v+K40cfG_h%= zIFOUE6Bwp{vvU!xa9UN=HYsSmu<7b1UeOe3YG{(p zP0of`13!l7k+6PSO-O) zfdq#W4^&tX2TsmmpjX4rJBas6~XAO&I_NcO;8LdT6h9gx4{xp!@%{S0mXj24%Tch8u6_q6;)cBh$ddj6iT ztbA<#HxHap$ecZYVfa|?%9VTAj8m&^-B$nnSQ|UgVN6y9(v!Ovwxl{zN4e*mlU|w_ zZLKtZz4z3+_V%Qz(y^-36X8j78=smz<-sY>6u)`#)PKD&Ip0x=%^22$M-`X`e2rFl zRpo7!{HpkE@ju1oE0tRnex>tKZ(n>aXkilpi{)-HQ*RiF9C%+^G(y6fP|oj zI~z@1H7C^Y8WHZ?nzqqo9nIg$YNV!g#4(H>jt65}875$I+b#i$b@;j-z3-Zb?}Dr-T}sSD*ZLN97nfBif(V zjwhv3Eo_QUcU>9owv0r#p8Cqw<@uejZkYaUqUTiT&X2LLEXd&hi^u`7a^ra z(L36Rn9reG51=Y6Gzdc2ykph`^jCRzmK^&CE1zzdwIytNoMe~Rm(b&L=)e{ES&Wgu zFxhh^w#u8t=3Mh+@lQ9dyz<6BG1K+^M>V;lTMVStcj+Y;6Ze~%ENvUO(^&&wVlv?|>`P&C zP!FEG3pj>jDPs@d88)WmRLW;L6lNn~77ORX-C>y?dcty8t%_GQRmrO{&6ZdBOllL8 zn$)Iv)1ju}CWEOd*VtXIk!eJQqN}DRCWY6BH-%+;7)7W-8Dj-7qw~qFa9)VDu(gH% zQd8kBj5M?6iLt~X*DzFVT|z>CDjx{K|p3bC* zth-a{eurjx_T!-+eAW$f{3p~kb)o>njii;x_EEY|SRgPz#<;7C?Q)dWFN|=}aq34k z+gKK+%x~p@U~~U7Pha!EM=xG~$z%6la&^sL+OM6ms4bnG-883p;>7&ajZ+vC950?j zjP9ERaqX{X=yos(xzn|nw8wt17Y^KI5$(d3LN>FNgx#piXdmvRX5_rUi&fO10F zNM~ejM9zjg!*j!OUtl$r4}$NAj*Vzff$xAd3G+HWk^h)0yBnFQj{Qd++l^X9Bl`ym zf&GfDB)eNsKM2;xHplkipu~FcL_amgp4htBMtW_6a;TP#)H1@y>8_ROp$B80)l{6O zgRV}kPw~_Qlj>(Q;x6t#+On?@d(+_y$^SeE~%qCaG0@4X0A~r9|Z^Y7b#-9(;2d zFx>xZR^w2E*)(j2jLUJn)_t#%0@lT3tBdMPX_gt(I_gc+V6{-!G=Ks)`11E2xaR3+ z`UMlK1;-hivTiQQyVu1%1PMvZFaqvE3Hans4K%#ca zO}lRIo^xCNj=9rjpZuM>PS;3QE`Xi1AH2no6zL~g_UzPGQ(QJ;1mwEvjn(|I7@Gkn zz+dU-G^vw2l!gruj;dbSXNTA<&Go31NNgsxS}8mfhTsf`y~(%+aVZ*A2hf?ym!mP!upv1#>LL9f(2~%%IWjx%{Uqm6#jV2)lcns zkhz0vX7}8iV_iGeK6~_BafG<^EyTTlC*s}#sb7n@AoeWA*QtwXlW))`SIE9)e#vIG zf*d4~cG_)e)X|zrDm51fv44o-;q)k?1(KPm=0P(zn?pg+B1d*~Is5YtOh~lOz-A;` zz{UYp%H|A3#Y-EGAR+kg#4>lW&_Z1<{Fx&8x^$RGj;XLv49_!#WIzG3KZ<=)BmI!F zXjEtFDtP3t$^4eUuE381^6miJ9bvXO`zZctoL`>2If?2O{j96bEl~y}0Q8(x32mA% zi5yJ@4S@AiW(ISWgR~v*I3;@hhQIH-a{OuY zroa2A_a3V%esngw{F4ngaQ7#7J$UM+W2fwq+>bG1x9f=(w(xk ziZ3di&h1CC0FfMQ_fp7`a8!xWn65o zXs+%(7GQW?7PS%frP>mA@c5OT5Za!EHe&2CTUG&5$UB72TV+OnM z;}tt-k(K_bVJ;+kw?2(Ab1nNvEi-2P8E%PaQ5CJa)WxBwcmP%jYKPKkXASBx-qI}9 znZi!Q?qec-R8eCzLIK4ww@mgS4S1>6rC2wpNQCt|`<#mEj60j0vLt>UbSfsNb9c>+ zyuiWiN5BL*14%^s9T<8J6~^w;|+&waIkMxZmWE$@@JKbq0)y* zeCWJHCIwK*ENJjeb)w)mAaVH-DTHTU6al-bCK$tU22iW_@K%fmCIO51RG|sa`|O)A zEZ7jo%-})bpLpGhpXz|UIdUXN3xV~`NE;G#Az4!{{9qVtQ<5)j?Im508ezRxoi_{& zRM#zB*cktpISape+u|*IPg{Fm?<{%2n;$Oenm4a-?tLrQUUdO~ZP7Vv&L-L0!hXWv zQl3Y=^ghk2#L+*5=|>gjJIv3TUo>M>HVM;hz!#^-?Knh!%>8);Jm>PjPRz2g7b=|l z@PZZV_G1lzo*P@Q2QgDxB$w>;u->lNUAyInG4#gRZCqvCXjF`dM~p4_O(9_Q+5(!W zS6X*HqjA<{iHVNB8^n!6{xJiRV0OKCM7Pva=Y zjYJX$m>(Cks+1qnQfT&+oe0GleJaZNRG&3~u~0|?yNor#R9!)-sg|r!P-iO=8MIjh z@lZL#rAQnP>my2}S|?th8y?@rfD$;4cyAEalWy)qi0jXm_alG|^F=Sq?mtX%vwR+V z3EwGBi8s>J#<42R`s@A)7>^L-*tUwe&IP!pCeck@SN6=FQ2=g$X?hms9%Q{ zu&$=MKq80P5-|2d?$B8w%tQ{Vh_L;~1V%pL&I$4>?zh|=VfcC8+r0cX@BQAVy|Tp@ z@^Oog3CIN58Ds?iek6E|0N|OelCzKar<~UtX{1YKk~x#iEqWFbhPq6BGG3i9g|jKi z{sZvL1Kug}BU?)oMFBJy-VG+Y+LE(idLR@1cv6nWlQeMdVJ)U=Ph{9_nfo)`kZH}J zEcQ@6bJoY|x!0Jf7tNMh5FG%TsJ_{x4ygtS6*zsWY*NiH;L!L1>6JVDQ%FZj1`vPr zqb`yxftF<`tPr3UV)inP&c-|N9vly9JtLvIycBVU6QK8+L3baQe?|PRG@wvqUi<-? zht;00#YETkfXUB$>YGnq*qEtpIOXJ~`j>zFy+?n1@#$a9REP4JuBRe*OktKtF>)Oy3`j$ALI*v-?8-541DHN_ z4fDV8jlCCKP~n+a=vioZ?ndjf{I`$3!aKg*z98Khs}lDsNzb$Q(BI*cZhl^J;ygM$ zVdT=xj*aF4n8$9qZI9-a*cLX#xWrW0@3KWkkZfod7Jwd1zk4r)q6_Na5$tRx4{Y0H zW0;Qih-Q)^8PmItM7OcVY5dQe~UvRIH<51r8DxbzPN5UCzD&)&PBqV}nU z^UI53zrq?W4T>f4j-!~9K)jH4@xMT?aog9#+NgJBAI_UkTCe#wIarVJh*9)_bQ^n& zN`--YvAS}iFpQnsBeAjel`ZA=6|Cjqt!55Ttw%IZOkp&TF{d0+@P~QP|FRqW>lU3X zh?8QvHc9$5rBperD{SKaHE3`VE<`I9qX(E^ROR`;y=Sbub#mig?pU$1+C>d77hkk^ z>ci~u;*Cq3E6->=9T;d_?5PW|4w}5yr>Ryn;26x9w1#1?6%GkU>mi^~4Q#hr>=p>> zhj*ANFbA9J^tYw6G%R~)r|K!lvP&haSGNdX%jZ%1+oDp5e)mC=l=u};rilJD1XZUx z;Y+a#7VKRh{_T~0#g|#vb<9`%h+VM-Bo=!0ZRrU1k1XY1B<4e5J|t`brqLeR2GvN9 zJ1b*_LzoUeT73i+2z~E?K0or}i{R61;w;h6jEk1K z9WxxiWTkp9LV2ZFs95Kht+2ehaZ96h$@tpIFEXIzNeW33>CznzN_vQrM|V|qVXb3> zg9mMF07wi~D3*iFtO)u<0Yx1D*#KC!!5ypR_0+U3KfFzqDuLMcuvQVaQVA39L&DAy zQ{Q}NS^vv8-b2WmBG~ojGB5z#5CV^4V!8o<_Ahj?lnjF|2u_r)6JKVYHe+7FZD+L? zy8n97j1%WfU9ouY%9UuG+CRCgCNR19?}drypVg7)Jx8D8Tfi;YK+-Pu4WWN(cA_{E z06LZzA(oA>WgY?F2A@OP2ktJWVN(N3sULJ~$Fgsn)cSDRz1QgMbVYyayR!3U`6r)E zTjHuSmaaVu*Y-%4XcjSB*;wHr>9Gq&w>E92a8I^1<@Lu*gYK>b&`jw>mEREjl@X^L z*Q?Yl${t7yx8#%uo*fm%=A zX}V$W6t?Yaturdlx3-36rQ~-%yH($}Jb=Arkm6gBK-mX6z)Arf%6nK4;;=B*;q$}Q z4-_l+BIAs$dK7T{M9+e>OIZkc(k$nT|pv@Z|-qDu+H{g|!g_(zBf@KtF5n&9FZalf**@`$0 zhUg~8KhHMSU@K@8&bt->#i`?O?l?{pIG) zwcgu}^{ypso~Sc~0vQnJ5J)37yDp%=L`aX5*Gli+C70heb@??|^4>98d?n`G`wArY zSHHTh@jUjE;))AnnZBlT*plMqbAxA{G2whhK(Y*9yW|G!m!!0ba@S(NBq-$Tg_S$AyJM^e?9BYp57wnU8d1CMz8E^;_MIh=_xrF@vY_HiUY7QNj3E)GPQ z3ZuRz<$1|fke8p(Ihgj8iLh5+y3sk&75#~K?WC`<(??0LhrcFPUYx(gRWIZt1jj4b z^A>59=03;7x=ic@emcL9%O@EtsRmM zNh6qmtQa{N)(Z37L~BHjcFoZtvZIH{9-&?zusF%6wHAtlzp|_N)~-FQW*6A?lVU4; z$jR&_I+HTlv9cd_EPyGX@jlWneZ}#XgWv36MhBax-lqOZ{imwjrrxhUt;!Zx$n~M? z6PIFfF^f0kz191n_Y<$d;$^o4nF-(|r&yTD60rQp@(YVn`HGR5i~-|f<9YCd6~Dp{ zaAxK~&TDKr1Q%G0<(Qn6v1ECw6}*PjhZ+2c6aeoH!jve56^PFo{Oi?vSV6KkA;Pf5 zu9)l|8yn>_QVMV{^g2b6d_`D>Ot4ba1th@__*eehk0^J(Mf9;7O$Krv$}Tv(h2m48 zZ+$CJx$%USq>V>jd-RWejoTNkeEgtn`z{MV)KS|#>AP<{cgof8oYnX`(NOxa{IAe~ z)T@}0ex$YBoW2|Vhw1myAE)IH5Z;P0OBG6vm<{fBP-Ph#gAGw@VgVDYl@VrQ!KoG4 z=}7Ej{eA>l29VEYcuu&u4{c3Km`wHXPSn4-Q;vWx{|wkBway50M5?7+kSz~x3}QGK zo4g6IYYAePO?pDMO(ckcj~_ zQ1mQ`9%kS`=)oB5DVb%XS%4ro%?SWQ}Y?^EPGE zXdEvdKhTm0WUQ}b@ybJ${KCqsE5BDMZ){{#13J_wTMdyHm=>d7+8waqV(}P15@RvSVCWgPHxCm~Hd-2R2Iv_!JH7$)h4_598%^u*A?bDO zgYJBI^k+RvNj^74_+e$0v;%De+6ThpE}0LhOXZ*|HH0R&g!|AncKDnS6%Op-+R|({0G-)t^O0tla04~*LL3g ze5C)R39dqB;`x_#HttO#jS=~3P(eC&A$c7eHo-7Vbbeaid1moR)E+3J^^ zWK39bmL#AQJghnGl55bl#WmzoOfHw6@&S#G9uN|O_Ph@CRL%g173tNRyff68Jqga| zg8AY}=E((y=Weo{`Pq*b!U4U>woGnYn7$031K%I^^;W}oA+R6P92IfwIE3@@&t)iE zgWG)WkP9Hfbh_QxB2hfk04O}5xrH^@15X)vKB^6{&xpi4tl2fEE9T;9*@d}s#B{F> zGsT@0(3ZP~Mg#rAFlL151olD04;^^p9jp&5)#GAtGSvOT0wnexX9OaXr#GOtqhLE( z(sXQVb#4P0eXf((*-_VNr|rGr2E~@HgCBm6b{Y)5YwW!ZH?YooH(qk|-r~E{Jb91s zQ-3VCLC2Xft$L3Zx=UtVt`l4zxnz3aVj&eug;a%wZI7alRqqXkRL@yKJk{ESm-?&* zdJ1GWVZvyUfG_7^>ph!1T=K+GPmNTcCmIMd&1+>M3W0PvV}`2WKG4%HB&GpWB`rcR zW#N~La3GGu!4|mZM1lU-$o-|_X#Lb2%+EjC^0E%w0B5~a3j)Urp0Lme?H@lzy$%7UDDF{Im#L9AaJm6Z|}6&tle~o%xMv7{f+1wkLc(<`$+k(E2CHnS7;=$~?UH<}eTRI* zKE*2g+`_%UtajQ{E*JI`)n`l`tQe{orrHd0v~+QDK=cQTAEw2r2$w_okQA*6dBT0uGs)HG-+%x4tCN}O_pv$GWtx{RZO&ZB z<|xjpo>{&3EIs+;rT6sC>Z!W#uEy`5G->YKNhf{3@vagb`EJnBBdyiI0wkfb>=P!> zHLwlFdyQzhW+KWRx62Wu+d`t499(iN+>o9nkfo5Xs<6?+hCCx4-iPfqQeED8>=Ep~tX#Pi>q7TtT($x-iKd2#XYiyF7| z-oX|WH~nm8!&lhqv3uW*nADv#2XBPN_=#d|D4Rls9FZGjImmr(U$sw;D^9_FvVslx zBDsNl1eyQks8uyq0V^M%iL7H-Vq_!^OEQ^=*aV^%*GS6&^a@HagbhsEpu}2QRaq#I zW6jW>8iF>b{3j|X5FoFG56E{HA1S`I_kxu*p846v@cf1E$gdU|Tgq-Mp84=CbM89R zb`y{0#GOZp+%uTZ#Ld-{Md*b1v47h#|DhrLC}pGjIu&*O?mB3tEaF|Vy{aK6!1zE zX+g+QVO^^gwnbq|jvV5{V}~3iVtP3`DKpx?Bpbj{{G_uMJJ$wlInO_QY0KsxvBdXa zCVyBA@YlrIeVcE^+A5@PYVo_Qk6HQOtn2~#8JT~EaBT<%Y^VIH{7cy&TP-5iYvD5R znqWN`DH4FV?k;YnS~J#Q9Q!KdCVb-+MxHxxkVG|)S6-sPt7*HHyB*?!#lNguuosOZa58RwPHU*7ih6rpOCU=y*8oVsK|x zwN@AT!s6G@Vrdh_som9*_tkJsz* zc%AUVc}59)VVsk!h6}shQ|Yb}2%r|S2coQ6M)vEGtz5&QfPsh1B3G0uI6qK}k8E|= z5i=XuiOzew!47NlVQqGm=BldFpyk$8u^x=YVbRq|+ca5IG zUe%JbLre*H12qBJ>~Kl}H82#AlX4({P7Bq~yA;3bCfg4X5JIpZnQJQ;5jTDWG4esp zPYuYt>jag}2rxC!LjgyRUmRGM1Y^8Ul5G+-ZgJH^F$T?R&?JKjeX2pRZh}rVg=GUc zM}chvif2F~K`P|`$)N%qTMiqToJ=aBDQQVTInW(%J_P?1=XM!`rx}-Z%b9Zh?Z%`) zfP(7eZ|!`v_?NCd;Z+ZvwP^YQZ0Ps-!k?|4GLeTK-N)qkhC?Txx%#Kr(C@ky^}Y6=BHwISIY2nI5spfBjl_+*nO;HmY< z7IOJNaLCAAKcdA}Gqwrwde+UBBcY3j9y~e1Fkb{XL z2EzviZup~O-V8uUCHLlRA~%Gk!jIPY60ONl3Z3-u;8);eVSdUZNDp22%7QD?z04q zm2%YVkn|Lg);gh37+|akKdweE$R;Eb53yl}AyXRbWrN~}5oR)B_Vz~4fM>HujzeDU zX1SX%2yhwo8o){?fppLnz?^KtT001^aVpmnJL#bM#ybbFck1gsCfJ*>T=efH`^D#_ zvS0Ciq4k*yFTAjj%A2Pa&OP(YGmDqiu(n{W#T2jf)!Dqhbb3~-LFPb+PMaYPpeu_5 z%Fo$(MiVk`+3imAOpCOev8@h^4G%jh5r|GYY!=!8N8fz2oH_w~wg@BTVM*0=p?$7x z>9MZ0v%5E+=V!*gHbeVaUpe*a_2_3(B${|jb&dL-bV^Ta*PF}$FH9ROz^+43j4_v* ztLTPF&@lj1G~VMFaBOzSs~t%1H#ycjh8-gggCl3@#!l`SupYDW9_xU0vsGSgWpTJv z>#f7q5v#$PGjwCSbPO1e8F`O!z_{5cuQsx{vB|jJIBXm-8jNw?#5wO^z#uui49FO0 z_&Dz2@G_BvIdfScFM{S-h7ksdu`l*JQT#{+kfkpcT2uZfbndZr{Ac`PB)c1>-)bj6 z>1K-2Yvg}3vf8@#IzGE@aorVl^5VMl=pj|tS~s&!wuZxDZru>t9Rdhr*k9+L=U?hK z3?V|gI?4v4tUbCo%JnK1Z_=?xehgC3D?bK2i&S@tcXp#h>|J!fWL}UTrCh=GiUxN~ zR5Q2-8rZ%Dh8Yr4!=VOlX$Yn$!jguijmjN_&}OZoSXz)=A#@uMfG$yF=w+44cTkxQ zQH8`*DW*o9MI^q2{OVsL0T4GuZAGG~2o-dJ|D>5nSl9u8se9ST8SB#B^|_NP%)j4b zM^N}H*PSpEKNEB{wKXmXy}*16*P){rOU zcTWzum&Sg2LEZY_d<#OP1++c{T3e;4bWmH?>R`Wguw4#zg@gSn@KJzg1D%0a1M;sb zKdR)}%Fasuqv(G``Kv~jvvp&Zggs{G=GAT{Dwgelmxx(&Ryk9c87q*W7x_OkQfdY+%nPyC7jzJFkSj=n{1o_kDCB^yvg>zsrwG_xTu^oChorHvDiX9t*0-^+vaS{wB zv5ZMfxdaE28(OfA-oMUBwjepGw%3B67gy?ianx<)g>2b$Rt z@x4Q77?^wWk>?*Cu`mBdpp^GdyuDr#1>M`JN|ara$3!IVig5SXSfOOmTs&@~3iihw z(1j=hWGPadlxXlzDKd{bL?p=&P5k{CGTI)gZIM`5*dejBumD@zG>hxoc#>My3puXg zjZORbX~h+@XD5q`le1eYik{zp&-?Q$=0C9V-q*jF+b|;QgKch@ch8%T%-DSTBXfQO z6@>hW?fhT(R_u#=ltFMzk1?=>#76Q6#TjwfMLHO>Au$C7eRiEeG|~o&h7~*mAe^LQ z_<_-cjZ(Ph2|@*g;d(F7Nn}%fmC?jO4b`LLU$$1*1XlxU0t8OfBU1Vlexuik$Wb`@ z1fJrJfd5Vcs}ZN3G+oL0KsIXMPjG1SXYfB;h1y3I)U6}O3w7(!gg(lIjK4M`@PGN} znrq)-!j~Uzx$K?)ZaZ>>tz~mxctQPnzaApl@FM^5C1rNKnZ0Rdd(3R3nZ4mT=HcU> z8qbR!;SK&6&&T;1o_`UJV?)Zob4G`eH*6uJG2hNx?0sp~0bjfEPM8bE1;#bTb|b{X zXtV~!UxNQuNW?v`j*v6he{A)WL;xI>&$@ryqzWx@v0}MJy&35l^u8;Az8=Iqr>r%amS}#GV?_yBpTbeZgKi_pP;;s;?t6VjOAWm&YA7+3tNC*+9 zO^6o66Yc^V4~6Y#6--Ds^0jbN`S`)l%x$@PVP@$w%=W;z5rxlW&c3Zs{eAxUOZcMd z8y|dhLd~Moo>g})&rF!c6kD#VY~I}I5%r-JAmP$zkPPr6n#_`UmhVO+ zF?#E~E#4KV|0fg*oe#g3^*)at`0V%-+2ZwBEMCdr3sylr`@9yE@GV66A(#hX0kfc& z&GZ_lQyVq9i#nZ@gIr)!*l0E3gZHqfpY(ZogV}(CWm5+g z=ye?EaCB4AIpra74m=A5=rv2?7ZZ*(o~UvGDkDLXG;%_MWFUsV`o1(VK(S zzp$kTS=}Gl8uf!AhcD&hH{Zo^WcQ!nNmgACMXlRHT6EfmIIf>E)pU8)m zQ(hv7W{-KX`8u`4)@yryrl`5YmRbf$q{`bHYhfq1Mr%W$lvZMmrjHF=tIK&vBa>j-tXb)b}w z>S(~(1K=xoNj_8Z5^!{^L%UUPF4J5#GU_X|QVZ-@nrpo#2L8Zu*JAI98Y&*iW4TOA zY{XycBU0wX>5C?x#dJ?!w|d3)kH5HW&*U2xu&SOng$LN2;d6fb`2C-;%#rO6PJM9n zj>u8|V)mFG1?P)v$~Jx36pSud`>r54-o9ws+j{%Nc<$0ycg$M;YsN%od3)R-Ycq85 zLg>1A&~?a{0JgMeLm^vlVyL)uA%BAE)a;svt8N&*k0rLSZ zTfoZwL7(8`4pOFRF?&?0bh)lywPfyM@|QVwAC3e zPSB*_(7dO{%|F#PVd>(DLTID9@W+3@@9Agm`r^kQ+^{&U{vkAV(AZ}hJ`&#Zwyamb zRzF%l_c?V!boXxGBQK*A=d4$M9$GlxzHR;^Bi9Zqv!4hfY6^M{<pRXOvh!zY3 z?SUmbC|L!o21qn9$r-E0H@~9i5MM;!|9F`NUw)Y`5I^J#P6Sr%PpF?XtH2MU+#&8T zdJzhy-*PXrHm+5%0aLC4CtPf}#A-Sl$^xi%PkY=PG}g7M1^DS{yw|3#~F(qeUeMatAl&01AtHK&wym`1lRij;- zrK*U-#)mJgCt6L~bM&XD*V%rZ-(J)GW6!RsOBIJGa6qWVm>2#Jjr6+LGV zBUdm{Xi$9UHQvCuhJT-`4gWc+l616vx31_PZ+3lV>Du6ENHqux|7XUEcJq+q-lw2k zuOgkshhPX6aECfIjn>-J=ocVv|!ANDFjpq&2#Bsa>ZNcpphH zewEc`qNdF#Y5iG|SHxbC7r#rJkq-Hu&;FhE*^77K&LlN)(q=w(z{lqOCkLTPFUHXM zo%4TZ!2F%Eljoe@KY!={^ZdX2vyYyfzvlPU=I>+&oNV5IauEIV|2F^M?$k7wHijF( z1DSX*gfy2d%PCoSRPK=Zc6o=)bF#}UVNIA3FI9A;q4aby(Zxs?16}A2q_r3!b?|n> zvxZL$!hFL!hF*hUAgyH}tz{ss1xOD!F3?&iZ2tkR^_^=cJMQe-xll<97@mX1yYPQt zl(a?C`u;Y5vt!Jztu0ClvXvv}@LbNnM@Izy{!?_!+7sV1zU=zT(lE!7lgbem{{J5# zX(!FjSPz>kt?8#IegK<`iCLQq#&o}iLUka|#RDEcR-?zynUn?I1->=jHNJLlyAK*F zo|RBfRzrC-4dsFJ;8_o^czSUL`7R9wd+Yl?`*+%BlZJ|))KGDDAkOCfCkJuLzWBaz zyfc6X5deL2k?*HLPYeJsU0bvOBLjJu{LtNSQ|dlN`AV8=n|w$fG%{0tb_%U0p1>X7B!B-d_a=) z27u`dO%)(b6(CI&AWan@O%?b-P4yjXsDIqqHMCW!g{A@oPAb)&5*KF2iL}xGe?x7B zE%<%1)<4$lI=fhbo6}J$m-1YxM$dm|oTdLMl46{swZ2m)^p7*UCNEX0LDN!4X{uCM z_&+n!KHCbhHh#qb+iF|q<)p!&clV>gC5|#NYaGB78OX*l#0%$@-t6QWR^qt}(FyjPRaFm}* zU)9wb$OAoVs@8sp(?m566xG=8et5oZ{7lUERV7!P?AYnxM>|~qyJy_0+0WmcbClcG z+u3^#xcoM_{Nzb4Kbht7@Z6Bw3NE{?1GsEflD#l{aM9C6q>GIdlASItx;W|Lpo@sC zou4a1g(Pv3*!hS>Xt(r&p-S@3DoZ<{SS^Y#uL}H4k`c~`g}q=Q{aREC61WhHHMK>D z!fLX#vZq7hulCi?QnF$G)%>zt{iQNl$pK zc^aQ(0JNZE6)`)9q%=Smvrjn2dVFp(V*ax~R&ef3&uv zmY-6~lv-9>E7jp|hTJYbB=Yk`HWBH+V&jlK!X=6&oVJ99i?VD7GUpz_@|1sAbFo_GF`28D4Zwn zJiZ*jlT9bP5UZ+db@bp@$S@{EDJqlECp>zDnsjo6Hlh@3x7`9`^*0GtUyvog6Y>L-;V$Il*jTV?n$hYher|V>{h#Sm3 zq!bwSELq+lRF~?CeZ_pSFC2~ra(toOT$fb~N=m4MuT`QEIU3~}tE;W$4YkQ+X|2xX zLx967ae=6u8_vlIhik!xCuIbHON;h_3xuU}+T#`@a;pSA*OX3Xjw9fkL~#-rN<{})uogBL40CYz=2>eGQ=o&fYNyom)Gke1<^z`f+5;J zgqJ|$L{%*y>(Hvq?L*+sqvsPI`s-875T}osR#P(jj+@m#+U)0SA63vb>f-t)$F*A> z=af6fjTEis;bYW|C2RM@!;@#CU)$KrmrnnX#kQ|mtbVmY~# zBMw}5c1CCQRWCG$(Rm*@;7hLU7{%)%#QdIW_vydDg_)p5Me(b3Zi zDeEFQ1jn0i;0F`|(*i-7FzJwO2Ie^_GDy`WXe^G3L&OUyJA|@CwWnUhcfAq3lomZS zW&IrWbJcqD&HUI~8#Yb6ef9hc$Bb8Ry1wLh4?g!$$vrja4|(MiHb{M$xo%5d&whGz zQ=Qes<{?p7Z?9gtZ^eV9@zdt9zwK~I>O+!SExWwbyKL_=^frX^wf6%Foz);8F?8X{ zTN+`xJ~-KMznHg9G{{7_c3 zQC-mUthxBJkMphk(}9jj54GO=$i(TJzi{m3NAx^R-yf9cK3ntBu5sBt30G+b<^kM) zJQcX>d#@Lf2#5qOKl*T9qf8WY03WZ1W01L=Hmk{K;Enty!GJ0|gVAVlxbs53pe&(w zR}f_A<$yC7^V@trx5w&@=?q4bUdQLS+%XBQ_ZV_q05^|7GNz3uhqWgI=m51#zjD0! zA{1>ljl)4n9H-JaD$%GB9aGUo6sa2�RSdfL%Hxdek?IpPu+@)$LV}2%BTK$6|Nv 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

RwntMgryuSXj`Wxzn#r3SY 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 rl=@|;;m@ZWM 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 WmG*@G>yQrRKP}%-zOj5$sq`=K49=SX literal 0 HcmV?d00001 diff --git a/img/shelf2.png b/img/shelf2.png new file mode 100644 index 0000000000000000000000000000000000000000..3e443f005dec7dc677eed63888428737ecdad3de GIT binary patch literal 691 zcmeAS@N?(olHy`uVBq!ia0vp^DImxlq%tsQ zOst(~>v7mY=4gDdx2v|Sj?$wE3wLEWh8zi86~V&2bnS&z%_o<}Us$4;Sy(6%!_8Nx z6DAuor?j*{l;t45fV#W7tGMRJde4QfJ?zK-R+PUl{LUvJmAY(JtZ>7s(B2dst+Y+6 z7yTEt`=Zog$m4P5%Hx$sO=6B;x3#I++xd6Gt#PF6k=*ckC5VP|vX#emM`ork+t1@4FXdZPFvFvx!GGv{(oUC@yXjI<-Q{X|-Edr^;LR*gwwO>>c%H z#;6(;=`3Ipo%ELdfAjsjvwp7hRM!+>t)^mS!_!phCBC$yI7hzw9jvcxr_#5q4VH#M(>!MP|ku_QG`p**uBL&4qCHz2%` zPaLRdj;D)bNX4zU7YrF01Q=KjEbprkW7PTdQkm)7ZjR|6)~HD4cJ7$9JDmG{%E?Kp h-qUpGM*S#Yn6J)! + +The contents of this file are hereby released in the public domain (CC0) +Full text of the CC0 license: + https://creativecommons.org/publicdomain/zero/1.0/ + +BLP1 files, used mostly in Warcraft III, are not fully supported. +All types of BLP2 files used in World of Warcraft are supported. + +The BLP file structure consists of a header, up to 16 mipmaps of the +texture + +Texture sizes must be powers of two, though the two dimensions do +not have to be equal; 512x256 is valid, but 512x200 is not. +The first mipmap (mipmap #0) is the full size image; each subsequent +mipmap halves both dimensions. The final mipmap should be 1x1. + +BLP files come in many different flavours: +* JPEG-compressed (type == 0) - only supported for BLP1. +* RAW images (type == 1, encoding == 1). Each mipmap is stored as an + array of 8-bit values, one per pixel, left to right, top to bottom. + Each value is an index to the palette. +* DXT-compressed (type == 1, encoding == 2): +- DXT1 compression is used if alpha_encoding == 0. + - An additional alpha bit is used if alpha_depth == 1. + - DXT3 compression is used if alpha_encoding == 1. + - DXT5 compression is used if alpha_encoding == 7. +""" + +import struct +from io import BytesIO + +from . import Image, ImageFile + +BLP_FORMAT_JPEG = 0 + +BLP_ENCODING_UNCOMPRESSED = 1 +BLP_ENCODING_DXT = 2 +BLP_ENCODING_UNCOMPRESSED_RAW_BGRA = 3 + +BLP_ALPHA_ENCODING_DXT1 = 0 +BLP_ALPHA_ENCODING_DXT3 = 1 +BLP_ALPHA_ENCODING_DXT5 = 7 + + +def unpack_565(i): + return (((i >> 11) & 0x1F) << 3, ((i >> 5) & 0x3F) << 2, (i & 0x1F) << 3) + + +def decode_dxt1(data, alpha=False): + """ + input: one "row" of data (i.e. will produce 4*width pixels) + """ + + blocks = len(data) // 8 # number of blocks in row + ret = (bytearray(), bytearray(), bytearray(), bytearray()) + + for block in range(blocks): + # Decode next 8-byte block. + idx = block * 8 + color0, color1, bits = struct.unpack_from("> 2 + + a = 0xFF + if control == 0: + r, g, b = r0, g0, b0 + elif control == 1: + r, g, b = r1, g1, b1 + elif control == 2: + if color0 > color1: + r = (2 * r0 + r1) // 3 + g = (2 * g0 + g1) // 3 + b = (2 * b0 + b1) // 3 + else: + r = (r0 + r1) // 2 + g = (g0 + g1) // 2 + b = (b0 + b1) // 2 + elif control == 3: + if color0 > color1: + r = (2 * r1 + r0) // 3 + g = (2 * g1 + g0) // 3 + b = (2 * b1 + b0) // 3 + else: + r, g, b, a = 0, 0, 0, 0 + + if alpha: + ret[j].extend([r, g, b, a]) + else: + ret[j].extend([r, g, b]) + + return ret + + +def decode_dxt3(data): + """ + input: one "row" of data (i.e. will produce 4*width pixels) + """ + + blocks = len(data) // 16 # number of blocks in row + ret = (bytearray(), bytearray(), bytearray(), bytearray()) + + for block in range(blocks): + idx = block * 16 + block = data[idx : idx + 16] + # Decode next 16-byte block. + bits = struct.unpack_from("<8B", block) + color0, color1 = struct.unpack_from(">= 4 + else: + high = True + a &= 0xF + a *= 17 # We get a value between 0 and 15 + + color_code = (code >> 2 * (4 * j + i)) & 0x03 + + if color_code == 0: + r, g, b = r0, g0, b0 + elif color_code == 1: + r, g, b = r1, g1, b1 + elif color_code == 2: + r = (2 * r0 + r1) // 3 + g = (2 * g0 + g1) // 3 + b = (2 * b0 + b1) // 3 + elif color_code == 3: + r = (2 * r1 + r0) // 3 + g = (2 * g1 + g0) // 3 + b = (2 * b1 + b0) // 3 + + ret[j].extend([r, g, b, a]) + + return ret + + +def decode_dxt5(data): + """ + input: one "row" of data (i.e. will produce 4 * width pixels) + """ + + blocks = len(data) // 16 # number of blocks in row + ret = (bytearray(), bytearray(), bytearray(), bytearray()) + + for block in range(blocks): + idx = block * 16 + block = data[idx : idx + 16] + # Decode next 16-byte block. + a0, a1 = struct.unpack_from("> alphacode_index) & 0x07 + elif alphacode_index == 15: + alphacode = (alphacode2 >> 15) | ((alphacode1 << 1) & 0x06) + else: # alphacode_index >= 18 and alphacode_index <= 45 + alphacode = (alphacode1 >> (alphacode_index - 16)) & 0x07 + + if alphacode == 0: + a = a0 + elif alphacode == 1: + a = a1 + elif a0 > a1: + a = ((8 - alphacode) * a0 + (alphacode - 1) * a1) // 7 + elif alphacode == 6: + a = 0 + elif alphacode == 7: + a = 255 + else: + a = ((6 - alphacode) * a0 + (alphacode - 1) * a1) // 5 + + color_code = (code >> 2 * (4 * j + i)) & 0x03 + + if color_code == 0: + r, g, b = r0, g0, b0 + elif color_code == 1: + r, g, b = r1, g1, b1 + elif color_code == 2: + r = (2 * r0 + r1) // 3 + g = (2 * g0 + g1) // 3 + b = (2 * b0 + b1) // 3 + elif color_code == 3: + r = (2 * r1 + r0) // 3 + g = (2 * g1 + g0) // 3 + b = (2 * b1 + b0) // 3 + + ret[j].extend([r, g, b, a]) + + return ret + + +class BLPFormatError(NotImplementedError): + pass + + +class BlpImageFile(ImageFile.ImageFile): + """ + Blizzard Mipmap Format + """ + + format = "BLP" + format_description = "Blizzard Mipmap Format" + + def _open(self): + self.magic = self.fp.read(4) + self._read_blp_header() + + if self.magic == b"BLP1": + decoder = "BLP1" + self.mode = "RGB" + elif self.magic == b"BLP2": + decoder = "BLP2" + self.mode = "RGBA" if self._blp_alpha_depth else "RGB" + else: + raise BLPFormatError("Bad BLP magic %r" % (self.magic)) + + self.tile = [(decoder, (0, 0) + self.size, 0, (self.mode, 0, 1))] + + def _read_blp_header(self): + (self._blp_compression,) = struct.unpack(" mode, rawmode + 1: ("P", "P;1"), + 4: ("P", "P;4"), + 8: ("P", "P"), + 16: ("RGB", "BGR;15"), + 24: ("RGB", "BGR"), + 32: ("RGB", "BGRX"), +} + + +def _accept(prefix): + return prefix[:2] == b"BM" + + +def _dib_accept(prefix): + return i32(prefix[:4]) in [12, 40, 64, 108, 124] + + +# ============================================================================= +# Image plugin for the Windows BMP format. +# ============================================================================= +class BmpImageFile(ImageFile.ImageFile): + """ Image plugin for the Windows Bitmap format (BMP) """ + + # ------------------------------------------------------------- Description + format_description = "Windows Bitmap" + format = "BMP" + + # -------------------------------------------------- BMP Compression values + COMPRESSIONS = {"RAW": 0, "RLE8": 1, "RLE4": 2, "BITFIELDS": 3, "JPEG": 4, "PNG": 5} + for k, v in COMPRESSIONS.items(): + vars()[k] = v + + def _bitmap(self, header=0, offset=0): + """ Read relevant info about the BMP """ + read, seek = self.fp.read, self.fp.seek + if header: + seek(header) + file_info = {} + # read bmp header size @offset 14 (this is part of the header size) + file_info["header_size"] = i32(read(4)) + file_info["direction"] = -1 + + # -------------------- If requested, read header at a specific position + # read the rest of the bmp header, without its size + header_data = ImageFile._safe_read(self.fp, file_info["header_size"] - 4) + + # -------------------------------------------------- IBM OS/2 Bitmap v1 + # ----- This format has different offsets because of width/height types + if file_info["header_size"] == 12: + file_info["width"] = i16(header_data[0:2]) + file_info["height"] = i16(header_data[2:4]) + file_info["planes"] = i16(header_data[4:6]) + file_info["bits"] = i16(header_data[6:8]) + file_info["compression"] = self.RAW + file_info["palette_padding"] = 3 + + # --------------------------------------------- Windows Bitmap v2 to v5 + # v3, OS/2 v2, v4, v5 + elif file_info["header_size"] in (40, 64, 108, 124): + file_info["y_flip"] = i8(header_data[7]) == 0xFF + file_info["direction"] = 1 if file_info["y_flip"] else -1 + file_info["width"] = i32(header_data[0:4]) + file_info["height"] = ( + i32(header_data[4:8]) + if not file_info["y_flip"] + else 2 ** 32 - i32(header_data[4:8]) + ) + file_info["planes"] = i16(header_data[8:10]) + file_info["bits"] = i16(header_data[10:12]) + file_info["compression"] = i32(header_data[12:16]) + # byte size of pixel data + file_info["data_size"] = i32(header_data[16:20]) + file_info["pixels_per_meter"] = ( + i32(header_data[20:24]), + i32(header_data[24:28]), + ) + file_info["colors"] = i32(header_data[28:32]) + file_info["palette_padding"] = 4 + self.info["dpi"] = tuple( + int(x / 39.3701 + 0.5) for x in file_info["pixels_per_meter"] + ) + if file_info["compression"] == self.BITFIELDS: + if len(header_data) >= 52: + for idx, mask in enumerate( + ["r_mask", "g_mask", "b_mask", "a_mask"] + ): + file_info[mask] = i32(header_data[36 + idx * 4 : 40 + idx * 4]) + else: + # 40 byte headers only have the three components in the + # bitfields masks, ref: + # https://msdn.microsoft.com/en-us/library/windows/desktop/dd183376(v=vs.85).aspx + # See also + # https://github.com/python-pillow/Pillow/issues/1293 + # There is a 4th component in the RGBQuad, in the alpha + # location, but it is listed as a reserved component, + # and it is not generally an alpha channel + file_info["a_mask"] = 0x0 + for mask in ["r_mask", "g_mask", "b_mask"]: + file_info[mask] = i32(read(4)) + file_info["rgb_mask"] = ( + file_info["r_mask"], + file_info["g_mask"], + file_info["b_mask"], + ) + file_info["rgba_mask"] = ( + file_info["r_mask"], + file_info["g_mask"], + file_info["b_mask"], + file_info["a_mask"], + ) + else: + raise OSError("Unsupported BMP header type (%d)" % file_info["header_size"]) + + # ------------------ Special case : header is reported 40, which + # ---------------------- is shorter than real size for bpp >= 16 + self._size = file_info["width"], file_info["height"] + + # ------- If color count was not found in the header, compute from bits + file_info["colors"] = ( + file_info["colors"] + if file_info.get("colors", 0) + else (1 << file_info["bits"]) + ) + + # ------------------------------- Check abnormal values for DOS attacks + if file_info["width"] * file_info["height"] > 2 ** 31: + raise OSError("Unsupported BMP Size: (%dx%d)" % self.size) + + # ---------------------- Check bit depth for unusual unsupported values + self.mode, raw_mode = BIT2MODE.get(file_info["bits"], (None, None)) + if self.mode is None: + raise OSError("Unsupported BMP pixel depth (%d)" % file_info["bits"]) + + # ---------------- Process BMP with Bitfields compression (not palette) + if file_info["compression"] == self.BITFIELDS: + SUPPORTED = { + 32: [ + (0xFF0000, 0xFF00, 0xFF, 0x0), + (0xFF0000, 0xFF00, 0xFF, 0xFF000000), + (0xFF, 0xFF00, 0xFF0000, 0xFF000000), + (0x0, 0x0, 0x0, 0x0), + (0xFF000000, 0xFF0000, 0xFF00, 0x0), + ], + 24: [(0xFF0000, 0xFF00, 0xFF)], + 16: [(0xF800, 0x7E0, 0x1F), (0x7C00, 0x3E0, 0x1F)], + } + MASK_MODES = { + (32, (0xFF0000, 0xFF00, 0xFF, 0x0)): "BGRX", + (32, (0xFF000000, 0xFF0000, 0xFF00, 0x0)): "XBGR", + (32, (0xFF, 0xFF00, 0xFF0000, 0xFF000000)): "RGBA", + (32, (0xFF0000, 0xFF00, 0xFF, 0xFF000000)): "BGRA", + (32, (0x0, 0x0, 0x0, 0x0)): "BGRA", + (24, (0xFF0000, 0xFF00, 0xFF)): "BGR", + (16, (0xF800, 0x7E0, 0x1F)): "BGR;16", + (16, (0x7C00, 0x3E0, 0x1F)): "BGR;15", + } + if file_info["bits"] in SUPPORTED: + if ( + file_info["bits"] == 32 + and file_info["rgba_mask"] in SUPPORTED[file_info["bits"]] + ): + raw_mode = MASK_MODES[(file_info["bits"], file_info["rgba_mask"])] + self.mode = "RGBA" if "A" in raw_mode else self.mode + elif ( + file_info["bits"] in (24, 16) + and file_info["rgb_mask"] in SUPPORTED[file_info["bits"]] + ): + raw_mode = MASK_MODES[(file_info["bits"], file_info["rgb_mask"])] + else: + raise OSError("Unsupported BMP bitfields layout") + else: + raise OSError("Unsupported BMP bitfields layout") + elif file_info["compression"] == self.RAW: + if file_info["bits"] == 32 and header == 22: # 32-bit .cur offset + raw_mode, self.mode = "BGRA", "RGBA" + else: + raise OSError("Unsupported BMP compression (%d)" % file_info["compression"]) + + # --------------- Once the header is processed, process the palette/LUT + if self.mode == "P": # Paletted for 1, 4 and 8 bit images + + # ---------------------------------------------------- 1-bit images + if not (0 < file_info["colors"] <= 65536): + raise OSError("Unsupported BMP Palette size (%d)" % file_info["colors"]) + else: + padding = file_info["palette_padding"] + palette = read(padding * file_info["colors"]) + greyscale = True + indices = ( + (0, 255) + if file_info["colors"] == 2 + else list(range(file_info["colors"])) + ) + + # ----------------- Check if greyscale and ignore palette if so + for ind, val in enumerate(indices): + rgb = palette[ind * padding : ind * padding + 3] + if rgb != o8(val) * 3: + greyscale = False + + # ------- If all colors are grey, white or black, ditch palette + if greyscale: + self.mode = "1" if file_info["colors"] == 2 else "L" + raw_mode = self.mode + else: + self.mode = "P" + self.palette = ImagePalette.raw( + "BGRX" if padding == 4 else "BGR", palette + ) + + # ---------------------------- Finally set the tile data for the plugin + self.info["compression"] = file_info["compression"] + self.tile = [ + ( + "raw", + (0, 0, file_info["width"], file_info["height"]), + offset or self.fp.tell(), + ( + raw_mode, + ((file_info["width"] * file_info["bits"] + 31) >> 3) & (~3), + file_info["direction"], + ), + ) + ] + + def _open(self): + """ Open file, check magic number and read header """ + # read 14 bytes: magic number, filesize, reserved, header final offset + head_data = self.fp.read(14) + # choke if the file does not have the required magic bytes + if head_data[0:2] != b"BM": + raise SyntaxError("Not a BMP file") + # read the start position of the BMP image data (u32) + offset = i32(head_data[10:14]) + # load bitmap information (offset=raster info) + self._bitmap(offset=offset) + + +# ============================================================================= +# Image plugin for the DIB format (BMP alias) +# ============================================================================= +class DibImageFile(BmpImageFile): + + format = "DIB" + format_description = "Windows Bitmap" + + def _open(self): + self._bitmap() + + +# +# -------------------------------------------------------------------- +# Write BMP file + + +SAVE = { + "1": ("1", 1, 2), + "L": ("L", 8, 256), + "P": ("P", 8, 256), + "RGB": ("BGR", 24, 0), + "RGBA": ("BGRA", 32, 0), +} + + +def _dib_save(im, fp, filename): + _save(im, fp, filename, False) + + +def _save(im, fp, filename, bitmap_header=True): + try: + rawmode, bits, colors = SAVE[im.mode] + except KeyError: + raise OSError("cannot write mode %s as BMP" % im.mode) + + info = im.encoderinfo + + dpi = info.get("dpi", (96, 96)) + + # 1 meter == 39.3701 inches + ppm = tuple(map(lambda x: int(x * 39.3701 + 0.5), dpi)) + + stride = ((im.size[0] * bits + 7) // 8 + 3) & (~3) + header = 40 # or 64 for OS/2 version 2 + image = stride * im.size[1] + + # bitmap header + if bitmap_header: + offset = 14 + header + colors * 4 + file_size = offset + image + if file_size > 2 ** 32 - 1: + raise ValueError("File size is too large for the BMP format") + fp.write( + b"BM" # file type (magic) + + o32(file_size) # file size + + o32(0) # reserved + + o32(offset) # image data offset + ) + + # bitmap info header + fp.write( + o32(header) # info header size + + o32(im.size[0]) # width + + o32(im.size[1]) # height + + o16(1) # planes + + o16(bits) # depth + + o32(0) # compression (0=uncompressed) + + o32(image) # size of bitmap + + o32(ppm[0]) # resolution + + o32(ppm[1]) # resolution + + o32(colors) # colors used + + o32(colors) # colors important + ) + + fp.write(b"\0" * (header - 40)) # padding (for OS/2 format) + + if im.mode == "1": + for i in (0, 255): + fp.write(o8(i) * 4) + elif im.mode == "L": + for i in range(256): + fp.write(o8(i) * 4) + elif im.mode == "P": + fp.write(im.im.getpalette("RGB", "BGRX")) + + ImageFile._save(im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, stride, -1))]) + + +# +# -------------------------------------------------------------------- +# Registry + + +Image.register_open(BmpImageFile.format, BmpImageFile, _accept) +Image.register_save(BmpImageFile.format, _save) + +Image.register_extension(BmpImageFile.format, ".bmp") + +Image.register_mime(BmpImageFile.format, "image/bmp") + +Image.register_open(DibImageFile.format, DibImageFile, _dib_accept) +Image.register_save(DibImageFile.format, _dib_save) + +Image.register_extension(DibImageFile.format, ".dib") + +Image.register_mime(DibImageFile.format, "image/bmp") diff --git a/venv/Lib/site-packages/PIL/BufrStubImagePlugin.py b/venv/Lib/site-packages/PIL/BufrStubImagePlugin.py new file mode 100644 index 0000000..48f21e1 --- /dev/null +++ b/venv/Lib/site-packages/PIL/BufrStubImagePlugin.py @@ -0,0 +1,73 @@ +# +# The Python Imaging Library +# $Id$ +# +# BUFR stub adapter +# +# Copyright (c) 1996-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFile + +_handler = None + + +def register_handler(handler): + """ + Install application-specific BUFR image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix): + return prefix[:4] == b"BUFR" or prefix[:4] == b"ZCZC" + + +class BufrStubImageFile(ImageFile.StubImageFile): + + format = "BUFR" + format_description = "BUFR" + + def _open(self): + + offset = self.fp.tell() + + if not _accept(self.fp.read(4)): + raise SyntaxError("Not a BUFR file") + + self.fp.seek(offset) + + # make something up + self.mode = "F" + self._size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + +def _save(im, fp, filename): + if _handler is None or not hasattr("_handler", "save"): + raise OSError("BUFR save handler not installed") + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(BufrStubImageFile.format, BufrStubImageFile, _accept) +Image.register_save(BufrStubImageFile.format, _save) + +Image.register_extension(BufrStubImageFile.format, ".bufr") diff --git a/venv/Lib/site-packages/PIL/ContainerIO.py b/venv/Lib/site-packages/PIL/ContainerIO.py new file mode 100644 index 0000000..5bb0086 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ContainerIO.py @@ -0,0 +1,118 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a class to read from a container file +# +# History: +# 1995-06-18 fl Created +# 1995-09-07 fl Added readline(), readlines() +# +# Copyright (c) 1997-2001 by Secret Labs AB +# Copyright (c) 1995 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +## +# A file object that provides read access to a part of an existing +# file (for example a TAR file). + +import io + + +class ContainerIO: + def __init__(self, file, offset, length): + """ + Create file object. + + :param file: Existing file. + :param offset: Start of region, in bytes. + :param length: Size of region, in bytes. + """ + self.fh = file + self.pos = 0 + self.offset = offset + self.length = length + self.fh.seek(offset) + + ## + # Always false. + + def isatty(self): + return False + + def seek(self, offset, mode=io.SEEK_SET): + """ + Move file pointer. + + :param offset: Offset in bytes. + :param mode: Starting position. Use 0 for beginning of region, 1 + for current offset, and 2 for end of region. You cannot move + the pointer outside the defined region. + """ + if mode == 1: + self.pos = self.pos + offset + elif mode == 2: + self.pos = self.length + offset + else: + self.pos = offset + # clamp + self.pos = max(0, min(self.pos, self.length)) + self.fh.seek(self.offset + self.pos) + + def tell(self): + """ + Get current file pointer. + + :returns: Offset from start of region, in bytes. + """ + return self.pos + + def read(self, n=0): + """ + Read data. + + :param n: Number of bytes to read. If omitted or zero, + read until end of region. + :returns: An 8-bit string. + """ + if n: + n = min(n, self.length - self.pos) + else: + n = self.length - self.pos + if not n: # EOF + return b"" if "b" in self.fh.mode else "" + self.pos = self.pos + n + return self.fh.read(n) + + def readline(self): + """ + Read a line of text. + + :returns: An 8-bit string. + """ + s = b"" if "b" in self.fh.mode else "" + newline_character = b"\n" if "b" in self.fh.mode else "\n" + while True: + c = self.read(1) + if not c: + break + s = s + c + if c == newline_character: + break + return s + + def readlines(self): + """ + Read multiple lines of text. + + :returns: A list of 8-bit strings. + """ + lines = [] + while True: + s = self.readline() + if not s: + break + lines.append(s) + return lines diff --git a/venv/Lib/site-packages/PIL/CurImagePlugin.py b/venv/Lib/site-packages/PIL/CurImagePlugin.py new file mode 100644 index 0000000..3a1b6d2 --- /dev/null +++ b/venv/Lib/site-packages/PIL/CurImagePlugin.py @@ -0,0 +1,74 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Windows Cursor support for PIL +# +# notes: +# uses BmpImagePlugin.py to read the bitmap data. +# +# history: +# 96-05-27 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# +from . import BmpImagePlugin, Image +from ._binary import i8, i16le as i16, i32le as i32 + +# +# -------------------------------------------------------------------- + + +def _accept(prefix): + return prefix[:4] == b"\0\0\2\0" + + +## +# Image plugin for Windows Cursor files. + + +class CurImageFile(BmpImagePlugin.BmpImageFile): + + format = "CUR" + format_description = "Windows Cursor" + + def _open(self): + + offset = self.fp.tell() + + # check magic + s = self.fp.read(6) + if not _accept(s): + raise SyntaxError("not a CUR file") + + # pick the largest cursor in the file + m = b"" + for i in range(i16(s[4:])): + s = self.fp.read(16) + if not m: + m = s + elif i8(s[0]) > i8(m[0]) and i8(s[1]) > i8(m[1]): + m = s + if not m: + raise TypeError("No cursors were found") + + # load as bitmap + self._bitmap(i32(m[12:]) + offset) + + # patch up the bitmap height + self._size = self.size[0], self.size[1] // 2 + d, e, o, a = self.tile[0] + self.tile[0] = d, (0, 0) + self.size, o, a + + return + + +# +# -------------------------------------------------------------------- + +Image.register_open(CurImageFile.format, CurImageFile, _accept) + +Image.register_extension(CurImageFile.format, ".cur") diff --git a/venv/Lib/site-packages/PIL/DcxImagePlugin.py b/venv/Lib/site-packages/PIL/DcxImagePlugin.py new file mode 100644 index 0000000..7d2aff3 --- /dev/null +++ b/venv/Lib/site-packages/PIL/DcxImagePlugin.py @@ -0,0 +1,95 @@ +# +# The Python Imaging Library. +# $Id$ +# +# DCX file handling +# +# DCX is a container file format defined by Intel, commonly used +# for fax applications. Each DCX file consists of a directory +# (a list of file offsets) followed by a set of (usually 1-bit) +# PCX files. +# +# History: +# 1995-09-09 fl Created +# 1996-03-20 fl Properly derived from PcxImageFile. +# 1998-07-15 fl Renamed offset attribute to avoid name clash +# 2002-07-30 fl Fixed file handling +# +# Copyright (c) 1997-98 by Secret Labs AB. +# Copyright (c) 1995-96 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +from . import Image +from ._binary import i32le as i32 +from .PcxImagePlugin import PcxImageFile + +MAGIC = 0x3ADE68B1 # QUIZ: what's this value, then? + + +def _accept(prefix): + return len(prefix) >= 4 and i32(prefix) == MAGIC + + +## +# Image plugin for the Intel DCX format. + + +class DcxImageFile(PcxImageFile): + + format = "DCX" + format_description = "Intel DCX" + _close_exclusive_fp_after_loading = False + + def _open(self): + + # Header + s = self.fp.read(4) + if i32(s) != MAGIC: + raise SyntaxError("not a DCX file") + + # Component directory + self._offset = [] + for i in range(1024): + offset = i32(self.fp.read(4)) + if not offset: + break + self._offset.append(offset) + + self.__fp = self.fp + self.frame = None + self.seek(0) + + @property + def n_frames(self): + return len(self._offset) + + @property + def is_animated(self): + return len(self._offset) > 1 + + def seek(self, frame): + if not self._seek_check(frame): + return + self.frame = frame + self.fp = self.__fp + self.fp.seek(self._offset[frame]) + PcxImageFile._open(self) + + def tell(self): + return self.frame + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +Image.register_open(DcxImageFile.format, DcxImageFile, _accept) + +Image.register_extension(DcxImageFile.format, ".dcx") diff --git a/venv/Lib/site-packages/PIL/DdsImagePlugin.py b/venv/Lib/site-packages/PIL/DdsImagePlugin.py new file mode 100644 index 0000000..9ba6e0f --- /dev/null +++ b/venv/Lib/site-packages/PIL/DdsImagePlugin.py @@ -0,0 +1,178 @@ +""" +A Pillow loader for .dds files (S3TC-compressed aka DXTC) +Jerome Leclanche + +Documentation: + https://web.archive.org/web/20170802060935/http://oss.sgi.com/projects/ogl-sample/registry/EXT/texture_compression_s3tc.txt + +The contents of this file are hereby released in the public domain (CC0) +Full text of the CC0 license: + https://creativecommons.org/publicdomain/zero/1.0/ +""" + +import struct +from io import BytesIO + +from . import Image, ImageFile + +# Magic ("DDS ") +DDS_MAGIC = 0x20534444 + +# DDS flags +DDSD_CAPS = 0x1 +DDSD_HEIGHT = 0x2 +DDSD_WIDTH = 0x4 +DDSD_PITCH = 0x8 +DDSD_PIXELFORMAT = 0x1000 +DDSD_MIPMAPCOUNT = 0x20000 +DDSD_LINEARSIZE = 0x80000 +DDSD_DEPTH = 0x800000 + +# DDS caps +DDSCAPS_COMPLEX = 0x8 +DDSCAPS_TEXTURE = 0x1000 +DDSCAPS_MIPMAP = 0x400000 + +DDSCAPS2_CUBEMAP = 0x200 +DDSCAPS2_CUBEMAP_POSITIVEX = 0x400 +DDSCAPS2_CUBEMAP_NEGATIVEX = 0x800 +DDSCAPS2_CUBEMAP_POSITIVEY = 0x1000 +DDSCAPS2_CUBEMAP_NEGATIVEY = 0x2000 +DDSCAPS2_CUBEMAP_POSITIVEZ = 0x4000 +DDSCAPS2_CUBEMAP_NEGATIVEZ = 0x8000 +DDSCAPS2_VOLUME = 0x200000 + +# Pixel Format +DDPF_ALPHAPIXELS = 0x1 +DDPF_ALPHA = 0x2 +DDPF_FOURCC = 0x4 +DDPF_PALETTEINDEXED8 = 0x20 +DDPF_RGB = 0x40 +DDPF_LUMINANCE = 0x20000 + + +# dds.h + +DDS_FOURCC = DDPF_FOURCC +DDS_RGB = DDPF_RGB +DDS_RGBA = DDPF_RGB | DDPF_ALPHAPIXELS +DDS_LUMINANCE = DDPF_LUMINANCE +DDS_LUMINANCEA = DDPF_LUMINANCE | DDPF_ALPHAPIXELS +DDS_ALPHA = DDPF_ALPHA +DDS_PAL8 = DDPF_PALETTEINDEXED8 + +DDS_HEADER_FLAGS_TEXTURE = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH | DDSD_PIXELFORMAT +DDS_HEADER_FLAGS_MIPMAP = DDSD_MIPMAPCOUNT +DDS_HEADER_FLAGS_VOLUME = DDSD_DEPTH +DDS_HEADER_FLAGS_PITCH = DDSD_PITCH +DDS_HEADER_FLAGS_LINEARSIZE = DDSD_LINEARSIZE + +DDS_HEIGHT = DDSD_HEIGHT +DDS_WIDTH = DDSD_WIDTH + +DDS_SURFACE_FLAGS_TEXTURE = DDSCAPS_TEXTURE +DDS_SURFACE_FLAGS_MIPMAP = DDSCAPS_COMPLEX | DDSCAPS_MIPMAP +DDS_SURFACE_FLAGS_CUBEMAP = DDSCAPS_COMPLEX + +DDS_CUBEMAP_POSITIVEX = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_POSITIVEX +DDS_CUBEMAP_NEGATIVEX = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_NEGATIVEX +DDS_CUBEMAP_POSITIVEY = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_POSITIVEY +DDS_CUBEMAP_NEGATIVEY = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_NEGATIVEY +DDS_CUBEMAP_POSITIVEZ = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_POSITIVEZ +DDS_CUBEMAP_NEGATIVEZ = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_NEGATIVEZ + + +# DXT1 +DXT1_FOURCC = 0x31545844 + +# DXT3 +DXT3_FOURCC = 0x33545844 + +# DXT5 +DXT5_FOURCC = 0x35545844 + + +# dxgiformat.h + +DXGI_FORMAT_BC7_TYPELESS = 97 +DXGI_FORMAT_BC7_UNORM = 98 +DXGI_FORMAT_BC7_UNORM_SRGB = 99 + + +class DdsImageFile(ImageFile.ImageFile): + format = "DDS" + format_description = "DirectDraw Surface" + + def _open(self): + magic, header_size = struct.unpack(" 0: + s = fp.read(min(lengthfile, 100 * 1024)) + if not s: + break + lengthfile -= len(s) + f.write(s) + + # Build Ghostscript command + command = [ + "gs", + "-q", # quiet mode + "-g%dx%d" % size, # set output geometry (pixels) + "-r%fx%f" % res, # set input DPI (dots per inch) + "-dBATCH", # exit after processing + "-dNOPAUSE", # don't pause between pages + "-dSAFER", # safe mode + "-sDEVICE=ppmraw", # ppm driver + "-sOutputFile=%s" % outfile, # output file + # adjust for image origin + "-c", + "%d %d translate" % (-bbox[0], -bbox[1]), + "-f", + infile, # input file + # showpage (see https://bugs.ghostscript.com/show_bug.cgi?id=698272) + "-c", + "showpage", + ] + + if gs_windows_binary is not None: + if not gs_windows_binary: + raise OSError("Unable to locate Ghostscript on paths") + command[0] = gs_windows_binary + + # push data through Ghostscript + try: + startupinfo = None + if sys.platform.startswith("win"): + startupinfo = subprocess.STARTUPINFO() + startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW + subprocess.check_call(command, startupinfo=startupinfo) + out_im = Image.open(outfile) + out_im.load() + finally: + try: + os.unlink(outfile) + if infile_temp: + os.unlink(infile_temp) + except OSError: + pass + + im = out_im.im.copy() + out_im.close() + return im + + +class PSFile: + """ + Wrapper for bytesio object that treats either CR or LF as end of line. + """ + + def __init__(self, fp): + self.fp = fp + self.char = None + + def seek(self, offset, whence=io.SEEK_SET): + self.char = None + self.fp.seek(offset, whence) + + def readline(self): + s = self.char or b"" + self.char = None + + c = self.fp.read(1) + while c not in b"\r\n": + s = s + c + c = self.fp.read(1) + + self.char = self.fp.read(1) + # line endings can be 1 or 2 of \r \n, in either order + if self.char in b"\r\n": + self.char = None + + return s.decode("latin-1") + + +def _accept(prefix): + return prefix[:4] == b"%!PS" or (len(prefix) >= 4 and i32(prefix) == 0xC6D3D0C5) + + +## +# Image plugin for Encapsulated Postscript. This plugin supports only +# a few variants of this format. + + +class EpsImageFile(ImageFile.ImageFile): + """EPS File Parser for the Python Imaging Library""" + + format = "EPS" + format_description = "Encapsulated Postscript" + + mode_map = {1: "L", 2: "LAB", 3: "RGB", 4: "CMYK"} + + def _open(self): + (length, offset) = self._find_offset(self.fp) + + # Rewrap the open file pointer in something that will + # convert line endings and decode to latin-1. + fp = PSFile(self.fp) + + # go to offset - start of "%!PS" + fp.seek(offset) + + box = None + + self.mode = "RGB" + self._size = 1, 1 # FIXME: huh? + + # + # Load EPS header + + s_raw = fp.readline() + s = s_raw.strip("\r\n") + + while s_raw: + if s: + if len(s) > 255: + raise SyntaxError("not an EPS file") + + try: + m = split.match(s) + except re.error: + raise SyntaxError("not an EPS file") + + if m: + k, v = m.group(1, 2) + self.info[k] = v + if k == "BoundingBox": + try: + # Note: The DSC spec says that BoundingBox + # fields should be integers, but some drivers + # put floating point values there anyway. + box = [int(float(i)) for i in v.split()] + self._size = box[2] - box[0], box[3] - box[1] + self.tile = [ + ("eps", (0, 0) + self.size, offset, (length, box)) + ] + except Exception: + pass + + else: + m = field.match(s) + if m: + k = m.group(1) + + if k == "EndComments": + break + if k[:8] == "PS-Adobe": + self.info[k[:8]] = k[9:] + else: + self.info[k] = "" + elif s[0] == "%": + # handle non-DSC Postscript comments that some + # tools mistakenly put in the Comments section + pass + else: + raise OSError("bad EPS header") + + s_raw = fp.readline() + s = s_raw.strip("\r\n") + + if s and s[:1] != "%": + break + + # + # Scan for an "ImageData" descriptor + + while s[:1] == "%": + + if len(s) > 255: + raise SyntaxError("not an EPS file") + + if s[:11] == "%ImageData:": + # Encoded bitmapped image. + x, y, bi, mo = s[11:].split(None, 7)[:4] + + if int(bi) != 8: + break + try: + self.mode = self.mode_map[int(mo)] + except ValueError: + break + + self._size = int(x), int(y) + return + + s = fp.readline().strip("\r\n") + if not s: + break + + if not box: + raise OSError("cannot determine EPS bounding box") + + def _find_offset(self, fp): + + s = fp.read(160) + + if s[:4] == b"%!PS": + # for HEAD without binary preview + fp.seek(0, io.SEEK_END) + length = fp.tell() + offset = 0 + elif i32(s[0:4]) == 0xC6D3D0C5: + # FIX for: Some EPS file not handled correctly / issue #302 + # EPS can contain binary data + # or start directly with latin coding + # more info see: + # https://web.archive.org/web/20160528181353/http://partners.adobe.com/public/developer/en/ps/5002.EPSF_Spec.pdf + offset = i32(s[4:8]) + length = i32(s[8:12]) + else: + raise SyntaxError("not an EPS file") + + return (length, offset) + + def load(self, scale=1): + # Load EPS via Ghostscript + if not self.tile: + return + self.im = Ghostscript(self.tile, self.size, self.fp, scale) + self.mode = self.im.mode + self._size = self.im.size + self.tile = [] + + def load_seek(self, *args, **kwargs): + # we can't incrementally load, so force ImageFile.parser to + # use our custom load method by defining this method. + pass + + +# +# -------------------------------------------------------------------- + + +def _save(im, fp, filename, eps=1): + """EPS Writer for the Python Imaging Library.""" + + # + # make sure image data is available + im.load() + + # + # determine postscript image mode + if im.mode == "L": + operator = (8, 1, "image") + elif im.mode == "RGB": + operator = (8, 3, "false 3 colorimage") + elif im.mode == "CMYK": + operator = (8, 4, "false 4 colorimage") + else: + raise ValueError("image mode is not supported") + + base_fp = fp + wrapped_fp = False + if fp != sys.stdout: + fp = io.TextIOWrapper(fp, encoding="latin-1") + wrapped_fp = True + + try: + if eps: + # + # write EPS header + fp.write("%!PS-Adobe-3.0 EPSF-3.0\n") + fp.write("%%Creator: PIL 0.1 EpsEncode\n") + # fp.write("%%CreationDate: %s"...) + fp.write("%%%%BoundingBox: 0 0 %d %d\n" % im.size) + fp.write("%%Pages: 1\n") + fp.write("%%EndComments\n") + fp.write("%%Page: 1 1\n") + fp.write("%%ImageData: %d %d " % im.size) + fp.write('%d %d 0 1 1 "%s"\n' % operator) + + # + # image header + fp.write("gsave\n") + fp.write("10 dict begin\n") + fp.write("/buf %d string def\n" % (im.size[0] * operator[1])) + fp.write("%d %d scale\n" % im.size) + fp.write("%d %d 8\n" % im.size) # <= bits + fp.write("[%d 0 0 -%d 0 %d]\n" % (im.size[0], im.size[1], im.size[1])) + fp.write("{ currentfile buf readhexstring pop } bind\n") + fp.write(operator[2] + "\n") + if hasattr(fp, "flush"): + fp.flush() + + ImageFile._save(im, base_fp, [("eps", (0, 0) + im.size, 0, None)]) + + fp.write("\n%%%%EndBinary\n") + fp.write("grestore end\n") + if hasattr(fp, "flush"): + fp.flush() + finally: + if wrapped_fp: + fp.detach() + + +# +# -------------------------------------------------------------------- + + +Image.register_open(EpsImageFile.format, EpsImageFile, _accept) + +Image.register_save(EpsImageFile.format, _save) + +Image.register_extensions(EpsImageFile.format, [".ps", ".eps"]) + +Image.register_mime(EpsImageFile.format, "application/postscript") diff --git a/venv/Lib/site-packages/PIL/ExifTags.py b/venv/Lib/site-packages/PIL/ExifTags.py new file mode 100644 index 0000000..cecc3f2 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ExifTags.py @@ -0,0 +1,320 @@ +# +# The Python Imaging Library. +# $Id$ +# +# EXIF tags +# +# Copyright (c) 2003 by Secret Labs AB +# +# See the README file for information on usage and redistribution. +# + +## +# This module provides constants and clear-text names for various +# well-known EXIF tags. +## + +## +# Maps EXIF tags to tag names. + +TAGS = { + # possibly incomplete + 0x000B: "ProcessingSoftware", + 0x00FE: "NewSubfileType", + 0x00FF: "SubfileType", + 0x0100: "ImageWidth", + 0x0101: "ImageLength", + 0x0102: "BitsPerSample", + 0x0103: "Compression", + 0x0106: "PhotometricInterpretation", + 0x0107: "Thresholding", + 0x0108: "CellWidth", + 0x0109: "CellLength", + 0x010A: "FillOrder", + 0x010D: "DocumentName", + 0x010E: "ImageDescription", + 0x010F: "Make", + 0x0110: "Model", + 0x0111: "StripOffsets", + 0x0112: "Orientation", + 0x0115: "SamplesPerPixel", + 0x0116: "RowsPerStrip", + 0x0117: "StripByteCounts", + 0x0118: "MinSampleValue", + 0x0119: "MaxSampleValue", + 0x011A: "XResolution", + 0x011B: "YResolution", + 0x011C: "PlanarConfiguration", + 0x011D: "PageName", + 0x0120: "FreeOffsets", + 0x0121: "FreeByteCounts", + 0x0122: "GrayResponseUnit", + 0x0123: "GrayResponseCurve", + 0x0124: "T4Options", + 0x0125: "T6Options", + 0x0128: "ResolutionUnit", + 0x0129: "PageNumber", + 0x012D: "TransferFunction", + 0x0131: "Software", + 0x0132: "DateTime", + 0x013B: "Artist", + 0x013C: "HostComputer", + 0x013D: "Predictor", + 0x013E: "WhitePoint", + 0x013F: "PrimaryChromaticities", + 0x0140: "ColorMap", + 0x0141: "HalftoneHints", + 0x0142: "TileWidth", + 0x0143: "TileLength", + 0x0144: "TileOffsets", + 0x0145: "TileByteCounts", + 0x014A: "SubIFDs", + 0x014C: "InkSet", + 0x014D: "InkNames", + 0x014E: "NumberOfInks", + 0x0150: "DotRange", + 0x0151: "TargetPrinter", + 0x0152: "ExtraSamples", + 0x0153: "SampleFormat", + 0x0154: "SMinSampleValue", + 0x0155: "SMaxSampleValue", + 0x0156: "TransferRange", + 0x0157: "ClipPath", + 0x0158: "XClipPathUnits", + 0x0159: "YClipPathUnits", + 0x015A: "Indexed", + 0x015B: "JPEGTables", + 0x015F: "OPIProxy", + 0x0200: "JPEGProc", + 0x0201: "JpegIFOffset", + 0x0202: "JpegIFByteCount", + 0x0203: "JpegRestartInterval", + 0x0205: "JpegLosslessPredictors", + 0x0206: "JpegPointTransforms", + 0x0207: "JpegQTables", + 0x0208: "JpegDCTables", + 0x0209: "JpegACTables", + 0x0211: "YCbCrCoefficients", + 0x0212: "YCbCrSubSampling", + 0x0213: "YCbCrPositioning", + 0x0214: "ReferenceBlackWhite", + 0x02BC: "XMLPacket", + 0x1000: "RelatedImageFileFormat", + 0x1001: "RelatedImageWidth", + 0x1002: "RelatedImageLength", + 0x4746: "Rating", + 0x4749: "RatingPercent", + 0x800D: "ImageID", + 0x828D: "CFARepeatPatternDim", + 0x828E: "CFAPattern", + 0x828F: "BatteryLevel", + 0x8298: "Copyright", + 0x829A: "ExposureTime", + 0x829D: "FNumber", + 0x83BB: "IPTCNAA", + 0x8649: "ImageResources", + 0x8769: "ExifOffset", + 0x8773: "InterColorProfile", + 0x8822: "ExposureProgram", + 0x8824: "SpectralSensitivity", + 0x8825: "GPSInfo", + 0x8827: "ISOSpeedRatings", + 0x8828: "OECF", + 0x8829: "Interlace", + 0x882A: "TimeZoneOffset", + 0x882B: "SelfTimerMode", + 0x9000: "ExifVersion", + 0x9003: "DateTimeOriginal", + 0x9004: "DateTimeDigitized", + 0x9101: "ComponentsConfiguration", + 0x9102: "CompressedBitsPerPixel", + 0x9201: "ShutterSpeedValue", + 0x9202: "ApertureValue", + 0x9203: "BrightnessValue", + 0x9204: "ExposureBiasValue", + 0x9205: "MaxApertureValue", + 0x9206: "SubjectDistance", + 0x9207: "MeteringMode", + 0x9208: "LightSource", + 0x9209: "Flash", + 0x920A: "FocalLength", + 0x920B: "FlashEnergy", + 0x920C: "SpatialFrequencyResponse", + 0x920D: "Noise", + 0x9211: "ImageNumber", + 0x9212: "SecurityClassification", + 0x9213: "ImageHistory", + 0x9214: "SubjectLocation", + 0x9215: "ExposureIndex", + 0x9216: "TIFF/EPStandardID", + 0x927C: "MakerNote", + 0x9286: "UserComment", + 0x9290: "SubsecTime", + 0x9291: "SubsecTimeOriginal", + 0x9292: "SubsecTimeDigitized", + 0x9400: "AmbientTemperature", + 0x9401: "Humidity", + 0x9402: "Pressure", + 0x9403: "WaterDepth", + 0x9404: "Acceleration", + 0x9405: "CameraElevationAngle", + 0x9C9B: "XPTitle", + 0x9C9C: "XPComment", + 0x9C9D: "XPAuthor", + 0x9C9E: "XPKeywords", + 0x9C9F: "XPSubject", + 0xA000: "FlashPixVersion", + 0xA001: "ColorSpace", + 0xA002: "ExifImageWidth", + 0xA003: "ExifImageHeight", + 0xA004: "RelatedSoundFile", + 0xA005: "ExifInteroperabilityOffset", + 0xA20B: "FlashEnergy", + 0xA20C: "SpatialFrequencyResponse", + 0xA20E: "FocalPlaneXResolution", + 0xA20F: "FocalPlaneYResolution", + 0xA210: "FocalPlaneResolutionUnit", + 0xA214: "SubjectLocation", + 0xA215: "ExposureIndex", + 0xA217: "SensingMethod", + 0xA300: "FileSource", + 0xA301: "SceneType", + 0xA302: "CFAPattern", + 0xA401: "CustomRendered", + 0xA402: "ExposureMode", + 0xA403: "WhiteBalance", + 0xA404: "DigitalZoomRatio", + 0xA405: "FocalLengthIn35mmFilm", + 0xA406: "SceneCaptureType", + 0xA407: "GainControl", + 0xA408: "Contrast", + 0xA409: "Saturation", + 0xA40A: "Sharpness", + 0xA40B: "DeviceSettingDescription", + 0xA40C: "SubjectDistanceRange", + 0xA420: "ImageUniqueID", + 0xA430: "CameraOwnerName", + 0xA431: "BodySerialNumber", + 0xA432: "LensSpecification", + 0xA433: "LensMake", + 0xA434: "LensModel", + 0xA435: "LensSerialNumber", + 0xA500: "Gamma", + 0xC4A5: "PrintImageMatching", + 0xC612: "DNGVersion", + 0xC613: "DNGBackwardVersion", + 0xC614: "UniqueCameraModel", + 0xC615: "LocalizedCameraModel", + 0xC616: "CFAPlaneColor", + 0xC617: "CFALayout", + 0xC618: "LinearizationTable", + 0xC619: "BlackLevelRepeatDim", + 0xC61A: "BlackLevel", + 0xC61B: "BlackLevelDeltaH", + 0xC61C: "BlackLevelDeltaV", + 0xC61D: "WhiteLevel", + 0xC61E: "DefaultScale", + 0xC61F: "DefaultCropOrigin", + 0xC620: "DefaultCropSize", + 0xC621: "ColorMatrix1", + 0xC622: "ColorMatrix2", + 0xC623: "CameraCalibration1", + 0xC624: "CameraCalibration2", + 0xC625: "ReductionMatrix1", + 0xC626: "ReductionMatrix2", + 0xC627: "AnalogBalance", + 0xC628: "AsShotNeutral", + 0xC629: "AsShotWhiteXY", + 0xC62A: "BaselineExposure", + 0xC62B: "BaselineNoise", + 0xC62C: "BaselineSharpness", + 0xC62D: "BayerGreenSplit", + 0xC62E: "LinearResponseLimit", + 0xC62F: "CameraSerialNumber", + 0xC630: "LensInfo", + 0xC631: "ChromaBlurRadius", + 0xC632: "AntiAliasStrength", + 0xC633: "ShadowScale", + 0xC634: "DNGPrivateData", + 0xC635: "MakerNoteSafety", + 0xC65A: "CalibrationIlluminant1", + 0xC65B: "CalibrationIlluminant2", + 0xC65C: "BestQualityScale", + 0xC65D: "RawDataUniqueID", + 0xC68B: "OriginalRawFileName", + 0xC68C: "OriginalRawFileData", + 0xC68D: "ActiveArea", + 0xC68E: "MaskedAreas", + 0xC68F: "AsShotICCProfile", + 0xC690: "AsShotPreProfileMatrix", + 0xC691: "CurrentICCProfile", + 0xC692: "CurrentPreProfileMatrix", + 0xC6BF: "ColorimetricReference", + 0xC6F3: "CameraCalibrationSignature", + 0xC6F4: "ProfileCalibrationSignature", + 0xC6F6: "AsShotProfileName", + 0xC6F7: "NoiseReductionApplied", + 0xC6F8: "ProfileName", + 0xC6F9: "ProfileHueSatMapDims", + 0xC6FA: "ProfileHueSatMapData1", + 0xC6FB: "ProfileHueSatMapData2", + 0xC6FC: "ProfileToneCurve", + 0xC6FD: "ProfileEmbedPolicy", + 0xC6FE: "ProfileCopyright", + 0xC714: "ForwardMatrix1", + 0xC715: "ForwardMatrix2", + 0xC716: "PreviewApplicationName", + 0xC717: "PreviewApplicationVersion", + 0xC718: "PreviewSettingsName", + 0xC719: "PreviewSettingsDigest", + 0xC71A: "PreviewColorSpace", + 0xC71B: "PreviewDateTime", + 0xC71C: "RawImageDigest", + 0xC71D: "OriginalRawFileDigest", + 0xC71E: "SubTileBlockSize", + 0xC71F: "RowInterleaveFactor", + 0xC725: "ProfileLookTableDims", + 0xC726: "ProfileLookTableData", + 0xC740: "OpcodeList1", + 0xC741: "OpcodeList2", + 0xC74E: "OpcodeList3", + 0xC761: "NoiseProfile", +} + +## +# Maps EXIF GPS tags to tag names. + +GPSTAGS = { + 0: "GPSVersionID", + 1: "GPSLatitudeRef", + 2: "GPSLatitude", + 3: "GPSLongitudeRef", + 4: "GPSLongitude", + 5: "GPSAltitudeRef", + 6: "GPSAltitude", + 7: "GPSTimeStamp", + 8: "GPSSatellites", + 9: "GPSStatus", + 10: "GPSMeasureMode", + 11: "GPSDOP", + 12: "GPSSpeedRef", + 13: "GPSSpeed", + 14: "GPSTrackRef", + 15: "GPSTrack", + 16: "GPSImgDirectionRef", + 17: "GPSImgDirection", + 18: "GPSMapDatum", + 19: "GPSDestLatitudeRef", + 20: "GPSDestLatitude", + 21: "GPSDestLongitudeRef", + 22: "GPSDestLongitude", + 23: "GPSDestBearingRef", + 24: "GPSDestBearing", + 25: "GPSDestDistanceRef", + 26: "GPSDestDistance", + 27: "GPSProcessingMethod", + 28: "GPSAreaInformation", + 29: "GPSDateStamp", + 30: "GPSDifferential", + 31: "GPSHPositioningError", +} diff --git a/venv/Lib/site-packages/PIL/FitsStubImagePlugin.py b/venv/Lib/site-packages/PIL/FitsStubImagePlugin.py new file mode 100644 index 0000000..c2ce865 --- /dev/null +++ b/venv/Lib/site-packages/PIL/FitsStubImagePlugin.py @@ -0,0 +1,76 @@ +# +# The Python Imaging Library +# $Id$ +# +# FITS stub adapter +# +# Copyright (c) 1998-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFile + +_handler = None + + +def register_handler(handler): + """ + Install application-specific FITS image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix): + return prefix[:6] == b"SIMPLE" + + +class FITSStubImageFile(ImageFile.StubImageFile): + + format = "FITS" + format_description = "FITS" + + def _open(self): + + offset = self.fp.tell() + + if not _accept(self.fp.read(6)): + raise SyntaxError("Not a FITS file") + + # FIXME: add more sanity checks here; mandatory header items + # include SIMPLE, BITPIX, NAXIS, etc. + + self.fp.seek(offset) + + # make something up + self.mode = "F" + self._size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + +def _save(im, fp, filename): + if _handler is None or not hasattr("_handler", "save"): + raise OSError("FITS save handler not installed") + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(FITSStubImageFile.format, FITSStubImageFile, _accept) +Image.register_save(FITSStubImageFile.format, _save) + +Image.register_extensions(FITSStubImageFile.format, [".fit", ".fits"]) diff --git a/venv/Lib/site-packages/PIL/FliImagePlugin.py b/venv/Lib/site-packages/PIL/FliImagePlugin.py new file mode 100644 index 0000000..9bf7d74 --- /dev/null +++ b/venv/Lib/site-packages/PIL/FliImagePlugin.py @@ -0,0 +1,176 @@ +# +# The Python Imaging Library. +# $Id$ +# +# FLI/FLC file handling. +# +# History: +# 95-09-01 fl Created +# 97-01-03 fl Fixed parser, setup decoder tile +# 98-07-15 fl Renamed offset attribute to avoid name clash +# +# Copyright (c) Secret Labs AB 1997-98. +# Copyright (c) Fredrik Lundh 1995-97. +# +# See the README file for information on usage and redistribution. +# + + +from . import Image, ImageFile, ImagePalette +from ._binary import i8, i16le as i16, i32le as i32, o8 + +# +# decoder + + +def _accept(prefix): + return len(prefix) >= 6 and i16(prefix[4:6]) in [0xAF11, 0xAF12] + + +## +# Image plugin for the FLI/FLC animation format. Use the seek +# method to load individual frames. + + +class FliImageFile(ImageFile.ImageFile): + + format = "FLI" + format_description = "Autodesk FLI/FLC Animation" + _close_exclusive_fp_after_loading = False + + def _open(self): + + # HEAD + s = self.fp.read(128) + magic = i16(s[4:6]) + if not ( + magic in [0xAF11, 0xAF12] + and i16(s[14:16]) in [0, 3] # flags + and s[20:22] == b"\x00\x00" # reserved + ): + raise SyntaxError("not an FLI/FLC file") + + # frames + self.__framecount = i16(s[6:8]) + + # image characteristics + self.mode = "P" + self._size = i16(s[8:10]), i16(s[10:12]) + + # animation speed + duration = i32(s[16:20]) + if magic == 0xAF11: + duration = (duration * 1000) // 70 + self.info["duration"] = duration + + # look for palette + palette = [(a, a, a) for a in range(256)] + + s = self.fp.read(16) + + self.__offset = 128 + + if i16(s[4:6]) == 0xF100: + # prefix chunk; ignore it + self.__offset = self.__offset + i32(s) + s = self.fp.read(16) + + if i16(s[4:6]) == 0xF1FA: + # look for palette chunk + s = self.fp.read(6) + if i16(s[4:6]) == 11: + self._palette(palette, 2) + elif i16(s[4:6]) == 4: + self._palette(palette, 0) + + palette = [o8(r) + o8(g) + o8(b) for (r, g, b) in palette] + self.palette = ImagePalette.raw("RGB", b"".join(palette)) + + # set things up to decode first frame + self.__frame = -1 + self.__fp = self.fp + self.__rewind = self.fp.tell() + self.seek(0) + + def _palette(self, palette, shift): + # load palette + + i = 0 + for e in range(i16(self.fp.read(2))): + s = self.fp.read(2) + i = i + i8(s[0]) + n = i8(s[1]) + if n == 0: + n = 256 + s = self.fp.read(n * 3) + for n in range(0, len(s), 3): + r = i8(s[n]) << shift + g = i8(s[n + 1]) << shift + b = i8(s[n + 2]) << shift + palette[i] = (r, g, b) + i += 1 + + @property + def n_frames(self): + return self.__framecount + + @property + def is_animated(self): + return self.__framecount > 1 + + def seek(self, frame): + if not self._seek_check(frame): + return + if frame < self.__frame: + self._seek(0) + + for f in range(self.__frame + 1, frame + 1): + self._seek(f) + + def _seek(self, frame): + if frame == 0: + self.__frame = -1 + self.__fp.seek(self.__rewind) + self.__offset = 128 + else: + # ensure that the previous frame was loaded + self.load() + + if frame != self.__frame + 1: + raise ValueError("cannot seek to frame %d" % frame) + self.__frame = frame + + # move to next frame + self.fp = self.__fp + self.fp.seek(self.__offset) + + s = self.fp.read(4) + if not s: + raise EOFError + + framesize = i32(s) + + self.decodermaxblock = framesize + self.tile = [("fli", (0, 0) + self.size, self.__offset, None)] + + self.__offset += framesize + + def tell(self): + return self.__frame + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +# +# registry + +Image.register_open(FliImageFile.format, FliImageFile, _accept) + +Image.register_extensions(FliImageFile.format, [".fli", ".flc"]) diff --git a/venv/Lib/site-packages/PIL/FontFile.py b/venv/Lib/site-packages/PIL/FontFile.py new file mode 100644 index 0000000..979a1e3 --- /dev/null +++ b/venv/Lib/site-packages/PIL/FontFile.py @@ -0,0 +1,114 @@ +# +# The Python Imaging Library +# $Id$ +# +# base class for raster font file parsers +# +# history: +# 1997-06-05 fl created +# 1997-08-19 fl restrict image width +# +# Copyright (c) 1997-1998 by Secret Labs AB +# Copyright (c) 1997-1998 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + + +import os + +from . import Image, _binary + +WIDTH = 800 + + +def puti16(fp, values): + # write network order (big-endian) 16-bit sequence + for v in values: + if v < 0: + v += 65536 + fp.write(_binary.o16be(v)) + + +## +# Base class for raster font file handlers. + + +class FontFile: + + bitmap = None + + def __init__(self): + + self.info = {} + self.glyph = [None] * 256 + + def __getitem__(self, ix): + return self.glyph[ix] + + def compile(self): + """Create metrics and bitmap""" + + if self.bitmap: + return + + # create bitmap large enough to hold all data + h = w = maxwidth = 0 + lines = 1 + for glyph in self: + if glyph: + d, dst, src, im = glyph + h = max(h, src[3] - src[1]) + w = w + (src[2] - src[0]) + if w > WIDTH: + lines += 1 + w = src[2] - src[0] + maxwidth = max(maxwidth, w) + + xsize = maxwidth + ysize = lines * h + + if xsize == 0 and ysize == 0: + return "" + + self.ysize = h + + # paste glyphs into bitmap + self.bitmap = Image.new("1", (xsize, ysize)) + self.metrics = [None] * 256 + x = y = 0 + for i in range(256): + glyph = self[i] + if glyph: + d, dst, src, im = glyph + xx = src[2] - src[0] + # yy = src[3] - src[1] + x0, y0 = x, y + x = x + xx + if x > WIDTH: + x, y = 0, y + h + x0, y0 = x, y + x = xx + s = src[0] + x0, src[1] + y0, src[2] + x0, src[3] + y0 + self.bitmap.paste(im.crop(src), s) + self.metrics[i] = d, dst, s + + def save(self, filename): + """Save font""" + + self.compile() + + # font data + self.bitmap.save(os.path.splitext(filename)[0] + ".pbm", "PNG") + + # font metrics + with open(os.path.splitext(filename)[0] + ".pil", "wb") as fp: + fp.write(b"PILfont\n") + fp.write((";;;;;;%d;\n" % self.ysize).encode("ascii")) # HACK!!! + fp.write(b"DATA\n") + for id in range(256): + m = self.metrics[id] + if not m: + puti16(fp, [0] * 10) + else: + puti16(fp, m[0] + m[1] + m[2]) diff --git a/venv/Lib/site-packages/PIL/FpxImagePlugin.py b/venv/Lib/site-packages/PIL/FpxImagePlugin.py new file mode 100644 index 0000000..8d252c7 --- /dev/null +++ b/venv/Lib/site-packages/PIL/FpxImagePlugin.py @@ -0,0 +1,242 @@ +# +# THIS IS WORK IN PROGRESS +# +# The Python Imaging Library. +# $Id$ +# +# FlashPix support for PIL +# +# History: +# 97-01-25 fl Created (reads uncompressed RGB images only) +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# +import olefile + +from . import Image, ImageFile +from ._binary import i8, i32le as i32 + +# we map from colour field tuples to (mode, rawmode) descriptors +MODES = { + # opacity + (0x00007FFE): ("A", "L"), + # monochrome + (0x00010000,): ("L", "L"), + (0x00018000, 0x00017FFE): ("RGBA", "LA"), + # photo YCC + (0x00020000, 0x00020001, 0x00020002): ("RGB", "YCC;P"), + (0x00028000, 0x00028001, 0x00028002, 0x00027FFE): ("RGBA", "YCCA;P"), + # standard RGB (NIFRGB) + (0x00030000, 0x00030001, 0x00030002): ("RGB", "RGB"), + (0x00038000, 0x00038001, 0x00038002, 0x00037FFE): ("RGBA", "RGBA"), +} + + +# +# -------------------------------------------------------------------- + + +def _accept(prefix): + return prefix[:8] == olefile.MAGIC + + +## +# Image plugin for the FlashPix images. + + +class FpxImageFile(ImageFile.ImageFile): + + format = "FPX" + format_description = "FlashPix" + + def _open(self): + # + # read the OLE directory and see if this is a likely + # to be a FlashPix file + + try: + self.ole = olefile.OleFileIO(self.fp) + except OSError: + raise SyntaxError("not an FPX file; invalid OLE file") + + if self.ole.root.clsid != "56616700-C154-11CE-8553-00AA00A1F95B": + raise SyntaxError("not an FPX file; bad root CLSID") + + self._open_index(1) + + def _open_index(self, index=1): + # + # get the Image Contents Property Set + + prop = self.ole.getproperties( + ["Data Object Store %06d" % index, "\005Image Contents"] + ) + + # size (highest resolution) + + self._size = prop[0x1000002], prop[0x1000003] + + size = max(self.size) + i = 1 + while size > 64: + size = size / 2 + i += 1 + self.maxid = i - 1 + + # mode. instead of using a single field for this, flashpix + # requires you to specify the mode for each channel in each + # resolution subimage, and leaves it to the decoder to make + # sure that they all match. for now, we'll cheat and assume + # that this is always the case. + + id = self.maxid << 16 + + s = prop[0x2000002 | id] + + colors = [] + bands = i32(s, 4) + if bands > 4: + raise IOError("Invalid number of bands") + for i in range(bands): + # note: for now, we ignore the "uncalibrated" flag + colors.append(i32(s, 8 + i * 4) & 0x7FFFFFFF) + + self.mode, self.rawmode = MODES[tuple(colors)] + + # load JPEG tables, if any + self.jpeg = {} + for i in range(256): + id = 0x3000001 | (i << 16) + if id in prop: + self.jpeg[i] = prop[id] + + self._open_subimage(1, self.maxid) + + def _open_subimage(self, index=1, subimage=0): + # + # setup tile descriptors for a given subimage + + stream = [ + "Data Object Store %06d" % index, + "Resolution %04d" % subimage, + "Subimage 0000 Header", + ] + + fp = self.ole.openstream(stream) + + # skip prefix + fp.read(28) + + # header stream + s = fp.read(36) + + size = i32(s, 4), i32(s, 8) + # tilecount = i32(s, 12) + tilesize = i32(s, 16), i32(s, 20) + # channels = i32(s, 24) + offset = i32(s, 28) + length = i32(s, 32) + + if size != self.size: + raise OSError("subimage mismatch") + + # get tile descriptors + fp.seek(28 + offset) + s = fp.read(i32(s, 12) * length) + + x = y = 0 + xsize, ysize = size + xtile, ytile = tilesize + self.tile = [] + + for i in range(0, len(s), length): + + compression = i32(s, i + 8) + + if compression == 0: + self.tile.append( + ( + "raw", + (x, y, x + xtile, y + ytile), + i32(s, i) + 28, + (self.rawmode), + ) + ) + + elif compression == 1: + + # FIXME: the fill decoder is not implemented + self.tile.append( + ( + "fill", + (x, y, x + xtile, y + ytile), + i32(s, i) + 28, + (self.rawmode, s[12:16]), + ) + ) + + elif compression == 2: + + internal_color_conversion = i8(s[14]) + jpeg_tables = i8(s[15]) + rawmode = self.rawmode + + if internal_color_conversion: + # The image is stored as usual (usually YCbCr). + if rawmode == "RGBA": + # For "RGBA", data is stored as YCbCrA based on + # negative RGB. The following trick works around + # this problem : + jpegmode, rawmode = "YCbCrK", "CMYK" + else: + jpegmode = None # let the decoder decide + + else: + # The image is stored as defined by rawmode + jpegmode = rawmode + + self.tile.append( + ( + "jpeg", + (x, y, x + xtile, y + ytile), + i32(s, i) + 28, + (rawmode, jpegmode), + ) + ) + + # FIXME: jpeg tables are tile dependent; the prefix + # data must be placed in the tile descriptor itself! + + if jpeg_tables: + self.tile_prefix = self.jpeg[jpeg_tables] + + else: + raise OSError("unknown/invalid compression") + + x = x + xtile + if x >= xsize: + x, y = 0, y + ytile + if y >= ysize: + break # isn't really required + + self.stream = stream + self.fp = None + + def load(self): + + if not self.fp: + self.fp = self.ole.openstream(self.stream[:2] + ["Subimage 0000 Data"]) + + return ImageFile.ImageFile.load(self) + + +# +# -------------------------------------------------------------------- + + +Image.register_open(FpxImageFile.format, FpxImageFile, _accept) + +Image.register_extension(FpxImageFile.format, ".fpx") diff --git a/venv/Lib/site-packages/PIL/FtexImagePlugin.py b/venv/Lib/site-packages/PIL/FtexImagePlugin.py new file mode 100644 index 0000000..096ccac --- /dev/null +++ b/venv/Lib/site-packages/PIL/FtexImagePlugin.py @@ -0,0 +1,106 @@ +""" +A Pillow loader for .ftc and .ftu files (FTEX) +Jerome Leclanche + +The contents of this file are hereby released in the public domain (CC0) +Full text of the CC0 license: + https://creativecommons.org/publicdomain/zero/1.0/ + +Independence War 2: Edge Of Chaos - Texture File Format - 16 October 2001 + +The textures used for 3D objects in Independence War 2: Edge Of Chaos are in a +packed custom format called FTEX. This file format uses file extensions FTC +and FTU. +* FTC files are compressed textures (using standard texture compression). +* FTU files are not compressed. +Texture File Format +The FTC and FTU texture files both use the same format. This +has the following structure: +{header} +{format_directory} +{data} +Where: +{header} = { + u32:magic, + u32:version, + u32:width, + u32:height, + u32:mipmap_count, + u32:format_count +} + +* The "magic" number is "FTEX". +* "width" and "height" are the dimensions of the texture. +* "mipmap_count" is the number of mipmaps in the texture. +* "format_count" is the number of texture formats (different versions of the +same texture) in this file. + +{format_directory} = format_count * { u32:format, u32:where } + +The format value is 0 for DXT1 compressed textures and 1 for 24-bit RGB +uncompressed textures. +The texture data for a format starts at the position "where" in the file. + +Each set of texture data in the file has the following structure: +{data} = format_count * { u32:mipmap_size, mipmap_size * { u8 } } +* "mipmap_size" is the number of bytes in that mip level. For compressed +textures this is the size of the texture data compressed with DXT1. For 24 bit +uncompressed textures, this is 3 * width * height. Following this are the image +bytes for that mipmap level. + +Note: All data is stored in little-Endian (Intel) byte order. +""" + +import struct +from io import BytesIO + +from . import Image, ImageFile + +MAGIC = b"FTEX" +FORMAT_DXT1 = 0 +FORMAT_UNCOMPRESSED = 1 + + +class FtexImageFile(ImageFile.ImageFile): + format = "FTEX" + format_description = "Texture File Format (IW2:EOC)" + + def _open(self): + struct.unpack("= 8 and i32(prefix[:4]) >= 20 and i32(prefix[4:8]) in (1, 2) + + +## +# Image plugin for the GIMP brush format. + + +class GbrImageFile(ImageFile.ImageFile): + + format = "GBR" + format_description = "GIMP brush file" + + def _open(self): + header_size = i32(self.fp.read(4)) + version = i32(self.fp.read(4)) + if header_size < 20: + raise SyntaxError("not a GIMP brush") + if version not in (1, 2): + raise SyntaxError("Unsupported GIMP brush version: %s" % version) + + width = i32(self.fp.read(4)) + height = i32(self.fp.read(4)) + color_depth = i32(self.fp.read(4)) + if width <= 0 or height <= 0: + raise SyntaxError("not a GIMP brush") + if color_depth not in (1, 4): + raise SyntaxError("Unsupported GIMP brush color depth: %s" % color_depth) + + if version == 1: + comment_length = header_size - 20 + else: + comment_length = header_size - 28 + magic_number = self.fp.read(4) + if magic_number != b"GIMP": + raise SyntaxError("not a GIMP brush, bad magic number") + self.info["spacing"] = i32(self.fp.read(4)) + + comment = self.fp.read(comment_length)[:-1] + + if color_depth == 1: + self.mode = "L" + else: + self.mode = "RGBA" + + self._size = width, height + + self.info["comment"] = comment + + # Image might not be small + Image._decompression_bomb_check(self.size) + + # Data is an uncompressed block of w * h * bytes/pixel + self._data_size = width * height * color_depth + + def load(self): + self.im = Image.core.new(self.mode, self.size) + self.frombytes(self.fp.read(self._data_size)) + + +# +# registry + + +Image.register_open(GbrImageFile.format, GbrImageFile, _accept) +Image.register_extension(GbrImageFile.format, ".gbr") diff --git a/venv/Lib/site-packages/PIL/GdImageFile.py b/venv/Lib/site-packages/PIL/GdImageFile.py new file mode 100644 index 0000000..54c8871 --- /dev/null +++ b/venv/Lib/site-packages/PIL/GdImageFile.py @@ -0,0 +1,85 @@ +# +# The Python Imaging Library. +# $Id$ +# +# GD file handling +# +# History: +# 1996-04-12 fl Created +# +# Copyright (c) 1997 by Secret Labs AB. +# Copyright (c) 1996 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + + +# NOTE: This format cannot be automatically recognized, so the +# class is not registered for use with Image.open(). To open a +# gd file, use the GdImageFile.open() function instead. + +# THE GD FORMAT IS NOT DESIGNED FOR DATA INTERCHANGE. This +# implementation is provided for convenience and demonstrational +# purposes only. + + +from . import ImageFile, ImagePalette, UnidentifiedImageError +from ._binary import i8, i16be as i16, i32be as i32 + +## +# Image plugin for the GD uncompressed format. Note that this format +# is not supported by the standard Image.open function. To use +# this plugin, you have to import the GdImageFile module and +# use the GdImageFile.open function. + + +class GdImageFile(ImageFile.ImageFile): + + format = "GD" + format_description = "GD uncompressed images" + + def _open(self): + + # Header + s = self.fp.read(1037) + + if not i16(s[:2]) in [65534, 65535]: + raise SyntaxError("Not a valid GD 2.x .gd file") + + self.mode = "L" # FIXME: "P" + self._size = i16(s[2:4]), i16(s[4:6]) + + trueColor = i8(s[6]) + trueColorOffset = 2 if trueColor else 0 + + # transparency index + tindex = i32(s[7 + trueColorOffset : 7 + trueColorOffset + 4]) + if tindex < 256: + self.info["transparency"] = tindex + + self.palette = ImagePalette.raw( + "XBGR", s[7 + trueColorOffset + 4 : 7 + trueColorOffset + 4 + 256 * 4] + ) + + self.tile = [ + ("raw", (0, 0) + self.size, 7 + trueColorOffset + 4 + 256 * 4, ("L", 0, 1)) + ] + + +def open(fp, mode="r"): + """ + Load texture from a GD image file. + + :param filename: GD file name, or an opened file handle. + :param mode: Optional mode. In this version, if the mode argument + is given, it must be "r". + :returns: An image instance. + :raises IOError: If the image could not be read. + """ + if mode != "r": + raise ValueError("bad mode") + + try: + return GdImageFile(fp) + except SyntaxError: + raise UnidentifiedImageError("cannot identify this image file") diff --git a/venv/Lib/site-packages/PIL/GifImagePlugin.py b/venv/Lib/site-packages/PIL/GifImagePlugin.py new file mode 100644 index 0000000..1d94fc7 --- /dev/null +++ b/venv/Lib/site-packages/PIL/GifImagePlugin.py @@ -0,0 +1,885 @@ +# +# The Python Imaging Library. +# $Id$ +# +# GIF file handling +# +# History: +# 1995-09-01 fl Created +# 1996-12-14 fl Added interlace support +# 1996-12-30 fl Added animation support +# 1997-01-05 fl Added write support, fixed local colour map bug +# 1997-02-23 fl Make sure to load raster data in getdata() +# 1997-07-05 fl Support external decoder (0.4) +# 1998-07-09 fl Handle all modes when saving (0.5) +# 1998-07-15 fl Renamed offset attribute to avoid name clash +# 2001-04-16 fl Added rewind support (seek to frame 0) (0.6) +# 2001-04-17 fl Added palette optimization (0.7) +# 2002-06-06 fl Added transparency support for save (0.8) +# 2004-02-24 fl Disable interlacing for small images +# +# Copyright (c) 1997-2004 by Secret Labs AB +# Copyright (c) 1995-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import itertools +import math +import os +import subprocess + +from . import Image, ImageChops, ImageFile, ImagePalette, ImageSequence +from ._binary import i8, i16le as i16, o8, o16le as o16 + +# -------------------------------------------------------------------- +# Identify/read GIF files + + +def _accept(prefix): + return prefix[:6] in [b"GIF87a", b"GIF89a"] + + +## +# Image plugin for GIF images. This plugin supports both GIF87 and +# GIF89 images. + + +class GifImageFile(ImageFile.ImageFile): + + format = "GIF" + format_description = "Compuserve GIF" + _close_exclusive_fp_after_loading = False + + global_palette = None + + def data(self): + s = self.fp.read(1) + if s and i8(s): + return self.fp.read(i8(s)) + return None + + def _open(self): + + # Screen + s = self.fp.read(13) + if s[:6] not in [b"GIF87a", b"GIF89a"]: + raise SyntaxError("not a GIF file") + + self.info["version"] = s[:6] + self._size = i16(s[6:]), i16(s[8:]) + self.tile = [] + flags = i8(s[10]) + bits = (flags & 7) + 1 + + if flags & 128: + # get global palette + self.info["background"] = i8(s[11]) + # check if palette contains colour indices + p = self.fp.read(3 << bits) + for i in range(0, len(p), 3): + if not (i // 3 == i8(p[i]) == i8(p[i + 1]) == i8(p[i + 2])): + p = ImagePalette.raw("RGB", p) + self.global_palette = self.palette = p + break + + self.__fp = self.fp # FIXME: hack + self.__rewind = self.fp.tell() + self._n_frames = None + self._is_animated = None + self._seek(0) # get ready to read first frame + + @property + def n_frames(self): + if self._n_frames is None: + current = self.tell() + try: + while True: + self.seek(self.tell() + 1) + except EOFError: + self._n_frames = self.tell() + 1 + self.seek(current) + return self._n_frames + + @property + def is_animated(self): + if self._is_animated is None: + if self._n_frames is not None: + self._is_animated = self._n_frames != 1 + else: + current = self.tell() + + try: + self.seek(1) + self._is_animated = True + except EOFError: + self._is_animated = False + + self.seek(current) + return self._is_animated + + def seek(self, frame): + if not self._seek_check(frame): + return + if frame < self.__frame: + if frame != 0: + self.im = None + self._seek(0) + + last_frame = self.__frame + for f in range(self.__frame + 1, frame + 1): + try: + self._seek(f) + except EOFError: + self.seek(last_frame) + raise EOFError("no more images in GIF file") + + def _seek(self, frame): + + if frame == 0: + # rewind + self.__offset = 0 + self.dispose = None + self.dispose_extent = [0, 0, 0, 0] # x0, y0, x1, y1 + self.__frame = -1 + self.__fp.seek(self.__rewind) + self._prev_im = None + self.disposal_method = 0 + else: + # ensure that the previous frame was loaded + if not self.im: + self.load() + + if frame != self.__frame + 1: + raise ValueError("cannot seek to frame %d" % frame) + self.__frame = frame + + self.tile = [] + + self.fp = self.__fp + if self.__offset: + # backup to last frame + self.fp.seek(self.__offset) + while self.data(): + pass + self.__offset = 0 + + if self.dispose: + self.im.paste(self.dispose, self.dispose_extent) + + from copy import copy + + self.palette = copy(self.global_palette) + + info = {} + while True: + + s = self.fp.read(1) + if not s or s == b";": + break + + elif s == b"!": + # + # extensions + # + s = self.fp.read(1) + block = self.data() + if i8(s) == 249: + # + # graphic control extension + # + flags = i8(block[0]) + if flags & 1: + info["transparency"] = i8(block[3]) + info["duration"] = i16(block[1:3]) * 10 + + # disposal method - find the value of bits 4 - 6 + dispose_bits = 0b00011100 & flags + dispose_bits = dispose_bits >> 2 + if dispose_bits: + # only set the dispose if it is not + # unspecified. I'm not sure if this is + # correct, but it seems to prevent the last + # frame from looking odd for some animations + self.disposal_method = dispose_bits + elif i8(s) == 254: + # + # comment extension + # + while block: + if "comment" in info: + info["comment"] += block + else: + info["comment"] = block + block = self.data() + continue + elif i8(s) == 255: + # + # application extension + # + info["extension"] = block, self.fp.tell() + if block[:11] == b"NETSCAPE2.0": + block = self.data() + if len(block) >= 3 and i8(block[0]) == 1: + info["loop"] = i16(block[1:3]) + while self.data(): + pass + + elif s == b",": + # + # local image + # + s = self.fp.read(9) + + # extent + x0, y0 = i16(s[0:]), i16(s[2:]) + x1, y1 = x0 + i16(s[4:]), y0 + i16(s[6:]) + if x1 > self.size[0] or y1 > self.size[1]: + self._size = max(x1, self.size[0]), max(y1, self.size[1]) + self.dispose_extent = x0, y0, x1, y1 + flags = i8(s[8]) + + interlace = (flags & 64) != 0 + + if flags & 128: + bits = (flags & 7) + 1 + self.palette = ImagePalette.raw("RGB", self.fp.read(3 << bits)) + + # image data + bits = i8(self.fp.read(1)) + self.__offset = self.fp.tell() + self.tile = [ + ("gif", (x0, y0, x1, y1), self.__offset, (bits, interlace)) + ] + break + + else: + pass + # raise IOError, "illegal GIF tag `%x`" % i8(s) + + try: + if self.disposal_method < 2: + # do not dispose or none specified + self.dispose = None + elif self.disposal_method == 2: + # replace with background colour + Image._decompression_bomb_check(self.size) + self.dispose = Image.core.fill("P", self.size, self.info["background"]) + else: + # replace with previous contents + if self.im: + self.dispose = self.im.copy() + + # only dispose the extent in this frame + if self.dispose: + self.dispose = self._crop(self.dispose, self.dispose_extent) + except (AttributeError, KeyError): + pass + + if not self.tile: + # self.__fp = None + raise EOFError + + for k in ["transparency", "duration", "comment", "extension", "loop"]: + if k in info: + self.info[k] = info[k] + elif k in self.info: + del self.info[k] + + self.mode = "L" + if self.palette: + self.mode = "P" + + def tell(self): + return self.__frame + + def load_end(self): + ImageFile.ImageFile.load_end(self) + + # if the disposal method is 'do not dispose', transparent + # pixels should show the content of the previous frame + if self._prev_im and self.disposal_method == 1: + # we do this by pasting the updated area onto the previous + # frame which we then use as the current image content + updated = self._crop(self.im, self.dispose_extent) + self._prev_im.paste(updated, self.dispose_extent, updated.convert("RGBA")) + self.im = self._prev_im + self._prev_im = self.im.copy() + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +# -------------------------------------------------------------------- +# Write GIF files + + +RAWMODE = {"1": "L", "L": "L", "P": "P"} + + +def _normalize_mode(im, initial_call=False): + """ + Takes an image (or frame), returns an image in a mode that is appropriate + for saving in a Gif. + + It may return the original image, or it may return an image converted to + palette or 'L' mode. + + UNDONE: What is the point of mucking with the initial call palette, for + an image that shouldn't have a palette, or it would be a mode 'P' and + get returned in the RAWMODE clause. + + :param im: Image object + :param initial_call: Default false, set to true for a single frame. + :returns: Image object + """ + if im.mode in RAWMODE: + im.load() + return im + if Image.getmodebase(im.mode) == "RGB": + if initial_call: + palette_size = 256 + if im.palette: + palette_size = len(im.palette.getdata()[1]) // 3 + return im.convert("P", palette=Image.ADAPTIVE, colors=palette_size) + else: + return im.convert("P") + return im.convert("L") + + +def _normalize_palette(im, palette, info): + """ + Normalizes the palette for image. + - Sets the palette to the incoming palette, if provided. + - Ensures that there's a palette for L mode images + - Optimizes the palette if necessary/desired. + + :param im: Image object + :param palette: bytes object containing the source palette, or .... + :param info: encoderinfo + :returns: Image object + """ + source_palette = None + if palette: + # a bytes palette + if isinstance(palette, (bytes, bytearray, list)): + source_palette = bytearray(palette[:768]) + if isinstance(palette, ImagePalette.ImagePalette): + source_palette = bytearray( + itertools.chain.from_iterable( + zip( + palette.palette[:256], + palette.palette[256:512], + palette.palette[512:768], + ) + ) + ) + + if im.mode == "P": + if not source_palette: + source_palette = im.im.getpalette("RGB")[:768] + else: # L-mode + if not source_palette: + source_palette = bytearray(i // 3 for i in range(768)) + im.palette = ImagePalette.ImagePalette("RGB", palette=source_palette) + + used_palette_colors = _get_optimize(im, info) + if used_palette_colors is not None: + return im.remap_palette(used_palette_colors, source_palette) + + im.palette.palette = source_palette + return im + + +def _write_single_frame(im, fp, palette): + im_out = _normalize_mode(im, True) + for k, v in im_out.info.items(): + im.encoderinfo.setdefault(k, v) + im_out = _normalize_palette(im_out, palette, im.encoderinfo) + + for s in _get_global_header(im_out, im.encoderinfo): + fp.write(s) + + # local image header + flags = 0 + if get_interlace(im): + flags = flags | 64 + _write_local_header(fp, im, (0, 0), flags) + + im_out.encoderconfig = (8, get_interlace(im)) + ImageFile._save(im_out, fp, [("gif", (0, 0) + im.size, 0, RAWMODE[im_out.mode])]) + + fp.write(b"\0") # end of image data + + +def _write_multiple_frames(im, fp, palette): + + duration = im.encoderinfo.get("duration", im.info.get("duration")) + disposal = im.encoderinfo.get("disposal", im.info.get("disposal")) + + im_frames = [] + frame_count = 0 + background_im = None + for imSequence in itertools.chain([im], im.encoderinfo.get("append_images", [])): + for im_frame in ImageSequence.Iterator(imSequence): + # a copy is required here since seek can still mutate the image + im_frame = _normalize_mode(im_frame.copy()) + if frame_count == 0: + for k, v in im_frame.info.items(): + im.encoderinfo.setdefault(k, v) + im_frame = _normalize_palette(im_frame, palette, im.encoderinfo) + + encoderinfo = im.encoderinfo.copy() + if isinstance(duration, (list, tuple)): + encoderinfo["duration"] = duration[frame_count] + if isinstance(disposal, (list, tuple)): + encoderinfo["disposal"] = disposal[frame_count] + frame_count += 1 + + if im_frames: + # delta frame + previous = im_frames[-1] + if encoderinfo.get("disposal") == 2: + if background_im is None: + background = _get_background( + im, + im.encoderinfo.get("background", im.info.get("background")), + ) + background_im = Image.new("P", im_frame.size, background) + background_im.putpalette(im_frames[0]["im"].palette) + base_im = background_im + else: + base_im = previous["im"] + if _get_palette_bytes(im_frame) == _get_palette_bytes(base_im): + delta = ImageChops.subtract_modulo(im_frame, base_im) + else: + delta = ImageChops.subtract_modulo( + im_frame.convert("RGB"), base_im.convert("RGB") + ) + bbox = delta.getbbox() + if not bbox: + # This frame is identical to the previous frame + if duration: + previous["encoderinfo"]["duration"] += encoderinfo["duration"] + continue + else: + bbox = None + im_frames.append({"im": im_frame, "bbox": bbox, "encoderinfo": encoderinfo}) + + if len(im_frames) > 1: + for frame_data in im_frames: + im_frame = frame_data["im"] + if not frame_data["bbox"]: + # global header + for s in _get_global_header(im_frame, frame_data["encoderinfo"]): + fp.write(s) + offset = (0, 0) + else: + # compress difference + frame_data["encoderinfo"]["include_color_table"] = True + + im_frame = im_frame.crop(frame_data["bbox"]) + offset = frame_data["bbox"][:2] + _write_frame_data(fp, im_frame, offset, frame_data["encoderinfo"]) + return True + elif "duration" in im.encoderinfo and isinstance( + im.encoderinfo["duration"], (list, tuple) + ): + # Since multiple frames will not be written, add together the frame durations + im.encoderinfo["duration"] = sum(im.encoderinfo["duration"]) + + +def _save_all(im, fp, filename): + _save(im, fp, filename, save_all=True) + + +def _save(im, fp, filename, save_all=False): + # header + if "palette" in im.encoderinfo or "palette" in im.info: + palette = im.encoderinfo.get("palette", im.info.get("palette")) + else: + palette = None + im.encoderinfo["optimize"] = im.encoderinfo.get("optimize", True) + + if not save_all or not _write_multiple_frames(im, fp, palette): + _write_single_frame(im, fp, palette) + + fp.write(b";") # end of file + + if hasattr(fp, "flush"): + fp.flush() + + +def get_interlace(im): + interlace = im.encoderinfo.get("interlace", 1) + + # workaround for @PIL153 + if min(im.size) < 16: + interlace = 0 + + return interlace + + +def _write_local_header(fp, im, offset, flags): + transparent_color_exists = False + try: + transparency = im.encoderinfo["transparency"] + except KeyError: + pass + else: + transparency = int(transparency) + # optimize the block away if transparent color is not used + transparent_color_exists = True + + used_palette_colors = _get_optimize(im, im.encoderinfo) + if used_palette_colors is not None: + # adjust the transparency index after optimize + try: + transparency = used_palette_colors.index(transparency) + except ValueError: + transparent_color_exists = False + + if "duration" in im.encoderinfo: + duration = int(im.encoderinfo["duration"] / 10) + else: + duration = 0 + + disposal = int(im.encoderinfo.get("disposal", 0)) + + if transparent_color_exists or duration != 0 or disposal: + packed_flag = 1 if transparent_color_exists else 0 + packed_flag |= disposal << 2 + if not transparent_color_exists: + transparency = 0 + + fp.write( + b"!" + + o8(249) # extension intro + + o8(4) # length + + o8(packed_flag) # packed fields + + o16(duration) # duration + + o8(transparency) # transparency index + + o8(0) + ) + + if "comment" in im.encoderinfo and 1 <= len(im.encoderinfo["comment"]): + fp.write(b"!" + o8(254)) # extension intro + comment = im.encoderinfo["comment"] + if isinstance(comment, str): + comment = comment.encode() + for i in range(0, len(comment), 255): + subblock = comment[i : i + 255] + fp.write(o8(len(subblock)) + subblock) + fp.write(o8(0)) + if "loop" in im.encoderinfo: + number_of_loops = im.encoderinfo["loop"] + fp.write( + b"!" + + o8(255) # extension intro + + o8(11) + + b"NETSCAPE2.0" + + o8(3) + + o8(1) + + o16(number_of_loops) # number of loops + + o8(0) + ) + include_color_table = im.encoderinfo.get("include_color_table") + if include_color_table: + palette_bytes = _get_palette_bytes(im) + color_table_size = _get_color_table_size(palette_bytes) + if color_table_size: + flags = flags | 128 # local color table flag + flags = flags | color_table_size + + fp.write( + b"," + + o16(offset[0]) # offset + + o16(offset[1]) + + o16(im.size[0]) # size + + o16(im.size[1]) + + o8(flags) # flags + ) + if include_color_table and color_table_size: + fp.write(_get_header_palette(palette_bytes)) + fp.write(o8(8)) # bits + + +def _save_netpbm(im, fp, filename): + + # Unused by default. + # To use, uncomment the register_save call at the end of the file. + # + # If you need real GIF compression and/or RGB quantization, you + # can use the external NETPBM/PBMPLUS utilities. See comments + # below for information on how to enable this. + tempfile = im._dump() + + try: + with open(filename, "wb") as f: + if im.mode != "RGB": + subprocess.check_call( + ["ppmtogif", tempfile], stdout=f, stderr=subprocess.DEVNULL + ) + else: + # Pipe ppmquant output into ppmtogif + # "ppmquant 256 %s | ppmtogif > %s" % (tempfile, filename) + quant_cmd = ["ppmquant", "256", tempfile] + togif_cmd = ["ppmtogif"] + quant_proc = subprocess.Popen( + quant_cmd, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL + ) + togif_proc = subprocess.Popen( + togif_cmd, + stdin=quant_proc.stdout, + stdout=f, + stderr=subprocess.DEVNULL, + ) + + # Allow ppmquant to receive SIGPIPE if ppmtogif exits + quant_proc.stdout.close() + + retcode = quant_proc.wait() + if retcode: + raise subprocess.CalledProcessError(retcode, quant_cmd) + + retcode = togif_proc.wait() + if retcode: + raise subprocess.CalledProcessError(retcode, togif_cmd) + finally: + try: + os.unlink(tempfile) + except OSError: + pass + + +# Force optimization so that we can test performance against +# cases where it took lots of memory and time previously. +_FORCE_OPTIMIZE = False + + +def _get_optimize(im, info): + """ + Palette optimization is a potentially expensive operation. + + This function determines if the palette should be optimized using + some heuristics, then returns the list of palette entries in use. + + :param im: Image object + :param info: encoderinfo + :returns: list of indexes of palette entries in use, or None + """ + if im.mode in ("P", "L") and info and info.get("optimize", 0): + # Potentially expensive operation. + + # The palette saves 3 bytes per color not used, but palette + # lengths are restricted to 3*(2**N) bytes. Max saving would + # be 768 -> 6 bytes if we went all the way down to 2 colors. + # * If we're over 128 colors, we can't save any space. + # * If there aren't any holes, it's not worth collapsing. + # * If we have a 'large' image, the palette is in the noise. + + # create the new palette if not every color is used + optimise = _FORCE_OPTIMIZE or im.mode == "L" + if optimise or im.width * im.height < 512 * 512: + # check which colors are used + used_palette_colors = [] + for i, count in enumerate(im.histogram()): + if count: + used_palette_colors.append(i) + + if optimise or ( + len(used_palette_colors) <= 128 + and max(used_palette_colors) > len(used_palette_colors) + ): + return used_palette_colors + + +def _get_color_table_size(palette_bytes): + # calculate the palette size for the header + if not palette_bytes: + return 0 + elif len(palette_bytes) < 9: + return 1 + else: + return math.ceil(math.log(len(palette_bytes) // 3, 2)) - 1 + + +def _get_header_palette(palette_bytes): + """ + Returns the palette, null padded to the next power of 2 (*3) bytes + suitable for direct inclusion in the GIF header + + :param palette_bytes: Unpadded palette bytes, in RGBRGB form + :returns: Null padded palette + """ + color_table_size = _get_color_table_size(palette_bytes) + + # add the missing amount of bytes + # the palette has to be 2< 0: + palette_bytes += o8(0) * 3 * actual_target_size_diff + return palette_bytes + + +def _get_palette_bytes(im): + """ + Gets the palette for inclusion in the gif header + + :param im: Image object + :returns: Bytes, len<=768 suitable for inclusion in gif header + """ + return im.palette.palette + + +def _get_background(im, infoBackground): + background = 0 + if infoBackground: + background = infoBackground + if isinstance(background, tuple): + # WebPImagePlugin stores an RGBA value in info["background"] + # So it must be converted to the same format as GifImagePlugin's + # info["background"] - a global color table index + background = im.palette.getcolor(background) + return background + + +def _get_global_header(im, info): + """Return a list of strings representing a GIF header""" + + # Header Block + # http://www.matthewflickinger.com/lab/whatsinagif/bits_and_bytes.asp + + version = b"87a" + for extensionKey in ["transparency", "duration", "loop", "comment"]: + if info and extensionKey in info: + if (extensionKey == "duration" and info[extensionKey] == 0) or ( + extensionKey == "comment" and not (1 <= len(info[extensionKey]) <= 255) + ): + continue + version = b"89a" + break + else: + if im.info.get("version") == b"89a": + version = b"89a" + + background = _get_background(im, info.get("background")) + + palette_bytes = _get_palette_bytes(im) + color_table_size = _get_color_table_size(palette_bytes) + + return [ + b"GIF" # signature + + version # version + + o16(im.size[0]) # canvas width + + o16(im.size[1]), # canvas height + # Logical Screen Descriptor + # size of global color table + global color table flag + o8(color_table_size + 128), # packed fields + # background + reserved/aspect + o8(background) + o8(0), + # Global Color Table + _get_header_palette(palette_bytes), + ] + + +def _write_frame_data(fp, im_frame, offset, params): + try: + im_frame.encoderinfo = params + + # local image header + _write_local_header(fp, im_frame, offset, 0) + + ImageFile._save( + im_frame, fp, [("gif", (0, 0) + im_frame.size, 0, RAWMODE[im_frame.mode])] + ) + + fp.write(b"\0") # end of image data + finally: + del im_frame.encoderinfo + + +# -------------------------------------------------------------------- +# Legacy GIF utilities + + +def getheader(im, palette=None, info=None): + """ + Legacy Method to get Gif data from image. + + Warning:: May modify image data. + + :param im: Image object + :param palette: bytes object containing the source palette, or .... + :param info: encoderinfo + :returns: tuple of(list of header items, optimized palette) + + """ + used_palette_colors = _get_optimize(im, info) + + if info is None: + info = {} + + if "background" not in info and "background" in im.info: + info["background"] = im.info["background"] + + im_mod = _normalize_palette(im, palette, info) + im.palette = im_mod.palette + im.im = im_mod.im + header = _get_global_header(im, info) + + return header, used_palette_colors + + +# To specify duration, add the time in milliseconds to getdata(), +# e.g. getdata(im_frame, duration=1000) +def getdata(im, offset=(0, 0), **params): + """ + Legacy Method + + Return a list of strings representing this image. + The first string is a local image header, the rest contains + encoded image data. + + :param im: Image object + :param offset: Tuple of (x, y) pixels. Defaults to (0,0) + :param \\**params: E.g. duration or other encoder info parameters + :returns: List of Bytes containing gif encoded frame data + + """ + + class Collector: + data = [] + + def write(self, data): + self.data.append(data) + + im.load() # make sure raster data is available + + fp = Collector() + + _write_frame_data(fp, im, offset, params) + + return fp.data + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(GifImageFile.format, GifImageFile, _accept) +Image.register_save(GifImageFile.format, _save) +Image.register_save_all(GifImageFile.format, _save_all) +Image.register_extension(GifImageFile.format, ".gif") +Image.register_mime(GifImageFile.format, "image/gif") + +# +# Uncomment the following line if you wish to use NETPBM/PBMPLUS +# instead of the built-in "uncompressed" GIF encoder + +# Image.register_save(GifImageFile.format, _save_netpbm) diff --git a/venv/Lib/site-packages/PIL/GimpGradientFile.py b/venv/Lib/site-packages/PIL/GimpGradientFile.py new file mode 100644 index 0000000..1cacf57 --- /dev/null +++ b/venv/Lib/site-packages/PIL/GimpGradientFile.py @@ -0,0 +1,139 @@ +# +# Python Imaging Library +# $Id$ +# +# stuff to read (and render) GIMP gradient files +# +# History: +# 97-08-23 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + +from math import log, pi, sin, sqrt + +from ._binary import o8 + +# -------------------------------------------------------------------- +# Stuff to translate curve segments to palette values (derived from +# the corresponding code in GIMP, written by Federico Mena Quintero. +# See the GIMP distribution for more information.) +# + +EPSILON = 1e-10 + + +def linear(middle, pos): + if pos <= middle: + if middle < EPSILON: + return 0.0 + else: + return 0.5 * pos / middle + else: + pos = pos - middle + middle = 1.0 - middle + if middle < EPSILON: + return 1.0 + else: + return 0.5 + 0.5 * pos / middle + + +def curved(middle, pos): + return pos ** (log(0.5) / log(max(middle, EPSILON))) + + +def sine(middle, pos): + return (sin((-pi / 2.0) + pi * linear(middle, pos)) + 1.0) / 2.0 + + +def sphere_increasing(middle, pos): + return sqrt(1.0 - (linear(middle, pos) - 1.0) ** 2) + + +def sphere_decreasing(middle, pos): + return 1.0 - sqrt(1.0 - linear(middle, pos) ** 2) + + +SEGMENTS = [linear, curved, sine, sphere_increasing, sphere_decreasing] + + +class GradientFile: + + gradient = None + + def getpalette(self, entries=256): + + palette = [] + + ix = 0 + x0, x1, xm, rgb0, rgb1, segment = self.gradient[ix] + + for i in range(entries): + + x = i / (entries - 1) + + while x1 < x: + ix += 1 + x0, x1, xm, rgb0, rgb1, segment = self.gradient[ix] + + w = x1 - x0 + + if w < EPSILON: + scale = segment(0.5, 0.5) + else: + scale = segment((xm - x0) / w, (x - x0) / w) + + # expand to RGBA + r = o8(int(255 * ((rgb1[0] - rgb0[0]) * scale + rgb0[0]) + 0.5)) + g = o8(int(255 * ((rgb1[1] - rgb0[1]) * scale + rgb0[1]) + 0.5)) + b = o8(int(255 * ((rgb1[2] - rgb0[2]) * scale + rgb0[2]) + 0.5)) + a = o8(int(255 * ((rgb1[3] - rgb0[3]) * scale + rgb0[3]) + 0.5)) + + # add to palette + palette.append(r + g + b + a) + + return b"".join(palette), "RGBA" + + +## +# File handler for GIMP's gradient format. + + +class GimpGradientFile(GradientFile): + def __init__(self, fp): + + if fp.readline()[:13] != b"GIMP Gradient": + raise SyntaxError("not a GIMP gradient file") + + line = fp.readline() + + # GIMP 1.2 gradient files don't contain a name, but GIMP 1.3 files do + if line.startswith(b"Name: "): + line = fp.readline().strip() + + count = int(line) + + gradient = [] + + for i in range(count): + + s = fp.readline().split() + w = [float(x) for x in s[:11]] + + x0, x1 = w[0], w[2] + xm = w[1] + rgb0 = w[3:7] + rgb1 = w[7:11] + + segment = SEGMENTS[int(s[11])] + cspace = int(s[12]) + + if cspace != 0: + raise OSError("cannot handle HSV colour space") + + gradient.append((x0, x1, xm, rgb0, rgb1, segment)) + + self.gradient = gradient diff --git a/venv/Lib/site-packages/PIL/GimpPaletteFile.py b/venv/Lib/site-packages/PIL/GimpPaletteFile.py new file mode 100644 index 0000000..e3060ab --- /dev/null +++ b/venv/Lib/site-packages/PIL/GimpPaletteFile.py @@ -0,0 +1,58 @@ +# +# Python Imaging Library +# $Id$ +# +# stuff to read GIMP palette files +# +# History: +# 1997-08-23 fl Created +# 2004-09-07 fl Support GIMP 2.0 palette files. +# +# Copyright (c) Secret Labs AB 1997-2004. All rights reserved. +# Copyright (c) Fredrik Lundh 1997-2004. +# +# See the README file for information on usage and redistribution. +# + +import re + +from ._binary import o8 + +## +# File handler for GIMP's palette format. + + +class GimpPaletteFile: + + rawmode = "RGB" + + def __init__(self, fp): + + self.palette = [o8(i) * 3 for i in range(256)] + + if fp.readline()[:12] != b"GIMP Palette": + raise SyntaxError("not a GIMP palette file") + + for i in range(256): + + s = fp.readline() + if not s: + break + + # skip fields and comment lines + if re.match(br"\w+:|#", s): + continue + if len(s) > 100: + raise SyntaxError("bad palette file") + + v = tuple(map(int, s.split()[:3])) + if len(v) != 3: + raise ValueError("bad palette entry") + + self.palette[i] = o8(v[0]) + o8(v[1]) + o8(v[2]) + + self.palette = b"".join(self.palette) + + def getpalette(self): + + return self.palette, self.rawmode diff --git a/venv/Lib/site-packages/PIL/GribStubImagePlugin.py b/venv/Lib/site-packages/PIL/GribStubImagePlugin.py new file mode 100644 index 0000000..515c272 --- /dev/null +++ b/venv/Lib/site-packages/PIL/GribStubImagePlugin.py @@ -0,0 +1,74 @@ +# +# The Python Imaging Library +# $Id$ +# +# GRIB stub adapter +# +# Copyright (c) 1996-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFile +from ._binary import i8 + +_handler = None + + +def register_handler(handler): + """ + Install application-specific GRIB image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix): + return prefix[0:4] == b"GRIB" and i8(prefix[7]) == 1 + + +class GribStubImageFile(ImageFile.StubImageFile): + + format = "GRIB" + format_description = "GRIB" + + def _open(self): + + offset = self.fp.tell() + + if not _accept(self.fp.read(8)): + raise SyntaxError("Not a GRIB file") + + self.fp.seek(offset) + + # make something up + self.mode = "F" + self._size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + +def _save(im, fp, filename): + if _handler is None or not hasattr("_handler", "save"): + raise OSError("GRIB save handler not installed") + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(GribStubImageFile.format, GribStubImageFile, _accept) +Image.register_save(GribStubImageFile.format, _save) + +Image.register_extension(GribStubImageFile.format, ".grib") diff --git a/venv/Lib/site-packages/PIL/Hdf5StubImagePlugin.py b/venv/Lib/site-packages/PIL/Hdf5StubImagePlugin.py new file mode 100644 index 0000000..362f2d3 --- /dev/null +++ b/venv/Lib/site-packages/PIL/Hdf5StubImagePlugin.py @@ -0,0 +1,73 @@ +# +# The Python Imaging Library +# $Id$ +# +# HDF5 stub adapter +# +# Copyright (c) 2000-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFile + +_handler = None + + +def register_handler(handler): + """ + Install application-specific HDF5 image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix): + return prefix[:8] == b"\x89HDF\r\n\x1a\n" + + +class HDF5StubImageFile(ImageFile.StubImageFile): + + format = "HDF5" + format_description = "HDF5" + + def _open(self): + + offset = self.fp.tell() + + if not _accept(self.fp.read(8)): + raise SyntaxError("Not an HDF file") + + self.fp.seek(offset) + + # make something up + self.mode = "F" + self._size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + +def _save(im, fp, filename): + if _handler is None or not hasattr("_handler", "save"): + raise OSError("HDF5 save handler not installed") + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(HDF5StubImageFile.format, HDF5StubImageFile, _accept) +Image.register_save(HDF5StubImageFile.format, _save) + +Image.register_extensions(HDF5StubImageFile.format, [".h5", ".hdf"]) diff --git a/venv/Lib/site-packages/PIL/IcnsImagePlugin.py b/venv/Lib/site-packages/PIL/IcnsImagePlugin.py new file mode 100644 index 0000000..c003926 --- /dev/null +++ b/venv/Lib/site-packages/PIL/IcnsImagePlugin.py @@ -0,0 +1,376 @@ +# +# The Python Imaging Library. +# $Id$ +# +# macOS icns file decoder, based on icns.py by Bob Ippolito. +# +# history: +# 2004-10-09 fl Turned into a PIL plugin; removed 2.3 dependencies. +# +# Copyright (c) 2004 by Bob Ippolito. +# Copyright (c) 2004 by Secret Labs. +# Copyright (c) 2004 by Fredrik Lundh. +# Copyright (c) 2014 by Alastair Houghton. +# +# See the README file for information on usage and redistribution. +# + +import io +import os +import shutil +import struct +import subprocess +import sys +import tempfile + +from PIL import Image, ImageFile, PngImagePlugin +from PIL._binary import i8 + +enable_jpeg2k = hasattr(Image.core, "jp2klib_version") +if enable_jpeg2k: + from PIL import Jpeg2KImagePlugin + +HEADERSIZE = 8 + + +def nextheader(fobj): + return struct.unpack(">4sI", fobj.read(HEADERSIZE)) + + +def read_32t(fobj, start_length, size): + # The 128x128 icon seems to have an extra header for some reason. + (start, length) = start_length + fobj.seek(start) + sig = fobj.read(4) + if sig != b"\x00\x00\x00\x00": + raise SyntaxError("Unknown signature, expecting 0x00000000") + return read_32(fobj, (start + 4, length - 4), size) + + +def read_32(fobj, start_length, size): + """ + Read a 32bit RGB icon resource. Seems to be either uncompressed or + an RLE packbits-like scheme. + """ + (start, length) = start_length + fobj.seek(start) + pixel_size = (size[0] * size[2], size[1] * size[2]) + sizesq = pixel_size[0] * pixel_size[1] + if length == sizesq * 3: + # uncompressed ("RGBRGBGB") + indata = fobj.read(length) + im = Image.frombuffer("RGB", pixel_size, indata, "raw", "RGB", 0, 1) + else: + # decode image + im = Image.new("RGB", pixel_size, None) + for band_ix in range(3): + data = [] + bytesleft = sizesq + while bytesleft > 0: + byte = fobj.read(1) + if not byte: + break + byte = i8(byte) + if byte & 0x80: + blocksize = byte - 125 + byte = fobj.read(1) + for i in range(blocksize): + data.append(byte) + else: + blocksize = byte + 1 + data.append(fobj.read(blocksize)) + bytesleft -= blocksize + if bytesleft <= 0: + break + if bytesleft != 0: + raise SyntaxError("Error reading channel [%r left]" % bytesleft) + band = Image.frombuffer("L", pixel_size, b"".join(data), "raw", "L", 0, 1) + im.im.putband(band.im, band_ix) + return {"RGB": im} + + +def read_mk(fobj, start_length, size): + # Alpha masks seem to be uncompressed + start = start_length[0] + fobj.seek(start) + pixel_size = (size[0] * size[2], size[1] * size[2]) + sizesq = pixel_size[0] * pixel_size[1] + band = Image.frombuffer("L", pixel_size, fobj.read(sizesq), "raw", "L", 0, 1) + return {"A": band} + + +def read_png_or_jpeg2000(fobj, start_length, size): + (start, length) = start_length + fobj.seek(start) + sig = fobj.read(12) + if sig[:8] == b"\x89PNG\x0d\x0a\x1a\x0a": + fobj.seek(start) + im = PngImagePlugin.PngImageFile(fobj) + return {"RGBA": im} + elif ( + sig[:4] == b"\xff\x4f\xff\x51" + or sig[:4] == b"\x0d\x0a\x87\x0a" + or sig == b"\x00\x00\x00\x0cjP \x0d\x0a\x87\x0a" + ): + if not enable_jpeg2k: + raise ValueError( + "Unsupported icon subimage format (rebuild PIL " + "with JPEG 2000 support to fix this)" + ) + # j2k, jpc or j2c + fobj.seek(start) + jp2kstream = fobj.read(length) + f = io.BytesIO(jp2kstream) + im = Jpeg2KImagePlugin.Jpeg2KImageFile(f) + if im.mode != "RGBA": + im = im.convert("RGBA") + return {"RGBA": im} + else: + raise ValueError("Unsupported icon subimage format") + + +class IcnsFile: + + SIZES = { + (512, 512, 2): [(b"ic10", read_png_or_jpeg2000)], + (512, 512, 1): [(b"ic09", read_png_or_jpeg2000)], + (256, 256, 2): [(b"ic14", read_png_or_jpeg2000)], + (256, 256, 1): [(b"ic08", read_png_or_jpeg2000)], + (128, 128, 2): [(b"ic13", read_png_or_jpeg2000)], + (128, 128, 1): [ + (b"ic07", read_png_or_jpeg2000), + (b"it32", read_32t), + (b"t8mk", read_mk), + ], + (64, 64, 1): [(b"icp6", read_png_or_jpeg2000)], + (32, 32, 2): [(b"ic12", read_png_or_jpeg2000)], + (48, 48, 1): [(b"ih32", read_32), (b"h8mk", read_mk)], + (32, 32, 1): [ + (b"icp5", read_png_or_jpeg2000), + (b"il32", read_32), + (b"l8mk", read_mk), + ], + (16, 16, 2): [(b"ic11", read_png_or_jpeg2000)], + (16, 16, 1): [ + (b"icp4", read_png_or_jpeg2000), + (b"is32", read_32), + (b"s8mk", read_mk), + ], + } + + def __init__(self, fobj): + """ + fobj is a file-like object as an icns resource + """ + # signature : (start, length) + self.dct = dct = {} + self.fobj = fobj + sig, filesize = nextheader(fobj) + if sig != b"icns": + raise SyntaxError("not an icns file") + i = HEADERSIZE + while i < filesize: + sig, blocksize = nextheader(fobj) + if blocksize <= 0: + raise SyntaxError("invalid block header") + i += HEADERSIZE + blocksize -= HEADERSIZE + dct[sig] = (i, blocksize) + fobj.seek(blocksize, io.SEEK_CUR) + i += blocksize + + def itersizes(self): + sizes = [] + for size, fmts in self.SIZES.items(): + for (fmt, reader) in fmts: + if fmt in self.dct: + sizes.append(size) + break + return sizes + + def bestsize(self): + sizes = self.itersizes() + if not sizes: + raise SyntaxError("No 32bit icon resources found") + return max(sizes) + + def dataforsize(self, size): + """ + Get an icon resource as {channel: array}. Note that + the arrays are bottom-up like windows bitmaps and will likely + need to be flipped or transposed in some way. + """ + dct = {} + for code, reader in self.SIZES[size]: + desc = self.dct.get(code) + if desc is not None: + dct.update(reader(self.fobj, desc, size)) + return dct + + def getimage(self, size=None): + if size is None: + size = self.bestsize() + if len(size) == 2: + size = (size[0], size[1], 1) + channels = self.dataforsize(size) + + im = channels.get("RGBA", None) + if im: + return im + + im = channels.get("RGB").copy() + try: + im.putalpha(channels["A"]) + except KeyError: + pass + return im + + +## +# Image plugin for Mac OS icons. + + +class IcnsImageFile(ImageFile.ImageFile): + """ + PIL image support for Mac OS .icns files. + Chooses the best resolution, but will possibly load + a different size image if you mutate the size attribute + before calling 'load'. + + The info dictionary has a key 'sizes' that is a list + of sizes that the icns file has. + """ + + format = "ICNS" + format_description = "Mac OS icns resource" + + def _open(self): + self.icns = IcnsFile(self.fp) + self.mode = "RGBA" + self.info["sizes"] = self.icns.itersizes() + self.best_size = self.icns.bestsize() + self.size = ( + self.best_size[0] * self.best_size[2], + self.best_size[1] * self.best_size[2], + ) + + @property + def size(self): + return self._size + + @size.setter + def size(self, value): + info_size = value + if info_size not in self.info["sizes"] and len(info_size) == 2: + info_size = (info_size[0], info_size[1], 1) + if ( + info_size not in self.info["sizes"] + and len(info_size) == 3 + and info_size[2] == 1 + ): + simple_sizes = [ + (size[0] * size[2], size[1] * size[2]) for size in self.info["sizes"] + ] + if value in simple_sizes: + info_size = self.info["sizes"][simple_sizes.index(value)] + if info_size not in self.info["sizes"]: + raise ValueError("This is not one of the allowed sizes of this image") + self._size = value + + def load(self): + if len(self.size) == 3: + self.best_size = self.size + self.size = ( + self.best_size[0] * self.best_size[2], + self.best_size[1] * self.best_size[2], + ) + + Image.Image.load(self) + if self.im and self.im.size == self.size: + # Already loaded + return + self.load_prepare() + # This is likely NOT the best way to do it, but whatever. + im = self.icns.getimage(self.best_size) + + # If this is a PNG or JPEG 2000, it won't be loaded yet + im.load() + + self.im = im.im + self.mode = im.mode + self.size = im.size + self.load_end() + + +def _save(im, fp, filename): + """ + Saves the image as a series of PNG files, + that are then converted to a .icns file + using the macOS command line utility 'iconutil'. + + macOS only. + """ + if hasattr(fp, "flush"): + fp.flush() + + # create the temporary set of pngs + with tempfile.TemporaryDirectory(".iconset") as iconset: + provided_images = { + im.width: im for im in im.encoderinfo.get("append_images", []) + } + last_w = None + second_path = None + for w in [16, 32, 128, 256, 512]: + prefix = "icon_{}x{}".format(w, w) + + first_path = os.path.join(iconset, prefix + ".png") + if last_w == w: + shutil.copyfile(second_path, first_path) + else: + im_w = provided_images.get(w, im.resize((w, w), Image.LANCZOS)) + im_w.save(first_path) + + second_path = os.path.join(iconset, prefix + "@2x.png") + im_w2 = provided_images.get(w * 2, im.resize((w * 2, w * 2), Image.LANCZOS)) + im_w2.save(second_path) + last_w = w * 2 + + # iconutil -c icns -o {} {} + + convert_cmd = ["iconutil", "-c", "icns", "-o", filename, iconset] + convert_proc = subprocess.Popen( + convert_cmd, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL + ) + + convert_proc.stdout.close() + + retcode = convert_proc.wait() + + if retcode: + raise subprocess.CalledProcessError(retcode, convert_cmd) + + +Image.register_open(IcnsImageFile.format, IcnsImageFile, lambda x: x[:4] == b"icns") +Image.register_extension(IcnsImageFile.format, ".icns") + +if sys.platform == "darwin": + Image.register_save(IcnsImageFile.format, _save) + + Image.register_mime(IcnsImageFile.format, "image/icns") + + +if __name__ == "__main__": + + if len(sys.argv) < 2: + print("Syntax: python IcnsImagePlugin.py [file]") + sys.exit() + + with open(sys.argv[1], "rb") as fp: + imf = IcnsImageFile(fp) + for size in imf.info["sizes"]: + imf.size = size + imf.save("out-%s-%s-%s.png" % size) + with Image.open(sys.argv[1]) as im: + im.save("out.png") + if sys.platform == "windows": + os.startfile("out.png") diff --git a/venv/Lib/site-packages/PIL/IcoImagePlugin.py b/venv/Lib/site-packages/PIL/IcoImagePlugin.py new file mode 100644 index 0000000..e4a7432 --- /dev/null +++ b/venv/Lib/site-packages/PIL/IcoImagePlugin.py @@ -0,0 +1,324 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Windows Icon support for PIL +# +# History: +# 96-05-27 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + +# This plugin is a refactored version of Win32IconImagePlugin by Bryan Davis +# . +# https://code.google.com/archive/p/casadebender/wikis/Win32IconImagePlugin.wiki +# +# Icon format references: +# * https://en.wikipedia.org/wiki/ICO_(file_format) +# * https://msdn.microsoft.com/en-us/library/ms997538.aspx + + +import struct +import warnings +from io import BytesIO +from math import ceil, log + +from . import BmpImagePlugin, Image, ImageFile, PngImagePlugin +from ._binary import i8, i16le as i16, i32le as i32 + +# +# -------------------------------------------------------------------- + +_MAGIC = b"\0\0\1\0" + + +def _save(im, fp, filename): + fp.write(_MAGIC) # (2+2) + sizes = im.encoderinfo.get( + "sizes", + [(16, 16), (24, 24), (32, 32), (48, 48), (64, 64), (128, 128), (256, 256)], + ) + width, height = im.size + sizes = filter( + lambda x: False + if (x[0] > width or x[1] > height or x[0] > 256 or x[1] > 256) + else True, + sizes, + ) + sizes = list(sizes) + fp.write(struct.pack("=8bpp) + "reserved": i8(s[3]), + "planes": i16(s[4:]), + "bpp": i16(s[6:]), + "size": i32(s[8:]), + "offset": i32(s[12:]), + } + + # See Wikipedia + for j in ("width", "height"): + if not icon_header[j]: + icon_header[j] = 256 + + # See Wikipedia notes about color depth. + # We need this just to differ images with equal sizes + icon_header["color_depth"] = ( + icon_header["bpp"] + or ( + icon_header["nb_color"] != 0 + and ceil(log(icon_header["nb_color"], 2)) + ) + or 256 + ) + + icon_header["dim"] = (icon_header["width"], icon_header["height"]) + icon_header["square"] = icon_header["width"] * icon_header["height"] + + self.entry.append(icon_header) + + self.entry = sorted(self.entry, key=lambda x: x["color_depth"]) + # ICO images are usually squares + # self.entry = sorted(self.entry, key=lambda x: x['width']) + self.entry = sorted(self.entry, key=lambda x: x["square"]) + self.entry.reverse() + + def sizes(self): + """ + Get a list of all available icon sizes and color depths. + """ + return {(h["width"], h["height"]) for h in self.entry} + + def getentryindex(self, size, bpp=False): + for (i, h) in enumerate(self.entry): + if size == h["dim"] and (bpp is False or bpp == h["color_depth"]): + return i + return 0 + + def getimage(self, size, bpp=False): + """ + Get an image from the icon + """ + return self.frame(self.getentryindex(size, bpp)) + + def frame(self, idx): + """ + Get an image from frame idx + """ + + header = self.entry[idx] + + self.buf.seek(header["offset"]) + data = self.buf.read(8) + self.buf.seek(header["offset"]) + + if data[:8] == PngImagePlugin._MAGIC: + # png frame + im = PngImagePlugin.PngImageFile(self.buf) + else: + # XOR + AND mask bmp frame + im = BmpImagePlugin.DibImageFile(self.buf) + Image._decompression_bomb_check(im.size) + + # change tile dimension to only encompass XOR image + im._size = (im.size[0], int(im.size[1] / 2)) + d, e, o, a = im.tile[0] + im.tile[0] = d, (0, 0) + im.size, o, a + + # figure out where AND mask image starts + mode = a[0] + bpp = 8 + for k, v in BmpImagePlugin.BIT2MODE.items(): + if mode == v[1]: + bpp = k + break + + if 32 == bpp: + # 32-bit color depth icon image allows semitransparent areas + # PIL's DIB format ignores transparency bits, recover them. + # The DIB is packed in BGRX byte order where X is the alpha + # channel. + + # Back up to start of bmp data + self.buf.seek(o) + # extract every 4th byte (eg. 3,7,11,15,...) + alpha_bytes = self.buf.read(im.size[0] * im.size[1] * 4)[3::4] + + # convert to an 8bpp grayscale image + mask = Image.frombuffer( + "L", # 8bpp + im.size, # (w, h) + alpha_bytes, # source chars + "raw", # raw decoder + ("L", 0, -1), # 8bpp inverted, unpadded, reversed + ) + else: + # get AND image from end of bitmap + w = im.size[0] + if (w % 32) > 0: + # bitmap row data is aligned to word boundaries + w += 32 - (im.size[0] % 32) + + # the total mask data is + # padded row size * height / bits per char + + and_mask_offset = o + int(im.size[0] * im.size[1] * (bpp / 8.0)) + total_bytes = int((w * im.size[1]) / 8) + + self.buf.seek(and_mask_offset) + mask_data = self.buf.read(total_bytes) + + # convert raw data to image + mask = Image.frombuffer( + "1", # 1 bpp + im.size, # (w, h) + mask_data, # source chars + "raw", # raw decoder + ("1;I", int(w / 8), -1), # 1bpp inverted, padded, reversed + ) + + # now we have two images, im is XOR image and mask is AND image + + # apply mask image as alpha channel + im = im.convert("RGBA") + im.putalpha(mask) + + return im + + +## +# Image plugin for Windows Icon files. + + +class IcoImageFile(ImageFile.ImageFile): + """ + PIL read-only image support for Microsoft Windows .ico files. + + By default the largest resolution image in the file will be loaded. This + can be changed by altering the 'size' attribute before calling 'load'. + + The info dictionary has a key 'sizes' that is a list of the sizes available + in the icon file. + + Handles classic, XP and Vista icon formats. + + When saving, PNG compression is used. Support for this was only added in + Windows Vista. + + This plugin is a refactored version of Win32IconImagePlugin by Bryan Davis + . + https://code.google.com/archive/p/casadebender/wikis/Win32IconImagePlugin.wiki + """ + + format = "ICO" + format_description = "Windows Icon" + + def _open(self): + self.ico = IcoFile(self.fp) + self.info["sizes"] = self.ico.sizes() + self.size = self.ico.entry[0]["dim"] + self.load() + + @property + def size(self): + return self._size + + @size.setter + def size(self, value): + if value not in self.info["sizes"]: + raise ValueError("This is not one of the allowed sizes of this image") + self._size = value + + def load(self): + if self.im and self.im.size == self.size: + # Already loaded + return + im = self.ico.getimage(self.size) + # if tile is PNG, it won't really be loaded yet + im.load() + self.im = im.im + self.mode = im.mode + if im.size != self.size: + warnings.warn("Image was not the expected size") + + index = self.ico.getentryindex(self.size) + sizes = list(self.info["sizes"]) + sizes[index] = im.size + self.info["sizes"] = set(sizes) + + self.size = im.size + + def load_seek(self): + # Flag the ImageFile.Parser so that it + # just does all the decode at the end. + pass + + +# +# -------------------------------------------------------------------- + + +Image.register_open(IcoImageFile.format, IcoImageFile, _accept) +Image.register_save(IcoImageFile.format, _save) +Image.register_extension(IcoImageFile.format, ".ico") + +Image.register_mime(IcoImageFile.format, "image/x-icon") diff --git a/venv/Lib/site-packages/PIL/ImImagePlugin.py b/venv/Lib/site-packages/PIL/ImImagePlugin.py new file mode 100644 index 0000000..8b03f35 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImImagePlugin.py @@ -0,0 +1,377 @@ +# +# The Python Imaging Library. +# $Id$ +# +# IFUNC IM file handling for PIL +# +# history: +# 1995-09-01 fl Created. +# 1997-01-03 fl Save palette images +# 1997-01-08 fl Added sequence support +# 1997-01-23 fl Added P and RGB save support +# 1997-05-31 fl Read floating point images +# 1997-06-22 fl Save floating point images +# 1997-08-27 fl Read and save 1-bit images +# 1998-06-25 fl Added support for RGB+LUT images +# 1998-07-02 fl Added support for YCC images +# 1998-07-15 fl Renamed offset attribute to avoid name clash +# 1998-12-29 fl Added I;16 support +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.7) +# 2003-09-26 fl Added LA/PA support +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2001 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + + +import os +import re + +from . import Image, ImageFile, ImagePalette +from ._binary import i8 + +# -------------------------------------------------------------------- +# Standard tags + +COMMENT = "Comment" +DATE = "Date" +EQUIPMENT = "Digitalization equipment" +FRAMES = "File size (no of images)" +LUT = "Lut" +NAME = "Name" +SCALE = "Scale (x,y)" +SIZE = "Image size (x*y)" +MODE = "Image type" + +TAGS = { + COMMENT: 0, + DATE: 0, + EQUIPMENT: 0, + FRAMES: 0, + LUT: 0, + NAME: 0, + SCALE: 0, + SIZE: 0, + MODE: 0, +} + +OPEN = { + # ifunc93/p3cfunc formats + "0 1 image": ("1", "1"), + "L 1 image": ("1", "1"), + "Greyscale image": ("L", "L"), + "Grayscale image": ("L", "L"), + "RGB image": ("RGB", "RGB;L"), + "RLB image": ("RGB", "RLB"), + "RYB image": ("RGB", "RLB"), + "B1 image": ("1", "1"), + "B2 image": ("P", "P;2"), + "B4 image": ("P", "P;4"), + "X 24 image": ("RGB", "RGB"), + "L 32 S image": ("I", "I;32"), + "L 32 F image": ("F", "F;32"), + # old p3cfunc formats + "RGB3 image": ("RGB", "RGB;T"), + "RYB3 image": ("RGB", "RYB;T"), + # extensions + "LA image": ("LA", "LA;L"), + "PA image": ("LA", "PA;L"), + "RGBA image": ("RGBA", "RGBA;L"), + "RGBX image": ("RGBX", "RGBX;L"), + "CMYK image": ("CMYK", "CMYK;L"), + "YCC image": ("YCbCr", "YCbCr;L"), +} + +# ifunc95 extensions +for i in ["8", "8S", "16", "16S", "32", "32F"]: + OPEN["L %s image" % i] = ("F", "F;%s" % i) + OPEN["L*%s image" % i] = ("F", "F;%s" % i) +for i in ["16", "16L", "16B"]: + OPEN["L %s image" % i] = ("I;%s" % i, "I;%s" % i) + OPEN["L*%s image" % i] = ("I;%s" % i, "I;%s" % i) +for i in ["32S"]: + OPEN["L %s image" % i] = ("I", "I;%s" % i) + OPEN["L*%s image" % i] = ("I", "I;%s" % i) +for i in range(2, 33): + OPEN["L*%s image" % i] = ("F", "F;%s" % i) + + +# -------------------------------------------------------------------- +# Read IM directory + +split = re.compile(br"^([A-Za-z][^:]*):[ \t]*(.*)[ \t]*$") + + +def number(s): + try: + return int(s) + except ValueError: + return float(s) + + +## +# Image plugin for the IFUNC IM file format. + + +class ImImageFile(ImageFile.ImageFile): + + format = "IM" + format_description = "IFUNC Image Memory" + _close_exclusive_fp_after_loading = False + + def _open(self): + + # Quick rejection: if there's not an LF among the first + # 100 bytes, this is (probably) not a text header. + + if b"\n" not in self.fp.read(100): + raise SyntaxError("not an IM file") + self.fp.seek(0) + + n = 0 + + # Default values + self.info[MODE] = "L" + self.info[SIZE] = (512, 512) + self.info[FRAMES] = 1 + + self.rawmode = "L" + + while True: + + s = self.fp.read(1) + + # Some versions of IFUNC uses \n\r instead of \r\n... + if s == b"\r": + continue + + if not s or s == b"\0" or s == b"\x1A": + break + + # FIXME: this may read whole file if not a text file + s = s + self.fp.readline() + + if len(s) > 100: + raise SyntaxError("not an IM file") + + if s[-2:] == b"\r\n": + s = s[:-2] + elif s[-1:] == b"\n": + s = s[:-1] + + try: + m = split.match(s) + except re.error: + raise SyntaxError("not an IM file") + + if m: + + k, v = m.group(1, 2) + + # Don't know if this is the correct encoding, + # but a decent guess (I guess) + k = k.decode("latin-1", "replace") + v = v.decode("latin-1", "replace") + + # Convert value as appropriate + if k in [FRAMES, SCALE, SIZE]: + v = v.replace("*", ",") + v = tuple(map(number, v.split(","))) + if len(v) == 1: + v = v[0] + elif k == MODE and v in OPEN: + v, self.rawmode = OPEN[v] + + # Add to dictionary. Note that COMMENT tags are + # combined into a list of strings. + if k == COMMENT: + if k in self.info: + self.info[k].append(v) + else: + self.info[k] = [v] + else: + self.info[k] = v + + if k in TAGS: + n += 1 + + else: + + raise SyntaxError( + "Syntax error in IM header: " + s.decode("ascii", "replace") + ) + + if not n: + raise SyntaxError("Not an IM file") + + # Basic attributes + self._size = self.info[SIZE] + self.mode = self.info[MODE] + + # Skip forward to start of image data + while s and s[0:1] != b"\x1A": + s = self.fp.read(1) + if not s: + raise SyntaxError("File truncated") + + if LUT in self.info: + # convert lookup table to palette or lut attribute + palette = self.fp.read(768) + greyscale = 1 # greyscale palette + linear = 1 # linear greyscale palette + for i in range(256): + if palette[i] == palette[i + 256] == palette[i + 512]: + if i8(palette[i]) != i: + linear = 0 + else: + greyscale = 0 + if self.mode in ["L", "LA", "P", "PA"]: + if greyscale: + if not linear: + self.lut = [i8(c) for c in palette[:256]] + else: + if self.mode in ["L", "P"]: + self.mode = self.rawmode = "P" + elif self.mode in ["LA", "PA"]: + self.mode = "PA" + self.rawmode = "PA;L" + self.palette = ImagePalette.raw("RGB;L", palette) + elif self.mode == "RGB": + if not greyscale or not linear: + self.lut = [i8(c) for c in palette] + + self.frame = 0 + + self.__offset = offs = self.fp.tell() + + self.__fp = self.fp # FIXME: hack + + if self.rawmode[:2] == "F;": + + # ifunc95 formats + try: + # use bit decoder (if necessary) + bits = int(self.rawmode[2:]) + if bits not in [8, 16, 32]: + self.tile = [("bit", (0, 0) + self.size, offs, (bits, 8, 3, 0, -1))] + return + except ValueError: + pass + + if self.rawmode in ["RGB;T", "RYB;T"]: + # Old LabEye/3PC files. Would be very surprised if anyone + # ever stumbled upon such a file ;-) + size = self.size[0] * self.size[1] + self.tile = [ + ("raw", (0, 0) + self.size, offs, ("G", 0, -1)), + ("raw", (0, 0) + self.size, offs + size, ("R", 0, -1)), + ("raw", (0, 0) + self.size, offs + 2 * size, ("B", 0, -1)), + ] + else: + # LabEye/IFUNC files + self.tile = [("raw", (0, 0) + self.size, offs, (self.rawmode, 0, -1))] + + @property + def n_frames(self): + return self.info[FRAMES] + + @property + def is_animated(self): + return self.info[FRAMES] > 1 + + def seek(self, frame): + if not self._seek_check(frame): + return + + self.frame = frame + + if self.mode == "1": + bits = 1 + else: + bits = 8 * len(self.mode) + + size = ((self.size[0] * bits + 7) // 8) * self.size[1] + offs = self.__offset + frame * size + + self.fp = self.__fp + + self.tile = [("raw", (0, 0) + self.size, offs, (self.rawmode, 0, -1))] + + def tell(self): + return self.frame + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +# +# -------------------------------------------------------------------- +# Save IM files + + +SAVE = { + # mode: (im type, raw mode) + "1": ("0 1", "1"), + "L": ("Greyscale", "L"), + "LA": ("LA", "LA;L"), + "P": ("Greyscale", "P"), + "PA": ("LA", "PA;L"), + "I": ("L 32S", "I;32S"), + "I;16": ("L 16", "I;16"), + "I;16L": ("L 16L", "I;16L"), + "I;16B": ("L 16B", "I;16B"), + "F": ("L 32F", "F;32F"), + "RGB": ("RGB", "RGB;L"), + "RGBA": ("RGBA", "RGBA;L"), + "RGBX": ("RGBX", "RGBX;L"), + "CMYK": ("CMYK", "CMYK;L"), + "YCbCr": ("YCC", "YCbCr;L"), +} + + +def _save(im, fp, filename): + + try: + image_type, rawmode = SAVE[im.mode] + except KeyError: + raise ValueError("Cannot save %s images as IM" % im.mode) + + frames = im.encoderinfo.get("frames", 1) + + fp.write(("Image type: %s image\r\n" % image_type).encode("ascii")) + if filename: + # Each line must be 100 characters or less, + # or: SyntaxError("not an IM file") + # 8 characters are used for "Name: " and "\r\n" + # Keep just the filename, ditch the potentially overlong path + name, ext = os.path.splitext(os.path.basename(filename)) + name = "".join([name[: 92 - len(ext)], ext]) + + fp.write(("Name: %s\r\n" % name).encode("ascii")) + fp.write(("Image size (x*y): %d*%d\r\n" % im.size).encode("ascii")) + fp.write(("File size (no of images): %d\r\n" % frames).encode("ascii")) + if im.mode in ["P", "PA"]: + fp.write(b"Lut: 1\r\n") + fp.write(b"\000" * (511 - fp.tell()) + b"\032") + if im.mode in ["P", "PA"]: + fp.write(im.im.getpalette("RGB", "RGB;L")) # 768 bytes + ImageFile._save(im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, 0, -1))]) + + +# +# -------------------------------------------------------------------- +# Registry + + +Image.register_open(ImImageFile.format, ImImageFile) +Image.register_save(ImImageFile.format, _save) + +Image.register_extension(ImImageFile.format, ".im") diff --git a/venv/Lib/site-packages/PIL/Image.py b/venv/Lib/site-packages/PIL/Image.py new file mode 100644 index 0000000..3ced965 --- /dev/null +++ b/venv/Lib/site-packages/PIL/Image.py @@ -0,0 +1,3417 @@ +# +# The Python Imaging Library. +# $Id$ +# +# the Image class wrapper +# +# partial release history: +# 1995-09-09 fl Created +# 1996-03-11 fl PIL release 0.0 (proof of concept) +# 1996-04-30 fl PIL release 0.1b1 +# 1999-07-28 fl PIL release 1.0 final +# 2000-06-07 fl PIL release 1.1 +# 2000-10-20 fl PIL release 1.1.1 +# 2001-05-07 fl PIL release 1.1.2 +# 2002-03-15 fl PIL release 1.1.3 +# 2003-05-10 fl PIL release 1.1.4 +# 2005-03-28 fl PIL release 1.1.5 +# 2006-12-02 fl PIL release 1.1.6 +# 2009-11-15 fl PIL release 1.1.7 +# +# Copyright (c) 1997-2009 by Secret Labs AB. All rights reserved. +# Copyright (c) 1995-2009 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +import atexit +import builtins +import io +import logging +import math +import numbers +import os +import struct +import sys +import tempfile +import warnings +from collections.abc import Callable, MutableMapping +from pathlib import Path + +# VERSION was removed in Pillow 6.0.0. +# PILLOW_VERSION is deprecated and will be removed in a future release. +# Use __version__ instead. +from . import ( + ImageMode, + TiffTags, + UnidentifiedImageError, + __version__, + _plugins, + _raise_version_warning, +) +from ._binary import i8, i32le +from ._util import deferred_error, isPath + +if sys.version_info >= (3, 7): + + def __getattr__(name): + if name == "PILLOW_VERSION": + _raise_version_warning() + return __version__ + raise AttributeError("module '{}' has no attribute '{}'".format(__name__, name)) + + +else: + + from . import PILLOW_VERSION + + # Silence warning + assert PILLOW_VERSION + + +logger = logging.getLogger(__name__) + + +class DecompressionBombWarning(RuntimeWarning): + pass + + +class DecompressionBombError(Exception): + pass + + +# Limit to around a quarter gigabyte for a 24 bit (3 bpp) image +MAX_IMAGE_PIXELS = int(1024 * 1024 * 1024 // 4 // 3) + + +try: + # If the _imaging C module is not present, Pillow will not load. + # Note that other modules should not refer to _imaging directly; + # import Image and use the Image.core variable instead. + # Also note that Image.core is not a publicly documented interface, + # and should be considered private and subject to change. + from . import _imaging as core + + if __version__ != getattr(core, "PILLOW_VERSION", None): + raise ImportError( + "The _imaging extension was built for another version of Pillow or PIL:\n" + "Core version: %s\n" + "Pillow version: %s" % (getattr(core, "PILLOW_VERSION", None), __version__) + ) + +except ImportError as v: + core = deferred_error(ImportError("The _imaging C module is not installed.")) + # Explanations for ways that we know we might have an import error + if str(v).startswith("Module use of python"): + # The _imaging C module is present, but not compiled for + # the right version (windows only). Print a warning, if + # possible. + warnings.warn( + "The _imaging extension was built for another version of Python.", + RuntimeWarning, + ) + elif str(v).startswith("The _imaging extension"): + warnings.warn(str(v), RuntimeWarning) + # Fail here anyway. Don't let people run with a mostly broken Pillow. + # see docs/porting.rst + raise + + +# works everywhere, win for pypy, not cpython +USE_CFFI_ACCESS = hasattr(sys, "pypy_version_info") +try: + import cffi +except ImportError: + cffi = None + + +def isImageType(t): + """ + Checks if an object is an image object. + + .. warning:: + + This function is for internal use only. + + :param t: object to check if it's an image + :returns: True if the object is an image + """ + return hasattr(t, "im") + + +# +# Constants + +NONE = 0 + +# transpose +FLIP_LEFT_RIGHT = 0 +FLIP_TOP_BOTTOM = 1 +ROTATE_90 = 2 +ROTATE_180 = 3 +ROTATE_270 = 4 +TRANSPOSE = 5 +TRANSVERSE = 6 + +# transforms (also defined in Imaging.h) +AFFINE = 0 +EXTENT = 1 +PERSPECTIVE = 2 +QUAD = 3 +MESH = 4 + +# resampling filters (also defined in Imaging.h) +NEAREST = NONE = 0 +BOX = 4 +BILINEAR = LINEAR = 2 +HAMMING = 5 +BICUBIC = CUBIC = 3 +LANCZOS = ANTIALIAS = 1 + +_filters_support = {BOX: 0.5, BILINEAR: 1.0, HAMMING: 1.0, BICUBIC: 2.0, LANCZOS: 3.0} + + +# dithers +NEAREST = NONE = 0 +ORDERED = 1 # Not yet implemented +RASTERIZE = 2 # Not yet implemented +FLOYDSTEINBERG = 3 # default + +# palettes/quantizers +WEB = 0 +ADAPTIVE = 1 + +MEDIANCUT = 0 +MAXCOVERAGE = 1 +FASTOCTREE = 2 +LIBIMAGEQUANT = 3 + +# categories +NORMAL = 0 +SEQUENCE = 1 +CONTAINER = 2 + +if hasattr(core, "DEFAULT_STRATEGY"): + DEFAULT_STRATEGY = core.DEFAULT_STRATEGY + FILTERED = core.FILTERED + HUFFMAN_ONLY = core.HUFFMAN_ONLY + RLE = core.RLE + FIXED = core.FIXED + + +# -------------------------------------------------------------------- +# Registries + +ID = [] +OPEN = {} +MIME = {} +SAVE = {} +SAVE_ALL = {} +EXTENSION = {} +DECODERS = {} +ENCODERS = {} + +# -------------------------------------------------------------------- +# Modes supported by this version + +_MODEINFO = { + # NOTE: this table will be removed in future versions. use + # getmode* functions or ImageMode descriptors instead. + # official modes + "1": ("L", "L", ("1",)), + "L": ("L", "L", ("L",)), + "I": ("L", "I", ("I",)), + "F": ("L", "F", ("F",)), + "P": ("P", "L", ("P",)), + "RGB": ("RGB", "L", ("R", "G", "B")), + "RGBX": ("RGB", "L", ("R", "G", "B", "X")), + "RGBA": ("RGB", "L", ("R", "G", "B", "A")), + "CMYK": ("RGB", "L", ("C", "M", "Y", "K")), + "YCbCr": ("RGB", "L", ("Y", "Cb", "Cr")), + "LAB": ("RGB", "L", ("L", "A", "B")), + "HSV": ("RGB", "L", ("H", "S", "V")), + # Experimental modes include I;16, I;16L, I;16B, RGBa, BGR;15, and + # BGR;24. Use these modes only if you know exactly what you're + # doing... +} + +if sys.byteorder == "little": + _ENDIAN = "<" +else: + _ENDIAN = ">" + +_MODE_CONV = { + # official modes + "1": ("|b1", None), # Bits need to be extended to bytes + "L": ("|u1", None), + "LA": ("|u1", 2), + "I": (_ENDIAN + "i4", None), + "F": (_ENDIAN + "f4", None), + "P": ("|u1", None), + "RGB": ("|u1", 3), + "RGBX": ("|u1", 4), + "RGBA": ("|u1", 4), + "CMYK": ("|u1", 4), + "YCbCr": ("|u1", 3), + "LAB": ("|u1", 3), # UNDONE - unsigned |u1i1i1 + "HSV": ("|u1", 3), + # I;16 == I;16L, and I;32 == I;32L + "I;16": ("u2", None), + "I;16L": ("i2", None), + "I;16LS": ("u4", None), + "I;32L": ("i4", None), + "I;32LS": ("= 1: + return + + try: + from . import BmpImagePlugin + + assert BmpImagePlugin + except ImportError: + pass + try: + from . import GifImagePlugin + + assert GifImagePlugin + except ImportError: + pass + try: + from . import JpegImagePlugin + + assert JpegImagePlugin + except ImportError: + pass + try: + from . import PpmImagePlugin + + assert PpmImagePlugin + except ImportError: + pass + try: + from . import PngImagePlugin + + assert PngImagePlugin + except ImportError: + pass + # try: + # import TiffImagePlugin + # assert TiffImagePlugin + # except ImportError: + # pass + + _initialized = 1 + + +def init(): + """ + Explicitly initializes the Python Imaging Library. This function + loads all available file format drivers. + """ + + global _initialized + if _initialized >= 2: + return 0 + + for plugin in _plugins: + try: + logger.debug("Importing %s", plugin) + __import__("PIL.%s" % plugin, globals(), locals(), []) + except ImportError as e: + logger.debug("Image: failed to import %s: %s", plugin, e) + + if OPEN or SAVE: + _initialized = 2 + return 1 + + +# -------------------------------------------------------------------- +# Codec factories (used by tobytes/frombytes and ImageFile.load) + + +def _getdecoder(mode, decoder_name, args, extra=()): + + # tweak arguments + if args is None: + args = () + elif not isinstance(args, tuple): + args = (args,) + + try: + decoder = DECODERS[decoder_name] + except KeyError: + pass + else: + return decoder(mode, *args + extra) + + try: + # get decoder + decoder = getattr(core, decoder_name + "_decoder") + except AttributeError: + raise OSError("decoder %s not available" % decoder_name) + return decoder(mode, *args + extra) + + +def _getencoder(mode, encoder_name, args, extra=()): + + # tweak arguments + if args is None: + args = () + elif not isinstance(args, tuple): + args = (args,) + + try: + encoder = ENCODERS[encoder_name] + except KeyError: + pass + else: + return encoder(mode, *args + extra) + + try: + # get encoder + encoder = getattr(core, encoder_name + "_encoder") + except AttributeError: + raise OSError("encoder %s not available" % encoder_name) + return encoder(mode, *args + extra) + + +# -------------------------------------------------------------------- +# Simple expression analyzer + + +def coerce_e(value): + return value if isinstance(value, _E) else _E(value) + + +class _E: + def __init__(self, data): + self.data = data + + def __add__(self, other): + return _E((self.data, "__add__", coerce_e(other).data)) + + def __mul__(self, other): + return _E((self.data, "__mul__", coerce_e(other).data)) + + +def _getscaleoffset(expr): + stub = ["stub"] + data = expr(_E(stub)).data + try: + (a, b, c) = data # simplified syntax + if a is stub and b == "__mul__" and isinstance(c, numbers.Number): + return c, 0.0 + if a is stub and b == "__add__" and isinstance(c, numbers.Number): + return 1.0, c + except TypeError: + pass + try: + ((a, b, c), d, e) = data # full syntax + if ( + a is stub + and b == "__mul__" + and isinstance(c, numbers.Number) + and d == "__add__" + and isinstance(e, numbers.Number) + ): + return c, e + except TypeError: + pass + raise ValueError("illegal expression") + + +# -------------------------------------------------------------------- +# Implementation wrapper + + +class Image: + """ + This class represents an image object. To create + :py:class:`~PIL.Image.Image` objects, use the appropriate factory + functions. There's hardly ever any reason to call the Image constructor + directly. + + * :py:func:`~PIL.Image.open` + * :py:func:`~PIL.Image.new` + * :py:func:`~PIL.Image.frombytes` + """ + + format = None + format_description = None + _close_exclusive_fp_after_loading = True + + def __init__(self): + # FIXME: take "new" parameters / other image? + # FIXME: turn mode and size into delegating properties? + self.im = None + self.mode = "" + self._size = (0, 0) + self.palette = None + self.info = {} + self.category = NORMAL + self.readonly = 0 + self.pyaccess = None + self._exif = None + + @property + def width(self): + return self.size[0] + + @property + def height(self): + return self.size[1] + + @property + def size(self): + return self._size + + def _new(self, im): + new = Image() + new.im = im + new.mode = im.mode + new._size = im.size + if im.mode in ("P", "PA"): + if self.palette: + new.palette = self.palette.copy() + else: + from . import ImagePalette + + new.palette = ImagePalette.ImagePalette() + new.info = self.info.copy() + return new + + # Context manager support + def __enter__(self): + return self + + def __exit__(self, *args): + if hasattr(self, "fp") and getattr(self, "_exclusive_fp", False): + if hasattr(self, "_close__fp"): + self._close__fp() + if self.fp: + self.fp.close() + self.fp = None + + def close(self): + """ + Closes the file pointer, if possible. + + This operation will destroy the image core and release its memory. + The image data will be unusable afterward. + + This function is only required to close images that have not + had their file read and closed by the + :py:meth:`~PIL.Image.Image.load` method. See + :ref:`file-handling` for more information. + """ + try: + if hasattr(self, "_close__fp"): + self._close__fp() + self.fp.close() + self.fp = None + except Exception as msg: + logger.debug("Error closing: %s", msg) + + if getattr(self, "map", None): + self.map = None + + # Instead of simply setting to None, we're setting up a + # deferred error that will better explain that the core image + # object is gone. + self.im = deferred_error(ValueError("Operation on closed image")) + + def _copy(self): + self.load() + self.im = self.im.copy() + self.pyaccess = None + self.readonly = 0 + + def _ensure_mutable(self): + if self.readonly: + self._copy() + else: + self.load() + + def _dump(self, file=None, format=None, **options): + suffix = "" + if format: + suffix = "." + format + + if not file: + f, filename = tempfile.mkstemp(suffix) + os.close(f) + else: + filename = file + if not filename.endswith(suffix): + filename = filename + suffix + + self.load() + + if not format or format == "PPM": + self.im.save_ppm(filename) + else: + self.save(filename, format, **options) + + return filename + + def __eq__(self, other): + return ( + self.__class__ is other.__class__ + and self.mode == other.mode + and self.size == other.size + and self.info == other.info + and self.category == other.category + and self.readonly == other.readonly + and self.getpalette() == other.getpalette() + and self.tobytes() == other.tobytes() + ) + + def __repr__(self): + return "<%s.%s image mode=%s size=%dx%d at 0x%X>" % ( + self.__class__.__module__, + self.__class__.__name__, + self.mode, + self.size[0], + self.size[1], + id(self), + ) + + def _repr_png_(self): + """ iPython display hook support + + :returns: png version of the image as bytes + """ + b = io.BytesIO() + self.save(b, "PNG") + return b.getvalue() + + @property + def __array_interface__(self): + # numpy array interface support + new = {} + shape, typestr = _conv_type_shape(self) + new["shape"] = shape + new["typestr"] = typestr + new["version"] = 3 + if self.mode == "1": + # Binary images need to be extended from bits to bytes + # See: https://github.com/python-pillow/Pillow/issues/350 + new["data"] = self.tobytes("raw", "L") + else: + new["data"] = self.tobytes() + return new + + def __getstate__(self): + return [self.info, self.mode, self.size, self.getpalette(), self.tobytes()] + + def __setstate__(self, state): + Image.__init__(self) + self.tile = [] + info, mode, size, palette, data = state + self.info = info + self.mode = mode + self._size = size + self.im = core.new(mode, size) + if mode in ("L", "LA", "P", "PA") and palette: + self.putpalette(palette) + self.frombytes(data) + + def tobytes(self, encoder_name="raw", *args): + """ + Return image as a bytes object. + + .. warning:: + + This method returns the raw image data from the internal + storage. For compressed image data (e.g. PNG, JPEG) use + :meth:`~.save`, with a BytesIO parameter for in-memory + data. + + :param encoder_name: What encoder to use. The default is to + use the standard "raw" encoder. + :param args: Extra arguments to the encoder. + :rtype: A bytes object. + """ + + # may pass tuple instead of argument list + if len(args) == 1 and isinstance(args[0], tuple): + args = args[0] + + if encoder_name == "raw" and args == (): + args = self.mode + + self.load() + + # unpack data + e = _getencoder(self.mode, encoder_name, args) + e.setimage(self.im) + + bufsize = max(65536, self.size[0] * 4) # see RawEncode.c + + data = [] + while True: + l, s, d = e.encode(bufsize) + data.append(d) + if s: + break + if s < 0: + raise RuntimeError("encoder error %d in tobytes" % s) + + return b"".join(data) + + def tostring(self, *args, **kw): + raise NotImplementedError( + "tostring() has been removed. Please call tobytes() instead." + ) + + def tobitmap(self, name="image"): + """ + Returns the image converted to an X11 bitmap. + + .. note:: This method only works for mode "1" images. + + :param name: The name prefix to use for the bitmap variables. + :returns: A string containing an X11 bitmap. + :raises ValueError: If the mode is not "1" + """ + + self.load() + if self.mode != "1": + raise ValueError("not a bitmap") + data = self.tobytes("xbm") + return b"".join( + [ + ("#define %s_width %d\n" % (name, self.size[0])).encode("ascii"), + ("#define %s_height %d\n" % (name, self.size[1])).encode("ascii"), + ("static char %s_bits[] = {\n" % name).encode("ascii"), + data, + b"};", + ] + ) + + def frombytes(self, data, decoder_name="raw", *args): + """ + Loads this image with pixel data from a bytes object. + + This method is similar to the :py:func:`~PIL.Image.frombytes` function, + but loads data into this image instead of creating a new image object. + """ + + # may pass tuple instead of argument list + if len(args) == 1 and isinstance(args[0], tuple): + args = args[0] + + # default format + if decoder_name == "raw" and args == (): + args = self.mode + + # unpack data + d = _getdecoder(self.mode, decoder_name, args) + d.setimage(self.im) + s = d.decode(data) + + if s[0] >= 0: + raise ValueError("not enough image data") + if s[1] != 0: + raise ValueError("cannot decode image data") + + def fromstring(self, *args, **kw): + raise NotImplementedError( + "fromstring() has been removed. Please call frombytes() instead." + ) + + def load(self): + """ + Allocates storage for the image and loads the pixel data. In + normal cases, you don't need to call this method, since the + Image class automatically loads an opened image when it is + accessed for the first time. + + If the file associated with the image was opened by Pillow, then this + method will close it. The exception to this is if the image has + multiple frames, in which case the file will be left open for seek + operations. See :ref:`file-handling` for more information. + + :returns: An image access object. + :rtype: :ref:`PixelAccess` or :py:class:`PIL.PyAccess` + """ + if self.im and self.palette and self.palette.dirty: + # realize palette + self.im.putpalette(*self.palette.getdata()) + self.palette.dirty = 0 + self.palette.mode = "RGB" + self.palette.rawmode = None + if "transparency" in self.info: + if isinstance(self.info["transparency"], int): + self.im.putpalettealpha(self.info["transparency"], 0) + else: + self.im.putpalettealphas(self.info["transparency"]) + self.palette.mode = "RGBA" + + if self.im: + if cffi and USE_CFFI_ACCESS: + if self.pyaccess: + return self.pyaccess + from . import PyAccess + + self.pyaccess = PyAccess.new(self, self.readonly) + if self.pyaccess: + return self.pyaccess + return self.im.pixel_access(self.readonly) + + def verify(self): + """ + Verifies the contents of a file. For data read from a file, this + method attempts to determine if the file is broken, without + actually decoding the image data. If this method finds any + problems, it raises suitable exceptions. If you need to load + the image after using this method, you must reopen the image + file. + """ + pass + + def convert(self, mode=None, matrix=None, dither=None, palette=WEB, colors=256): + """ + Returns a converted copy of this image. For the "P" mode, this + method translates pixels through the palette. If mode is + omitted, a mode is chosen so that all information in the image + and the palette can be represented without a palette. + + The current version supports all possible conversions between + "L", "RGB" and "CMYK." The **matrix** argument only supports "L" + and "RGB". + + When translating a color image to greyscale (mode "L"), + the library uses the ITU-R 601-2 luma transform:: + + L = R * 299/1000 + G * 587/1000 + B * 114/1000 + + The default method of converting a greyscale ("L") or "RGB" + image into a bilevel (mode "1") image uses Floyd-Steinberg + dither to approximate the original image luminosity levels. If + dither is NONE, all values larger than 128 are set to 255 (white), + all other values to 0 (black). To use other thresholds, use the + :py:meth:`~PIL.Image.Image.point` method. + + When converting from "RGBA" to "P" without a **matrix** argument, + this passes the operation to :py:meth:`~PIL.Image.Image.quantize`, + and **dither** and **palette** are ignored. + + :param mode: The requested mode. See: :ref:`concept-modes`. + :param matrix: An optional conversion matrix. If given, this + should be 4- or 12-tuple containing floating point values. + :param dither: Dithering method, used when converting from + mode "RGB" to "P" or from "RGB" or "L" to "1". + Available methods are NONE or FLOYDSTEINBERG (default). + Note that this is not used when **matrix** is supplied. + :param palette: Palette to use when converting from mode "RGB" + to "P". Available palettes are WEB or ADAPTIVE. + :param colors: Number of colors to use for the ADAPTIVE palette. + Defaults to 256. + :rtype: :py:class:`~PIL.Image.Image` + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + self.load() + + if not mode and self.mode == "P": + # determine default mode + if self.palette: + mode = self.palette.mode + else: + mode = "RGB" + if not mode or (mode == self.mode and not matrix): + return self.copy() + + has_transparency = self.info.get("transparency") is not None + if matrix: + # matrix conversion + if mode not in ("L", "RGB"): + raise ValueError("illegal conversion") + im = self.im.convert_matrix(mode, matrix) + new = self._new(im) + if has_transparency and self.im.bands == 3: + transparency = new.info["transparency"] + + def convert_transparency(m, v): + v = m[0] * v[0] + m[1] * v[1] + m[2] * v[2] + m[3] * 0.5 + return max(0, min(255, int(v))) + + if mode == "L": + transparency = convert_transparency(matrix, transparency) + elif len(mode) == 3: + transparency = tuple( + [ + convert_transparency( + matrix[i * 4 : i * 4 + 4], transparency + ) + for i in range(0, len(transparency)) + ] + ) + new.info["transparency"] = transparency + return new + + if mode == "P" and self.mode == "RGBA": + return self.quantize(colors) + + trns = None + delete_trns = False + # transparency handling + if has_transparency: + if self.mode in ("1", "L", "I", "RGB") and mode == "RGBA": + # Use transparent conversion to promote from transparent + # color to an alpha channel. + new_im = self._new( + self.im.convert_transparent(mode, self.info["transparency"]) + ) + del new_im.info["transparency"] + return new_im + elif self.mode in ("L", "RGB", "P") and mode in ("L", "RGB", "P"): + t = self.info["transparency"] + if isinstance(t, bytes): + # Dragons. This can't be represented by a single color + warnings.warn( + "Palette images with Transparency expressed in bytes should be " + "converted to RGBA images" + ) + delete_trns = True + else: + # get the new transparency color. + # use existing conversions + trns_im = Image()._new(core.new(self.mode, (1, 1))) + if self.mode == "P": + trns_im.putpalette(self.palette) + if isinstance(t, tuple): + try: + t = trns_im.palette.getcolor(t) + except Exception: + raise ValueError( + "Couldn't allocate a palette color for transparency" + ) + trns_im.putpixel((0, 0), t) + + if mode in ("L", "RGB"): + trns_im = trns_im.convert(mode) + else: + # can't just retrieve the palette number, got to do it + # after quantization. + trns_im = trns_im.convert("RGB") + trns = trns_im.getpixel((0, 0)) + + elif self.mode == "P" and mode == "RGBA": + t = self.info["transparency"] + delete_trns = True + + if isinstance(t, bytes): + self.im.putpalettealphas(t) + elif isinstance(t, int): + self.im.putpalettealpha(t, 0) + else: + raise ValueError("Transparency for P mode should be bytes or int") + + if mode == "P" and palette == ADAPTIVE: + im = self.im.quantize(colors) + new = self._new(im) + from . import ImagePalette + + new.palette = ImagePalette.raw("RGB", new.im.getpalette("RGB")) + if delete_trns: + # This could possibly happen if we requantize to fewer colors. + # The transparency would be totally off in that case. + del new.info["transparency"] + if trns is not None: + try: + new.info["transparency"] = new.palette.getcolor(trns) + except Exception: + # if we can't make a transparent color, don't leave the old + # transparency hanging around to mess us up. + del new.info["transparency"] + warnings.warn("Couldn't allocate palette entry for transparency") + return new + + # colorspace conversion + if dither is None: + dither = FLOYDSTEINBERG + + try: + im = self.im.convert(mode, dither) + except ValueError: + try: + # normalize source image and try again + im = self.im.convert(getmodebase(self.mode)) + im = im.convert(mode, dither) + except KeyError: + raise ValueError("illegal conversion") + + new_im = self._new(im) + if delete_trns: + # crash fail if we leave a bytes transparency in an rgb/l mode. + del new_im.info["transparency"] + if trns is not None: + if new_im.mode == "P": + try: + new_im.info["transparency"] = new_im.palette.getcolor(trns) + except Exception: + del new_im.info["transparency"] + warnings.warn("Couldn't allocate palette entry for transparency") + else: + new_im.info["transparency"] = trns + return new_im + + def quantize(self, colors=256, method=None, kmeans=0, palette=None, dither=1): + """ + Convert the image to 'P' mode with the specified number + of colors. + + :param colors: The desired number of colors, <= 256 + :param method: 0 = median cut + 1 = maximum coverage + 2 = fast octree + 3 = libimagequant + :param kmeans: Integer + :param palette: Quantize to the palette of given + :py:class:`PIL.Image.Image`. + :param dither: Dithering method, used when converting from + mode "RGB" to "P" or from "RGB" or "L" to "1". + Available methods are NONE or FLOYDSTEINBERG (default). + Default: 1 (legacy setting) + :returns: A new image + + """ + + self.load() + + if method is None: + # defaults: + method = 0 + if self.mode == "RGBA": + method = 2 + + if self.mode == "RGBA" and method not in (2, 3): + # Caller specified an invalid mode. + raise ValueError( + "Fast Octree (method == 2) and libimagequant (method == 3) " + "are the only valid methods for quantizing RGBA images" + ) + + if palette: + # use palette from reference image + palette.load() + if palette.mode != "P": + raise ValueError("bad mode for palette image") + if self.mode != "RGB" and self.mode != "L": + raise ValueError( + "only RGB or L mode images can be quantized to a palette" + ) + im = self.im.convert("P", dither, palette.im) + return self._new(im) + + im = self._new(self.im.quantize(colors, method, kmeans)) + + from . import ImagePalette + + mode = im.im.getpalettemode() + im.palette = ImagePalette.ImagePalette(mode, im.im.getpalette(mode, mode)) + + return im + + def copy(self): + """ + Copies this image. Use this method if you wish to paste things + into an image, but still retain the original. + + :rtype: :py:class:`~PIL.Image.Image` + :returns: An :py:class:`~PIL.Image.Image` object. + """ + self.load() + return self._new(self.im.copy()) + + __copy__ = copy + + def crop(self, box=None): + """ + Returns a rectangular region from this image. The box is a + 4-tuple defining the left, upper, right, and lower pixel + coordinate. See :ref:`coordinate-system`. + + Note: Prior to Pillow 3.4.0, this was a lazy operation. + + :param box: The crop rectangle, as a (left, upper, right, lower)-tuple. + :rtype: :py:class:`~PIL.Image.Image` + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if box is None: + return self.copy() + + self.load() + return self._new(self._crop(self.im, box)) + + def _crop(self, im, box): + """ + Returns a rectangular region from the core image object im. + + This is equivalent to calling im.crop((x0, y0, x1, y1)), but + includes additional sanity checks. + + :param im: a core image object + :param box: The crop rectangle, as a (left, upper, right, lower)-tuple. + :returns: A core image object. + """ + + x0, y0, x1, y1 = map(int, map(round, box)) + + absolute_values = (abs(x1 - x0), abs(y1 - y0)) + + _decompression_bomb_check(absolute_values) + + return im.crop((x0, y0, x1, y1)) + + def draft(self, mode, size): + """ + Configures the image file loader so it returns a version of the + image that as closely as possible matches the given mode and + size. For example, you can use this method to convert a color + JPEG to greyscale while loading it. + + If any changes are made, returns a tuple with the chosen ``mode`` and + ``box`` with coordinates of the original image within the altered one. + + Note that this method modifies the :py:class:`~PIL.Image.Image` object + in place. If the image has already been loaded, this method has no + effect. + + Note: This method is not implemented for most images. It is + currently implemented only for JPEG and MPO images. + + :param mode: The requested mode. + :param size: The requested size. + """ + pass + + def _expand(self, xmargin, ymargin=None): + if ymargin is None: + ymargin = xmargin + self.load() + return self._new(self.im.expand(xmargin, ymargin, 0)) + + def filter(self, filter): + """ + Filters this image using the given filter. For a list of + available filters, see the :py:mod:`~PIL.ImageFilter` module. + + :param filter: Filter kernel. + :returns: An :py:class:`~PIL.Image.Image` object. """ + + from . import ImageFilter + + self.load() + + if isinstance(filter, Callable): + filter = filter() + if not hasattr(filter, "filter"): + raise TypeError( + "filter argument should be ImageFilter.Filter instance or class" + ) + + multiband = isinstance(filter, ImageFilter.MultibandFilter) + if self.im.bands == 1 or multiband: + return self._new(filter.filter(self.im)) + + ims = [] + for c in range(self.im.bands): + ims.append(self._new(filter.filter(self.im.getband(c)))) + return merge(self.mode, ims) + + def getbands(self): + """ + Returns a tuple containing the name of each band in this image. + For example, **getbands** on an RGB image returns ("R", "G", "B"). + + :returns: A tuple containing band names. + :rtype: tuple + """ + return ImageMode.getmode(self.mode).bands + + def getbbox(self): + """ + Calculates the bounding box of the non-zero regions in the + image. + + :returns: The bounding box is returned as a 4-tuple defining the + left, upper, right, and lower pixel coordinate. See + :ref:`coordinate-system`. If the image is completely empty, this + method returns None. + + """ + + self.load() + return self.im.getbbox() + + def getcolors(self, maxcolors=256): + """ + Returns a list of colors used in this image. + + :param maxcolors: Maximum number of colors. If this number is + exceeded, this method returns None. The default limit is + 256 colors. + :returns: An unsorted list of (count, pixel) values. + """ + + self.load() + if self.mode in ("1", "L", "P"): + h = self.im.histogram() + out = [] + for i in range(256): + if h[i]: + out.append((h[i], i)) + if len(out) > maxcolors: + return None + return out + return self.im.getcolors(maxcolors) + + def getdata(self, band=None): + """ + Returns the contents of this image as a sequence object + containing pixel values. The sequence object is flattened, so + that values for line one follow directly after the values of + line zero, and so on. + + Note that the sequence object returned by this method is an + internal PIL data type, which only supports certain sequence + operations. To convert it to an ordinary sequence (e.g. for + printing), use **list(im.getdata())**. + + :param band: What band to return. The default is to return + all bands. To return a single band, pass in the index + value (e.g. 0 to get the "R" band from an "RGB" image). + :returns: A sequence-like object. + """ + + self.load() + if band is not None: + return self.im.getband(band) + return self.im # could be abused + + def getextrema(self): + """ + Gets the the minimum and maximum pixel values for each band in + the image. + + :returns: For a single-band image, a 2-tuple containing the + minimum and maximum pixel value. For a multi-band image, + a tuple containing one 2-tuple for each band. + """ + + self.load() + if self.im.bands > 1: + extrema = [] + for i in range(self.im.bands): + extrema.append(self.im.getband(i).getextrema()) + return tuple(extrema) + return self.im.getextrema() + + def getexif(self): + if self._exif is None: + self._exif = Exif() + self._exif.load(self.info.get("exif")) + return self._exif + + def getim(self): + """ + Returns a capsule that points to the internal image memory. + + :returns: A capsule object. + """ + + self.load() + return self.im.ptr + + def getpalette(self): + """ + Returns the image palette as a list. + + :returns: A list of color values [r, g, b, ...], or None if the + image has no palette. + """ + + self.load() + try: + return list(self.im.getpalette()) + except ValueError: + return None # no palette + + def getpixel(self, xy): + """ + Returns the pixel value at a given position. + + :param xy: The coordinate, given as (x, y). See + :ref:`coordinate-system`. + :returns: The pixel value. If the image is a multi-layer image, + this method returns a tuple. + """ + + self.load() + if self.pyaccess: + return self.pyaccess.getpixel(xy) + return self.im.getpixel(xy) + + def getprojection(self): + """ + Get projection to x and y axes + + :returns: Two sequences, indicating where there are non-zero + pixels along the X-axis and the Y-axis, respectively. + """ + + self.load() + x, y = self.im.getprojection() + return [i8(c) for c in x], [i8(c) for c in y] + + def histogram(self, mask=None, extrema=None): + """ + Returns a histogram for the image. The histogram is returned as + a list of pixel counts, one for each pixel value in the source + image. If the image has more than one band, the histograms for + all bands are concatenated (for example, the histogram for an + "RGB" image contains 768 values). + + A bilevel image (mode "1") is treated as a greyscale ("L") image + by this method. + + If a mask is provided, the method returns a histogram for those + parts of the image where the mask image is non-zero. The mask + image must have the same size as the image, and be either a + bi-level image (mode "1") or a greyscale image ("L"). + + :param mask: An optional mask. + :param extrema: An optional tuple of manually-specified extrema. + :returns: A list containing pixel counts. + """ + self.load() + if mask: + mask.load() + return self.im.histogram((0, 0), mask.im) + if self.mode in ("I", "F"): + if extrema is None: + extrema = self.getextrema() + return self.im.histogram(extrema) + return self.im.histogram() + + def entropy(self, mask=None, extrema=None): + """ + Calculates and returns the entropy for the image. + + A bilevel image (mode "1") is treated as a greyscale ("L") + image by this method. + + If a mask is provided, the method employs the histogram for + those parts of the image where the mask image is non-zero. + The mask image must have the same size as the image, and be + either a bi-level image (mode "1") or a greyscale image ("L"). + + :param mask: An optional mask. + :param extrema: An optional tuple of manually-specified extrema. + :returns: A float value representing the image entropy + """ + self.load() + if mask: + mask.load() + return self.im.entropy((0, 0), mask.im) + if self.mode in ("I", "F"): + if extrema is None: + extrema = self.getextrema() + return self.im.entropy(extrema) + return self.im.entropy() + + def offset(self, xoffset, yoffset=None): + raise NotImplementedError( + "offset() has been removed. Please call ImageChops.offset() instead." + ) + + def paste(self, im, box=None, mask=None): + """ + Pastes another image into this image. The box argument is either + a 2-tuple giving the upper left corner, a 4-tuple defining the + left, upper, right, and lower pixel coordinate, or None (same as + (0, 0)). See :ref:`coordinate-system`. If a 4-tuple is given, the size + of the pasted image must match the size of the region. + + If the modes don't match, the pasted image is converted to the mode of + this image (see the :py:meth:`~PIL.Image.Image.convert` method for + details). + + Instead of an image, the source can be a integer or tuple + containing pixel values. The method then fills the region + with the given color. When creating RGB images, you can + also use color strings as supported by the ImageColor module. + + If a mask is given, this method updates only the regions + indicated by the mask. You can use either "1", "L" or "RGBA" + images (in the latter case, the alpha band is used as mask). + Where the mask is 255, the given image is copied as is. Where + the mask is 0, the current value is preserved. Intermediate + values will mix the two images together, including their alpha + channels if they have them. + + See :py:meth:`~PIL.Image.Image.alpha_composite` if you want to + combine images with respect to their alpha channels. + + :param im: Source image or pixel value (integer or tuple). + :param box: An optional 4-tuple giving the region to paste into. + If a 2-tuple is used instead, it's treated as the upper left + corner. If omitted or None, the source is pasted into the + upper left corner. + + If an image is given as the second argument and there is no + third, the box defaults to (0, 0), and the second argument + is interpreted as a mask image. + :param mask: An optional mask image. + """ + + if isImageType(box) and mask is None: + # abbreviated paste(im, mask) syntax + mask = box + box = None + + if box is None: + box = (0, 0) + + if len(box) == 2: + # upper left corner given; get size from image or mask + if isImageType(im): + size = im.size + elif isImageType(mask): + size = mask.size + else: + # FIXME: use self.size here? + raise ValueError("cannot determine region size; use 4-item box") + box += (box[0] + size[0], box[1] + size[1]) + + if isinstance(im, str): + from . import ImageColor + + im = ImageColor.getcolor(im, self.mode) + + elif isImageType(im): + im.load() + if self.mode != im.mode: + if self.mode != "RGB" or im.mode not in ("RGBA", "RGBa"): + # should use an adapter for this! + im = im.convert(self.mode) + im = im.im + + self._ensure_mutable() + + if mask: + mask.load() + self.im.paste(im, box, mask.im) + else: + self.im.paste(im, box) + + def alpha_composite(self, im, dest=(0, 0), source=(0, 0)): + """ 'In-place' analog of Image.alpha_composite. Composites an image + onto this image. + + :param im: image to composite over this one + :param dest: Optional 2 tuple (left, top) specifying the upper + left corner in this (destination) image. + :param source: Optional 2 (left, top) tuple for the upper left + corner in the overlay source image, or 4 tuple (left, top, right, + bottom) for the bounds of the source rectangle + + Performance Note: Not currently implemented in-place in the core layer. + """ + + if not isinstance(source, (list, tuple)): + raise ValueError("Source must be a tuple") + if not isinstance(dest, (list, tuple)): + raise ValueError("Destination must be a tuple") + if not len(source) in (2, 4): + raise ValueError("Source must be a 2 or 4-tuple") + if not len(dest) == 2: + raise ValueError("Destination must be a 2-tuple") + if min(source) < 0: + raise ValueError("Source must be non-negative") + if min(dest) < 0: + raise ValueError("Destination must be non-negative") + + if len(source) == 2: + source = source + im.size + + # over image, crop if it's not the whole thing. + if source == (0, 0) + im.size: + overlay = im + else: + overlay = im.crop(source) + + # target for the paste + box = dest + (dest[0] + overlay.width, dest[1] + overlay.height) + + # destination image. don't copy if we're using the whole image. + if box == (0, 0) + self.size: + background = self + else: + background = self.crop(box) + + result = alpha_composite(background, overlay) + self.paste(result, box) + + def point(self, lut, mode=None): + """ + Maps this image through a lookup table or function. + + :param lut: A lookup table, containing 256 (or 65536 if + self.mode=="I" and mode == "L") values per band in the + image. A function can be used instead, it should take a + single argument. The function is called once for each + possible pixel value, and the resulting table is applied to + all bands of the image. + :param mode: Output mode (default is same as input). In the + current version, this can only be used if the source image + has mode "L" or "P", and the output has mode "1" or the + source image mode is "I" and the output mode is "L". + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + self.load() + + if isinstance(lut, ImagePointHandler): + return lut.point(self) + + if callable(lut): + # if it isn't a list, it should be a function + if self.mode in ("I", "I;16", "F"): + # check if the function can be used with point_transform + # UNDONE wiredfool -- I think this prevents us from ever doing + # a gamma function point transform on > 8bit images. + scale, offset = _getscaleoffset(lut) + return self._new(self.im.point_transform(scale, offset)) + # for other modes, convert the function to a table + lut = [lut(i) for i in range(256)] * self.im.bands + + if self.mode == "F": + # FIXME: _imaging returns a confusing error message for this case + raise ValueError("point operation not supported for this mode") + + return self._new(self.im.point(lut, mode)) + + def putalpha(self, alpha): + """ + Adds or replaces the alpha layer in this image. If the image + does not have an alpha layer, it's converted to "LA" or "RGBA". + The new layer must be either "L" or "1". + + :param alpha: The new alpha layer. This can either be an "L" or "1" + image having the same size as this image, or an integer or + other color value. + """ + + self._ensure_mutable() + + if self.mode not in ("LA", "PA", "RGBA"): + # attempt to promote self to a matching alpha mode + try: + mode = getmodebase(self.mode) + "A" + try: + self.im.setmode(mode) + except (AttributeError, ValueError): + # do things the hard way + im = self.im.convert(mode) + if im.mode not in ("LA", "PA", "RGBA"): + raise ValueError # sanity check + self.im = im + self.pyaccess = None + self.mode = self.im.mode + except (KeyError, ValueError): + raise ValueError("illegal image mode") + + if self.mode in ("LA", "PA"): + band = 1 + else: + band = 3 + + if isImageType(alpha): + # alpha layer + if alpha.mode not in ("1", "L"): + raise ValueError("illegal image mode") + alpha.load() + if alpha.mode == "1": + alpha = alpha.convert("L") + else: + # constant alpha + try: + self.im.fillband(band, alpha) + except (AttributeError, ValueError): + # do things the hard way + alpha = new("L", self.size, alpha) + else: + return + + self.im.putband(alpha.im, band) + + def putdata(self, data, scale=1.0, offset=0.0): + """ + Copies pixel data to this image. This method copies data from a + sequence object into the image, starting at the upper left + corner (0, 0), and continuing until either the image or the + sequence ends. The scale and offset values are used to adjust + the sequence values: **pixel = value*scale + offset**. + + :param data: A sequence object. + :param scale: An optional scale value. The default is 1.0. + :param offset: An optional offset value. The default is 0.0. + """ + + self._ensure_mutable() + + self.im.putdata(data, scale, offset) + + def putpalette(self, data, rawmode="RGB"): + """ + Attaches a palette to this image. The image must be a "P", + "PA", "L" or "LA" image, and the palette sequence must contain + 768 integer values, where each group of three values represent + the red, green, and blue values for the corresponding pixel + index. Instead of an integer sequence, you can use an 8-bit + string. + + :param data: A palette sequence (either a list or a string). + :param rawmode: The raw mode of the palette. + """ + from . import ImagePalette + + if self.mode not in ("L", "LA", "P", "PA"): + raise ValueError("illegal image mode") + self.load() + if isinstance(data, ImagePalette.ImagePalette): + palette = ImagePalette.raw(data.rawmode, data.palette) + else: + if not isinstance(data, bytes): + data = bytes(data) + palette = ImagePalette.raw(rawmode, data) + self.mode = "PA" if "A" in self.mode else "P" + self.palette = palette + self.palette.mode = "RGB" + self.load() # install new palette + + def putpixel(self, xy, value): + """ + Modifies the pixel at the given position. The color is given as + a single numerical value for single-band images, and a tuple for + multi-band images. In addition to this, RGB and RGBA tuples are + accepted for P images. + + Note that this method is relatively slow. For more extensive changes, + use :py:meth:`~PIL.Image.Image.paste` or the :py:mod:`~PIL.ImageDraw` + module instead. + + See: + + * :py:meth:`~PIL.Image.Image.paste` + * :py:meth:`~PIL.Image.Image.putdata` + * :py:mod:`~PIL.ImageDraw` + + :param xy: The pixel coordinate, given as (x, y). See + :ref:`coordinate-system`. + :param value: The pixel value. + """ + + if self.readonly: + self._copy() + self.load() + + if self.pyaccess: + return self.pyaccess.putpixel(xy, value) + + if ( + self.mode == "P" + and isinstance(value, (list, tuple)) + and len(value) in [3, 4] + ): + # RGB or RGBA value for a P image + value = self.palette.getcolor(value) + return self.im.putpixel(xy, value) + + def remap_palette(self, dest_map, source_palette=None): + """ + Rewrites the image to reorder the palette. + + :param dest_map: A list of indexes into the original palette. + e.g. [1,0] would swap a two item palette, and list(range(256)) + is the identity transform. + :param source_palette: Bytes or None. + :returns: An :py:class:`~PIL.Image.Image` object. + + """ + from . import ImagePalette + + if self.mode not in ("L", "P"): + raise ValueError("illegal image mode") + + if source_palette is None: + if self.mode == "P": + real_source_palette = self.im.getpalette("RGB")[:768] + else: # L-mode + real_source_palette = bytearray(i // 3 for i in range(768)) + else: + real_source_palette = source_palette + + palette_bytes = b"" + new_positions = [0] * 256 + + # pick only the used colors from the palette + for i, oldPosition in enumerate(dest_map): + palette_bytes += real_source_palette[oldPosition * 3 : oldPosition * 3 + 3] + new_positions[oldPosition] = i + + # replace the palette color id of all pixel with the new id + + # Palette images are [0..255], mapped through a 1 or 3 + # byte/color map. We need to remap the whole image + # from palette 1 to palette 2. New_positions is + # an array of indexes into palette 1. Palette 2 is + # palette 1 with any holes removed. + + # We're going to leverage the convert mechanism to use the + # C code to remap the image from palette 1 to palette 2, + # by forcing the source image into 'L' mode and adding a + # mapping 'L' mode palette, then converting back to 'L' + # sans palette thus converting the image bytes, then + # assigning the optimized RGB palette. + + # perf reference, 9500x4000 gif, w/~135 colors + # 14 sec prepatch, 1 sec postpatch with optimization forced. + + mapping_palette = bytearray(new_positions) + + m_im = self.copy() + m_im.mode = "P" + + m_im.palette = ImagePalette.ImagePalette( + "RGB", palette=mapping_palette * 3, size=768 + ) + # possibly set palette dirty, then + # m_im.putpalette(mapping_palette, 'L') # converts to 'P' + # or just force it. + # UNDONE -- this is part of the general issue with palettes + m_im.im.putpalette(*m_im.palette.getdata()) + + m_im = m_im.convert("L") + + # Internally, we require 768 bytes for a palette. + new_palette_bytes = palette_bytes + (768 - len(palette_bytes)) * b"\x00" + m_im.putpalette(new_palette_bytes) + m_im.palette = ImagePalette.ImagePalette( + "RGB", palette=palette_bytes, size=len(palette_bytes) + ) + + return m_im + + def _get_safe_box(self, size, resample, box): + """Expands the box so it includes adjacent pixels + that may be used by resampling with the given resampling filter. + """ + filter_support = _filters_support[resample] - 0.5 + scale_x = (box[2] - box[0]) / size[0] + scale_y = (box[3] - box[1]) / size[1] + support_x = filter_support * scale_x + support_y = filter_support * scale_y + + return ( + max(0, int(box[0] - support_x)), + max(0, int(box[1] - support_y)), + min(self.size[0], math.ceil(box[2] + support_x)), + min(self.size[1], math.ceil(box[3] + support_y)), + ) + + def resize(self, size, resample=BICUBIC, box=None, reducing_gap=None): + """ + Returns a resized copy of this image. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param resample: An optional resampling filter. This can be + one of :py:attr:`PIL.Image.NEAREST`, :py:attr:`PIL.Image.BOX`, + :py:attr:`PIL.Image.BILINEAR`, :py:attr:`PIL.Image.HAMMING`, + :py:attr:`PIL.Image.BICUBIC` or :py:attr:`PIL.Image.LANCZOS`. + Default filter is :py:attr:`PIL.Image.BICUBIC`. + If the image has mode "1" or "P", it is + always set to :py:attr:`PIL.Image.NEAREST`. + See: :ref:`concept-filters`. + :param box: An optional 4-tuple of floats providing + the source image region to be scaled. + The values must be within (0, 0, width, height) rectangle. + If omitted or None, the entire source is used. + :param reducing_gap: Apply optimization by resizing the image + in two steps. First, reducing the image by integer times + using :py:meth:`~PIL.Image.Image.reduce`. + Second, resizing using regular resampling. The last step + changes size no less than by ``reducing_gap`` times. + ``reducing_gap`` may be None (no first step is performed) + or should be greater than 1.0. The bigger ``reducing_gap``, + the closer the result to the fair resampling. + The smaller ``reducing_gap``, the faster resizing. + With ``reducing_gap`` greater or equal to 3.0, the result is + indistinguishable from fair resampling in most cases. + The default value is None (no optimization). + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if resample not in (NEAREST, BILINEAR, BICUBIC, LANCZOS, BOX, HAMMING): + message = "Unknown resampling filter ({}).".format(resample) + + filters = [ + "{} ({})".format(filter[1], filter[0]) + for filter in ( + (NEAREST, "Image.NEAREST"), + (LANCZOS, "Image.LANCZOS"), + (BILINEAR, "Image.BILINEAR"), + (BICUBIC, "Image.BICUBIC"), + (BOX, "Image.BOX"), + (HAMMING, "Image.HAMMING"), + ) + ] + raise ValueError( + message + " Use " + ", ".join(filters[:-1]) + " or " + filters[-1] + ) + + if reducing_gap is not None and reducing_gap < 1.0: + raise ValueError("reducing_gap must be 1.0 or greater") + + size = tuple(size) + + if box is None: + box = (0, 0) + self.size + else: + box = tuple(box) + + if self.size == size and box == (0, 0) + self.size: + return self.copy() + + if self.mode in ("1", "P"): + resample = NEAREST + + if self.mode in ["LA", "RGBA"]: + im = self.convert(self.mode[:-1] + "a") + im = im.resize(size, resample, box) + return im.convert(self.mode) + + self.load() + + if reducing_gap is not None and resample != NEAREST: + factor_x = int((box[2] - box[0]) / size[0] / reducing_gap) or 1 + factor_y = int((box[3] - box[1]) / size[1] / reducing_gap) or 1 + if factor_x > 1 or factor_y > 1: + reduce_box = self._get_safe_box(size, resample, box) + factor = (factor_x, factor_y) + if callable(self.reduce): + self = self.reduce(factor, box=reduce_box) + else: + self = Image.reduce(self, factor, box=reduce_box) + box = ( + (box[0] - reduce_box[0]) / factor_x, + (box[1] - reduce_box[1]) / factor_y, + (box[2] - reduce_box[0]) / factor_x, + (box[3] - reduce_box[1]) / factor_y, + ) + + return self._new(self.im.resize(size, resample, box)) + + def reduce(self, factor, box=None): + """ + Returns a copy of the image reduced by `factor` times. + If the size of the image is not dividable by the `factor`, + the resulting size will be rounded up. + + :param factor: A greater than 0 integer or tuple of two integers + for width and height separately. + :param box: An optional 4-tuple of ints providing + the source image region to be reduced. + The values must be within (0, 0, width, height) rectangle. + If omitted or None, the entire source is used. + """ + if not isinstance(factor, (list, tuple)): + factor = (factor, factor) + + if box is None: + box = (0, 0) + self.size + else: + box = tuple(box) + + if factor == (1, 1) and box == (0, 0) + self.size: + return self.copy() + + if self.mode in ["LA", "RGBA"]: + im = self.convert(self.mode[:-1] + "a") + im = im.reduce(factor, box) + return im.convert(self.mode) + + self.load() + + return self._new(self.im.reduce(factor, box)) + + def rotate( + self, + angle, + resample=NEAREST, + expand=0, + center=None, + translate=None, + fillcolor=None, + ): + """ + Returns a rotated copy of this image. This method returns a + copy of this image, rotated the given number of degrees counter + clockwise around its centre. + + :param angle: In degrees counter clockwise. + :param resample: An optional resampling filter. This can be + one of :py:attr:`PIL.Image.NEAREST` (use nearest neighbour), + :py:attr:`PIL.Image.BILINEAR` (linear interpolation in a 2x2 + environment), or :py:attr:`PIL.Image.BICUBIC` + (cubic spline interpolation in a 4x4 environment). + If omitted, or if the image has mode "1" or "P", it is + set to :py:attr:`PIL.Image.NEAREST`. See :ref:`concept-filters`. + :param expand: Optional expansion flag. If true, expands the output + image to make it large enough to hold the entire rotated image. + If false or omitted, make the output image the same size as the + input image. Note that the expand flag assumes rotation around + the center and no translation. + :param center: Optional center of rotation (a 2-tuple). Origin is + the upper left corner. Default is the center of the image. + :param translate: An optional post-rotate translation (a 2-tuple). + :param fillcolor: An optional color for area outside the rotated image. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + angle = angle % 360.0 + + # Fast paths regardless of filter, as long as we're not + # translating or changing the center. + if not (center or translate): + if angle == 0: + return self.copy() + if angle == 180: + return self.transpose(ROTATE_180) + if angle == 90 and expand: + return self.transpose(ROTATE_90) + if angle == 270 and expand: + return self.transpose(ROTATE_270) + + # Calculate the affine matrix. Note that this is the reverse + # transformation (from destination image to source) because we + # want to interpolate the (discrete) destination pixel from + # the local area around the (floating) source pixel. + + # The matrix we actually want (note that it operates from the right): + # (1, 0, tx) (1, 0, cx) ( cos a, sin a, 0) (1, 0, -cx) + # (0, 1, ty) * (0, 1, cy) * (-sin a, cos a, 0) * (0, 1, -cy) + # (0, 0, 1) (0, 0, 1) ( 0, 0, 1) (0, 0, 1) + + # The reverse matrix is thus: + # (1, 0, cx) ( cos -a, sin -a, 0) (1, 0, -cx) (1, 0, -tx) + # (0, 1, cy) * (-sin -a, cos -a, 0) * (0, 1, -cy) * (0, 1, -ty) + # (0, 0, 1) ( 0, 0, 1) (0, 0, 1) (0, 0, 1) + + # In any case, the final translation may be updated at the end to + # compensate for the expand flag. + + w, h = self.size + + if translate is None: + post_trans = (0, 0) + else: + post_trans = translate + if center is None: + # FIXME These should be rounded to ints? + rotn_center = (w / 2.0, h / 2.0) + else: + rotn_center = center + + angle = -math.radians(angle) + matrix = [ + round(math.cos(angle), 15), + round(math.sin(angle), 15), + 0.0, + round(-math.sin(angle), 15), + round(math.cos(angle), 15), + 0.0, + ] + + def transform(x, y, matrix): + (a, b, c, d, e, f) = matrix + return a * x + b * y + c, d * x + e * y + f + + matrix[2], matrix[5] = transform( + -rotn_center[0] - post_trans[0], -rotn_center[1] - post_trans[1], matrix + ) + matrix[2] += rotn_center[0] + matrix[5] += rotn_center[1] + + if expand: + # calculate output size + xx = [] + yy = [] + for x, y in ((0, 0), (w, 0), (w, h), (0, h)): + x, y = transform(x, y, matrix) + xx.append(x) + yy.append(y) + nw = math.ceil(max(xx)) - math.floor(min(xx)) + nh = math.ceil(max(yy)) - math.floor(min(yy)) + + # We multiply a translation matrix from the right. Because of its + # special form, this is the same as taking the image of the + # translation vector as new translation vector. + matrix[2], matrix[5] = transform(-(nw - w) / 2.0, -(nh - h) / 2.0, matrix) + w, h = nw, nh + + return self.transform((w, h), AFFINE, matrix, resample, fillcolor=fillcolor) + + def save(self, fp, format=None, **params): + """ + Saves this image under the given filename. If no format is + specified, the format to use is determined from the filename + extension, if possible. + + Keyword options can be used to provide additional instructions + to the writer. If a writer doesn't recognise an option, it is + silently ignored. The available options are described in the + :doc:`image format documentation + <../handbook/image-file-formats>` for each writer. + + You can use a file object instead of a filename. In this case, + you must always specify the format. The file object must + implement the ``seek``, ``tell``, and ``write`` + methods, and be opened in binary mode. + + :param fp: A filename (string), pathlib.Path object or file object. + :param format: Optional format override. If omitted, the + format to use is determined from the filename extension. + If a file object was used instead of a filename, this + parameter should always be used. + :param params: Extra parameters to the image writer. + :returns: None + :exception ValueError: If the output format could not be determined + from the file name. Use the format option to solve this. + :exception IOError: If the file could not be written. The file + may have been created, and may contain partial data. + """ + + filename = "" + open_fp = False + if isPath(fp): + filename = fp + open_fp = True + elif isinstance(fp, Path): + filename = str(fp) + open_fp = True + if not filename and hasattr(fp, "name") and isPath(fp.name): + # only set the name for metadata purposes + filename = fp.name + + # may mutate self! + self._ensure_mutable() + + save_all = params.pop("save_all", False) + self.encoderinfo = params + self.encoderconfig = () + + preinit() + + ext = os.path.splitext(filename)[1].lower() + + if not format: + if ext not in EXTENSION: + init() + try: + format = EXTENSION[ext] + except KeyError: + raise ValueError("unknown file extension: {}".format(ext)) + + if format.upper() not in SAVE: + init() + if save_all: + save_handler = SAVE_ALL[format.upper()] + else: + save_handler = SAVE[format.upper()] + + if open_fp: + if params.get("append", False): + # Open also for reading ("+"), because TIFF save_all + # writer needs to go back and edit the written data. + fp = builtins.open(filename, "r+b") + else: + fp = builtins.open(filename, "w+b") + + try: + save_handler(self, fp, filename) + finally: + # do what we can to clean up + if open_fp: + fp.close() + + def seek(self, frame): + """ + Seeks to the given frame in this sequence file. If you seek + beyond the end of the sequence, the method raises an + **EOFError** exception. When a sequence file is opened, the + library automatically seeks to frame 0. + + See :py:meth:`~PIL.Image.Image.tell`. + + :param frame: Frame number, starting at 0. + :exception EOFError: If the call attempts to seek beyond the end + of the sequence. + """ + + # overridden by file handlers + if frame != 0: + raise EOFError + + def show(self, title=None, command=None): + """ + Displays this image. This method is mainly intended for + debugging purposes. + + The image is first saved to a temporary file. By default, it will be in + PNG format. + + On Unix, the image is then opened using the **display**, **eog** or + **xv** utility, depending on which one can be found. + + On macOS, the image is opened with the native Preview application. + + On Windows, the image is opened with the standard PNG display utility. + + :param title: Optional title to use for the image window, + where possible. + :param command: command used to show the image + """ + + _show(self, title=title, command=command) + + def split(self): + """ + Split this image into individual bands. This method returns a + tuple of individual image bands from an image. For example, + splitting an "RGB" image creates three new images each + containing a copy of one of the original bands (red, green, + blue). + + If you need only one band, :py:meth:`~PIL.Image.Image.getchannel` + method can be more convenient and faster. + + :returns: A tuple containing bands. + """ + + self.load() + if self.im.bands == 1: + ims = [self.copy()] + else: + ims = map(self._new, self.im.split()) + return tuple(ims) + + def getchannel(self, channel): + """ + Returns an image containing a single channel of the source image. + + :param channel: What channel to return. Could be index + (0 for "R" channel of "RGB") or channel name + ("A" for alpha channel of "RGBA"). + :returns: An image in "L" mode. + + .. versionadded:: 4.3.0 + """ + self.load() + + if isinstance(channel, str): + try: + channel = self.getbands().index(channel) + except ValueError: + raise ValueError('The image has no channel "{}"'.format(channel)) + + return self._new(self.im.getband(channel)) + + def tell(self): + """ + Returns the current frame number. See :py:meth:`~PIL.Image.Image.seek`. + + :returns: Frame number, starting with 0. + """ + return 0 + + def thumbnail(self, size, resample=BICUBIC, reducing_gap=2.0): + """ + Make this image into a thumbnail. This method modifies the + image to contain a thumbnail version of itself, no larger than + the given size. This method calculates an appropriate thumbnail + size to preserve the aspect of the image, calls the + :py:meth:`~PIL.Image.Image.draft` method to configure the file reader + (where applicable), and finally resizes the image. + + Note that this function modifies the :py:class:`~PIL.Image.Image` + object in place. If you need to use the full resolution image as well, + apply this method to a :py:meth:`~PIL.Image.Image.copy` of the original + image. + + :param size: Requested size. + :param resample: Optional resampling filter. This can be one + of :py:attr:`PIL.Image.NEAREST`, :py:attr:`PIL.Image.BILINEAR`, + :py:attr:`PIL.Image.BICUBIC`, or :py:attr:`PIL.Image.LANCZOS`. + If omitted, it defaults to :py:attr:`PIL.Image.BICUBIC`. + (was :py:attr:`PIL.Image.NEAREST` prior to version 2.5.0). + :param reducing_gap: Apply optimization by resizing the image + in two steps. First, reducing the image by integer times + using :py:meth:`~PIL.Image.Image.reduce` or + :py:meth:`~PIL.Image.Image.draft` for JPEG images. + Second, resizing using regular resampling. The last step + changes size no less than by ``reducing_gap`` times. + ``reducing_gap`` may be None (no first step is performed) + or should be greater than 1.0. The bigger ``reducing_gap``, + the closer the result to the fair resampling. + The smaller ``reducing_gap``, the faster resizing. + With ``reducing_gap`` greater or equal to 3.0, the result is + indistinguishable from fair resampling in most cases. + The default value is 2.0 (very close to fair resampling + while still being faster in many cases). + :returns: None + """ + + x, y = map(math.floor, size) + if x >= self.width and y >= self.height: + return + + def round_aspect(number, key): + return max(min(math.floor(number), math.ceil(number), key=key), 1) + + # preserve aspect ratio + aspect = self.width / self.height + if x / y >= aspect: + x = round_aspect(y * aspect, key=lambda n: abs(aspect - n / y)) + else: + y = round_aspect(x / aspect, key=lambda n: abs(aspect - x / n)) + size = (x, y) + + box = None + if reducing_gap is not None: + res = self.draft(None, (size[0] * reducing_gap, size[1] * reducing_gap)) + if res is not None: + box = res[1] + + if self.size != size: + im = self.resize(size, resample, box=box, reducing_gap=reducing_gap) + + self.im = im.im + self._size = size + self.mode = self.im.mode + + self.readonly = 0 + self.pyaccess = None + + # FIXME: the different transform methods need further explanation + # instead of bloating the method docs, add a separate chapter. + def transform( + self, size, method, data=None, resample=NEAREST, fill=1, fillcolor=None + ): + """ + Transforms this image. This method creates a new image with the + given size, and the same mode as the original, and copies data + to the new image using the given transform. + + :param size: The output size. + :param method: The transformation method. This is one of + :py:attr:`PIL.Image.EXTENT` (cut out a rectangular subregion), + :py:attr:`PIL.Image.AFFINE` (affine transform), + :py:attr:`PIL.Image.PERSPECTIVE` (perspective transform), + :py:attr:`PIL.Image.QUAD` (map a quadrilateral to a rectangle), or + :py:attr:`PIL.Image.MESH` (map a number of source quadrilaterals + in one operation). + + It may also be an :py:class:`~PIL.Image.ImageTransformHandler` + object:: + + class Example(Image.ImageTransformHandler): + def transform(size, method, data, resample, fill=1): + # Return result + + It may also be an object with a :py:meth:`~method.getdata` method + that returns a tuple supplying new **method** and **data** values:: + + class Example(object): + def getdata(self): + method = Image.EXTENT + data = (0, 0, 100, 100) + return method, data + :param data: Extra data to the transformation method. + :param resample: Optional resampling filter. It can be one of + :py:attr:`PIL.Image.NEAREST` (use nearest neighbour), + :py:attr:`PIL.Image.BILINEAR` (linear interpolation in a 2x2 + environment), or :py:attr:`PIL.Image.BICUBIC` (cubic spline + interpolation in a 4x4 environment). If omitted, or if the image + has mode "1" or "P", it is set to :py:attr:`PIL.Image.NEAREST`. + :param fill: If **method** is an + :py:class:`~PIL.Image.ImageTransformHandler` object, this is one of + the arguments passed to it. Otherwise, it is unused. + :param fillcolor: Optional fill color for the area outside the + transform in the output image. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if self.mode == "LA": + return ( + self.convert("La") + .transform(size, method, data, resample, fill, fillcolor) + .convert("LA") + ) + + if self.mode == "RGBA": + return ( + self.convert("RGBa") + .transform(size, method, data, resample, fill, fillcolor) + .convert("RGBA") + ) + + if isinstance(method, ImageTransformHandler): + return method.transform(size, self, resample=resample, fill=fill) + + if hasattr(method, "getdata"): + # compatibility w. old-style transform objects + method, data = method.getdata() + + if data is None: + raise ValueError("missing method data") + + im = new(self.mode, size, fillcolor) + im.info = self.info.copy() + if method == MESH: + # list of quads + for box, quad in data: + im.__transformer(box, self, QUAD, quad, resample, fillcolor is None) + else: + im.__transformer( + (0, 0) + size, self, method, data, resample, fillcolor is None + ) + + return im + + def __transformer(self, box, image, method, data, resample=NEAREST, fill=1): + w = box[2] - box[0] + h = box[3] - box[1] + + if method == AFFINE: + data = data[0:6] + + elif method == EXTENT: + # convert extent to an affine transform + x0, y0, x1, y1 = data + xs = (x1 - x0) / w + ys = (y1 - y0) / h + method = AFFINE + data = (xs, 0, x0, 0, ys, y0) + + elif method == PERSPECTIVE: + data = data[0:8] + + elif method == QUAD: + # quadrilateral warp. data specifies the four corners + # given as NW, SW, SE, and NE. + nw = data[0:2] + sw = data[2:4] + se = data[4:6] + ne = data[6:8] + x0, y0 = nw + As = 1.0 / w + At = 1.0 / h + data = ( + x0, + (ne[0] - x0) * As, + (sw[0] - x0) * At, + (se[0] - sw[0] - ne[0] + x0) * As * At, + y0, + (ne[1] - y0) * As, + (sw[1] - y0) * At, + (se[1] - sw[1] - ne[1] + y0) * As * At, + ) + + else: + raise ValueError("unknown transformation method") + + if resample not in (NEAREST, BILINEAR, BICUBIC): + if resample in (BOX, HAMMING, LANCZOS): + message = { + BOX: "Image.BOX", + HAMMING: "Image.HAMMING", + LANCZOS: "Image.LANCZOS/Image.ANTIALIAS", + }[resample] + " ({}) cannot be used.".format(resample) + else: + message = "Unknown resampling filter ({}).".format(resample) + + filters = [ + "{} ({})".format(filter[1], filter[0]) + for filter in ( + (NEAREST, "Image.NEAREST"), + (BILINEAR, "Image.BILINEAR"), + (BICUBIC, "Image.BICUBIC"), + ) + ] + raise ValueError( + message + " Use " + ", ".join(filters[:-1]) + " or " + filters[-1] + ) + + image.load() + + self.load() + + if image.mode in ("1", "P"): + resample = NEAREST + + self.im.transform2(box, image.im, method, data, resample, fill) + + def transpose(self, method): + """ + Transpose image (flip or rotate in 90 degree steps) + + :param method: One of :py:attr:`PIL.Image.FLIP_LEFT_RIGHT`, + :py:attr:`PIL.Image.FLIP_TOP_BOTTOM`, :py:attr:`PIL.Image.ROTATE_90`, + :py:attr:`PIL.Image.ROTATE_180`, :py:attr:`PIL.Image.ROTATE_270`, + :py:attr:`PIL.Image.TRANSPOSE` or :py:attr:`PIL.Image.TRANSVERSE`. + :returns: Returns a flipped or rotated copy of this image. + """ + + self.load() + return self._new(self.im.transpose(method)) + + def effect_spread(self, distance): + """ + Randomly spread pixels in an image. + + :param distance: Distance to spread pixels. + """ + self.load() + return self._new(self.im.effect_spread(distance)) + + def toqimage(self): + """Returns a QImage copy of this image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + raise ImportError("Qt bindings are not installed") + return ImageQt.toqimage(self) + + def toqpixmap(self): + """Returns a QPixmap copy of this image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + raise ImportError("Qt bindings are not installed") + return ImageQt.toqpixmap(self) + + +# -------------------------------------------------------------------- +# Abstract handlers. + + +class ImagePointHandler: + # used as a mixin by point transforms (for use with im.point) + pass + + +class ImageTransformHandler: + # used as a mixin by geometry transforms (for use with im.transform) + pass + + +# -------------------------------------------------------------------- +# Factories + +# +# Debugging + + +def _wedge(): + """Create greyscale wedge (for debugging only)""" + + return Image()._new(core.wedge("L")) + + +def _check_size(size): + """ + Common check to enforce type and sanity check on size tuples + + :param size: Should be a 2 tuple of (width, height) + :returns: True, or raises a ValueError + """ + + if not isinstance(size, (list, tuple)): + raise ValueError("Size must be a tuple") + if len(size) != 2: + raise ValueError("Size must be a tuple of length 2") + if size[0] < 0 or size[1] < 0: + raise ValueError("Width and height must be >= 0") + + return True + + +def new(mode, size, color=0): + """ + Creates a new image with the given mode and size. + + :param mode: The mode to use for the new image. See: + :ref:`concept-modes`. + :param size: A 2-tuple, containing (width, height) in pixels. + :param color: What color to use for the image. Default is black. + If given, this should be a single integer or floating point value + for single-band modes, and a tuple for multi-band modes (one value + per band). When creating RGB images, you can also use color + strings as supported by the ImageColor module. If the color is + None, the image is not initialised. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + _check_size(size) + + if color is None: + # don't initialize + return Image()._new(core.new(mode, size)) + + if isinstance(color, str): + # css3-style specifier + + from . import ImageColor + + color = ImageColor.getcolor(color, mode) + + im = Image() + if mode == "P" and isinstance(color, (list, tuple)) and len(color) in [3, 4]: + # RGB or RGBA value for a P image + from . import ImagePalette + + im.palette = ImagePalette.ImagePalette() + color = im.palette.getcolor(color) + return im._new(core.fill(mode, size, color)) + + +def frombytes(mode, size, data, decoder_name="raw", *args): + """ + Creates a copy of an image memory from pixel data in a buffer. + + In its simplest form, this function takes three arguments + (mode, size, and unpacked pixel data). + + You can also use any pixel decoder supported by PIL. For more + information on available decoders, see the section + :ref:`Writing Your Own File Decoder `. + + Note that this function decodes pixel data only, not entire images. + If you have an entire image in a string, wrap it in a + :py:class:`~io.BytesIO` object, and use :py:func:`~PIL.Image.open` to load + it. + + :param mode: The image mode. See: :ref:`concept-modes`. + :param size: The image size. + :param data: A byte buffer containing raw data for the given mode. + :param decoder_name: What decoder to use. + :param args: Additional parameters for the given decoder. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + _check_size(size) + + # may pass tuple instead of argument list + if len(args) == 1 and isinstance(args[0], tuple): + args = args[0] + + if decoder_name == "raw" and args == (): + args = mode + + im = new(mode, size) + im.frombytes(data, decoder_name, args) + return im + + +def fromstring(*args, **kw): + raise NotImplementedError( + "fromstring() has been removed. Please call frombytes() instead." + ) + + +def frombuffer(mode, size, data, decoder_name="raw", *args): + """ + Creates an image memory referencing pixel data in a byte buffer. + + This function is similar to :py:func:`~PIL.Image.frombytes`, but uses data + in the byte buffer, where possible. This means that changes to the + original buffer object are reflected in this image). Not all modes can + share memory; supported modes include "L", "RGBX", "RGBA", and "CMYK". + + Note that this function decodes pixel data only, not entire images. + If you have an entire image file in a string, wrap it in a + **BytesIO** object, and use :py:func:`~PIL.Image.open` to load it. + + In the current version, the default parameters used for the "raw" decoder + differs from that used for :py:func:`~PIL.Image.frombytes`. This is a + bug, and will probably be fixed in a future release. The current release + issues a warning if you do this; to disable the warning, you should provide + the full set of parameters. See below for details. + + :param mode: The image mode. See: :ref:`concept-modes`. + :param size: The image size. + :param data: A bytes or other buffer object containing raw + data for the given mode. + :param decoder_name: What decoder to use. + :param args: Additional parameters for the given decoder. For the + default encoder ("raw"), it's recommended that you provide the + full set of parameters:: + + frombuffer(mode, size, data, "raw", mode, 0, 1) + + :returns: An :py:class:`~PIL.Image.Image` object. + + .. versionadded:: 1.1.4 + """ + + _check_size(size) + + # may pass tuple instead of argument list + if len(args) == 1 and isinstance(args[0], tuple): + args = args[0] + + if decoder_name == "raw": + if args == (): + args = mode, 0, 1 + if args[0] in _MAPMODES: + im = new(mode, (1, 1)) + im = im._new(core.map_buffer(data, size, decoder_name, 0, args)) + im.readonly = 1 + return im + + return frombytes(mode, size, data, decoder_name, args) + + +def fromarray(obj, mode=None): + """ + Creates an image memory from an object exporting the array interface + (using the buffer protocol). + + If **obj** is not contiguous, then the tobytes method is called + and :py:func:`~PIL.Image.frombuffer` is used. + + If you have an image in NumPy:: + + from PIL import Image + import numpy as np + im = Image.open('hopper.jpg') + a = np.asarray(im) + + Then this can be used to convert it to a Pillow image:: + + im = Image.fromarray(a) + + :param obj: Object with array interface + :param mode: Mode to use (will be determined from type if None) + See: :ref:`concept-modes`. + :returns: An image object. + + .. versionadded:: 1.1.6 + """ + arr = obj.__array_interface__ + shape = arr["shape"] + ndim = len(shape) + strides = arr.get("strides", None) + if mode is None: + try: + typekey = (1, 1) + shape[2:], arr["typestr"] + except KeyError: + raise TypeError("Cannot handle this data type") + try: + mode, rawmode = _fromarray_typemap[typekey] + except KeyError: + raise TypeError("Cannot handle this data type: %s, %s" % typekey) + else: + rawmode = mode + if mode in ["1", "L", "I", "P", "F"]: + ndmax = 2 + elif mode == "RGB": + ndmax = 3 + else: + ndmax = 4 + if ndim > ndmax: + raise ValueError("Too many dimensions: %d > %d." % (ndim, ndmax)) + + size = shape[1], shape[0] + if strides is not None: + if hasattr(obj, "tobytes"): + obj = obj.tobytes() + else: + obj = obj.tostring() + + return frombuffer(mode, size, obj, "raw", rawmode, 0, 1) + + +def fromqimage(im): + """Creates an image instance from a QImage image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + raise ImportError("Qt bindings are not installed") + return ImageQt.fromqimage(im) + + +def fromqpixmap(im): + """Creates an image instance from a QPixmap image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + raise ImportError("Qt bindings are not installed") + return ImageQt.fromqpixmap(im) + + +_fromarray_typemap = { + # (shape, typestr) => mode, rawmode + # first two members of shape are set to one + ((1, 1), "|b1"): ("1", "1;8"), + ((1, 1), "|u1"): ("L", "L"), + ((1, 1), "|i1"): ("I", "I;8"), + ((1, 1), "u2"): ("I", "I;16B"), + ((1, 1), "i2"): ("I", "I;16BS"), + ((1, 1), "u4"): ("I", "I;32B"), + ((1, 1), "i4"): ("I", "I;32BS"), + ((1, 1), "f4"): ("F", "F;32BF"), + ((1, 1), "f8"): ("F", "F;64BF"), + ((1, 1, 2), "|u1"): ("LA", "LA"), + ((1, 1, 3), "|u1"): ("RGB", "RGB"), + ((1, 1, 4), "|u1"): ("RGBA", "RGBA"), +} + +# shortcuts +_fromarray_typemap[((1, 1), _ENDIAN + "i4")] = ("I", "I") +_fromarray_typemap[((1, 1), _ENDIAN + "f4")] = ("F", "F") + + +def _decompression_bomb_check(size): + if MAX_IMAGE_PIXELS is None: + return + + pixels = size[0] * size[1] + + if pixels > 2 * MAX_IMAGE_PIXELS: + raise DecompressionBombError( + "Image size (%d pixels) exceeds limit of %d pixels, " + "could be decompression bomb DOS attack." % (pixels, 2 * MAX_IMAGE_PIXELS) + ) + + if pixels > MAX_IMAGE_PIXELS: + warnings.warn( + "Image size (%d pixels) exceeds limit of %d pixels, " + "could be decompression bomb DOS attack." % (pixels, MAX_IMAGE_PIXELS), + DecompressionBombWarning, + ) + + +def open(fp, mode="r"): + """ + Opens and identifies the given image file. + + This is a lazy operation; this function identifies the file, but + the file remains open and the actual image data is not read from + the file until you try to process the data (or call the + :py:meth:`~PIL.Image.Image.load` method). See + :py:func:`~PIL.Image.new`. See :ref:`file-handling`. + + :param fp: A filename (string), pathlib.Path object or a file object. + The file object must implement :py:meth:`~file.read`, + :py:meth:`~file.seek`, and :py:meth:`~file.tell` methods, + and be opened in binary mode. + :param mode: The mode. If given, this argument must be "r". + :returns: An :py:class:`~PIL.Image.Image` object. + :exception FileNotFoundError: If the file cannot be found. + :exception PIL.UnidentifiedImageError: If the image cannot be opened and + identified. + :exception ValueError: If the ``mode`` is not "r", or if a ``StringIO`` + instance is used for ``fp``. + """ + + if mode != "r": + raise ValueError("bad mode %r" % mode) + elif isinstance(fp, io.StringIO): + raise ValueError( + "StringIO cannot be used to open an image. " + "Binary data must be used instead." + ) + + exclusive_fp = False + filename = "" + if isinstance(fp, Path): + filename = str(fp.resolve()) + elif isPath(fp): + filename = fp + + if filename: + fp = builtins.open(filename, "rb") + exclusive_fp = True + + try: + fp.seek(0) + except (AttributeError, io.UnsupportedOperation): + fp = io.BytesIO(fp.read()) + exclusive_fp = True + + prefix = fp.read(16) + + preinit() + + accept_warnings = [] + + def _open_core(fp, filename, prefix): + for i in ID: + try: + factory, accept = OPEN[i] + result = not accept or accept(prefix) + if type(result) in [str, bytes]: + accept_warnings.append(result) + elif result: + fp.seek(0) + im = factory(fp, filename) + _decompression_bomb_check(im.size) + return im + except (SyntaxError, IndexError, TypeError, struct.error): + # Leave disabled by default, spams the logs with image + # opening failures that are entirely expected. + # logger.debug("", exc_info=True) + continue + except BaseException: + if exclusive_fp: + fp.close() + raise + return None + + im = _open_core(fp, filename, prefix) + + if im is None: + if init(): + im = _open_core(fp, filename, prefix) + + if im: + im._exclusive_fp = exclusive_fp + return im + + if exclusive_fp: + fp.close() + for message in accept_warnings: + warnings.warn(message) + raise UnidentifiedImageError( + "cannot identify image file %r" % (filename if filename else fp) + ) + + +# +# Image processing. + + +def alpha_composite(im1, im2): + """ + Alpha composite im2 over im1. + + :param im1: The first image. Must have mode RGBA. + :param im2: The second image. Must have mode RGBA, and the same size as + the first image. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + im1.load() + im2.load() + return im1._new(core.alpha_composite(im1.im, im2.im)) + + +def blend(im1, im2, alpha): + """ + Creates a new image by interpolating between two input images, using + a constant alpha.:: + + out = image1 * (1.0 - alpha) + image2 * alpha + + :param im1: The first image. + :param im2: The second image. Must have the same mode and size as + the first image. + :param alpha: The interpolation alpha factor. If alpha is 0.0, a + copy of the first image is returned. If alpha is 1.0, a copy of + the second image is returned. There are no restrictions on the + alpha value. If necessary, the result is clipped to fit into + the allowed output range. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + im1.load() + im2.load() + return im1._new(core.blend(im1.im, im2.im, alpha)) + + +def composite(image1, image2, mask): + """ + Create composite image by blending images using a transparency mask. + + :param image1: The first image. + :param image2: The second image. Must have the same mode and + size as the first image. + :param mask: A mask image. This image can have mode + "1", "L", or "RGBA", and must have the same size as the + other two images. + """ + + image = image2.copy() + image.paste(image1, None, mask) + return image + + +def eval(image, *args): + """ + Applies the function (which should take one argument) to each pixel + in the given image. If the image has more than one band, the same + function is applied to each band. Note that the function is + evaluated once for each possible pixel value, so you cannot use + random components or other generators. + + :param image: The input image. + :param function: A function object, taking one integer argument. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + return image.point(args[0]) + + +def merge(mode, bands): + """ + Merge a set of single band images into a new multiband image. + + :param mode: The mode to use for the output image. See: + :ref:`concept-modes`. + :param bands: A sequence containing one single-band image for + each band in the output image. All bands must have the + same size. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if getmodebands(mode) != len(bands) or "*" in mode: + raise ValueError("wrong number of bands") + for band in bands[1:]: + if band.mode != getmodetype(mode): + raise ValueError("mode mismatch") + if band.size != bands[0].size: + raise ValueError("size mismatch") + for band in bands: + band.load() + return bands[0]._new(core.merge(mode, *[b.im for b in bands])) + + +# -------------------------------------------------------------------- +# Plugin registry + + +def register_open(id, factory, accept=None): + """ + Register an image file plugin. This function should not be used + in application code. + + :param id: An image format identifier. + :param factory: An image file factory method. + :param accept: An optional function that can be used to quickly + reject images having another format. + """ + id = id.upper() + ID.append(id) + OPEN[id] = factory, accept + + +def register_mime(id, mimetype): + """ + Registers an image MIME type. This function should not be used + in application code. + + :param id: An image format identifier. + :param mimetype: The image MIME type for this format. + """ + MIME[id.upper()] = mimetype + + +def register_save(id, driver): + """ + Registers an image save function. This function should not be + used in application code. + + :param id: An image format identifier. + :param driver: A function to save images in this format. + """ + SAVE[id.upper()] = driver + + +def register_save_all(id, driver): + """ + Registers an image function to save all the frames + of a multiframe format. This function should not be + used in application code. + + :param id: An image format identifier. + :param driver: A function to save images in this format. + """ + SAVE_ALL[id.upper()] = driver + + +def register_extension(id, extension): + """ + Registers an image extension. This function should not be + used in application code. + + :param id: An image format identifier. + :param extension: An extension used for this format. + """ + EXTENSION[extension.lower()] = id.upper() + + +def register_extensions(id, extensions): + """ + Registers image extensions. This function should not be + used in application code. + + :param id: An image format identifier. + :param extensions: A list of extensions used for this format. + """ + for extension in extensions: + register_extension(id, extension) + + +def registered_extensions(): + """ + Returns a dictionary containing all file extensions belonging + to registered plugins + """ + if not EXTENSION: + init() + return EXTENSION + + +def register_decoder(name, decoder): + """ + Registers an image decoder. This function should not be + used in application code. + + :param name: The name of the decoder + :param decoder: A callable(mode, args) that returns an + ImageFile.PyDecoder object + + .. versionadded:: 4.1.0 + """ + DECODERS[name] = decoder + + +def register_encoder(name, encoder): + """ + Registers an image encoder. This function should not be + used in application code. + + :param name: The name of the encoder + :param encoder: A callable(mode, args) that returns an + ImageFile.PyEncoder object + + .. versionadded:: 4.1.0 + """ + ENCODERS[name] = encoder + + +# -------------------------------------------------------------------- +# Simple display support. User code may override this. + + +def _show(image, **options): + # override me, as necessary + _showxv(image, **options) + + +def _showxv(image, title=None, **options): + from . import ImageShow + + ImageShow.show(image, title, **options) + + +# -------------------------------------------------------------------- +# Effects + + +def effect_mandelbrot(size, extent, quality): + """ + Generate a Mandelbrot set covering the given extent. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param extent: The extent to cover, as a 4-tuple: + (x0, y0, x1, y2). + :param quality: Quality. + """ + return Image()._new(core.effect_mandelbrot(size, extent, quality)) + + +def effect_noise(size, sigma): + """ + Generate Gaussian noise centered around 128. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param sigma: Standard deviation of noise. + """ + return Image()._new(core.effect_noise(size, sigma)) + + +def linear_gradient(mode): + """ + Generate 256x256 linear gradient from black to white, top to bottom. + + :param mode: Input mode. + """ + return Image()._new(core.linear_gradient(mode)) + + +def radial_gradient(mode): + """ + Generate 256x256 radial gradient from black to white, centre to edge. + + :param mode: Input mode. + """ + return Image()._new(core.radial_gradient(mode)) + + +# -------------------------------------------------------------------- +# Resources + + +def _apply_env_variables(env=None): + if env is None: + env = os.environ + + for var_name, setter in [ + ("PILLOW_ALIGNMENT", core.set_alignment), + ("PILLOW_BLOCK_SIZE", core.set_block_size), + ("PILLOW_BLOCKS_MAX", core.set_blocks_max), + ]: + if var_name not in env: + continue + + var = env[var_name].lower() + + units = 1 + for postfix, mul in [("k", 1024), ("m", 1024 * 1024)]: + if var.endswith(postfix): + units = mul + var = var[: -len(postfix)] + + try: + var = int(var) * units + except ValueError: + warnings.warn("{} is not int".format(var_name)) + continue + + try: + setter(var) + except ValueError as e: + warnings.warn("{}: {}".format(var_name, e)) + + +_apply_env_variables() +atexit.register(core.clear_cache) + + +class Exif(MutableMapping): + endian = "<" + + def __init__(self): + self._data = {} + self._ifds = {} + self._info = None + self._loaded_exif = None + + def _fixup(self, value): + try: + if len(value) == 1 and not isinstance(value, dict): + return value[0] + except Exception: + pass + return value + + def _fixup_dict(self, src_dict): + # Helper function for _getexif() + # returns a dict with any single item tuples/lists as individual values + return {k: self._fixup(v) for k, v in src_dict.items()} + + def _get_ifd_dict(self, tag): + try: + # an offset pointer to the location of the nested embedded IFD. + # It should be a long, but may be corrupted. + self.fp.seek(self[tag]) + except (KeyError, TypeError): + pass + else: + from . import TiffImagePlugin + + info = TiffImagePlugin.ImageFileDirectory_v1(self.head) + info.load(self.fp) + return self._fixup_dict(info) + + def load(self, data): + # Extract EXIF information. This is highly experimental, + # and is likely to be replaced with something better in a future + # version. + + # The EXIF record consists of a TIFF file embedded in a JPEG + # application marker (!). + if data == self._loaded_exif: + return + self._loaded_exif = data + self._data.clear() + self._ifds.clear() + self._info = None + if not data: + return + + self.fp = io.BytesIO(data[6:]) + self.head = self.fp.read(8) + # process dictionary + from . import TiffImagePlugin + + self._info = TiffImagePlugin.ImageFileDirectory_v1(self.head) + self.endian = self._info._endian + self.fp.seek(self._info.next) + self._info.load(self.fp) + + # get EXIF extension + ifd = self._get_ifd_dict(0x8769) + if ifd: + self._data.update(ifd) + self._ifds[0x8769] = ifd + + def tobytes(self, offset=0): + from . import TiffImagePlugin + + if self.endian == "<": + head = b"II\x2A\x00\x08\x00\x00\x00" + else: + head = b"MM\x00\x2A\x00\x00\x00\x08" + ifd = TiffImagePlugin.ImageFileDirectory_v2(ifh=head) + for tag, value in self.items(): + ifd[tag] = value + return b"Exif\x00\x00" + head + ifd.tobytes(offset) + + def get_ifd(self, tag): + if tag not in self._ifds and tag in self: + if tag in [0x8825, 0xA005]: + # gpsinfo, interop + self._ifds[tag] = self._get_ifd_dict(tag) + elif tag == 0x927C: # makernote + from .TiffImagePlugin import ImageFileDirectory_v2 + + if self[0x927C][:8] == b"FUJIFILM": + exif_data = self[0x927C] + ifd_offset = i32le(exif_data[8:12]) + ifd_data = exif_data[ifd_offset:] + + makernote = {} + for i in range(0, struct.unpack(" 4: + (offset,) = struct.unpack("H", ifd_data[:2])[0]): + ifd_tag, typ, count, data = struct.unpack( + ">HHL4s", ifd_data[i * 12 + 2 : (i + 1) * 12 + 2] + ) + if ifd_tag == 0x1101: + # CameraInfo + (offset,) = struct.unpack(">L", data) + self.fp.seek(offset) + + camerainfo = {"ModelID": self.fp.read(4)} + + self.fp.read(4) + # Seconds since 2000 + camerainfo["TimeStamp"] = i32le(self.fp.read(12)) + + self.fp.read(4) + camerainfo["InternalSerialNumber"] = self.fp.read(4) + + self.fp.read(12) + parallax = self.fp.read(4) + handler = ImageFileDirectory_v2._load_dispatch[ + TiffTags.FLOAT + ][1] + camerainfo["Parallax"] = handler( + ImageFileDirectory_v2(), parallax, False + ) + + self.fp.read(4) + camerainfo["Category"] = self.fp.read(2) + + makernote = {0x1101: dict(self._fixup_dict(camerainfo))} + self._ifds[0x927C] = makernote + return self._ifds.get(tag, {}) + + def __str__(self): + if self._info is not None: + # Load all keys into self._data + for tag in self._info.keys(): + self[tag] + + return str(self._data) + + def __len__(self): + keys = set(self._data) + if self._info is not None: + keys.update(self._info) + return len(keys) + + def __getitem__(self, tag): + if self._info is not None and tag not in self._data and tag in self._info: + self._data[tag] = self._fixup(self._info[tag]) + if tag == 0x8825: + self._data[tag] = self.get_ifd(tag) + del self._info[tag] + return self._data[tag] + + def __contains__(self, tag): + return tag in self._data or (self._info is not None and tag in self._info) + + def __setitem__(self, tag, value): + if self._info is not None and tag in self._info: + del self._info[tag] + self._data[tag] = value + + def __delitem__(self, tag): + if self._info is not None and tag in self._info: + del self._info[tag] + del self._data[tag] + + def __iter__(self): + keys = set(self._data) + if self._info is not None: + keys.update(self._info) + return iter(keys) diff --git a/venv/Lib/site-packages/PIL/ImageChops.py b/venv/Lib/site-packages/PIL/ImageChops.py new file mode 100644 index 0000000..2d13b52 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageChops.py @@ -0,0 +1,328 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard channel operations +# +# History: +# 1996-03-24 fl Created +# 1996-08-13 fl Added logical operations (for "1" images) +# 2000-10-12 fl Added offset method (from Image.py) +# +# Copyright (c) 1997-2000 by Secret Labs AB +# Copyright (c) 1996-2000 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image + + +def constant(image, value): + """Fill a channel with a given grey level. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return Image.new("L", image.size, value) + + +def duplicate(image): + """Copy a channel. Alias for :py:meth:`PIL.Image.Image.copy`. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return image.copy() + + +def invert(image): + """ + Invert an image (channel). + + .. code-block:: python + + out = MAX - image + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image.load() + return image._new(image.im.chop_invert()) + + +def lighter(image1, image2): + """ + Compares the two images, pixel by pixel, and returns a new image containing + the lighter values. At least one of the images must have mode "1". + + .. code-block:: python + + out = max(image1, image2) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_lighter(image2.im)) + + +def darker(image1, image2): + """ + Compares the two images, pixel by pixel, and returns a new image containing + the darker values. At least one of the images must have mode "1". + + .. code-block:: python + + out = min(image1, image2) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_darker(image2.im)) + + +def difference(image1, image2): + """ + Returns the absolute value of the pixel-by-pixel difference between the two + images. At least one of the images must have mode "1". + + .. code-block:: python + + out = abs(image1 - image2) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_difference(image2.im)) + + +def multiply(image1, image2): + """ + Superimposes two images on top of each other. + + If you multiply an image with a solid black image, the result is black. If + you multiply with a solid white image, the image is unaffected. At least + one of the images must have mode "1". + + .. code-block:: python + + out = image1 * image2 / MAX + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_multiply(image2.im)) + + +def screen(image1, image2): + """ + Superimposes two inverted images on top of each other. At least one of the + images must have mode "1". + + .. code-block:: python + + out = MAX - ((MAX - image1) * (MAX - image2) / MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_screen(image2.im)) + + +def soft_light(image1, image2): + """ + Superimposes two images on top of each other using the Soft Light algorithm + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_soft_light(image2.im)) + + +def hard_light(image1, image2): + """ + Superimposes two images on top of each other using the Hard Light algorithm + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_hard_light(image2.im)) + + +def overlay(image1, image2): + """ + Superimposes two images on top of each other using the Overlay algorithm + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_overlay(image2.im)) + + +def add(image1, image2, scale=1.0, offset=0): + """ + Adds two images, dividing the result by scale and adding the + offset. If omitted, scale defaults to 1.0, and offset to 0.0. + At least one of the images must have mode "1". + + .. code-block:: python + + out = ((image1 + image2) / scale + offset) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_add(image2.im, scale, offset)) + + +def subtract(image1, image2, scale=1.0, offset=0): + """ + Subtracts two images, dividing the result by scale and adding the offset. + If omitted, scale defaults to 1.0, and offset to 0.0. At least one of the + images must have mode "1". + + .. code-block:: python + + out = ((image1 - image2) / scale + offset) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_subtract(image2.im, scale, offset)) + + +def add_modulo(image1, image2): + """Add two images, without clipping the result. At least one of the images + must have mode "1". + + .. code-block:: python + + out = ((image1 + image2) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_add_modulo(image2.im)) + + +def subtract_modulo(image1, image2): + """Subtract two images, without clipping the result. At least one of the + images must have mode "1". + + .. code-block:: python + + out = ((image1 - image2) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_subtract_modulo(image2.im)) + + +def logical_and(image1, image2): + """Logical AND between two images. At least one of the images must have + mode "1". + + .. code-block:: python + + out = ((image1 and image2) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_and(image2.im)) + + +def logical_or(image1, image2): + """Logical OR between two images. At least one of the images must have + mode "1". + + .. code-block:: python + + out = ((image1 or image2) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_or(image2.im)) + + +def logical_xor(image1, image2): + """Logical XOR between two images. At least one of the images must have + mode "1". + + .. code-block:: python + + out = ((bool(image1) != bool(image2)) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_xor(image2.im)) + + +def blend(image1, image2, alpha): + """Blend images using constant transparency weight. Alias for + :py:meth:`PIL.Image.Image.blend`. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return Image.blend(image1, image2, alpha) + + +def composite(image1, image2, mask): + """Create composite using transparency mask. Alias for + :py:meth:`PIL.Image.Image.composite`. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return Image.composite(image1, image2, mask) + + +def offset(image, xoffset, yoffset=None): + """Returns a copy of the image where data has been offset by the given + distances. Data wraps around the edges. If **yoffset** is omitted, it + is assumed to be equal to **xoffset**. + + :param xoffset: The horizontal distance. + :param yoffset: The vertical distance. If omitted, both + distances are set to the same value. + :rtype: :py:class:`~PIL.Image.Image` + """ + + if yoffset is None: + yoffset = xoffset + image.load() + return image._new(image.im.offset(xoffset, yoffset)) diff --git a/venv/Lib/site-packages/PIL/ImageCms.py b/venv/Lib/site-packages/PIL/ImageCms.py new file mode 100644 index 0000000..661c3f3 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageCms.py @@ -0,0 +1,985 @@ +# The Python Imaging Library. +# $Id$ + +# Optional color management support, based on Kevin Cazabon's PyCMS +# library. + +# History: + +# 2009-03-08 fl Added to PIL. + +# Copyright (C) 2002-2003 Kevin Cazabon +# Copyright (c) 2009 by Fredrik Lundh +# Copyright (c) 2013 by Eric Soroos + +# See the README file for information on usage and redistribution. See +# below for the original description. + +import sys + +from PIL import Image + +try: + from PIL import _imagingcms +except ImportError as ex: + # Allow error import for doc purposes, but error out when accessing + # anything in core. + from ._util import deferred_error + + _imagingcms = deferred_error(ex) + +DESCRIPTION = """ +pyCMS + + a Python / PIL interface to the littleCMS ICC Color Management System + Copyright (C) 2002-2003 Kevin Cazabon + kevin@cazabon.com + http://www.cazabon.com + + pyCMS home page: http://www.cazabon.com/pyCMS + littleCMS home page: http://www.littlecms.com + (littleCMS is Copyright (C) 1998-2001 Marti Maria) + + Originally released under LGPL. Graciously donated to PIL in + March 2009, for distribution under the standard PIL license + + The pyCMS.py module provides a "clean" interface between Python/PIL and + pyCMSdll, taking care of some of the more complex handling of the direct + pyCMSdll functions, as well as error-checking and making sure that all + relevant data is kept together. + + While it is possible to call pyCMSdll functions directly, it's not highly + recommended. + + Version History: + + 1.0.0 pil Oct 2013 Port to LCMS 2. + + 0.1.0 pil mod March 10, 2009 + + Renamed display profile to proof profile. The proof + profile is the profile of the device that is being + simulated, not the profile of the device which is + actually used to display/print the final simulation + (that'd be the output profile) - also see LCMSAPI.txt + input colorspace -> using 'renderingIntent' -> proof + colorspace -> using 'proofRenderingIntent' -> output + colorspace + + Added LCMS FLAGS support. + Added FLAGS["SOFTPROOFING"] as default flag for + buildProofTransform (otherwise the proof profile/intent + would be ignored). + + 0.1.0 pil March 2009 - added to PIL, as PIL.ImageCms + + 0.0.2 alpha Jan 6, 2002 + + Added try/except statements around type() checks of + potential CObjects... Python won't let you use type() + on them, and raises a TypeError (stupid, if you ask + me!) + + Added buildProofTransformFromOpenProfiles() function. + Additional fixes in DLL, see DLL code for details. + + 0.0.1 alpha first public release, Dec. 26, 2002 + + Known to-do list with current version (of Python interface, not pyCMSdll): + + none + +""" + +VERSION = "1.0.0 pil" + +# --------------------------------------------------------------------. + +core = _imagingcms + +# +# intent/direction values + +INTENT_PERCEPTUAL = 0 +INTENT_RELATIVE_COLORIMETRIC = 1 +INTENT_SATURATION = 2 +INTENT_ABSOLUTE_COLORIMETRIC = 3 + +DIRECTION_INPUT = 0 +DIRECTION_OUTPUT = 1 +DIRECTION_PROOF = 2 + +# +# flags + +FLAGS = { + "MATRIXINPUT": 1, + "MATRIXOUTPUT": 2, + "MATRIXONLY": (1 | 2), + "NOWHITEONWHITEFIXUP": 4, # Don't hot fix scum dot + # Don't create prelinearization tables on precalculated transforms + # (internal use): + "NOPRELINEARIZATION": 16, + "GUESSDEVICECLASS": 32, # Guess device class (for transform2devicelink) + "NOTCACHE": 64, # Inhibit 1-pixel cache + "NOTPRECALC": 256, + "NULLTRANSFORM": 512, # Don't transform anyway + "HIGHRESPRECALC": 1024, # Use more memory to give better accuracy + "LOWRESPRECALC": 2048, # Use less memory to minimize resources + "WHITEBLACKCOMPENSATION": 8192, + "BLACKPOINTCOMPENSATION": 8192, + "GAMUTCHECK": 4096, # Out of Gamut alarm + "SOFTPROOFING": 16384, # Do softproofing + "PRESERVEBLACK": 32768, # Black preservation + "NODEFAULTRESOURCEDEF": 16777216, # CRD special + "GRIDPOINTS": lambda n: ((n) & 0xFF) << 16, # Gridpoints +} + +_MAX_FLAG = 0 +for flag in FLAGS.values(): + if isinstance(flag, int): + _MAX_FLAG = _MAX_FLAG | flag + + +# --------------------------------------------------------------------. +# Experimental PIL-level API +# --------------------------------------------------------------------. + +## +# Profile. + + +class ImageCmsProfile: + def __init__(self, profile): + """ + :param profile: Either a string representing a filename, + a file like object containing a profile or a + low-level profile object + + """ + + if isinstance(profile, str): + self._set(core.profile_open(profile), profile) + elif hasattr(profile, "read"): + self._set(core.profile_frombytes(profile.read())) + elif isinstance(profile, _imagingcms.CmsProfile): + self._set(profile) + else: + raise TypeError("Invalid type for Profile") + + def _set(self, profile, filename=None): + self.profile = profile + self.filename = filename + if profile: + self.product_name = None # profile.product_name + self.product_info = None # profile.product_info + else: + self.product_name = None + self.product_info = None + + def tobytes(self): + """ + Returns the profile in a format suitable for embedding in + saved images. + + :returns: a bytes object containing the ICC profile. + """ + + return core.profile_tobytes(self.profile) + + +class ImageCmsTransform(Image.ImagePointHandler): + + """ + Transform. This can be used with the procedural API, or with the standard + Image.point() method. + + Will return the output profile in the output.info['icc_profile']. + """ + + def __init__( + self, + input, + output, + input_mode, + output_mode, + intent=INTENT_PERCEPTUAL, + proof=None, + proof_intent=INTENT_ABSOLUTE_COLORIMETRIC, + flags=0, + ): + if proof is None: + self.transform = core.buildTransform( + input.profile, output.profile, input_mode, output_mode, intent, flags + ) + else: + self.transform = core.buildProofTransform( + input.profile, + output.profile, + proof.profile, + input_mode, + output_mode, + intent, + proof_intent, + flags, + ) + # Note: inputMode and outputMode are for pyCMS compatibility only + self.input_mode = self.inputMode = input_mode + self.output_mode = self.outputMode = output_mode + + self.output_profile = output + + def point(self, im): + return self.apply(im) + + def apply(self, im, imOut=None): + im.load() + if imOut is None: + imOut = Image.new(self.output_mode, im.size, None) + self.transform.apply(im.im.id, imOut.im.id) + imOut.info["icc_profile"] = self.output_profile.tobytes() + return imOut + + def apply_in_place(self, im): + im.load() + if im.mode != self.output_mode: + raise ValueError("mode mismatch") # wrong output mode + self.transform.apply(im.im.id, im.im.id) + im.info["icc_profile"] = self.output_profile.tobytes() + return im + + +def get_display_profile(handle=None): + """ (experimental) Fetches the profile for the current display device. + :returns: None if the profile is not known. + """ + + if sys.platform != "win32": + return None + + from PIL import ImageWin + + if isinstance(handle, ImageWin.HDC): + profile = core.get_display_profile_win32(handle, 1) + else: + profile = core.get_display_profile_win32(handle or 0) + if profile is None: + return None + return ImageCmsProfile(profile) + + +# --------------------------------------------------------------------. +# pyCMS compatible layer +# --------------------------------------------------------------------. + + +class PyCMSError(Exception): + + """ (pyCMS) Exception class. + This is used for all errors in the pyCMS API. """ + + pass + + +def profileToProfile( + im, + inputProfile, + outputProfile, + renderingIntent=INTENT_PERCEPTUAL, + outputMode=None, + inPlace=False, + flags=0, +): + """ + (pyCMS) Applies an ICC transformation to a given image, mapping from + inputProfile to outputProfile. + + If the input or output profiles specified are not valid filenames, a + PyCMSError will be raised. If inPlace is True and outputMode != im.mode, + a PyCMSError will be raised. If an error occurs during application of + the profiles, a PyCMSError will be raised. If outputMode is not a mode + supported by the outputProfile (or by pyCMS), a PyCMSError will be + raised. + + This function applies an ICC transformation to im from inputProfile's + color space to outputProfile's color space using the specified rendering + intent to decide how to handle out-of-gamut colors. + + OutputMode can be used to specify that a color mode conversion is to + be done using these profiles, but the specified profiles must be able + to handle that mode. I.e., if converting im from RGB to CMYK using + profiles, the input profile must handle RGB data, and the output + profile must handle CMYK data. + + :param im: An open PIL image object (i.e. Image.new(...) or + Image.open(...), etc.) + :param inputProfile: String, as a valid filename path to the ICC input + profile you wish to use for this image, or a profile object + :param outputProfile: String, as a valid filename path to the ICC output + profile you wish to use for this image, or a profile object + :param renderingIntent: Integer (0-3) specifying the rendering intent you + wish to use for the transform + + ImageCms.INTENT_PERCEPTUAL = 0 (DEFAULT) + ImageCms.INTENT_RELATIVE_COLORIMETRIC = 1 + ImageCms.INTENT_SATURATION = 2 + ImageCms.INTENT_ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param outputMode: A valid PIL mode for the output image (i.e. "RGB", + "CMYK", etc.). Note: if rendering the image "inPlace", outputMode + MUST be the same mode as the input, or omitted completely. If + omitted, the outputMode will be the same as the mode of the input + image (im.mode) + :param inPlace: Boolean. If True, the original image is modified in-place, + and None is returned. If False (default), a new Image object is + returned with the transform applied. + :param flags: Integer (0-...) specifying additional flags + :returns: Either None or a new PIL image object, depending on value of + inPlace + :exception PyCMSError: + """ + + if outputMode is None: + outputMode = im.mode + + if not isinstance(renderingIntent, int) or not (0 <= renderingIntent <= 3): + raise PyCMSError("renderingIntent must be an integer between 0 and 3") + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + raise PyCMSError("flags must be an integer between 0 and %s" + _MAX_FLAG) + + try: + if not isinstance(inputProfile, ImageCmsProfile): + inputProfile = ImageCmsProfile(inputProfile) + if not isinstance(outputProfile, ImageCmsProfile): + outputProfile = ImageCmsProfile(outputProfile) + transform = ImageCmsTransform( + inputProfile, + outputProfile, + im.mode, + outputMode, + renderingIntent, + flags=flags, + ) + if inPlace: + transform.apply_in_place(im) + imOut = None + else: + imOut = transform.apply(im) + except (OSError, TypeError, ValueError) as v: + raise PyCMSError(v) + + return imOut + + +def getOpenProfile(profileFilename): + """ + (pyCMS) Opens an ICC profile file. + + The PyCMSProfile object can be passed back into pyCMS for use in creating + transforms and such (as in ImageCms.buildTransformFromOpenProfiles()). + + If profileFilename is not a valid filename for an ICC profile, a PyCMSError + will be raised. + + :param profileFilename: String, as a valid filename path to the ICC profile + you wish to open, or a file-like object. + :returns: A CmsProfile class object. + :exception PyCMSError: + """ + + try: + return ImageCmsProfile(profileFilename) + except (OSError, TypeError, ValueError) as v: + raise PyCMSError(v) + + +def buildTransform( + inputProfile, + outputProfile, + inMode, + outMode, + renderingIntent=INTENT_PERCEPTUAL, + flags=0, +): + """ + (pyCMS) Builds an ICC transform mapping from the inputProfile to the + outputProfile. Use applyTransform to apply the transform to a given + image. + + If the input or output profiles specified are not valid filenames, a + PyCMSError will be raised. If an error occurs during creation of the + transform, a PyCMSError will be raised. + + If inMode or outMode are not a mode supported by the outputProfile (or + by pyCMS), a PyCMSError will be raised. + + This function builds and returns an ICC transform from the inputProfile + to the outputProfile using the renderingIntent to determine what to do + with out-of-gamut colors. It will ONLY work for converting images that + are in inMode to images that are in outMode color format (PIL mode, + i.e. "RGB", "RGBA", "CMYK", etc.). + + Building the transform is a fair part of the overhead in + ImageCms.profileToProfile(), so if you're planning on converting multiple + images using the same input/output settings, this can save you time. + Once you have a transform object, it can be used with + ImageCms.applyProfile() to convert images without the need to re-compute + the lookup table for the transform. + + The reason pyCMS returns a class object rather than a handle directly + to the transform is that it needs to keep track of the PIL input/output + modes that the transform is meant for. These attributes are stored in + the "inMode" and "outMode" attributes of the object (which can be + manually overridden if you really want to, but I don't know of any + time that would be of use, or would even work). + + :param inputProfile: String, as a valid filename path to the ICC input + profile you wish to use for this transform, or a profile object + :param outputProfile: String, as a valid filename path to the ICC output + profile you wish to use for this transform, or a profile object + :param inMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param outMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param renderingIntent: Integer (0-3) specifying the rendering intent you + wish to use for the transform + + ImageCms.INTENT_PERCEPTUAL = 0 (DEFAULT) + ImageCms.INTENT_RELATIVE_COLORIMETRIC = 1 + ImageCms.INTENT_SATURATION = 2 + ImageCms.INTENT_ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param flags: Integer (0-...) specifying additional flags + :returns: A CmsTransform class object. + :exception PyCMSError: + """ + + if not isinstance(renderingIntent, int) or not (0 <= renderingIntent <= 3): + raise PyCMSError("renderingIntent must be an integer between 0 and 3") + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + raise PyCMSError("flags must be an integer between 0 and %s" + _MAX_FLAG) + + try: + if not isinstance(inputProfile, ImageCmsProfile): + inputProfile = ImageCmsProfile(inputProfile) + if not isinstance(outputProfile, ImageCmsProfile): + outputProfile = ImageCmsProfile(outputProfile) + return ImageCmsTransform( + inputProfile, outputProfile, inMode, outMode, renderingIntent, flags=flags + ) + except (OSError, TypeError, ValueError) as v: + raise PyCMSError(v) + + +def buildProofTransform( + inputProfile, + outputProfile, + proofProfile, + inMode, + outMode, + renderingIntent=INTENT_PERCEPTUAL, + proofRenderingIntent=INTENT_ABSOLUTE_COLORIMETRIC, + flags=FLAGS["SOFTPROOFING"], +): + """ + (pyCMS) Builds an ICC transform mapping from the inputProfile to the + outputProfile, but tries to simulate the result that would be + obtained on the proofProfile device. + + If the input, output, or proof profiles specified are not valid + filenames, a PyCMSError will be raised. + + If an error occurs during creation of the transform, a PyCMSError will + be raised. + + If inMode or outMode are not a mode supported by the outputProfile + (or by pyCMS), a PyCMSError will be raised. + + This function builds and returns an ICC transform from the inputProfile + to the outputProfile, but tries to simulate the result that would be + obtained on the proofProfile device using renderingIntent and + proofRenderingIntent to determine what to do with out-of-gamut + colors. This is known as "soft-proofing". It will ONLY work for + converting images that are in inMode to images that are in outMode + color format (PIL mode, i.e. "RGB", "RGBA", "CMYK", etc.). + + Usage of the resulting transform object is exactly the same as with + ImageCms.buildTransform(). + + Proof profiling is generally used when using an output device to get a + good idea of what the final printed/displayed image would look like on + the proofProfile device when it's quicker and easier to use the + output device for judging color. Generally, this means that the + output device is a monitor, or a dye-sub printer (etc.), and the simulated + device is something more expensive, complicated, or time consuming + (making it difficult to make a real print for color judgement purposes). + + Soft-proofing basically functions by adjusting the colors on the + output device to match the colors of the device being simulated. However, + when the simulated device has a much wider gamut than the output + device, you may obtain marginal results. + + :param inputProfile: String, as a valid filename path to the ICC input + profile you wish to use for this transform, or a profile object + :param outputProfile: String, as a valid filename path to the ICC output + (monitor, usually) profile you wish to use for this transform, or a + profile object + :param proofProfile: String, as a valid filename path to the ICC proof + profile you wish to use for this transform, or a profile object + :param inMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param outMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param renderingIntent: Integer (0-3) specifying the rendering intent you + wish to use for the input->proof (simulated) transform + + ImageCms.INTENT_PERCEPTUAL = 0 (DEFAULT) + ImageCms.INTENT_RELATIVE_COLORIMETRIC = 1 + ImageCms.INTENT_SATURATION = 2 + ImageCms.INTENT_ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param proofRenderingIntent: Integer (0-3) specifying the rendering intent + you wish to use for proof->output transform + + ImageCms.INTENT_PERCEPTUAL = 0 (DEFAULT) + ImageCms.INTENT_RELATIVE_COLORIMETRIC = 1 + ImageCms.INTENT_SATURATION = 2 + ImageCms.INTENT_ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param flags: Integer (0-...) specifying additional flags + :returns: A CmsTransform class object. + :exception PyCMSError: + """ + + if not isinstance(renderingIntent, int) or not (0 <= renderingIntent <= 3): + raise PyCMSError("renderingIntent must be an integer between 0 and 3") + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + raise PyCMSError("flags must be an integer between 0 and %s" + _MAX_FLAG) + + try: + if not isinstance(inputProfile, ImageCmsProfile): + inputProfile = ImageCmsProfile(inputProfile) + if not isinstance(outputProfile, ImageCmsProfile): + outputProfile = ImageCmsProfile(outputProfile) + if not isinstance(proofProfile, ImageCmsProfile): + proofProfile = ImageCmsProfile(proofProfile) + return ImageCmsTransform( + inputProfile, + outputProfile, + inMode, + outMode, + renderingIntent, + proofProfile, + proofRenderingIntent, + flags, + ) + except (OSError, TypeError, ValueError) as v: + raise PyCMSError(v) + + +buildTransformFromOpenProfiles = buildTransform +buildProofTransformFromOpenProfiles = buildProofTransform + + +def applyTransform(im, transform, inPlace=False): + """ + (pyCMS) Applies a transform to a given image. + + If im.mode != transform.inMode, a PyCMSError is raised. + + If inPlace is True and transform.inMode != transform.outMode, a + PyCMSError is raised. + + If im.mode, transform.inMode, or transform.outMode is not supported by + pyCMSdll or the profiles you used for the transform, a PyCMSError is + raised. + + If an error occurs while the transform is being applied, a PyCMSError + is raised. + + This function applies a pre-calculated transform (from + ImageCms.buildTransform() or ImageCms.buildTransformFromOpenProfiles()) + to an image. The transform can be used for multiple images, saving + considerable calculation time if doing the same conversion multiple times. + + If you want to modify im in-place instead of receiving a new image as + the return value, set inPlace to True. This can only be done if + transform.inMode and transform.outMode are the same, because we can't + change the mode in-place (the buffer sizes for some modes are + different). The default behavior is to return a new Image object of + the same dimensions in mode transform.outMode. + + :param im: A PIL Image object, and im.mode must be the same as the inMode + supported by the transform. + :param transform: A valid CmsTransform class object + :param inPlace: Bool. If True, im is modified in place and None is + returned, if False, a new Image object with the transform applied is + returned (and im is not changed). The default is False. + :returns: Either None, or a new PIL Image object, depending on the value of + inPlace. The profile will be returned in the image's + info['icc_profile']. + :exception PyCMSError: + """ + + try: + if inPlace: + transform.apply_in_place(im) + imOut = None + else: + imOut = transform.apply(im) + except (TypeError, ValueError) as v: + raise PyCMSError(v) + + return imOut + + +def createProfile(colorSpace, colorTemp=-1): + """ + (pyCMS) Creates a profile. + + If colorSpace not in ["LAB", "XYZ", "sRGB"], a PyCMSError is raised + + If using LAB and colorTemp != a positive integer, a PyCMSError is raised. + + If an error occurs while creating the profile, a PyCMSError is raised. + + Use this function to create common profiles on-the-fly instead of + having to supply a profile on disk and knowing the path to it. It + returns a normal CmsProfile object that can be passed to + ImageCms.buildTransformFromOpenProfiles() to create a transform to apply + to images. + + :param colorSpace: String, the color space of the profile you wish to + create. + Currently only "LAB", "XYZ", and "sRGB" are supported. + :param colorTemp: Positive integer for the white point for the profile, in + degrees Kelvin (i.e. 5000, 6500, 9600, etc.). The default is for D50 + illuminant if omitted (5000k). colorTemp is ONLY applied to LAB + profiles, and is ignored for XYZ and sRGB. + :returns: A CmsProfile class object + :exception PyCMSError: + """ + + if colorSpace not in ["LAB", "XYZ", "sRGB"]: + raise PyCMSError( + "Color space not supported for on-the-fly profile creation (%s)" + % colorSpace + ) + + if colorSpace == "LAB": + try: + colorTemp = float(colorTemp) + except (TypeError, ValueError): + raise PyCMSError( + 'Color temperature must be numeric, "%s" not valid' % colorTemp + ) + + try: + return core.createProfile(colorSpace, colorTemp) + except (TypeError, ValueError) as v: + raise PyCMSError(v) + + +def getProfileName(profile): + """ + + (pyCMS) Gets the internal product name for the given profile. + + If profile isn't a valid CmsProfile object or filename to a profile, + a PyCMSError is raised If an error occurs while trying to obtain the + name tag, a PyCMSError is raised. + + Use this function to obtain the INTERNAL name of the profile (stored + in an ICC tag in the profile itself), usually the one used when the + profile was originally created. Sometimes this tag also contains + additional information supplied by the creator. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal name of the profile as stored + in an ICC tag. + :exception PyCMSError: + """ + + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + # do it in python, not c. + # // name was "%s - %s" (model, manufacturer) || Description , + # // but if the Model and Manufacturer were the same or the model + # // was long, Just the model, in 1.x + model = profile.profile.model + manufacturer = profile.profile.manufacturer + + if not (model or manufacturer): + return (profile.profile.profile_description or "") + "\n" + if not manufacturer or len(model) > 30: + return model + "\n" + return "{} - {}\n".format(model, manufacturer) + + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) + + +def getProfileInfo(profile): + """ + (pyCMS) Gets the internal product information for the given profile. + + If profile isn't a valid CmsProfile object or filename to a profile, + a PyCMSError is raised. + + If an error occurs while trying to obtain the info tag, a PyCMSError + is raised + + Use this function to obtain the information stored in the profile's + info tag. This often contains details about the profile, and how it + was created, as supplied by the creator. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + + try: + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + # add an extra newline to preserve pyCMS compatibility + # Python, not C. the white point bits weren't working well, + # so skipping. + # info was description \r\n\r\n copyright \r\n\r\n K007 tag \r\n\r\n whitepoint + description = profile.profile.profile_description + cpright = profile.profile.copyright + arr = [] + for elt in (description, cpright): + if elt: + arr.append(elt) + return "\r\n\r\n".join(arr) + "\r\n\r\n" + + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) + + +def getProfileCopyright(profile): + """ + (pyCMS) Gets the copyright for the given profile. + + If profile isn't a valid CmsProfile object or filename to a profile, + a PyCMSError is raised. + + If an error occurs while trying to obtain the copyright tag, a PyCMSError + is raised + + Use this function to obtain the information stored in the profile's + copyright tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return (profile.profile.copyright or "") + "\n" + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) + + +def getProfileManufacturer(profile): + """ + (pyCMS) Gets the manufacturer for the given profile. + + If profile isn't a valid CmsProfile object or filename to a profile, + a PyCMSError is raised. + + If an error occurs while trying to obtain the manufacturer tag, a + PyCMSError is raised + + Use this function to obtain the information stored in the profile's + manufacturer tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return (profile.profile.manufacturer or "") + "\n" + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) + + +def getProfileModel(profile): + """ + (pyCMS) Gets the model for the given profile. + + If profile isn't a valid CmsProfile object or filename to a profile, + a PyCMSError is raised. + + If an error occurs while trying to obtain the model tag, a PyCMSError + is raised + + Use this function to obtain the information stored in the profile's + model tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return (profile.profile.model or "") + "\n" + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) + + +def getProfileDescription(profile): + """ + (pyCMS) Gets the description for the given profile. + + If profile isn't a valid CmsProfile object or filename to a profile, + a PyCMSError is raised. + + If an error occurs while trying to obtain the description tag, a PyCMSError + is raised + + Use this function to obtain the information stored in the profile's + description tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in an + ICC tag. + :exception PyCMSError: + """ + + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return (profile.profile.profile_description or "") + "\n" + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) + + +def getDefaultIntent(profile): + """ + (pyCMS) Gets the default intent name for the given profile. + + If profile isn't a valid CmsProfile object or filename to a profile, + a PyCMSError is raised. + + If an error occurs while trying to obtain the default intent, a + PyCMSError is raised. + + Use this function to determine the default (and usually best optimized) + rendering intent for this profile. Most profiles support multiple + rendering intents, but are intended mostly for one type of conversion. + If you wish to use a different intent than returned, use + ImageCms.isIntentSupported() to verify it will work first. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: Integer 0-3 specifying the default rendering intent for this + profile. + + ImageCms.INTENT_PERCEPTUAL = 0 (DEFAULT) + ImageCms.INTENT_RELATIVE_COLORIMETRIC = 1 + ImageCms.INTENT_SATURATION = 2 + ImageCms.INTENT_ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :exception PyCMSError: + """ + + try: + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return profile.profile.rendering_intent + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) + + +def isIntentSupported(profile, intent, direction): + """ + (pyCMS) Checks if a given intent is supported. + + Use this function to verify that you can use your desired + renderingIntent with profile, and that profile can be used for the + input/output/proof profile as you desire. + + Some profiles are created specifically for one "direction", can cannot + be used for others. Some profiles can only be used for certain + rendering intents... so it's best to either verify this before trying + to create a transform with them (using this function), or catch the + potential PyCMSError that will occur if they don't support the modes + you select. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :param intent: Integer (0-3) specifying the rendering intent you wish to + use with this profile + + ImageCms.INTENT_PERCEPTUAL = 0 (DEFAULT) + ImageCms.INTENT_RELATIVE_COLORIMETRIC = 1 + ImageCms.INTENT_SATURATION = 2 + ImageCms.INTENT_ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param direction: Integer specifying if the profile is to be used for + input, output, or proof + + INPUT = 0 (or use ImageCms.DIRECTION_INPUT) + OUTPUT = 1 (or use ImageCms.DIRECTION_OUTPUT) + PROOF = 2 (or use ImageCms.DIRECTION_PROOF) + + :returns: 1 if the intent/direction are supported, -1 if they are not. + :exception PyCMSError: + """ + + try: + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + # FIXME: I get different results for the same data w. different + # compilers. Bug in LittleCMS or in the binding? + if profile.profile.is_intent_supported(intent, direction): + return 1 + else: + return -1 + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) + + +def versions(): + """ + (pyCMS) Fetches versions. + """ + + return (VERSION, core.littlecms_version, sys.version.split()[0], Image.__version__) diff --git a/venv/Lib/site-packages/PIL/ImageColor.py b/venv/Lib/site-packages/PIL/ImageColor.py new file mode 100644 index 0000000..9cf7a99 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageColor.py @@ -0,0 +1,300 @@ +# +# The Python Imaging Library +# $Id$ +# +# map CSS3-style colour description strings to RGB +# +# History: +# 2002-10-24 fl Added support for CSS-style color strings +# 2002-12-15 fl Added RGBA support +# 2004-03-27 fl Fixed remaining int() problems for Python 1.5.2 +# 2004-07-19 fl Fixed gray/grey spelling issues +# 2009-03-05 fl Fixed rounding error in grayscale calculation +# +# Copyright (c) 2002-2004 by Secret Labs AB +# Copyright (c) 2002-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import re + +from . import Image + + +def getrgb(color): + """ + Convert a color string to an RGB tuple. If the string cannot be parsed, + this function raises a :py:exc:`ValueError` exception. + + .. versionadded:: 1.1.4 + + :param color: A color string + :return: ``(red, green, blue[, alpha])`` + """ + color = color.lower() + + rgb = colormap.get(color, None) + if rgb: + if isinstance(rgb, tuple): + return rgb + colormap[color] = rgb = getrgb(rgb) + return rgb + + # check for known string formats + if re.match("#[a-f0-9]{3}$", color): + return (int(color[1] * 2, 16), int(color[2] * 2, 16), int(color[3] * 2, 16)) + + if re.match("#[a-f0-9]{4}$", color): + return ( + int(color[1] * 2, 16), + int(color[2] * 2, 16), + int(color[3] * 2, 16), + int(color[4] * 2, 16), + ) + + if re.match("#[a-f0-9]{6}$", color): + return (int(color[1:3], 16), int(color[3:5], 16), int(color[5:7], 16)) + + if re.match("#[a-f0-9]{8}$", color): + return ( + int(color[1:3], 16), + int(color[3:5], 16), + int(color[5:7], 16), + int(color[7:9], 16), + ) + + m = re.match(r"rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$", color) + if m: + return (int(m.group(1)), int(m.group(2)), int(m.group(3))) + + m = re.match(r"rgb\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)$", color) + if m: + return ( + int((int(m.group(1)) * 255) / 100.0 + 0.5), + int((int(m.group(2)) * 255) / 100.0 + 0.5), + int((int(m.group(3)) * 255) / 100.0 + 0.5), + ) + + m = re.match( + r"hsl\(\s*(\d+\.?\d*)\s*,\s*(\d+\.?\d*)%\s*,\s*(\d+\.?\d*)%\s*\)$", color + ) + if m: + from colorsys import hls_to_rgb + + rgb = hls_to_rgb( + float(m.group(1)) / 360.0, + float(m.group(3)) / 100.0, + float(m.group(2)) / 100.0, + ) + return ( + int(rgb[0] * 255 + 0.5), + int(rgb[1] * 255 + 0.5), + int(rgb[2] * 255 + 0.5), + ) + + m = re.match( + r"hs[bv]\(\s*(\d+\.?\d*)\s*,\s*(\d+\.?\d*)%\s*,\s*(\d+\.?\d*)%\s*\)$", color + ) + if m: + from colorsys import hsv_to_rgb + + rgb = hsv_to_rgb( + float(m.group(1)) / 360.0, + float(m.group(2)) / 100.0, + float(m.group(3)) / 100.0, + ) + return ( + int(rgb[0] * 255 + 0.5), + int(rgb[1] * 255 + 0.5), + int(rgb[2] * 255 + 0.5), + ) + + m = re.match(r"rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$", color) + if m: + return (int(m.group(1)), int(m.group(2)), int(m.group(3)), int(m.group(4))) + raise ValueError("unknown color specifier: %r" % color) + + +def getcolor(color, mode): + """ + Same as :py:func:`~PIL.ImageColor.getrgb`, but converts the RGB value to a + greyscale value if the mode is not color or a palette image. If the string + cannot be parsed, this function raises a :py:exc:`ValueError` exception. + + .. versionadded:: 1.1.4 + + :param color: A color string + :return: ``(graylevel [, alpha]) or (red, green, blue[, alpha])`` + """ + # same as getrgb, but converts the result to the given mode + color, alpha = getrgb(color), 255 + if len(color) == 4: + color, alpha = color[0:3], color[3] + + if Image.getmodebase(mode) == "L": + r, g, b = color + # ITU-R Recommendation 601-2 for nonlinear RGB + # scaled to 24 bits to match the convert's implementation. + color = (r * 19595 + g * 38470 + b * 7471 + 0x8000) >> 16 + if mode[-1] == "A": + return (color, alpha) + else: + if mode[-1] == "A": + return color + (alpha,) + return color + + +colormap = { + # X11 colour table from https://drafts.csswg.org/css-color-4/, with + # gray/grey spelling issues fixed. This is a superset of HTML 4.0 + # colour names used in CSS 1. + "aliceblue": "#f0f8ff", + "antiquewhite": "#faebd7", + "aqua": "#00ffff", + "aquamarine": "#7fffd4", + "azure": "#f0ffff", + "beige": "#f5f5dc", + "bisque": "#ffe4c4", + "black": "#000000", + "blanchedalmond": "#ffebcd", + "blue": "#0000ff", + "blueviolet": "#8a2be2", + "brown": "#a52a2a", + "burlywood": "#deb887", + "cadetblue": "#5f9ea0", + "chartreuse": "#7fff00", + "chocolate": "#d2691e", + "coral": "#ff7f50", + "cornflowerblue": "#6495ed", + "cornsilk": "#fff8dc", + "crimson": "#dc143c", + "cyan": "#00ffff", + "darkblue": "#00008b", + "darkcyan": "#008b8b", + "darkgoldenrod": "#b8860b", + "darkgray": "#a9a9a9", + "darkgrey": "#a9a9a9", + "darkgreen": "#006400", + "darkkhaki": "#bdb76b", + "darkmagenta": "#8b008b", + "darkolivegreen": "#556b2f", + "darkorange": "#ff8c00", + "darkorchid": "#9932cc", + "darkred": "#8b0000", + "darksalmon": "#e9967a", + "darkseagreen": "#8fbc8f", + "darkslateblue": "#483d8b", + "darkslategray": "#2f4f4f", + "darkslategrey": "#2f4f4f", + "darkturquoise": "#00ced1", + "darkviolet": "#9400d3", + "deeppink": "#ff1493", + "deepskyblue": "#00bfff", + "dimgray": "#696969", + "dimgrey": "#696969", + "dodgerblue": "#1e90ff", + "firebrick": "#b22222", + "floralwhite": "#fffaf0", + "forestgreen": "#228b22", + "fuchsia": "#ff00ff", + "gainsboro": "#dcdcdc", + "ghostwhite": "#f8f8ff", + "gold": "#ffd700", + "goldenrod": "#daa520", + "gray": "#808080", + "grey": "#808080", + "green": "#008000", + "greenyellow": "#adff2f", + "honeydew": "#f0fff0", + "hotpink": "#ff69b4", + "indianred": "#cd5c5c", + "indigo": "#4b0082", + "ivory": "#fffff0", + "khaki": "#f0e68c", + "lavender": "#e6e6fa", + "lavenderblush": "#fff0f5", + "lawngreen": "#7cfc00", + "lemonchiffon": "#fffacd", + "lightblue": "#add8e6", + "lightcoral": "#f08080", + "lightcyan": "#e0ffff", + "lightgoldenrodyellow": "#fafad2", + "lightgreen": "#90ee90", + "lightgray": "#d3d3d3", + "lightgrey": "#d3d3d3", + "lightpink": "#ffb6c1", + "lightsalmon": "#ffa07a", + "lightseagreen": "#20b2aa", + "lightskyblue": "#87cefa", + "lightslategray": "#778899", + "lightslategrey": "#778899", + "lightsteelblue": "#b0c4de", + "lightyellow": "#ffffe0", + "lime": "#00ff00", + "limegreen": "#32cd32", + "linen": "#faf0e6", + "magenta": "#ff00ff", + "maroon": "#800000", + "mediumaquamarine": "#66cdaa", + "mediumblue": "#0000cd", + "mediumorchid": "#ba55d3", + "mediumpurple": "#9370db", + "mediumseagreen": "#3cb371", + "mediumslateblue": "#7b68ee", + "mediumspringgreen": "#00fa9a", + "mediumturquoise": "#48d1cc", + "mediumvioletred": "#c71585", + "midnightblue": "#191970", + "mintcream": "#f5fffa", + "mistyrose": "#ffe4e1", + "moccasin": "#ffe4b5", + "navajowhite": "#ffdead", + "navy": "#000080", + "oldlace": "#fdf5e6", + "olive": "#808000", + "olivedrab": "#6b8e23", + "orange": "#ffa500", + "orangered": "#ff4500", + "orchid": "#da70d6", + "palegoldenrod": "#eee8aa", + "palegreen": "#98fb98", + "paleturquoise": "#afeeee", + "palevioletred": "#db7093", + "papayawhip": "#ffefd5", + "peachpuff": "#ffdab9", + "peru": "#cd853f", + "pink": "#ffc0cb", + "plum": "#dda0dd", + "powderblue": "#b0e0e6", + "purple": "#800080", + "rebeccapurple": "#663399", + "red": "#ff0000", + "rosybrown": "#bc8f8f", + "royalblue": "#4169e1", + "saddlebrown": "#8b4513", + "salmon": "#fa8072", + "sandybrown": "#f4a460", + "seagreen": "#2e8b57", + "seashell": "#fff5ee", + "sienna": "#a0522d", + "silver": "#c0c0c0", + "skyblue": "#87ceeb", + "slateblue": "#6a5acd", + "slategray": "#708090", + "slategrey": "#708090", + "snow": "#fffafa", + "springgreen": "#00ff7f", + "steelblue": "#4682b4", + "tan": "#d2b48c", + "teal": "#008080", + "thistle": "#d8bfd8", + "tomato": "#ff6347", + "turquoise": "#40e0d0", + "violet": "#ee82ee", + "wheat": "#f5deb3", + "white": "#ffffff", + "whitesmoke": "#f5f5f5", + "yellow": "#ffff00", + "yellowgreen": "#9acd32", +} diff --git a/venv/Lib/site-packages/PIL/ImageDraw.py b/venv/Lib/site-packages/PIL/ImageDraw.py new file mode 100644 index 0000000..7abd459 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageDraw.py @@ -0,0 +1,564 @@ +# +# The Python Imaging Library +# $Id$ +# +# drawing interface operations +# +# History: +# 1996-04-13 fl Created (experimental) +# 1996-08-07 fl Filled polygons, ellipses. +# 1996-08-13 fl Added text support +# 1998-06-28 fl Handle I and F images +# 1998-12-29 fl Added arc; use arc primitive to draw ellipses +# 1999-01-10 fl Added shape stuff (experimental) +# 1999-02-06 fl Added bitmap support +# 1999-02-11 fl Changed all primitives to take options +# 1999-02-20 fl Fixed backwards compatibility +# 2000-10-12 fl Copy on write, when necessary +# 2001-02-18 fl Use default ink for bitmap/text also in fill mode +# 2002-10-24 fl Added support for CSS-style color strings +# 2002-12-10 fl Added experimental support for RGBA-on-RGB drawing +# 2002-12-11 fl Refactored low-level drawing API (work in progress) +# 2004-08-26 fl Made Draw() a factory function, added getdraw() support +# 2004-09-04 fl Added width support to line primitive +# 2004-09-10 fl Added font mode handling +# 2006-06-19 fl Added font bearing support (getmask2) +# +# Copyright (c) 1997-2006 by Secret Labs AB +# Copyright (c) 1996-2006 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import math +import numbers + +from . import Image, ImageColor + + +""" +A simple 2D drawing interface for PIL images. +

+Application code should use the Draw factory, instead of +directly. +""" + + +class ImageDraw: + def __init__(self, im, mode=None): + """ + Create a drawing instance. + + :param im: The image to draw in. + :param mode: Optional mode to use for color values. For RGB + images, this argument can be RGB or RGBA (to blend the + drawing into the image). For all other modes, this argument + must be the same as the image mode. If omitted, the mode + defaults to the mode of the image. + """ + im.load() + if im.readonly: + im._copy() # make it writeable + blend = 0 + if mode is None: + mode = im.mode + if mode != im.mode: + if mode == "RGBA" and im.mode == "RGB": + blend = 1 + else: + raise ValueError("mode mismatch") + if mode == "P": + self.palette = im.palette + else: + self.palette = None + self.im = im.im + self.draw = Image.core.draw(self.im, blend) + self.mode = mode + if mode in ("I", "F"): + self.ink = self.draw.draw_ink(1) + else: + self.ink = self.draw.draw_ink(-1) + if mode in ("1", "P", "I", "F"): + # FIXME: fix Fill2 to properly support matte for I+F images + self.fontmode = "1" + else: + self.fontmode = "L" # aliasing is okay for other modes + self.fill = 0 + self.font = None + + def getfont(self): + """ + Get the current default font. + + :returns: An image font.""" + if not self.font: + # FIXME: should add a font repository + from . import ImageFont + + self.font = ImageFont.load_default() + return self.font + + def _getink(self, ink, fill=None): + if ink is None and fill is None: + if self.fill: + fill = self.ink + else: + ink = self.ink + else: + if ink is not None: + if isinstance(ink, str): + ink = ImageColor.getcolor(ink, self.mode) + if self.palette and not isinstance(ink, numbers.Number): + ink = self.palette.getcolor(ink) + ink = self.draw.draw_ink(ink) + if fill is not None: + if isinstance(fill, str): + fill = ImageColor.getcolor(fill, self.mode) + if self.palette and not isinstance(fill, numbers.Number): + fill = self.palette.getcolor(fill) + fill = self.draw.draw_ink(fill) + return ink, fill + + def arc(self, xy, start, end, fill=None, width=0): + """Draw an arc.""" + ink, fill = self._getink(fill) + if ink is not None: + self.draw.draw_arc(xy, start, end, ink, width) + + def bitmap(self, xy, bitmap, fill=None): + """Draw a bitmap.""" + bitmap.load() + ink, fill = self._getink(fill) + if ink is None: + ink = fill + if ink is not None: + self.draw.draw_bitmap(xy, bitmap.im, ink) + + def chord(self, xy, start, end, fill=None, outline=None, width=1): + """Draw a chord.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_chord(xy, start, end, fill, 1) + if ink is not None and ink != fill and width != 0: + self.draw.draw_chord(xy, start, end, ink, 0, width) + + def ellipse(self, xy, fill=None, outline=None, width=1): + """Draw an ellipse.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_ellipse(xy, fill, 1) + if ink is not None and ink != fill and width != 0: + self.draw.draw_ellipse(xy, ink, 0, width) + + def line(self, xy, fill=None, width=0, joint=None): + """Draw a line, or a connected sequence of line segments.""" + ink = self._getink(fill)[0] + if ink is not None: + self.draw.draw_lines(xy, ink, width) + if joint == "curve" and width > 4: + for i in range(1, len(xy) - 1): + point = xy[i] + angles = [ + math.degrees(math.atan2(end[0] - start[0], start[1] - end[1])) + % 360 + for start, end in ((xy[i - 1], point), (point, xy[i + 1])) + ] + if angles[0] == angles[1]: + # This is a straight line, so no joint is required + continue + + def coord_at_angle(coord, angle): + x, y = coord + angle -= 90 + distance = width / 2 - 1 + return tuple( + [ + p + (math.floor(p_d) if p_d > 0 else math.ceil(p_d)) + for p, p_d in ( + (x, distance * math.cos(math.radians(angle))), + (y, distance * math.sin(math.radians(angle))), + ) + ] + ) + + flipped = ( + angles[1] > angles[0] and angles[1] - 180 > angles[0] + ) or (angles[1] < angles[0] and angles[1] + 180 > angles[0]) + coords = [ + (point[0] - width / 2 + 1, point[1] - width / 2 + 1), + (point[0] + width / 2 - 1, point[1] + width / 2 - 1), + ] + if flipped: + start, end = (angles[1] + 90, angles[0] + 90) + else: + start, end = (angles[0] - 90, angles[1] - 90) + self.pieslice(coords, start - 90, end - 90, fill) + + if width > 8: + # Cover potential gaps between the line and the joint + if flipped: + gapCoords = [ + coord_at_angle(point, angles[0] + 90), + point, + coord_at_angle(point, angles[1] + 90), + ] + else: + gapCoords = [ + coord_at_angle(point, angles[0] - 90), + point, + coord_at_angle(point, angles[1] - 90), + ] + self.line(gapCoords, fill, width=3) + + def shape(self, shape, fill=None, outline=None): + """(Experimental) Draw a shape.""" + shape.close() + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_outline(shape, fill, 1) + if ink is not None and ink != fill: + self.draw.draw_outline(shape, ink, 0) + + def pieslice(self, xy, start, end, fill=None, outline=None, width=1): + """Draw a pieslice.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_pieslice(xy, start, end, fill, 1) + if ink is not None and ink != fill and width != 0: + self.draw.draw_pieslice(xy, start, end, ink, 0, width) + + def point(self, xy, fill=None): + """Draw one or more individual pixels.""" + ink, fill = self._getink(fill) + if ink is not None: + self.draw.draw_points(xy, ink) + + def polygon(self, xy, fill=None, outline=None): + """Draw a polygon.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_polygon(xy, fill, 1) + if ink is not None and ink != fill: + self.draw.draw_polygon(xy, ink, 0) + + def rectangle(self, xy, fill=None, outline=None, width=1): + """Draw a rectangle.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_rectangle(xy, fill, 1) + if ink is not None and ink != fill and width != 0: + self.draw.draw_rectangle(xy, ink, 0, width) + + def _multiline_check(self, text): + """Draw text.""" + split_character = "\n" if isinstance(text, str) else b"\n" + + return split_character in text + + def _multiline_split(self, text): + split_character = "\n" if isinstance(text, str) else b"\n" + + return text.split(split_character) + + def text( + self, + xy, + text, + fill=None, + font=None, + anchor=None, + spacing=4, + align="left", + direction=None, + features=None, + language=None, + stroke_width=0, + stroke_fill=None, + *args, + **kwargs + ): + if self._multiline_check(text): + return self.multiline_text( + xy, + text, + fill, + font, + anchor, + spacing, + align, + direction, + features, + language, + stroke_width, + stroke_fill, + ) + + if font is None: + font = self.getfont() + + def getink(fill): + ink, fill = self._getink(fill) + if ink is None: + return fill + return ink + + def draw_text(ink, stroke_width=0, stroke_offset=None): + coord = xy + try: + mask, offset = font.getmask2( + text, + self.fontmode, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + *args, + **kwargs, + ) + coord = coord[0] + offset[0], coord[1] + offset[1] + except AttributeError: + try: + mask = font.getmask( + text, + self.fontmode, + direction, + features, + language, + stroke_width, + *args, + **kwargs, + ) + except TypeError: + mask = font.getmask(text) + if stroke_offset: + coord = coord[0] + stroke_offset[0], coord[1] + stroke_offset[1] + self.draw.draw_bitmap(coord, mask, ink) + + ink = getink(fill) + if ink is not None: + stroke_ink = None + if stroke_width: + stroke_ink = getink(stroke_fill) if stroke_fill is not None else ink + + if stroke_ink is not None: + # Draw stroked text + draw_text(stroke_ink, stroke_width) + + # Draw normal text + draw_text(ink, 0, (stroke_width, stroke_width)) + else: + # Only draw normal text + draw_text(ink) + + def multiline_text( + self, + xy, + text, + fill=None, + font=None, + anchor=None, + spacing=4, + align="left", + direction=None, + features=None, + language=None, + stroke_width=0, + stroke_fill=None, + ): + widths = [] + max_width = 0 + lines = self._multiline_split(text) + line_spacing = ( + self.textsize("A", font=font, stroke_width=stroke_width)[1] + spacing + ) + for line in lines: + line_width, line_height = self.textsize( + line, + font, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + ) + widths.append(line_width) + max_width = max(max_width, line_width) + left, top = xy + for idx, line in enumerate(lines): + if align == "left": + pass # left = x + elif align == "center": + left += (max_width - widths[idx]) / 2.0 + elif align == "right": + left += max_width - widths[idx] + else: + raise ValueError('align must be "left", "center" or "right"') + self.text( + (left, top), + line, + fill, + font, + anchor, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + stroke_fill=stroke_fill, + ) + top += line_spacing + left = xy[0] + + def textsize( + self, + text, + font=None, + spacing=4, + direction=None, + features=None, + language=None, + stroke_width=0, + ): + """Get the size of a given string, in pixels.""" + if self._multiline_check(text): + return self.multiline_textsize( + text, font, spacing, direction, features, language, stroke_width + ) + + if font is None: + font = self.getfont() + return font.getsize(text, direction, features, language, stroke_width) + + def multiline_textsize( + self, + text, + font=None, + spacing=4, + direction=None, + features=None, + language=None, + stroke_width=0, + ): + max_width = 0 + lines = self._multiline_split(text) + line_spacing = ( + self.textsize("A", font=font, stroke_width=stroke_width)[1] + spacing + ) + for line in lines: + line_width, line_height = self.textsize( + line, font, spacing, direction, features, language, stroke_width + ) + max_width = max(max_width, line_width) + return max_width, len(lines) * line_spacing - spacing + + +def Draw(im, mode=None): + """ + A simple 2D drawing interface for PIL images. + + :param im: The image to draw in. + :param mode: Optional mode to use for color values. For RGB + images, this argument can be RGB or RGBA (to blend the + drawing into the image). For all other modes, this argument + must be the same as the image mode. If omitted, the mode + defaults to the mode of the image. + """ + try: + return im.getdraw(mode) + except AttributeError: + return ImageDraw(im, mode) + + +# experimental access to the outline API +try: + Outline = Image.core.outline +except AttributeError: + Outline = None + + +def getdraw(im=None, hints=None): + """ + (Experimental) A more advanced 2D drawing interface for PIL images, + based on the WCK interface. + + :param im: The image to draw in. + :param hints: An optional list of hints. + :returns: A (drawing context, drawing resource factory) tuple. + """ + # FIXME: this needs more work! + # FIXME: come up with a better 'hints' scheme. + handler = None + if not hints or "nicest" in hints: + try: + from . import _imagingagg as handler + except ImportError: + pass + if handler is None: + from . import ImageDraw2 as handler + if im: + im = handler.Draw(im) + return im, handler + + +def floodfill(image, xy, value, border=None, thresh=0): + """ + (experimental) Fills a bounded region with a given color. + + :param image: Target image. + :param xy: Seed position (a 2-item coordinate tuple). See + :ref:`coordinate-system`. + :param value: Fill color. + :param border: Optional border value. If given, the region consists of + pixels with a color different from the border color. If not given, + the region consists of pixels having the same color as the seed + pixel. + :param thresh: Optional threshold value which specifies a maximum + tolerable difference of a pixel value from the 'background' in + order for it to be replaced. Useful for filling regions of + non-homogeneous, but similar, colors. + """ + # based on an implementation by Eric S. Raymond + # amended by yo1995 @20180806 + pixel = image.load() + x, y = xy + try: + background = pixel[x, y] + if _color_diff(value, background) <= thresh: + return # seed point already has fill color + pixel[x, y] = value + except (ValueError, IndexError): + return # seed point outside image + edge = {(x, y)} + # use a set to keep record of current and previous edge pixels + # to reduce memory consumption + full_edge = set() + while edge: + new_edge = set() + for (x, y) in edge: # 4 adjacent method + for (s, t) in ((x + 1, y), (x - 1, y), (x, y + 1), (x, y - 1)): + # If already processed, or if a coordinate is negative, skip + if (s, t) in full_edge or s < 0 or t < 0: + continue + try: + p = pixel[s, t] + except (ValueError, IndexError): + pass + else: + full_edge.add((s, t)) + if border is None: + fill = _color_diff(p, background) <= thresh + else: + fill = p != value and p != border + if fill: + pixel[s, t] = value + new_edge.add((s, t)) + full_edge = edge # discard pixels processed + edge = new_edge + + +def _color_diff(color1, color2): + """ + Uses 1-norm distance to calculate difference between two values. + """ + if isinstance(color2, tuple): + return sum([abs(color1[i] - color2[i]) for i in range(0, len(color2))]) + else: + return abs(color1 - color2) diff --git a/venv/Lib/site-packages/PIL/ImageDraw2.py b/venv/Lib/site-packages/PIL/ImageDraw2.py new file mode 100644 index 0000000..20b5fe4 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageDraw2.py @@ -0,0 +1,107 @@ +# +# The Python Imaging Library +# $Id$ +# +# WCK-style drawing interface operations +# +# History: +# 2003-12-07 fl created +# 2005-05-15 fl updated; added to PIL as ImageDraw2 +# 2005-05-15 fl added text support +# 2005-05-20 fl added arc/chord/pieslice support +# +# Copyright (c) 2003-2005 by Secret Labs AB +# Copyright (c) 2003-2005 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageColor, ImageDraw, ImageFont, ImagePath + + +class Pen: + def __init__(self, color, width=1, opacity=255): + self.color = ImageColor.getrgb(color) + self.width = width + + +class Brush: + def __init__(self, color, opacity=255): + self.color = ImageColor.getrgb(color) + + +class Font: + def __init__(self, color, file, size=12): + # FIXME: add support for bitmap fonts + self.color = ImageColor.getrgb(color) + self.font = ImageFont.truetype(file, size) + + +class Draw: + def __init__(self, image, size=None, color=None): + if not hasattr(image, "im"): + image = Image.new(image, size, color) + self.draw = ImageDraw.Draw(image) + self.image = image + self.transform = None + + def flush(self): + return self.image + + def render(self, op, xy, pen, brush=None): + # handle color arguments + outline = fill = None + width = 1 + if isinstance(pen, Pen): + outline = pen.color + width = pen.width + elif isinstance(brush, Pen): + outline = brush.color + width = brush.width + if isinstance(brush, Brush): + fill = brush.color + elif isinstance(pen, Brush): + fill = pen.color + # handle transformation + if self.transform: + xy = ImagePath.Path(xy) + xy.transform(self.transform) + # render the item + if op == "line": + self.draw.line(xy, fill=outline, width=width) + else: + getattr(self.draw, op)(xy, fill=fill, outline=outline) + + def settransform(self, offset): + (xoffset, yoffset) = offset + self.transform = (1, 0, xoffset, 0, 1, yoffset) + + def arc(self, xy, start, end, *options): + self.render("arc", xy, start, end, *options) + + def chord(self, xy, start, end, *options): + self.render("chord", xy, start, end, *options) + + def ellipse(self, xy, *options): + self.render("ellipse", xy, *options) + + def line(self, xy, *options): + self.render("line", xy, *options) + + def pieslice(self, xy, start, end, *options): + self.render("pieslice", xy, start, end, *options) + + def polygon(self, xy, *options): + self.render("polygon", xy, *options) + + def rectangle(self, xy, *options): + self.render("rectangle", xy, *options) + + def text(self, xy, text, font): + if self.transform: + xy = ImagePath.Path(xy) + xy.transform(self.transform) + self.draw.text(xy, text, font=font.font, fill=font.color) + + def textsize(self, text, font): + return self.draw.textsize(text, font=font.font) diff --git a/venv/Lib/site-packages/PIL/ImageEnhance.py b/venv/Lib/site-packages/PIL/ImageEnhance.py new file mode 100644 index 0000000..3b79d5c --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageEnhance.py @@ -0,0 +1,103 @@ +# +# The Python Imaging Library. +# $Id$ +# +# image enhancement classes +# +# For a background, see "Image Processing By Interpolation and +# Extrapolation", Paul Haeberli and Douglas Voorhies. Available +# at http://www.graficaobscura.com/interp/index.html +# +# History: +# 1996-03-23 fl Created +# 2009-06-16 fl Fixed mean calculation +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFilter, ImageStat + + +class _Enhance: + def enhance(self, factor): + """ + Returns an enhanced image. + + :param factor: A floating point value controlling the enhancement. + Factor 1.0 always returns a copy of the original image, + lower factors mean less color (brightness, contrast, + etc), and higher values more. There are no restrictions + on this value. + :rtype: :py:class:`~PIL.Image.Image` + """ + return Image.blend(self.degenerate, self.image, factor) + + +class Color(_Enhance): + """Adjust image color balance. + + This class can be used to adjust the colour balance of an image, in + a manner similar to the controls on a colour TV set. An enhancement + factor of 0.0 gives a black and white image. A factor of 1.0 gives + the original image. + """ + + def __init__(self, image): + self.image = image + self.intermediate_mode = "L" + if "A" in image.getbands(): + self.intermediate_mode = "LA" + + self.degenerate = image.convert(self.intermediate_mode).convert(image.mode) + + +class Contrast(_Enhance): + """Adjust image contrast. + + This class can be used to control the contrast of an image, similar + to the contrast control on a TV set. An enhancement factor of 0.0 + gives a solid grey image. A factor of 1.0 gives the original image. + """ + + def __init__(self, image): + self.image = image + mean = int(ImageStat.Stat(image.convert("L")).mean[0] + 0.5) + self.degenerate = Image.new("L", image.size, mean).convert(image.mode) + + if "A" in image.getbands(): + self.degenerate.putalpha(image.getchannel("A")) + + +class Brightness(_Enhance): + """Adjust image brightness. + + This class can be used to control the brightness of an image. An + enhancement factor of 0.0 gives a black image. A factor of 1.0 gives the + original image. + """ + + def __init__(self, image): + self.image = image + self.degenerate = Image.new(image.mode, image.size, 0) + + if "A" in image.getbands(): + self.degenerate.putalpha(image.getchannel("A")) + + +class Sharpness(_Enhance): + """Adjust image sharpness. + + This class can be used to adjust the sharpness of an image. An + enhancement factor of 0.0 gives a blurred image, a factor of 1.0 gives the + original image, and a factor of 2.0 gives a sharpened image. + """ + + def __init__(self, image): + self.image = image + self.degenerate = image.filter(ImageFilter.SMOOTH) + + if "A" in image.getbands(): + self.degenerate.putalpha(image.getchannel("A")) diff --git a/venv/Lib/site-packages/PIL/ImageFile.py b/venv/Lib/site-packages/PIL/ImageFile.py new file mode 100644 index 0000000..6287968 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageFile.py @@ -0,0 +1,683 @@ +# +# The Python Imaging Library. +# $Id$ +# +# base class for image file handlers +# +# history: +# 1995-09-09 fl Created +# 1996-03-11 fl Fixed load mechanism. +# 1996-04-15 fl Added pcx/xbm decoders. +# 1996-04-30 fl Added encoders. +# 1996-12-14 fl Added load helpers +# 1997-01-11 fl Use encode_to_file where possible +# 1997-08-27 fl Flush output in _save +# 1998-03-05 fl Use memory mapping for some modes +# 1999-02-04 fl Use memory mapping also for "I;16" and "I;16B" +# 1999-05-31 fl Added image parser +# 2000-10-12 fl Set readonly flag on memory-mapped images +# 2002-03-20 fl Use better messages for common decoder errors +# 2003-04-21 fl Fall back on mmap/map_buffer if map is not available +# 2003-10-30 fl Added StubImageFile class +# 2004-02-25 fl Made incremental parser more robust +# +# Copyright (c) 1997-2004 by Secret Labs AB +# Copyright (c) 1995-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import io +import struct +import sys + +from . import Image +from ._util import isPath + +MAXBLOCK = 65536 + +SAFEBLOCK = 1024 * 1024 + +LOAD_TRUNCATED_IMAGES = False + +ERRORS = { + -1: "image buffer overrun error", + -2: "decoding error", + -3: "unknown error", + -8: "bad configuration", + -9: "out of memory error", +} + + +def raise_ioerror(error): + try: + message = Image.core.getcodecstatus(error) + except AttributeError: + message = ERRORS.get(error) + if not message: + message = "decoder error %d" % error + raise OSError(message + " when reading image file") + + +# +# -------------------------------------------------------------------- +# Helpers + + +def _tilesort(t): + # sort on offset + return t[2] + + +# +# -------------------------------------------------------------------- +# ImageFile base class + + +class ImageFile(Image.Image): + "Base class for image file format handlers." + + def __init__(self, fp=None, filename=None): + super().__init__() + + self._min_frame = 0 + + self.custom_mimetype = None + + self.tile = None + self.readonly = 1 # until we know better + + self.decoderconfig = () + self.decodermaxblock = MAXBLOCK + + if isPath(fp): + # filename + self.fp = open(fp, "rb") + self.filename = fp + self._exclusive_fp = True + else: + # stream + self.fp = fp + self.filename = filename + # can be overridden + self._exclusive_fp = None + + try: + try: + self._open() + except ( + IndexError, # end of data + TypeError, # end of data (ord) + KeyError, # unsupported mode + EOFError, # got header but not the first frame + struct.error, + ) as v: + raise SyntaxError(v) + + if not self.mode or self.size[0] <= 0: + raise SyntaxError("not identified by this driver") + except BaseException: + # close the file only if we have opened it this constructor + if self._exclusive_fp: + self.fp.close() + raise + + def get_format_mimetype(self): + if self.custom_mimetype: + return self.custom_mimetype + if self.format is not None: + return Image.MIME.get(self.format.upper()) + + def verify(self): + """Check file integrity""" + + # raise exception if something's wrong. must be called + # directly after open, and closes file when finished. + if self._exclusive_fp: + self.fp.close() + self.fp = None + + def load(self): + """Load image data based on tile list""" + + pixel = Image.Image.load(self) + + if self.tile is None: + raise OSError("cannot load this image") + if not self.tile: + return pixel + + self.map = None + use_mmap = self.filename and len(self.tile) == 1 + # As of pypy 2.1.0, memory mapping was failing here. + use_mmap = use_mmap and not hasattr(sys, "pypy_version_info") + + readonly = 0 + + # look for read/seek overrides + try: + read = self.load_read + # don't use mmap if there are custom read/seek functions + use_mmap = False + except AttributeError: + read = self.fp.read + + try: + seek = self.load_seek + use_mmap = False + except AttributeError: + seek = self.fp.seek + + if use_mmap: + # try memory mapping + decoder_name, extents, offset, args = self.tile[0] + if ( + decoder_name == "raw" + and len(args) >= 3 + and args[0] == self.mode + and args[0] in Image._MAPMODES + ): + try: + if hasattr(Image.core, "map"): + # use built-in mapper WIN32 only + self.map = Image.core.map(self.filename) + self.map.seek(offset) + self.im = self.map.readimage( + self.mode, self.size, args[1], args[2] + ) + else: + # use mmap, if possible + import mmap + + with open(self.filename, "r") as fp: + self.map = mmap.mmap( + fp.fileno(), 0, access=mmap.ACCESS_READ + ) + self.im = Image.core.map_buffer( + self.map, self.size, decoder_name, offset, args + ) + readonly = 1 + # After trashing self.im, + # we might need to reload the palette data. + if self.palette: + self.palette.dirty = 1 + except (AttributeError, OSError, ImportError): + self.map = None + + self.load_prepare() + err_code = -3 # initialize to unknown error + if not self.map: + # sort tiles in file order + self.tile.sort(key=_tilesort) + + try: + # FIXME: This is a hack to handle TIFF's JpegTables tag. + prefix = self.tile_prefix + except AttributeError: + prefix = b"" + + for decoder_name, extents, offset, args in self.tile: + decoder = Image._getdecoder( + self.mode, decoder_name, args, self.decoderconfig + ) + try: + seek(offset) + decoder.setimage(self.im, extents) + if decoder.pulls_fd: + decoder.setfd(self.fp) + status, err_code = decoder.decode(b"") + else: + b = prefix + while True: + try: + s = read(self.decodermaxblock) + except (IndexError, struct.error): + # truncated png/gif + if LOAD_TRUNCATED_IMAGES: + break + else: + raise OSError("image file is truncated") + + if not s: # truncated jpeg + if LOAD_TRUNCATED_IMAGES: + break + else: + raise OSError( + "image file is truncated " + "(%d bytes not processed)" % len(b) + ) + + b = b + s + n, err_code = decoder.decode(b) + if n < 0: + break + b = b[n:] + finally: + # Need to cleanup here to prevent leaks + decoder.cleanup() + + self.tile = [] + self.readonly = readonly + + self.load_end() + + if self._exclusive_fp and self._close_exclusive_fp_after_loading: + self.fp.close() + self.fp = None + + if not self.map and not LOAD_TRUNCATED_IMAGES and err_code < 0: + # still raised if decoder fails to return anything + raise_ioerror(err_code) + + return Image.Image.load(self) + + def load_prepare(self): + # create image memory if necessary + if not self.im or self.im.mode != self.mode or self.im.size != self.size: + self.im = Image.core.new(self.mode, self.size) + # create palette (optional) + if self.mode == "P": + Image.Image.load(self) + + def load_end(self): + # may be overridden + pass + + # may be defined for contained formats + # def load_seek(self, pos): + # pass + + # may be defined for blocked formats (e.g. PNG) + # def load_read(self, bytes): + # pass + + def _seek_check(self, frame): + if ( + frame < self._min_frame + # Only check upper limit on frames if additional seek operations + # are not required to do so + or ( + not (hasattr(self, "_n_frames") and self._n_frames is None) + and frame >= self.n_frames + self._min_frame + ) + ): + raise EOFError("attempt to seek outside sequence") + + return self.tell() != frame + + +class StubImageFile(ImageFile): + """ + Base class for stub image loaders. + + A stub loader is an image loader that can identify files of a + certain format, but relies on external code to load the file. + """ + + def _open(self): + raise NotImplementedError("StubImageFile subclass must implement _open") + + def load(self): + loader = self._load() + if loader is None: + raise OSError("cannot find loader for this %s file" % self.format) + image = loader.load(self) + assert image is not None + # become the other object (!) + self.__class__ = image.__class__ + self.__dict__ = image.__dict__ + + def _load(self): + """(Hook) Find actual image loader.""" + raise NotImplementedError("StubImageFile subclass must implement _load") + + +class Parser: + """ + Incremental image parser. This class implements the standard + feed/close consumer interface. + """ + + incremental = None + image = None + data = None + decoder = None + offset = 0 + finished = 0 + + def reset(self): + """ + (Consumer) Reset the parser. Note that you can only call this + method immediately after you've created a parser; parser + instances cannot be reused. + """ + assert self.data is None, "cannot reuse parsers" + + def feed(self, data): + """ + (Consumer) Feed data to the parser. + + :param data: A string buffer. + :exception IOError: If the parser failed to parse the image file. + """ + # collect data + + if self.finished: + return + + if self.data is None: + self.data = data + else: + self.data = self.data + data + + # parse what we have + if self.decoder: + + if self.offset > 0: + # skip header + skip = min(len(self.data), self.offset) + self.data = self.data[skip:] + self.offset = self.offset - skip + if self.offset > 0 or not self.data: + return + + n, e = self.decoder.decode(self.data) + + if n < 0: + # end of stream + self.data = None + self.finished = 1 + if e < 0: + # decoding error + self.image = None + raise_ioerror(e) + else: + # end of image + return + self.data = self.data[n:] + + elif self.image: + + # if we end up here with no decoder, this file cannot + # be incrementally parsed. wait until we've gotten all + # available data + pass + + else: + + # attempt to open this file + try: + with io.BytesIO(self.data) as fp: + im = Image.open(fp) + except OSError: + # traceback.print_exc() + pass # not enough data + else: + flag = hasattr(im, "load_seek") or hasattr(im, "load_read") + if flag or len(im.tile) != 1: + # custom load code, or multiple tiles + self.decode = None + else: + # initialize decoder + im.load_prepare() + d, e, o, a = im.tile[0] + im.tile = [] + self.decoder = Image._getdecoder(im.mode, d, a, im.decoderconfig) + self.decoder.setimage(im.im, e) + + # calculate decoder offset + self.offset = o + if self.offset <= len(self.data): + self.data = self.data[self.offset :] + self.offset = 0 + + self.image = im + + def __enter__(self): + return self + + def __exit__(self, *args): + self.close() + + def close(self): + """ + (Consumer) Close the stream. + + :returns: An image object. + :exception IOError: If the parser failed to parse the image file either + because it cannot be identified or cannot be + decoded. + """ + # finish decoding + if self.decoder: + # get rid of what's left in the buffers + self.feed(b"") + self.data = self.decoder = None + if not self.finished: + raise OSError("image was incomplete") + if not self.image: + raise OSError("cannot parse this image") + if self.data: + # incremental parsing not possible; reopen the file + # not that we have all data + with io.BytesIO(self.data) as fp: + try: + self.image = Image.open(fp) + finally: + self.image.load() + return self.image + + +# -------------------------------------------------------------------- + + +def _save(im, fp, tile, bufsize=0): + """Helper to save image based on tile list + + :param im: Image object. + :param fp: File object. + :param tile: Tile list. + :param bufsize: Optional buffer size + """ + + im.load() + if not hasattr(im, "encoderconfig"): + im.encoderconfig = () + tile.sort(key=_tilesort) + # FIXME: make MAXBLOCK a configuration parameter + # It would be great if we could have the encoder specify what it needs + # But, it would need at least the image size in most cases. RawEncode is + # a tricky case. + bufsize = max(MAXBLOCK, bufsize, im.size[0] * 4) # see RawEncode.c + if fp == sys.stdout: + fp.flush() + return + try: + fh = fp.fileno() + fp.flush() + except (AttributeError, io.UnsupportedOperation): + # compress to Python file-compatible object + for e, b, o, a in tile: + e = Image._getencoder(im.mode, e, a, im.encoderconfig) + if o > 0: + fp.seek(o) + e.setimage(im.im, b) + if e.pushes_fd: + e.setfd(fp) + l, s = e.encode_to_pyfd() + else: + while True: + l, s, d = e.encode(bufsize) + fp.write(d) + if s: + break + if s < 0: + raise OSError("encoder error %d when writing image file" % s) + e.cleanup() + else: + # slight speedup: compress to real file object + for e, b, o, a in tile: + e = Image._getencoder(im.mode, e, a, im.encoderconfig) + if o > 0: + fp.seek(o) + e.setimage(im.im, b) + if e.pushes_fd: + e.setfd(fp) + l, s = e.encode_to_pyfd() + else: + s = e.encode_to_file(fh, bufsize) + if s < 0: + raise OSError("encoder error %d when writing image file" % s) + e.cleanup() + if hasattr(fp, "flush"): + fp.flush() + + +def _safe_read(fp, size): + """ + Reads large blocks in a safe way. Unlike fp.read(n), this function + doesn't trust the user. If the requested size is larger than + SAFEBLOCK, the file is read block by block. + + :param fp: File handle. Must implement a read method. + :param size: Number of bytes to read. + :returns: A string containing up to size bytes of data. + """ + if size <= 0: + return b"" + if size <= SAFEBLOCK: + return fp.read(size) + data = [] + while size > 0: + block = fp.read(min(size, SAFEBLOCK)) + if not block: + break + data.append(block) + size -= len(block) + return b"".join(data) + + +class PyCodecState: + def __init__(self): + self.xsize = 0 + self.ysize = 0 + self.xoff = 0 + self.yoff = 0 + + def extents(self): + return (self.xoff, self.yoff, self.xoff + self.xsize, self.yoff + self.ysize) + + +class PyDecoder: + """ + Python implementation of a format decoder. Override this class and + add the decoding logic in the `decode` method. + + See :ref:`Writing Your Own File Decoder in Python` + """ + + _pulls_fd = False + + def __init__(self, mode, *args): + self.im = None + self.state = PyCodecState() + self.fd = None + self.mode = mode + self.init(args) + + def init(self, args): + """ + Override to perform decoder specific initialization + + :param args: Array of args items from the tile entry + :returns: None + """ + self.args = args + + @property + def pulls_fd(self): + return self._pulls_fd + + def decode(self, buffer): + """ + Override to perform the decoding process. + + :param buffer: A bytes object with the data to be decoded. + :returns: A tuple of (bytes consumed, errcode). + If finished with decoding return <0 for the bytes consumed. + Err codes are from `ERRORS` + """ + raise NotImplementedError() + + def cleanup(self): + """ + Override to perform decoder specific cleanup + + :returns: None + """ + pass + + def setfd(self, fd): + """ + Called from ImageFile to set the python file-like object + + :param fd: A python file-like object + :returns: None + """ + self.fd = fd + + def setimage(self, im, extents=None): + """ + Called from ImageFile to set the core output image for the decoder + + :param im: A core image object + :param extents: a 4 tuple of (x0, y0, x1, y1) defining the rectangle + for this tile + :returns: None + """ + + # following c code + self.im = im + + if extents: + (x0, y0, x1, y1) = extents + else: + (x0, y0, x1, y1) = (0, 0, 0, 0) + + if x0 == 0 and x1 == 0: + self.state.xsize, self.state.ysize = self.im.size + else: + self.state.xoff = x0 + self.state.yoff = y0 + self.state.xsize = x1 - x0 + self.state.ysize = y1 - y0 + + if self.state.xsize <= 0 or self.state.ysize <= 0: + raise ValueError("Size cannot be negative") + + if ( + self.state.xsize + self.state.xoff > self.im.size[0] + or self.state.ysize + self.state.yoff > self.im.size[1] + ): + raise ValueError("Tile cannot extend outside image") + + def set_as_raw(self, data, rawmode=None): + """ + Convenience method to set the internal image from a stream of raw data + + :param data: Bytes to be set + :param rawmode: The rawmode to be used for the decoder. + If not specified, it will default to the mode of the image + :returns: None + """ + + if not rawmode: + rawmode = self.mode + d = Image._getdecoder(self.mode, "raw", (rawmode)) + d.setimage(self.im, self.state.extents()) + s = d.decode(data) + + if s[0] >= 0: + raise ValueError("not enough image data") + if s[1] != 0: + raise ValueError("cannot decode image data") diff --git a/venv/Lib/site-packages/PIL/ImageFilter.py b/venv/Lib/site-packages/PIL/ImageFilter.py new file mode 100644 index 0000000..6b0f5eb --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageFilter.py @@ -0,0 +1,535 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard filters +# +# History: +# 1995-11-27 fl Created +# 2002-06-08 fl Added rank and mode filters +# 2003-09-15 fl Fixed rank calculation in rank filter; added expand call +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2002 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +import functools + +try: + import numpy +except ImportError: # pragma: no cover + numpy = None + + +class Filter: + pass + + +class MultibandFilter(Filter): + pass + + +class BuiltinFilter(MultibandFilter): + def filter(self, image): + if image.mode == "P": + raise ValueError("cannot filter palette images") + return image.filter(*self.filterargs) + + +class Kernel(BuiltinFilter): + """ + Create a convolution kernel. The current version only + supports 3x3 and 5x5 integer and floating point kernels. + + In the current version, kernels can only be applied to + "L" and "RGB" images. + + :param size: Kernel size, given as (width, height). In the current + version, this must be (3,3) or (5,5). + :param kernel: A sequence containing kernel weights. + :param scale: Scale factor. If given, the result for each pixel is + divided by this value. the default is the sum of the + kernel weights. + :param offset: Offset. If given, this value is added to the result, + after it has been divided by the scale factor. + """ + + name = "Kernel" + + def __init__(self, size, kernel, scale=None, offset=0): + if scale is None: + # default scale is sum of kernel + scale = functools.reduce(lambda a, b: a + b, kernel) + if size[0] * size[1] != len(kernel): + raise ValueError("not enough coefficients in kernel") + self.filterargs = size, scale, offset, kernel + + +class RankFilter(Filter): + """ + Create a rank filter. The rank filter sorts all pixels in + a window of the given size, and returns the **rank**'th value. + + :param size: The kernel size, in pixels. + :param rank: What pixel value to pick. Use 0 for a min filter, + ``size * size / 2`` for a median filter, ``size * size - 1`` + for a max filter, etc. + """ + + name = "Rank" + + def __init__(self, size, rank): + self.size = size + self.rank = rank + + def filter(self, image): + if image.mode == "P": + raise ValueError("cannot filter palette images") + image = image.expand(self.size // 2, self.size // 2) + return image.rankfilter(self.size, self.rank) + + +class MedianFilter(RankFilter): + """ + Create a median filter. Picks the median pixel value in a window with the + given size. + + :param size: The kernel size, in pixels. + """ + + name = "Median" + + def __init__(self, size=3): + self.size = size + self.rank = size * size // 2 + + +class MinFilter(RankFilter): + """ + Create a min filter. Picks the lowest pixel value in a window with the + given size. + + :param size: The kernel size, in pixels. + """ + + name = "Min" + + def __init__(self, size=3): + self.size = size + self.rank = 0 + + +class MaxFilter(RankFilter): + """ + Create a max filter. Picks the largest pixel value in a window with the + given size. + + :param size: The kernel size, in pixels. + """ + + name = "Max" + + def __init__(self, size=3): + self.size = size + self.rank = size * size - 1 + + +class ModeFilter(Filter): + """ + Create a mode filter. Picks the most frequent pixel value in a box with the + given size. Pixel values that occur only once or twice are ignored; if no + pixel value occurs more than twice, the original pixel value is preserved. + + :param size: The kernel size, in pixels. + """ + + name = "Mode" + + def __init__(self, size=3): + self.size = size + + def filter(self, image): + return image.modefilter(self.size) + + +class GaussianBlur(MultibandFilter): + """Gaussian blur filter. + + :param radius: Blur radius. + """ + + name = "GaussianBlur" + + def __init__(self, radius=2): + self.radius = radius + + def filter(self, image): + return image.gaussian_blur(self.radius) + + +class BoxBlur(MultibandFilter): + """Blurs the image by setting each pixel to the average value of the pixels + in a square box extending radius pixels in each direction. + Supports float radius of arbitrary size. Uses an optimized implementation + which runs in linear time relative to the size of the image + for any radius value. + + :param radius: Size of the box in one direction. Radius 0 does not blur, + returns an identical image. Radius 1 takes 1 pixel + in each direction, i.e. 9 pixels in total. + """ + + name = "BoxBlur" + + def __init__(self, radius): + self.radius = radius + + def filter(self, image): + return image.box_blur(self.radius) + + +class UnsharpMask(MultibandFilter): + """Unsharp mask filter. + + See Wikipedia's entry on `digital unsharp masking`_ for an explanation of + the parameters. + + :param radius: Blur Radius + :param percent: Unsharp strength, in percent + :param threshold: Threshold controls the minimum brightness change that + will be sharpened + + .. _digital unsharp masking: https://en.wikipedia.org/wiki/Unsharp_masking#Digital_unsharp_masking + + """ # noqa: E501 + + name = "UnsharpMask" + + def __init__(self, radius=2, percent=150, threshold=3): + self.radius = radius + self.percent = percent + self.threshold = threshold + + def filter(self, image): + return image.unsharp_mask(self.radius, self.percent, self.threshold) + + +class BLUR(BuiltinFilter): + name = "Blur" + # fmt: off + filterargs = (5, 5), 16, 0, ( + 1, 1, 1, 1, 1, + 1, 0, 0, 0, 1, + 1, 0, 0, 0, 1, + 1, 0, 0, 0, 1, + 1, 1, 1, 1, 1, + ) + # fmt: on + + +class CONTOUR(BuiltinFilter): + name = "Contour" + # fmt: off + filterargs = (3, 3), 1, 255, ( + -1, -1, -1, + -1, 8, -1, + -1, -1, -1, + ) + # fmt: on + + +class DETAIL(BuiltinFilter): + name = "Detail" + # fmt: off + filterargs = (3, 3), 6, 0, ( + 0, -1, 0, + -1, 10, -1, + 0, -1, 0, + ) + # fmt: on + + +class EDGE_ENHANCE(BuiltinFilter): + name = "Edge-enhance" + # fmt: off + filterargs = (3, 3), 2, 0, ( + -1, -1, -1, + -1, 10, -1, + -1, -1, -1, + ) + # fmt: on + + +class EDGE_ENHANCE_MORE(BuiltinFilter): + name = "Edge-enhance More" + # fmt: off + filterargs = (3, 3), 1, 0, ( + -1, -1, -1, + -1, 9, -1, + -1, -1, -1, + ) + # fmt: on + + +class EMBOSS(BuiltinFilter): + name = "Emboss" + # fmt: off + filterargs = (3, 3), 1, 128, ( + -1, 0, 0, + 0, 1, 0, + 0, 0, 0, + ) + # fmt: on + + +class FIND_EDGES(BuiltinFilter): + name = "Find Edges" + # fmt: off + filterargs = (3, 3), 1, 0, ( + -1, -1, -1, + -1, 8, -1, + -1, -1, -1, + ) + # fmt: on + + +class SHARPEN(BuiltinFilter): + name = "Sharpen" + # fmt: off + filterargs = (3, 3), 16, 0, ( + -2, -2, -2, + -2, 32, -2, + -2, -2, -2, + ) + # fmt: on + + +class SMOOTH(BuiltinFilter): + name = "Smooth" + # fmt: off + filterargs = (3, 3), 13, 0, ( + 1, 1, 1, + 1, 5, 1, + 1, 1, 1, + ) + # fmt: on + + +class SMOOTH_MORE(BuiltinFilter): + name = "Smooth More" + # fmt: off + filterargs = (5, 5), 100, 0, ( + 1, 1, 1, 1, 1, + 1, 5, 5, 5, 1, + 1, 5, 44, 5, 1, + 1, 5, 5, 5, 1, + 1, 1, 1, 1, 1, + ) + # fmt: on + + +class Color3DLUT(MultibandFilter): + """Three-dimensional color lookup table. + + Transforms 3-channel pixels using the values of the channels as coordinates + in the 3D lookup table and interpolating the nearest elements. + + This method allows you to apply almost any color transformation + in constant time by using pre-calculated decimated tables. + + .. versionadded:: 5.2.0 + + :param size: Size of the table. One int or tuple of (int, int, int). + Minimal size in any dimension is 2, maximum is 65. + :param table: Flat lookup table. A list of ``channels * size**3`` + float elements or a list of ``size**3`` channels-sized + tuples with floats. Channels are changed first, + then first dimension, then second, then third. + Value 0.0 corresponds lowest value of output, 1.0 highest. + :param channels: Number of channels in the table. Could be 3 or 4. + Default is 3. + :param target_mode: A mode for the result image. Should have not less + than ``channels`` channels. Default is ``None``, + which means that mode wouldn't be changed. + """ + + name = "Color 3D LUT" + + def __init__(self, size, table, channels=3, target_mode=None, **kwargs): + if channels not in (3, 4): + raise ValueError("Only 3 or 4 output channels are supported") + self.size = size = self._check_size(size) + self.channels = channels + self.mode = target_mode + + # Hidden flag `_copy_table=False` could be used to avoid extra copying + # of the table if the table is specially made for the constructor. + copy_table = kwargs.get("_copy_table", True) + items = size[0] * size[1] * size[2] + wrong_size = False + + if numpy and isinstance(table, numpy.ndarray): + if copy_table: + table = table.copy() + + if table.shape in [ + (items * channels,), + (items, channels), + (size[2], size[1], size[0], channels), + ]: + table = table.reshape(items * channels) + else: + wrong_size = True + + else: + if copy_table: + table = list(table) + + # Convert to a flat list + if table and isinstance(table[0], (list, tuple)): + table, raw_table = [], table + for pixel in raw_table: + if len(pixel) != channels: + raise ValueError( + "The elements of the table should " + "have a length of {}.".format(channels) + ) + table.extend(pixel) + + if wrong_size or len(table) != items * channels: + raise ValueError( + "The table should have either channels * size**3 float items " + "or size**3 items of channels-sized tuples with floats. " + "Table should be: {}x{}x{}x{}. Actual length: {}".format( + channels, size[0], size[1], size[2], len(table) + ) + ) + self.table = table + + @staticmethod + def _check_size(size): + try: + _, _, _ = size + except ValueError: + raise ValueError( + "Size should be either an integer or a tuple of three integers." + ) + except TypeError: + size = (size, size, size) + size = [int(x) for x in size] + for size1D in size: + if not 2 <= size1D <= 65: + raise ValueError("Size should be in [2, 65] range.") + return size + + @classmethod + def generate(cls, size, callback, channels=3, target_mode=None): + """Generates new LUT using provided callback. + + :param size: Size of the table. Passed to the constructor. + :param callback: Function with three parameters which correspond + three color channels. Will be called ``size**3`` + times with values from 0.0 to 1.0 and should return + a tuple with ``channels`` elements. + :param channels: The number of channels which should return callback. + :param target_mode: Passed to the constructor of the resulting + lookup table. + """ + size1D, size2D, size3D = cls._check_size(size) + if channels not in (3, 4): + raise ValueError("Only 3 or 4 output channels are supported") + + table = [0] * (size1D * size2D * size3D * channels) + idx_out = 0 + for b in range(size3D): + for g in range(size2D): + for r in range(size1D): + table[idx_out : idx_out + channels] = callback( + r / (size1D - 1), g / (size2D - 1), b / (size3D - 1) + ) + idx_out += channels + + return cls( + (size1D, size2D, size3D), + table, + channels=channels, + target_mode=target_mode, + _copy_table=False, + ) + + def transform(self, callback, with_normals=False, channels=None, target_mode=None): + """Transforms the table values using provided callback and returns + a new LUT with altered values. + + :param callback: A function which takes old lookup table values + and returns a new set of values. The number + of arguments which function should take is + ``self.channels`` or ``3 + self.channels`` + if ``with_normals`` flag is set. + Should return a tuple of ``self.channels`` or + ``channels`` elements if it is set. + :param with_normals: If true, ``callback`` will be called with + coordinates in the color cube as the first + three arguments. Otherwise, ``callback`` + will be called only with actual color values. + :param channels: The number of channels in the resulting lookup table. + :param target_mode: Passed to the constructor of the resulting + lookup table. + """ + if channels not in (None, 3, 4): + raise ValueError("Only 3 or 4 output channels are supported") + ch_in = self.channels + ch_out = channels or ch_in + size1D, size2D, size3D = self.size + + table = [0] * (size1D * size2D * size3D * ch_out) + idx_in = 0 + idx_out = 0 + for b in range(size3D): + for g in range(size2D): + for r in range(size1D): + values = self.table[idx_in : idx_in + ch_in] + if with_normals: + values = callback( + r / (size1D - 1), + g / (size2D - 1), + b / (size3D - 1), + *values, + ) + else: + values = callback(*values) + table[idx_out : idx_out + ch_out] = values + idx_in += ch_in + idx_out += ch_out + + return type(self)( + self.size, + table, + channels=ch_out, + target_mode=target_mode or self.mode, + _copy_table=False, + ) + + def __repr__(self): + r = [ + "{} from {}".format(self.__class__.__name__, self.table.__class__.__name__), + "size={:d}x{:d}x{:d}".format(*self.size), + "channels={:d}".format(self.channels), + ] + if self.mode: + r.append("target_mode={}".format(self.mode)) + return "<{}>".format(" ".join(r)) + + def filter(self, image): + from . import Image + + return image.color_lut_3d( + self.mode or image.mode, + Image.LINEAR, + self.channels, + self.size[0], + self.size[1], + self.size[2], + self.table, + ) diff --git a/venv/Lib/site-packages/PIL/ImageFont.py b/venv/Lib/site-packages/PIL/ImageFont.py new file mode 100644 index 0000000..027e4c4 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageFont.py @@ -0,0 +1,853 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PIL raster font management +# +# History: +# 1996-08-07 fl created (experimental) +# 1997-08-25 fl minor adjustments to handle fonts from pilfont 0.3 +# 1999-02-06 fl rewrote most font management stuff in C +# 1999-03-17 fl take pth files into account in load_path (from Richard Jones) +# 2001-02-17 fl added freetype support +# 2001-05-09 fl added TransposedFont wrapper class +# 2002-03-04 fl make sure we have a "L" or "1" font +# 2002-12-04 fl skip non-directory entries in the system path +# 2003-04-29 fl add embedded default font +# 2003-09-27 fl added support for truetype charmap encodings +# +# Todo: +# Adapt to PILFONT2 format (16-bit fonts, compressed, single file) +# +# Copyright (c) 1997-2003 by Secret Labs AB +# Copyright (c) 1996-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import base64 +import os +import sys +from io import BytesIO + +from . import Image +from ._util import isDirectory, isPath + +LAYOUT_BASIC = 0 +LAYOUT_RAQM = 1 + + +class _imagingft_not_installed: + # module placeholder + def __getattr__(self, id): + raise ImportError("The _imagingft C module is not installed") + + +try: + from . import _imagingft as core +except ImportError: + core = _imagingft_not_installed() + + +# FIXME: add support for pilfont2 format (see FontFile.py) + +# -------------------------------------------------------------------- +# Font metrics format: +# "PILfont" LF +# fontdescriptor LF +# (optional) key=value... LF +# "DATA" LF +# binary data: 256*10*2 bytes (dx, dy, dstbox, srcbox) +# +# To place a character, cut out srcbox and paste at dstbox, +# relative to the character position. Then move the character +# position according to dx, dy. +# -------------------------------------------------------------------- + + +class ImageFont: + "PIL font wrapper" + + def _load_pilfont(self, filename): + + with open(filename, "rb") as fp: + image = None + for ext in (".png", ".gif", ".pbm"): + if image: + image.close() + try: + fullname = os.path.splitext(filename)[0] + ext + image = Image.open(fullname) + except Exception: + pass + else: + if image and image.mode in ("1", "L"): + break + else: + if image: + image.close() + raise OSError("cannot find glyph data file") + + self.file = fullname + + self._load_pilfont_data(fp, image) + image.close() + + def _load_pilfont_data(self, file, image): + + # read PILfont header + if file.readline() != b"PILfont\n": + raise SyntaxError("Not a PILfont file") + file.readline().split(b";") + self.info = [] # FIXME: should be a dictionary + while True: + s = file.readline() + if not s or s == b"DATA\n": + break + self.info.append(s) + + # read PILfont metrics + data = file.read(256 * 20) + + # check image + if image.mode not in ("1", "L"): + raise TypeError("invalid font image mode") + + image.load() + + self.font = Image.core.font(image.im, data) + + def getsize(self, text, *args, **kwargs): + """ + Returns width and height (in pixels) of given text. + + :param text: Text to measure. + + :return: (width, height) + """ + return self.font.getsize(text) + + def getmask(self, text, mode="", *args, **kwargs): + """ + Create a bitmap for the text. + + If the font uses antialiasing, the bitmap should have mode ``L`` and use a + maximum value of 255. Otherwise, it should have mode ``1``. + + :param text: Text to render. + :param mode: Used by some graphics drivers to indicate what mode the + driver prefers; if empty, the renderer may return either + mode. Note that the mode is always a string, to simplify + C-level implementations. + + .. versionadded:: 1.1.5 + + :return: An internal PIL storage memory instance as defined by the + :py:mod:`PIL.Image.core` interface module. + """ + return self.font.getmask(text, mode) + + +## +# Wrapper for FreeType fonts. Application code should use the +# truetype factory function to create font objects. + + +class FreeTypeFont: + "FreeType font wrapper (requires _imagingft service)" + + def __init__(self, font=None, size=10, index=0, encoding="", layout_engine=None): + # FIXME: use service provider instead + + self.path = font + self.size = size + self.index = index + self.encoding = encoding + + if layout_engine not in (LAYOUT_BASIC, LAYOUT_RAQM): + layout_engine = LAYOUT_BASIC + if core.HAVE_RAQM: + layout_engine = LAYOUT_RAQM + elif layout_engine == LAYOUT_RAQM and not core.HAVE_RAQM: + layout_engine = LAYOUT_BASIC + + self.layout_engine = layout_engine + + def load_from_bytes(f): + self.font_bytes = f.read() + self.font = core.getfont( + "", size, index, encoding, self.font_bytes, layout_engine + ) + + if isPath(font): + if sys.platform == "win32": + font_bytes_path = font if isinstance(font, bytes) else font.encode() + try: + font_bytes_path.decode("ascii") + except UnicodeDecodeError: + # FreeType cannot load fonts with non-ASCII characters on Windows + # So load it into memory first + with open(font, "rb") as f: + load_from_bytes(f) + return + self.font = core.getfont( + font, size, index, encoding, layout_engine=layout_engine + ) + else: + load_from_bytes(font) + + def _multiline_split(self, text): + split_character = "\n" if isinstance(text, str) else b"\n" + return text.split(split_character) + + def getname(self): + """ + :return: A tuple of the font family (e.g. Helvetica) and the font style + (e.g. Bold) + """ + return self.font.family, self.font.style + + def getmetrics(self): + """ + :return: A tuple of the font ascent (the distance from the baseline to + the highest outline point) and descent (the distance from the + baseline to the lowest outline point, a negative value) + """ + return self.font.ascent, self.font.descent + + def getsize( + self, text, direction=None, features=None, language=None, stroke_width=0 + ): + """ + Returns width and height (in pixels) of given text if rendered in font with + provided direction, features, and language. + + :param text: Text to measure. + + :param direction: Direction of the text. It can be 'rtl' (right to + left), 'ltr' (left to right) or 'ttb' (top to bottom). + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param features: A list of OpenType font features to be used during text + layout. This is usually used to turn on optional + font features that are not enabled by default, + for example 'dlig' or 'ss01', but can be also + used to turn off default font features for + example '-liga' to disable ligatures or '-kern' + to disable kerning. To get all supported + features, see + https://docs.microsoft.com/en-us/typography/opentype/spec/featurelist + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param language: Language of the text. Different languages may use + different glyph shapes or ligatures. This parameter tells + the font which language the text is in, and to apply the + correct substitutions as appropriate, if available. + It should be a `BCP 47 language code + ` + Requires libraqm. + + .. versionadded:: 6.0.0 + + :param stroke_width: The width of the text stroke. + + .. versionadded:: 6.2.0 + + :return: (width, height) + """ + size, offset = self.font.getsize(text, direction, features, language) + return ( + size[0] + stroke_width * 2 + offset[0], + size[1] + stroke_width * 2 + offset[1], + ) + + def getsize_multiline( + self, + text, + direction=None, + spacing=4, + features=None, + language=None, + stroke_width=0, + ): + """ + Returns width and height (in pixels) of given text if rendered in font + with provided direction, features, and language, while respecting + newline characters. + + :param text: Text to measure. + + :param direction: Direction of the text. It can be 'rtl' (right to + left), 'ltr' (left to right) or 'ttb' (top to bottom). + Requires libraqm. + + :param spacing: The vertical gap between lines, defaulting to 4 pixels. + + :param features: A list of OpenType font features to be used during text + layout. This is usually used to turn on optional + font features that are not enabled by default, + for example 'dlig' or 'ss01', but can be also + used to turn off default font features for + example '-liga' to disable ligatures or '-kern' + to disable kerning. To get all supported + features, see + https://docs.microsoft.com/en-us/typography/opentype/spec/featurelist + Requires libraqm. + + :param language: Language of the text. Different languages may use + different glyph shapes or ligatures. This parameter tells + the font which language the text is in, and to apply the + correct substitutions as appropriate, if available. + It should be a `BCP 47 language code + ` + Requires libraqm. + + .. versionadded:: 6.0.0 + + :param stroke_width: The width of the text stroke. + + .. versionadded:: 6.2.0 + + :return: (width, height) + """ + max_width = 0 + lines = self._multiline_split(text) + line_spacing = self.getsize("A", stroke_width=stroke_width)[1] + spacing + for line in lines: + line_width, line_height = self.getsize( + line, direction, features, language, stroke_width + ) + max_width = max(max_width, line_width) + + return max_width, len(lines) * line_spacing - spacing + + def getoffset(self, text): + """ + Returns the offset of given text. This is the gap between the + starting coordinate and the first marking. Note that this gap is + included in the result of :py:func:`~PIL.ImageFont.FreeTypeFont.getsize`. + + :param text: Text to measure. + + :return: A tuple of the x and y offset + """ + return self.font.getsize(text)[1] + + def getmask( + self, + text, + mode="", + direction=None, + features=None, + language=None, + stroke_width=0, + ): + """ + Create a bitmap for the text. + + If the font uses antialiasing, the bitmap should have mode ``L`` and use a + maximum value of 255. Otherwise, it should have mode ``1``. + + :param text: Text to render. + :param mode: Used by some graphics drivers to indicate what mode the + driver prefers; if empty, the renderer may return either + mode. Note that the mode is always a string, to simplify + C-level implementations. + + .. versionadded:: 1.1.5 + + :param direction: Direction of the text. It can be 'rtl' (right to + left), 'ltr' (left to right) or 'ttb' (top to bottom). + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param features: A list of OpenType font features to be used during text + layout. This is usually used to turn on optional + font features that are not enabled by default, + for example 'dlig' or 'ss01', but can be also + used to turn off default font features for + example '-liga' to disable ligatures or '-kern' + to disable kerning. To get all supported + features, see + https://docs.microsoft.com/en-us/typography/opentype/spec/featurelist + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param language: Language of the text. Different languages may use + different glyph shapes or ligatures. This parameter tells + the font which language the text is in, and to apply the + correct substitutions as appropriate, if available. + It should be a `BCP 47 language code + ` + Requires libraqm. + + .. versionadded:: 6.0.0 + + :param stroke_width: The width of the text stroke. + + .. versionadded:: 6.2.0 + + :return: An internal PIL storage memory instance as defined by the + :py:mod:`PIL.Image.core` interface module. + """ + return self.getmask2( + text, + mode, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + )[0] + + def getmask2( + self, + text, + mode="", + fill=Image.core.fill, + direction=None, + features=None, + language=None, + stroke_width=0, + *args, + **kwargs + ): + """ + Create a bitmap for the text. + + If the font uses antialiasing, the bitmap should have mode ``L`` and use a + maximum value of 255. Otherwise, it should have mode ``1``. + + :param text: Text to render. + :param mode: Used by some graphics drivers to indicate what mode the + driver prefers; if empty, the renderer may return either + mode. Note that the mode is always a string, to simplify + C-level implementations. + + .. versionadded:: 1.1.5 + + :param direction: Direction of the text. It can be 'rtl' (right to + left), 'ltr' (left to right) or 'ttb' (top to bottom). + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param features: A list of OpenType font features to be used during text + layout. This is usually used to turn on optional + font features that are not enabled by default, + for example 'dlig' or 'ss01', but can be also + used to turn off default font features for + example '-liga' to disable ligatures or '-kern' + to disable kerning. To get all supported + features, see + https://docs.microsoft.com/en-us/typography/opentype/spec/featurelist + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param language: Language of the text. Different languages may use + different glyph shapes or ligatures. This parameter tells + the font which language the text is in, and to apply the + correct substitutions as appropriate, if available. + It should be a `BCP 47 language code + ` + Requires libraqm. + + .. versionadded:: 6.0.0 + + :param stroke_width: The width of the text stroke. + + .. versionadded:: 6.2.0 + + :return: A tuple of an internal PIL storage memory instance as defined by the + :py:mod:`PIL.Image.core` interface module, and the text offset, the + gap between the starting coordinate and the first marking + """ + size, offset = self.font.getsize(text, direction, features, language) + size = size[0] + stroke_width * 2, size[1] + stroke_width * 2 + im = fill("L", size, 0) + self.font.render( + text, im.id, mode == "1", direction, features, language, stroke_width + ) + return im, offset + + def font_variant( + self, font=None, size=None, index=None, encoding=None, layout_engine=None + ): + """ + Create a copy of this FreeTypeFont object, + using any specified arguments to override the settings. + + Parameters are identical to the parameters used to initialize this + object. + + :return: A FreeTypeFont object. + """ + return FreeTypeFont( + font=self.path if font is None else font, + size=self.size if size is None else size, + index=self.index if index is None else index, + encoding=self.encoding if encoding is None else encoding, + layout_engine=layout_engine or self.layout_engine, + ) + + def get_variation_names(self): + """ + :returns: A list of the named styles in a variation font. + :exception IOError: If the font is not a variation font. + """ + try: + names = self.font.getvarnames() + except AttributeError: + raise NotImplementedError("FreeType 2.9.1 or greater is required") + return [name.replace(b"\x00", b"") for name in names] + + def set_variation_by_name(self, name): + """ + :param name: The name of the style. + :exception IOError: If the font is not a variation font. + """ + names = self.get_variation_names() + if not isinstance(name, bytes): + name = name.encode() + index = names.index(name) + + if index == getattr(self, "_last_variation_index", None): + # When the same name is set twice in a row, + # there is an 'unknown freetype error' + # https://savannah.nongnu.org/bugs/?56186 + return + self._last_variation_index = index + + self.font.setvarname(index) + + def get_variation_axes(self): + """ + :returns: A list of the axes in a variation font. + :exception IOError: If the font is not a variation font. + """ + try: + axes = self.font.getvaraxes() + except AttributeError: + raise NotImplementedError("FreeType 2.9.1 or greater is required") + for axis in axes: + axis["name"] = axis["name"].replace(b"\x00", b"") + return axes + + def set_variation_by_axes(self, axes): + """ + :param axes: A list of values for each axis. + :exception IOError: If the font is not a variation font. + """ + try: + self.font.setvaraxes(axes) + except AttributeError: + raise NotImplementedError("FreeType 2.9.1 or greater is required") + + +class TransposedFont: + "Wrapper for writing rotated or mirrored text" + + def __init__(self, font, orientation=None): + """ + Wrapper that creates a transposed font from any existing font + object. + + :param font: A font object. + :param orientation: An optional orientation. If given, this should + be one of Image.FLIP_LEFT_RIGHT, Image.FLIP_TOP_BOTTOM, + Image.ROTATE_90, Image.ROTATE_180, or Image.ROTATE_270. + """ + self.font = font + self.orientation = orientation # any 'transpose' argument, or None + + def getsize(self, text, *args, **kwargs): + w, h = self.font.getsize(text) + if self.orientation in (Image.ROTATE_90, Image.ROTATE_270): + return h, w + return w, h + + def getmask(self, text, mode="", *args, **kwargs): + im = self.font.getmask(text, mode, *args, **kwargs) + if self.orientation is not None: + return im.transpose(self.orientation) + return im + + +def load(filename): + """ + Load a font file. This function loads a font object from the given + bitmap font file, and returns the corresponding font object. + + :param filename: Name of font file. + :return: A font object. + :exception IOError: If the file could not be read. + """ + f = ImageFont() + f._load_pilfont(filename) + return f + + +def truetype(font=None, size=10, index=0, encoding="", layout_engine=None): + """ + Load a TrueType or OpenType font from a file or file-like object, + and create a font object. + This function loads a font object from the given file or file-like + object, and creates a font object for a font of the given size. + + Pillow uses FreeType to open font files. If you are opening many fonts + simultaneously on Windows, be aware that Windows limits the number of files + that can be open in C at once to 512. If you approach that limit, an + ``OSError`` may be thrown, reporting that FreeType "cannot open resource". + + This function requires the _imagingft service. + + :param font: A filename or file-like object containing a TrueType font. + If the file is not found in this filename, the loader may also + search in other directories, such as the :file:`fonts/` + directory on Windows or :file:`/Library/Fonts/`, + :file:`/System/Library/Fonts/` and :file:`~/Library/Fonts/` on + macOS. + + :param size: The requested size, in points. + :param index: Which font face to load (default is first available face). + :param encoding: Which font encoding to use (default is Unicode). Possible + encodings include (see the FreeType documentation for more + information): + + * "unic" (Unicode) + * "symb" (Microsoft Symbol) + * "ADOB" (Adobe Standard) + * "ADBE" (Adobe Expert) + * "ADBC" (Adobe Custom) + * "armn" (Apple Roman) + * "sjis" (Shift JIS) + * "gb " (PRC) + * "big5" + * "wans" (Extended Wansung) + * "joha" (Johab) + * "lat1" (Latin-1) + + This specifies the character set to use. It does not alter the + encoding of any text provided in subsequent operations. + :param layout_engine: Which layout engine to use, if available: + `ImageFont.LAYOUT_BASIC` or `ImageFont.LAYOUT_RAQM`. + :return: A font object. + :exception IOError: If the file could not be read. + """ + + def freetype(font): + return FreeTypeFont(font, size, index, encoding, layout_engine) + + try: + return freetype(font) + except OSError: + if not isPath(font): + raise + ttf_filename = os.path.basename(font) + + dirs = [] + if sys.platform == "win32": + # check the windows font repository + # NOTE: must use uppercase WINDIR, to work around bugs in + # 1.5.2's os.environ.get() + windir = os.environ.get("WINDIR") + if windir: + dirs.append(os.path.join(windir, "fonts")) + elif sys.platform in ("linux", "linux2"): + lindirs = os.environ.get("XDG_DATA_DIRS", "") + if not lindirs: + # According to the freedesktop spec, XDG_DATA_DIRS should + # default to /usr/share + lindirs = "/usr/share" + dirs += [os.path.join(lindir, "fonts") for lindir in lindirs.split(":")] + elif sys.platform == "darwin": + dirs += [ + "/Library/Fonts", + "/System/Library/Fonts", + os.path.expanduser("~/Library/Fonts"), + ] + + ext = os.path.splitext(ttf_filename)[1] + first_font_with_a_different_extension = None + for directory in dirs: + for walkroot, walkdir, walkfilenames in os.walk(directory): + for walkfilename in walkfilenames: + if ext and walkfilename == ttf_filename: + return freetype(os.path.join(walkroot, walkfilename)) + elif not ext and os.path.splitext(walkfilename)[0] == ttf_filename: + fontpath = os.path.join(walkroot, walkfilename) + if os.path.splitext(fontpath)[1] == ".ttf": + return freetype(fontpath) + if not ext and first_font_with_a_different_extension is None: + first_font_with_a_different_extension = fontpath + if first_font_with_a_different_extension: + return freetype(first_font_with_a_different_extension) + raise + + +def load_path(filename): + """ + Load font file. Same as :py:func:`~PIL.ImageFont.load`, but searches for a + bitmap font along the Python path. + + :param filename: Name of font file. + :return: A font object. + :exception IOError: If the file could not be read. + """ + for directory in sys.path: + if isDirectory(directory): + if not isinstance(filename, str): + filename = filename.decode("utf-8") + try: + return load(os.path.join(directory, filename)) + except OSError: + pass + raise OSError("cannot find font file") + + +def load_default(): + """Load a "better than nothing" default font. + + .. versionadded:: 1.1.4 + + :return: A font object. + """ + f = ImageFont() + f._load_pilfont_data( + # courB08 + BytesIO( + base64.b64decode( + b""" +UElMZm9udAo7Ozs7OzsxMDsKREFUQQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAA//8AAQAAAAAAAAABAAEA +BgAAAAH/+gADAAAAAQAAAAMABgAGAAAAAf/6AAT//QADAAAABgADAAYAAAAA//kABQABAAYAAAAL +AAgABgAAAAD/+AAFAAEACwAAABAACQAGAAAAAP/5AAUAAAAQAAAAFQAHAAYAAP////oABQAAABUA +AAAbAAYABgAAAAH/+QAE//wAGwAAAB4AAwAGAAAAAf/5AAQAAQAeAAAAIQAIAAYAAAAB//kABAAB +ACEAAAAkAAgABgAAAAD/+QAE//0AJAAAACgABAAGAAAAAP/6AAX//wAoAAAALQAFAAYAAAAB//8A +BAACAC0AAAAwAAMABgAAAAD//AAF//0AMAAAADUAAQAGAAAAAf//AAMAAAA1AAAANwABAAYAAAAB +//kABQABADcAAAA7AAgABgAAAAD/+QAFAAAAOwAAAEAABwAGAAAAAP/5AAYAAABAAAAARgAHAAYA +AAAA//kABQAAAEYAAABLAAcABgAAAAD/+QAFAAAASwAAAFAABwAGAAAAAP/5AAYAAABQAAAAVgAH +AAYAAAAA//kABQAAAFYAAABbAAcABgAAAAD/+QAFAAAAWwAAAGAABwAGAAAAAP/5AAUAAABgAAAA +ZQAHAAYAAAAA//kABQAAAGUAAABqAAcABgAAAAD/+QAFAAAAagAAAG8ABwAGAAAAAf/8AAMAAABv +AAAAcQAEAAYAAAAA//wAAwACAHEAAAB0AAYABgAAAAD/+gAE//8AdAAAAHgABQAGAAAAAP/7AAT/ +/gB4AAAAfAADAAYAAAAB//oABf//AHwAAACAAAUABgAAAAD/+gAFAAAAgAAAAIUABgAGAAAAAP/5 +AAYAAQCFAAAAiwAIAAYAAP////oABgAAAIsAAACSAAYABgAA////+gAFAAAAkgAAAJgABgAGAAAA +AP/6AAUAAACYAAAAnQAGAAYAAP////oABQAAAJ0AAACjAAYABgAA////+gAFAAAAowAAAKkABgAG +AAD////6AAUAAACpAAAArwAGAAYAAAAA//oABQAAAK8AAAC0AAYABgAA////+gAGAAAAtAAAALsA +BgAGAAAAAP/6AAQAAAC7AAAAvwAGAAYAAP////oABQAAAL8AAADFAAYABgAA////+gAGAAAAxQAA +AMwABgAGAAD////6AAUAAADMAAAA0gAGAAYAAP////oABQAAANIAAADYAAYABgAA////+gAGAAAA +2AAAAN8ABgAGAAAAAP/6AAUAAADfAAAA5AAGAAYAAP////oABQAAAOQAAADqAAYABgAAAAD/+gAF +AAEA6gAAAO8ABwAGAAD////6AAYAAADvAAAA9gAGAAYAAAAA//oABQAAAPYAAAD7AAYABgAA//// ++gAFAAAA+wAAAQEABgAGAAD////6AAYAAAEBAAABCAAGAAYAAP////oABgAAAQgAAAEPAAYABgAA +////+gAGAAABDwAAARYABgAGAAAAAP/6AAYAAAEWAAABHAAGAAYAAP////oABgAAARwAAAEjAAYA +BgAAAAD/+gAFAAABIwAAASgABgAGAAAAAf/5AAQAAQEoAAABKwAIAAYAAAAA//kABAABASsAAAEv +AAgABgAAAAH/+QAEAAEBLwAAATIACAAGAAAAAP/5AAX//AEyAAABNwADAAYAAAAAAAEABgACATcA +AAE9AAEABgAAAAH/+QAE//wBPQAAAUAAAwAGAAAAAP/7AAYAAAFAAAABRgAFAAYAAP////kABQAA +AUYAAAFMAAcABgAAAAD/+wAFAAABTAAAAVEABQAGAAAAAP/5AAYAAAFRAAABVwAHAAYAAAAA//sA +BQAAAVcAAAFcAAUABgAAAAD/+QAFAAABXAAAAWEABwAGAAAAAP/7AAYAAgFhAAABZwAHAAYAAP// +//kABQAAAWcAAAFtAAcABgAAAAD/+QAGAAABbQAAAXMABwAGAAAAAP/5AAQAAgFzAAABdwAJAAYA +AP////kABgAAAXcAAAF+AAcABgAAAAD/+QAGAAABfgAAAYQABwAGAAD////7AAUAAAGEAAABigAF +AAYAAP////sABQAAAYoAAAGQAAUABgAAAAD/+wAFAAABkAAAAZUABQAGAAD////7AAUAAgGVAAAB +mwAHAAYAAAAA//sABgACAZsAAAGhAAcABgAAAAD/+wAGAAABoQAAAacABQAGAAAAAP/7AAYAAAGn +AAABrQAFAAYAAAAA//kABgAAAa0AAAGzAAcABgAA////+wAGAAABswAAAboABQAGAAD////7AAUA +AAG6AAABwAAFAAYAAP////sABgAAAcAAAAHHAAUABgAAAAD/+wAGAAABxwAAAc0ABQAGAAD////7 +AAYAAgHNAAAB1AAHAAYAAAAA//sABQAAAdQAAAHZAAUABgAAAAH/+QAFAAEB2QAAAd0ACAAGAAAA +Av/6AAMAAQHdAAAB3gAHAAYAAAAA//kABAABAd4AAAHiAAgABgAAAAD/+wAF//0B4gAAAecAAgAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAB +//sAAwACAecAAAHpAAcABgAAAAD/+QAFAAEB6QAAAe4ACAAGAAAAAP/5AAYAAAHuAAAB9AAHAAYA +AAAA//oABf//AfQAAAH5AAUABgAAAAD/+QAGAAAB+QAAAf8ABwAGAAAAAv/5AAMAAgH/AAACAAAJ +AAYAAAAA//kABQABAgAAAAIFAAgABgAAAAH/+gAE//sCBQAAAggAAQAGAAAAAP/5AAYAAAIIAAAC +DgAHAAYAAAAB//kABf/+Ag4AAAISAAUABgAA////+wAGAAACEgAAAhkABQAGAAAAAP/7AAX//gIZ +AAACHgADAAYAAAAA//wABf/9Ah4AAAIjAAEABgAAAAD/+QAHAAACIwAAAioABwAGAAAAAP/6AAT/ ++wIqAAACLgABAAYAAAAA//kABP/8Ai4AAAIyAAMABgAAAAD/+gAFAAACMgAAAjcABgAGAAAAAf/5 +AAT//QI3AAACOgAEAAYAAAAB//kABP/9AjoAAAI9AAQABgAAAAL/+QAE//sCPQAAAj8AAgAGAAD/ +///7AAYAAgI/AAACRgAHAAYAAAAA//kABgABAkYAAAJMAAgABgAAAAH//AAD//0CTAAAAk4AAQAG +AAAAAf//AAQAAgJOAAACUQADAAYAAAAB//kABP/9AlEAAAJUAAQABgAAAAH/+QAF//4CVAAAAlgA +BQAGAAD////7AAYAAAJYAAACXwAFAAYAAP////kABgAAAl8AAAJmAAcABgAA////+QAGAAACZgAA +Am0ABwAGAAD////5AAYAAAJtAAACdAAHAAYAAAAA//sABQACAnQAAAJ5AAcABgAA////9wAGAAAC +eQAAAoAACQAGAAD////3AAYAAAKAAAAChwAJAAYAAP////cABgAAAocAAAKOAAkABgAA////9wAG +AAACjgAAApUACQAGAAD////4AAYAAAKVAAACnAAIAAYAAP////cABgAAApwAAAKjAAkABgAA//// ++gAGAAACowAAAqoABgAGAAAAAP/6AAUAAgKqAAACrwAIAAYAAP////cABQAAAq8AAAK1AAkABgAA +////9wAFAAACtQAAArsACQAGAAD////3AAUAAAK7AAACwQAJAAYAAP////gABQAAAsEAAALHAAgA +BgAAAAD/9wAEAAACxwAAAssACQAGAAAAAP/3AAQAAALLAAACzwAJAAYAAAAA//cABAAAAs8AAALT +AAkABgAAAAD/+AAEAAAC0wAAAtcACAAGAAD////6AAUAAALXAAAC3QAGAAYAAP////cABgAAAt0A +AALkAAkABgAAAAD/9wAFAAAC5AAAAukACQAGAAAAAP/3AAUAAALpAAAC7gAJAAYAAAAA//cABQAA +Au4AAALzAAkABgAAAAD/9wAFAAAC8wAAAvgACQAGAAAAAP/4AAUAAAL4AAAC/QAIAAYAAAAA//oA +Bf//Av0AAAMCAAUABgAA////+gAGAAADAgAAAwkABgAGAAD////3AAYAAAMJAAADEAAJAAYAAP// +//cABgAAAxAAAAMXAAkABgAA////9wAGAAADFwAAAx4ACQAGAAD////4AAYAAAAAAAoABwASAAYA +AP////cABgAAAAcACgAOABMABgAA////+gAFAAAADgAKABQAEAAGAAD////6AAYAAAAUAAoAGwAQ +AAYAAAAA//gABgAAABsACgAhABIABgAAAAD/+AAGAAAAIQAKACcAEgAGAAAAAP/4AAYAAAAnAAoA +LQASAAYAAAAA//gABgAAAC0ACgAzABIABgAAAAD/+QAGAAAAMwAKADkAEQAGAAAAAP/3AAYAAAA5 +AAoAPwATAAYAAP////sABQAAAD8ACgBFAA8ABgAAAAD/+wAFAAIARQAKAEoAEQAGAAAAAP/4AAUA +AABKAAoATwASAAYAAAAA//gABQAAAE8ACgBUABIABgAAAAD/+AAFAAAAVAAKAFkAEgAGAAAAAP/5 +AAUAAABZAAoAXgARAAYAAAAA//gABgAAAF4ACgBkABIABgAAAAD/+AAGAAAAZAAKAGoAEgAGAAAA +AP/4AAYAAABqAAoAcAASAAYAAAAA//kABgAAAHAACgB2ABEABgAAAAD/+AAFAAAAdgAKAHsAEgAG +AAD////4AAYAAAB7AAoAggASAAYAAAAA//gABQAAAIIACgCHABIABgAAAAD/+AAFAAAAhwAKAIwA +EgAGAAAAAP/4AAUAAACMAAoAkQASAAYAAAAA//gABQAAAJEACgCWABIABgAAAAD/+QAFAAAAlgAK +AJsAEQAGAAAAAP/6AAX//wCbAAoAoAAPAAYAAAAA//oABQABAKAACgClABEABgAA////+AAGAAAA +pQAKAKwAEgAGAAD////4AAYAAACsAAoAswASAAYAAP////gABgAAALMACgC6ABIABgAA////+QAG +AAAAugAKAMEAEQAGAAD////4AAYAAgDBAAoAyAAUAAYAAP////kABQACAMgACgDOABMABgAA//// ++QAGAAIAzgAKANUAEw== +""" + ) + ), + Image.open( + BytesIO( + base64.b64decode( + b""" +iVBORw0KGgoAAAANSUhEUgAAAx4AAAAUAQAAAAArMtZoAAAEwElEQVR4nABlAJr/AHVE4czCI/4u +Mc4b7vuds/xzjz5/3/7u/n9vMe7vnfH/9++vPn/xyf5zhxzjt8GHw8+2d83u8x27199/nxuQ6Od9 +M43/5z2I+9n9ZtmDBwMQECDRQw/eQIQohJXxpBCNVE6QCCAAAAD//wBlAJr/AgALyj1t/wINwq0g +LeNZUworuN1cjTPIzrTX6ofHWeo3v336qPzfEwRmBnHTtf95/fglZK5N0PDgfRTslpGBvz7LFc4F +IUXBWQGjQ5MGCx34EDFPwXiY4YbYxavpnhHFrk14CDAAAAD//wBlAJr/AgKqRooH2gAgPeggvUAA +Bu2WfgPoAwzRAABAAAAAAACQgLz/3Uv4Gv+gX7BJgDeeGP6AAAD1NMDzKHD7ANWr3loYbxsAD791 +NAADfcoIDyP44K/jv4Y63/Z+t98Ovt+ub4T48LAAAAD//wBlAJr/AuplMlADJAAAAGuAphWpqhMx +in0A/fRvAYBABPgBwBUgABBQ/sYAyv9g0bCHgOLoGAAAAAAAREAAwI7nr0ArYpow7aX8//9LaP/9 +SjdavWA8ePHeBIKB//81/83ndznOaXx379wAAAD//wBlAJr/AqDxW+D3AABAAbUh/QMnbQag/gAY +AYDAAACgtgD/gOqAAAB5IA/8AAAk+n9w0AAA8AAAmFRJuPo27ciC0cD5oeW4E7KA/wD3ECMAn2tt +y8PgwH8AfAxFzC0JzeAMtratAsC/ffwAAAD//wBlAJr/BGKAyCAA4AAAAvgeYTAwHd1kmQF5chkG +ABoMIHcL5xVpTfQbUqzlAAAErwAQBgAAEOClA5D9il08AEh/tUzdCBsXkbgACED+woQg8Si9VeqY +lODCn7lmF6NhnAEYgAAA/NMIAAAAAAD//2JgjLZgVGBg5Pv/Tvpc8hwGBjYGJADjHDrAwPzAjv/H +/Wf3PzCwtzcwHmBgYGcwbZz8wHaCAQMDOwMDQ8MCBgYOC3W7mp+f0w+wHOYxO3OG+e376hsMZjk3 +AAAAAP//YmCMY2A4wMAIN5e5gQETPD6AZisDAwMDgzSDAAPjByiHcQMDAwMDg1nOze1lByRu5/47 +c4859311AYNZzg0AAAAA//9iYGDBYihOIIMuwIjGL39/fwffA8b//xv/P2BPtzzHwCBjUQAAAAD/ +/yLFBrIBAAAA//9i1HhcwdhizX7u8NZNzyLbvT97bfrMf/QHI8evOwcSqGUJAAAA//9iYBB81iSw +pEE170Qrg5MIYydHqwdDQRMrAwcVrQAAAAD//2J4x7j9AAMDn8Q/BgYLBoaiAwwMjPdvMDBYM1Tv +oJodAAAAAP//Yqo/83+dxePWlxl3npsel9lvLfPcqlE9725C+acfVLMEAAAA//9i+s9gwCoaaGMR +evta/58PTEWzr21hufPjA8N+qlnBwAAAAAD//2JiWLci5v1+HmFXDqcnULE/MxgYGBj+f6CaJQAA +AAD//2Ji2FrkY3iYpYC5qDeGgeEMAwPDvwQBBoYvcTwOVLMEAAAA//9isDBgkP///0EOg9z35v// +Gc/eeW7BwPj5+QGZhANUswMAAAD//2JgqGBgYGBgqEMXlvhMPUsAAAAA//8iYDd1AAAAAP//AwDR +w7IkEbzhVQAAAABJRU5ErkJggg== +""" + ) + ) + ), + ) + return f diff --git a/venv/Lib/site-packages/PIL/ImageGrab.py b/venv/Lib/site-packages/PIL/ImageGrab.py new file mode 100644 index 0000000..66e2e85 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageGrab.py @@ -0,0 +1,104 @@ +# +# The Python Imaging Library +# $Id$ +# +# screen grabber (macOS and Windows only) +# +# History: +# 2001-04-26 fl created +# 2001-09-17 fl use builtin driver, if present +# 2002-11-19 fl added grabclipboard support +# +# Copyright (c) 2001-2002 by Secret Labs AB +# Copyright (c) 2001-2002 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import sys + +from . import Image + +if sys.platform == "darwin": + import os + import tempfile + import subprocess + + +def grab(bbox=None, include_layered_windows=False, all_screens=False, xdisplay=None): + if xdisplay is None: + if sys.platform == "darwin": + fh, filepath = tempfile.mkstemp(".png") + os.close(fh) + subprocess.call(["screencapture", "-x", filepath]) + im = Image.open(filepath) + im.load() + os.unlink(filepath) + if bbox: + im_cropped = im.crop(bbox) + im.close() + return im_cropped + return im + elif sys.platform == "win32": + offset, size, data = Image.core.grabscreen_win32( + include_layered_windows, all_screens + ) + im = Image.frombytes( + "RGB", + size, + data, + # RGB, 32-bit line padding, origin lower left corner + "raw", + "BGR", + (size[0] * 3 + 3) & -4, + -1, + ) + if bbox: + x0, y0 = offset + left, top, right, bottom = bbox + im = im.crop((left - x0, top - y0, right - x0, bottom - y0)) + return im + # use xdisplay=None for default display on non-win32/macOS systems + if not Image.core.HAVE_XCB: + raise IOError("Pillow was built without XCB support") + size, data = Image.core.grabscreen_x11(xdisplay) + im = Image.frombytes("RGB", size, data, "raw", "BGRX", size[0] * 4, 1) + if bbox: + im = im.crop(bbox) + return im + + +def grabclipboard(): + if sys.platform == "darwin": + fh, filepath = tempfile.mkstemp(".jpg") + os.close(fh) + commands = [ + 'set theFile to (open for access POSIX file "' + + filepath + + '" with write permission)', + "try", + " write (the clipboard as JPEG picture) to theFile", + "end try", + "close access theFile", + ] + script = ["osascript"] + for command in commands: + script += ["-e", command] + subprocess.call(script) + + im = None + if os.stat(filepath).st_size != 0: + im = Image.open(filepath) + im.load() + os.unlink(filepath) + return im + elif sys.platform == "win32": + data = Image.core.grabclipboard_win32() + if isinstance(data, bytes): + from . import BmpImagePlugin + import io + + return BmpImagePlugin.DibImageFile(io.BytesIO(data)) + return data + else: + raise NotImplementedError("ImageGrab.grabclipboard() is macOS and Windows only") diff --git a/venv/Lib/site-packages/PIL/ImageMath.py b/venv/Lib/site-packages/PIL/ImageMath.py new file mode 100644 index 0000000..adbb940 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageMath.py @@ -0,0 +1,253 @@ +# +# The Python Imaging Library +# $Id$ +# +# a simple math add-on for the Python Imaging Library +# +# History: +# 1999-02-15 fl Original PIL Plus release +# 2005-05-05 fl Simplified and cleaned up for PIL 1.1.6 +# 2005-09-12 fl Fixed int() and float() for Python 2.4.1 +# +# Copyright (c) 1999-2005 by Secret Labs AB +# Copyright (c) 2005 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import builtins + +from . import Image, _imagingmath + +VERBOSE = 0 + + +def _isconstant(v): + return isinstance(v, (int, float)) + + +class _Operand: + """Wraps an image operand, providing standard operators""" + + def __init__(self, im): + self.im = im + + def __fixup(self, im1): + # convert image to suitable mode + if isinstance(im1, _Operand): + # argument was an image. + if im1.im.mode in ("1", "L"): + return im1.im.convert("I") + elif im1.im.mode in ("I", "F"): + return im1.im + else: + raise ValueError("unsupported mode: %s" % im1.im.mode) + else: + # argument was a constant + if _isconstant(im1) and self.im.mode in ("1", "L", "I"): + return Image.new("I", self.im.size, im1) + else: + return Image.new("F", self.im.size, im1) + + def apply(self, op, im1, im2=None, mode=None): + im1 = self.__fixup(im1) + if im2 is None: + # unary operation + out = Image.new(mode or im1.mode, im1.size, None) + im1.load() + try: + op = getattr(_imagingmath, op + "_" + im1.mode) + except AttributeError: + raise TypeError("bad operand type for '%s'" % op) + _imagingmath.unop(op, out.im.id, im1.im.id) + else: + # binary operation + im2 = self.__fixup(im2) + if im1.mode != im2.mode: + # convert both arguments to floating point + if im1.mode != "F": + im1 = im1.convert("F") + if im2.mode != "F": + im2 = im2.convert("F") + if im1.mode != im2.mode: + raise ValueError("mode mismatch") + if im1.size != im2.size: + # crop both arguments to a common size + size = (min(im1.size[0], im2.size[0]), min(im1.size[1], im2.size[1])) + if im1.size != size: + im1 = im1.crop((0, 0) + size) + if im2.size != size: + im2 = im2.crop((0, 0) + size) + out = Image.new(mode or im1.mode, size, None) + else: + out = Image.new(mode or im1.mode, im1.size, None) + im1.load() + im2.load() + try: + op = getattr(_imagingmath, op + "_" + im1.mode) + except AttributeError: + raise TypeError("bad operand type for '%s'" % op) + _imagingmath.binop(op, out.im.id, im1.im.id, im2.im.id) + return _Operand(out) + + # unary operators + def __bool__(self): + # an image is "true" if it contains at least one non-zero pixel + return self.im.getbbox() is not None + + def __abs__(self): + return self.apply("abs", self) + + def __pos__(self): + return self + + def __neg__(self): + return self.apply("neg", self) + + # binary operators + def __add__(self, other): + return self.apply("add", self, other) + + def __radd__(self, other): + return self.apply("add", other, self) + + def __sub__(self, other): + return self.apply("sub", self, other) + + def __rsub__(self, other): + return self.apply("sub", other, self) + + def __mul__(self, other): + return self.apply("mul", self, other) + + def __rmul__(self, other): + return self.apply("mul", other, self) + + def __truediv__(self, other): + return self.apply("div", self, other) + + def __rtruediv__(self, other): + return self.apply("div", other, self) + + def __mod__(self, other): + return self.apply("mod", self, other) + + def __rmod__(self, other): + return self.apply("mod", other, self) + + def __pow__(self, other): + return self.apply("pow", self, other) + + def __rpow__(self, other): + return self.apply("pow", other, self) + + # bitwise + def __invert__(self): + return self.apply("invert", self) + + def __and__(self, other): + return self.apply("and", self, other) + + def __rand__(self, other): + return self.apply("and", other, self) + + def __or__(self, other): + return self.apply("or", self, other) + + def __ror__(self, other): + return self.apply("or", other, self) + + def __xor__(self, other): + return self.apply("xor", self, other) + + def __rxor__(self, other): + return self.apply("xor", other, self) + + def __lshift__(self, other): + return self.apply("lshift", self, other) + + def __rshift__(self, other): + return self.apply("rshift", self, other) + + # logical + def __eq__(self, other): + return self.apply("eq", self, other) + + def __ne__(self, other): + return self.apply("ne", self, other) + + def __lt__(self, other): + return self.apply("lt", self, other) + + def __le__(self, other): + return self.apply("le", self, other) + + def __gt__(self, other): + return self.apply("gt", self, other) + + def __ge__(self, other): + return self.apply("ge", self, other) + + +# conversions +def imagemath_int(self): + return _Operand(self.im.convert("I")) + + +def imagemath_float(self): + return _Operand(self.im.convert("F")) + + +# logical +def imagemath_equal(self, other): + return self.apply("eq", self, other, mode="I") + + +def imagemath_notequal(self, other): + return self.apply("ne", self, other, mode="I") + + +def imagemath_min(self, other): + return self.apply("min", self, other) + + +def imagemath_max(self, other): + return self.apply("max", self, other) + + +def imagemath_convert(self, mode): + return _Operand(self.im.convert(mode)) + + +ops = {} +for k, v in list(globals().items()): + if k[:10] == "imagemath_": + ops[k[10:]] = v + + +def eval(expression, _dict={}, **kw): + """ + Evaluates an image expression. + + :param expression: A string containing a Python-style expression. + :param options: Values to add to the evaluation context. You + can either use a dictionary, or one or more keyword + arguments. + :return: The evaluated expression. This is usually an image object, but can + also be an integer, a floating point value, or a pixel tuple, + depending on the expression. + """ + + # build execution namespace + args = ops.copy() + args.update(_dict) + args.update(kw) + for k, v in list(args.items()): + if hasattr(v, "im"): + args[k] = _Operand(v) + + out = builtins.eval(expression, args) + try: + return out.im + except AttributeError: + return out diff --git a/venv/Lib/site-packages/PIL/ImageMode.py b/venv/Lib/site-packages/PIL/ImageMode.py new file mode 100644 index 0000000..9882883 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageMode.py @@ -0,0 +1,64 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard mode descriptors +# +# History: +# 2006-03-20 fl Added +# +# Copyright (c) 2006 by Secret Labs AB. +# Copyright (c) 2006 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +# mode descriptor cache +_modes = None + + +class ModeDescriptor: + """Wrapper for mode strings.""" + + def __init__(self, mode, bands, basemode, basetype): + self.mode = mode + self.bands = bands + self.basemode = basemode + self.basetype = basetype + + def __str__(self): + return self.mode + + +def getmode(mode): + """Gets a mode descriptor for the given mode.""" + global _modes + if not _modes: + # initialize mode cache + + from . import Image + + modes = {} + # core modes + for m, (basemode, basetype, bands) in Image._MODEINFO.items(): + modes[m] = ModeDescriptor(m, bands, basemode, basetype) + # extra experimental modes + modes["RGBa"] = ModeDescriptor("RGBa", ("R", "G", "B", "a"), "RGB", "L") + modes["LA"] = ModeDescriptor("LA", ("L", "A"), "L", "L") + modes["La"] = ModeDescriptor("La", ("L", "a"), "L", "L") + modes["PA"] = ModeDescriptor("PA", ("P", "A"), "RGB", "L") + # mapping modes + for i16mode in ( + "I;16", + "I;16S", + "I;16L", + "I;16LS", + "I;16B", + "I;16BS", + "I;16N", + "I;16NS", + ): + modes[i16mode] = ModeDescriptor(i16mode, ("I",), "L", "L") + # set global mode cache atomically + _modes = modes + return _modes[mode] diff --git a/venv/Lib/site-packages/PIL/ImageMorph.py b/venv/Lib/site-packages/PIL/ImageMorph.py new file mode 100644 index 0000000..d1ec09e --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageMorph.py @@ -0,0 +1,245 @@ +# A binary morphology add-on for the Python Imaging Library +# +# History: +# 2014-06-04 Initial version. +# +# Copyright (c) 2014 Dov Grobgeld + +import re + +from . import Image, _imagingmorph + +LUT_SIZE = 1 << 9 + +# fmt: off +ROTATION_MATRIX = [ + 6, 3, 0, + 7, 4, 1, + 8, 5, 2, +] +MIRROR_MATRIX = [ + 2, 1, 0, + 5, 4, 3, + 8, 7, 6, +] +# fmt: on + + +class LutBuilder: + """A class for building a MorphLut from a descriptive language + + The input patterns is a list of a strings sequences like these:: + + 4:(... + .1. + 111)->1 + + (whitespaces including linebreaks are ignored). The option 4 + describes a series of symmetry operations (in this case a + 4-rotation), the pattern is described by: + + - . or X - Ignore + - 1 - Pixel is on + - 0 - Pixel is off + + The result of the operation is described after "->" string. + + The default is to return the current pixel value, which is + returned if no other match is found. + + Operations: + + - 4 - 4 way rotation + - N - Negate + - 1 - Dummy op for no other operation (an op must always be given) + - M - Mirroring + + Example:: + + lb = LutBuilder(patterns = ["4:(... .1. 111)->1"]) + lut = lb.build_lut() + + """ + + def __init__(self, patterns=None, op_name=None): + if patterns is not None: + self.patterns = patterns + else: + self.patterns = [] + self.lut = None + if op_name is not None: + known_patterns = { + "corner": ["1:(... ... ...)->0", "4:(00. 01. ...)->1"], + "dilation4": ["4:(... .0. .1.)->1"], + "dilation8": ["4:(... .0. .1.)->1", "4:(... .0. ..1)->1"], + "erosion4": ["4:(... .1. .0.)->0"], + "erosion8": ["4:(... .1. .0.)->0", "4:(... .1. ..0)->0"], + "edge": [ + "1:(... ... ...)->0", + "4:(.0. .1. ...)->1", + "4:(01. .1. ...)->1", + ], + } + if op_name not in known_patterns: + raise Exception("Unknown pattern " + op_name + "!") + + self.patterns = known_patterns[op_name] + + def add_patterns(self, patterns): + self.patterns += patterns + + def build_default_lut(self): + symbols = [0, 1] + m = 1 << 4 # pos of current pixel + self.lut = bytearray(symbols[(i & m) > 0] for i in range(LUT_SIZE)) + + def get_lut(self): + return self.lut + + def _string_permute(self, pattern, permutation): + """string_permute takes a pattern and a permutation and returns the + string permuted according to the permutation list. + """ + assert len(permutation) == 9 + return "".join(pattern[p] for p in permutation) + + def _pattern_permute(self, basic_pattern, options, basic_result): + """pattern_permute takes a basic pattern and its result and clones + the pattern according to the modifications described in the $options + parameter. It returns a list of all cloned patterns.""" + patterns = [(basic_pattern, basic_result)] + + # rotations + if "4" in options: + res = patterns[-1][1] + for i in range(4): + patterns.append( + (self._string_permute(patterns[-1][0], ROTATION_MATRIX), res) + ) + # mirror + if "M" in options: + n = len(patterns) + for pattern, res in patterns[0:n]: + patterns.append((self._string_permute(pattern, MIRROR_MATRIX), res)) + + # negate + if "N" in options: + n = len(patterns) + for pattern, res in patterns[0:n]: + # Swap 0 and 1 + pattern = pattern.replace("0", "Z").replace("1", "0").replace("Z", "1") + res = 1 - int(res) + patterns.append((pattern, res)) + + return patterns + + def build_lut(self): + """Compile all patterns into a morphology lut. + + TBD :Build based on (file) morphlut:modify_lut + """ + self.build_default_lut() + patterns = [] + + # Parse and create symmetries of the patterns strings + for p in self.patterns: + m = re.search(r"(\w*):?\s*\((.+?)\)\s*->\s*(\d)", p.replace("\n", "")) + if not m: + raise Exception('Syntax error in pattern "' + p + '"') + options = m.group(1) + pattern = m.group(2) + result = int(m.group(3)) + + # Get rid of spaces + pattern = pattern.replace(" ", "").replace("\n", "") + + patterns += self._pattern_permute(pattern, options, result) + + # compile the patterns into regular expressions for speed + for i, pattern in enumerate(patterns): + p = pattern[0].replace(".", "X").replace("X", "[01]") + p = re.compile(p) + patterns[i] = (p, pattern[1]) + + # Step through table and find patterns that match. + # Note that all the patterns are searched. The last one + # caught overrides + for i in range(LUT_SIZE): + # Build the bit pattern + bitpattern = bin(i)[2:] + bitpattern = ("0" * (9 - len(bitpattern)) + bitpattern)[::-1] + + for p, r in patterns: + if p.match(bitpattern): + self.lut[i] = [0, 1][r] + + return self.lut + + +class MorphOp: + """A class for binary morphological operators""" + + def __init__(self, lut=None, op_name=None, patterns=None): + """Create a binary morphological operator""" + self.lut = lut + if op_name is not None: + self.lut = LutBuilder(op_name=op_name).build_lut() + elif patterns is not None: + self.lut = LutBuilder(patterns=patterns).build_lut() + + def apply(self, image): + """Run a single morphological operation on an image + + Returns a tuple of the number of changed pixels and the + morphed image""" + if self.lut is None: + raise Exception("No operator loaded") + + if image.mode != "L": + raise Exception("Image must be binary, meaning it must use mode L") + outimage = Image.new(image.mode, image.size, None) + count = _imagingmorph.apply(bytes(self.lut), image.im.id, outimage.im.id) + return count, outimage + + def match(self, image): + """Get a list of coordinates matching the morphological operation on + an image. + + Returns a list of tuples of (x,y) coordinates + of all matching pixels. See :ref:`coordinate-system`.""" + if self.lut is None: + raise Exception("No operator loaded") + + if image.mode != "L": + raise Exception("Image must be binary, meaning it must use mode L") + return _imagingmorph.match(bytes(self.lut), image.im.id) + + def get_on_pixels(self, image): + """Get a list of all turned on pixels in a binary image + + Returns a list of tuples of (x,y) coordinates + of all matching pixels. See :ref:`coordinate-system`.""" + + if image.mode != "L": + raise Exception("Image must be binary, meaning it must use mode L") + return _imagingmorph.get_on_pixels(image.im.id) + + def load_lut(self, filename): + """Load an operator from an mrl file""" + with open(filename, "rb") as f: + self.lut = bytearray(f.read()) + + if len(self.lut) != LUT_SIZE: + self.lut = None + raise Exception("Wrong size operator file!") + + def save_lut(self, filename): + """Save an operator to an mrl file""" + if self.lut is None: + raise Exception("No operator loaded") + with open(filename, "wb") as f: + f.write(self.lut) + + def set_lut(self, lut): + """Set the lut from an external source""" + self.lut = lut diff --git a/venv/Lib/site-packages/PIL/ImageOps.py b/venv/Lib/site-packages/PIL/ImageOps.py new file mode 100644 index 0000000..e4e0840 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageOps.py @@ -0,0 +1,551 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard image operations +# +# History: +# 2001-10-20 fl Created +# 2001-10-23 fl Added autocontrast operator +# 2001-12-18 fl Added Kevin's fit operator +# 2004-03-14 fl Fixed potential division by zero in equalize +# 2005-05-05 fl Fixed equalize for low number of values +# +# Copyright (c) 2001-2004 by Secret Labs AB +# Copyright (c) 2001-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import functools +import operator + +from . import Image + +# +# helpers + + +def _border(border): + if isinstance(border, tuple): + if len(border) == 2: + left, top = right, bottom = border + elif len(border) == 4: + left, top, right, bottom = border + else: + left = top = right = bottom = border + return left, top, right, bottom + + +def _color(color, mode): + if isinstance(color, str): + from . import ImageColor + + color = ImageColor.getcolor(color, mode) + return color + + +def _lut(image, lut): + if image.mode == "P": + # FIXME: apply to lookup table, not image data + raise NotImplementedError("mode P support coming soon") + elif image.mode in ("L", "RGB"): + if image.mode == "RGB" and len(lut) == 256: + lut = lut + lut + lut + return image.point(lut) + else: + raise OSError("not supported for this image mode") + + +# +# actions + + +def autocontrast(image, cutoff=0, ignore=None): + """ + Maximize (normalize) image contrast. This function calculates a + histogram of the input image, removes **cutoff** percent of the + lightest and darkest pixels from the histogram, and remaps the image + so that the darkest pixel becomes black (0), and the lightest + becomes white (255). + + :param image: The image to process. + :param cutoff: How many percent to cut off from the histogram. + :param ignore: The background pixel value (use None for no background). + :return: An image. + """ + histogram = image.histogram() + lut = [] + for layer in range(0, len(histogram), 256): + h = histogram[layer : layer + 256] + if ignore is not None: + # get rid of outliers + try: + h[ignore] = 0 + except TypeError: + # assume sequence + for ix in ignore: + h[ix] = 0 + if cutoff: + # cut off pixels from both ends of the histogram + # get number of pixels + n = 0 + for ix in range(256): + n = n + h[ix] + # remove cutoff% pixels from the low end + cut = n * cutoff // 100 + for lo in range(256): + if cut > h[lo]: + cut = cut - h[lo] + h[lo] = 0 + else: + h[lo] -= cut + cut = 0 + if cut <= 0: + break + # remove cutoff% samples from the hi end + cut = n * cutoff // 100 + for hi in range(255, -1, -1): + if cut > h[hi]: + cut = cut - h[hi] + h[hi] = 0 + else: + h[hi] -= cut + cut = 0 + if cut <= 0: + break + # find lowest/highest samples after preprocessing + for lo in range(256): + if h[lo]: + break + for hi in range(255, -1, -1): + if h[hi]: + break + if hi <= lo: + # don't bother + lut.extend(list(range(256))) + else: + scale = 255.0 / (hi - lo) + offset = -lo * scale + for ix in range(256): + ix = int(ix * scale + offset) + if ix < 0: + ix = 0 + elif ix > 255: + ix = 255 + lut.append(ix) + return _lut(image, lut) + + +def colorize(image, black, white, mid=None, blackpoint=0, whitepoint=255, midpoint=127): + """ + Colorize grayscale image. + This function calculates a color wedge which maps all black pixels in + the source image to the first color and all white pixels to the + second color. If **mid** is specified, it uses three-color mapping. + The **black** and **white** arguments should be RGB tuples or color names; + optionally you can use three-color mapping by also specifying **mid**. + Mapping positions for any of the colors can be specified + (e.g. **blackpoint**), where these parameters are the integer + value corresponding to where the corresponding color should be mapped. + These parameters must have logical order, such that + **blackpoint** <= **midpoint** <= **whitepoint** (if **mid** is specified). + + :param image: The image to colorize. + :param black: The color to use for black input pixels. + :param white: The color to use for white input pixels. + :param mid: The color to use for midtone input pixels. + :param blackpoint: an int value [0, 255] for the black mapping. + :param whitepoint: an int value [0, 255] for the white mapping. + :param midpoint: an int value [0, 255] for the midtone mapping. + :return: An image. + """ + + # Initial asserts + assert image.mode == "L" + if mid is None: + assert 0 <= blackpoint <= whitepoint <= 255 + else: + assert 0 <= blackpoint <= midpoint <= whitepoint <= 255 + + # Define colors from arguments + black = _color(black, "RGB") + white = _color(white, "RGB") + if mid is not None: + mid = _color(mid, "RGB") + + # Empty lists for the mapping + red = [] + green = [] + blue = [] + + # Create the low-end values + for i in range(0, blackpoint): + red.append(black[0]) + green.append(black[1]) + blue.append(black[2]) + + # Create the mapping (2-color) + if mid is None: + + range_map = range(0, whitepoint - blackpoint) + + for i in range_map: + red.append(black[0] + i * (white[0] - black[0]) // len(range_map)) + green.append(black[1] + i * (white[1] - black[1]) // len(range_map)) + blue.append(black[2] + i * (white[2] - black[2]) // len(range_map)) + + # Create the mapping (3-color) + else: + + range_map1 = range(0, midpoint - blackpoint) + range_map2 = range(0, whitepoint - midpoint) + + for i in range_map1: + red.append(black[0] + i * (mid[0] - black[0]) // len(range_map1)) + green.append(black[1] + i * (mid[1] - black[1]) // len(range_map1)) + blue.append(black[2] + i * (mid[2] - black[2]) // len(range_map1)) + for i in range_map2: + red.append(mid[0] + i * (white[0] - mid[0]) // len(range_map2)) + green.append(mid[1] + i * (white[1] - mid[1]) // len(range_map2)) + blue.append(mid[2] + i * (white[2] - mid[2]) // len(range_map2)) + + # Create the high-end values + for i in range(0, 256 - whitepoint): + red.append(white[0]) + green.append(white[1]) + blue.append(white[2]) + + # Return converted image + image = image.convert("RGB") + return _lut(image, red + green + blue) + + +def pad(image, size, method=Image.BICUBIC, color=None, centering=(0.5, 0.5)): + """ + Returns a sized and padded version of the image, expanded to fill the + requested aspect ratio and size. + + :param image: The image to size and crop. + :param size: The requested output size in pixels, given as a + (width, height) tuple. + :param method: What resampling method to use. Default is + :py:attr:`PIL.Image.BICUBIC`. See :ref:`concept-filters`. + :param color: The background color of the padded image. + :param centering: Control the position of the original image within the + padded version. + + (0.5, 0.5) will keep the image centered + (0, 0) will keep the image aligned to the top left + (1, 1) will keep the image aligned to the bottom + right + :return: An image. + """ + + im_ratio = image.width / image.height + dest_ratio = size[0] / size[1] + + if im_ratio == dest_ratio: + out = image.resize(size, resample=method) + else: + out = Image.new(image.mode, size, color) + if im_ratio > dest_ratio: + new_height = int(image.height / image.width * size[0]) + if new_height != size[1]: + image = image.resize((size[0], new_height), resample=method) + + y = int((size[1] - new_height) * max(0, min(centering[1], 1))) + out.paste(image, (0, y)) + else: + new_width = int(image.width / image.height * size[1]) + if new_width != size[0]: + image = image.resize((new_width, size[1]), resample=method) + + x = int((size[0] - new_width) * max(0, min(centering[0], 1))) + out.paste(image, (x, 0)) + return out + + +def crop(image, border=0): + """ + Remove border from image. The same amount of pixels are removed + from all four sides. This function works on all image modes. + + .. seealso:: :py:meth:`~PIL.Image.Image.crop` + + :param image: The image to crop. + :param border: The number of pixels to remove. + :return: An image. + """ + left, top, right, bottom = _border(border) + return image.crop((left, top, image.size[0] - right, image.size[1] - bottom)) + + +def scale(image, factor, resample=Image.BICUBIC): + """ + Returns a rescaled image by a specific factor given in parameter. + A factor greater than 1 expands the image, between 0 and 1 contracts the + image. + + :param image: The image to rescale. + :param factor: The expansion factor, as a float. + :param resample: What resampling method to use. Default is + :py:attr:`PIL.Image.BICUBIC`. See :ref:`concept-filters`. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + if factor == 1: + return image.copy() + elif factor <= 0: + raise ValueError("the factor must be greater than 0") + else: + size = (round(factor * image.width), round(factor * image.height)) + return image.resize(size, resample) + + +def deform(image, deformer, resample=Image.BILINEAR): + """ + Deform the image. + + :param image: The image to deform. + :param deformer: A deformer object. Any object that implements a + **getmesh** method can be used. + :param resample: An optional resampling filter. Same values possible as + in the PIL.Image.transform function. + :return: An image. + """ + return image.transform(image.size, Image.MESH, deformer.getmesh(image), resample) + + +def equalize(image, mask=None): + """ + Equalize the image histogram. This function applies a non-linear + mapping to the input image, in order to create a uniform + distribution of grayscale values in the output image. + + :param image: The image to equalize. + :param mask: An optional mask. If given, only the pixels selected by + the mask are included in the analysis. + :return: An image. + """ + if image.mode == "P": + image = image.convert("RGB") + h = image.histogram(mask) + lut = [] + for b in range(0, len(h), 256): + histo = [_f for _f in h[b : b + 256] if _f] + if len(histo) <= 1: + lut.extend(list(range(256))) + else: + step = (functools.reduce(operator.add, histo) - histo[-1]) // 255 + if not step: + lut.extend(list(range(256))) + else: + n = step // 2 + for i in range(256): + lut.append(n // step) + n = n + h[i + b] + return _lut(image, lut) + + +def expand(image, border=0, fill=0): + """ + Add border to the image + + :param image: The image to expand. + :param border: Border width, in pixels. + :param fill: Pixel fill value (a color value). Default is 0 (black). + :return: An image. + """ + left, top, right, bottom = _border(border) + width = left + image.size[0] + right + height = top + image.size[1] + bottom + out = Image.new(image.mode, (width, height), _color(fill, image.mode)) + out.paste(image, (left, top)) + return out + + +def fit(image, size, method=Image.BICUBIC, bleed=0.0, centering=(0.5, 0.5)): + """ + Returns a sized and cropped version of the image, cropped to the + requested aspect ratio and size. + + This function was contributed by Kevin Cazabon. + + :param image: The image to size and crop. + :param size: The requested output size in pixels, given as a + (width, height) tuple. + :param method: What resampling method to use. Default is + :py:attr:`PIL.Image.BICUBIC`. See :ref:`concept-filters`. + :param bleed: Remove a border around the outside of the image from all + four edges. The value is a decimal percentage (use 0.01 for + one percent). The default value is 0 (no border). + Cannot be greater than or equal to 0.5. + :param centering: Control the cropping position. Use (0.5, 0.5) for + center cropping (e.g. if cropping the width, take 50% off + of the left side, and therefore 50% off the right side). + (0.0, 0.0) will crop from the top left corner (i.e. if + cropping the width, take all of the crop off of the right + side, and if cropping the height, take all of it off the + bottom). (1.0, 0.0) will crop from the bottom left + corner, etc. (i.e. if cropping the width, take all of the + crop off the left side, and if cropping the height take + none from the top, and therefore all off the bottom). + :return: An image. + """ + + # by Kevin Cazabon, Feb 17/2000 + # kevin@cazabon.com + # http://www.cazabon.com + + # ensure centering is mutable + centering = list(centering) + + if not 0.0 <= centering[0] <= 1.0: + centering[0] = 0.5 + if not 0.0 <= centering[1] <= 1.0: + centering[1] = 0.5 + + if not 0.0 <= bleed < 0.5: + bleed = 0.0 + + # calculate the area to use for resizing and cropping, subtracting + # the 'bleed' around the edges + + # number of pixels to trim off on Top and Bottom, Left and Right + bleed_pixels = (bleed * image.size[0], bleed * image.size[1]) + + live_size = ( + image.size[0] - bleed_pixels[0] * 2, + image.size[1] - bleed_pixels[1] * 2, + ) + + # calculate the aspect ratio of the live_size + live_size_ratio = live_size[0] / live_size[1] + + # calculate the aspect ratio of the output image + output_ratio = size[0] / size[1] + + # figure out if the sides or top/bottom will be cropped off + if live_size_ratio == output_ratio: + # live_size is already the needed ratio + crop_width = live_size[0] + crop_height = live_size[1] + elif live_size_ratio >= output_ratio: + # live_size is wider than what's needed, crop the sides + crop_width = output_ratio * live_size[1] + crop_height = live_size[1] + else: + # live_size is taller than what's needed, crop the top and bottom + crop_width = live_size[0] + crop_height = live_size[0] / output_ratio + + # make the crop + crop_left = bleed_pixels[0] + (live_size[0] - crop_width) * centering[0] + crop_top = bleed_pixels[1] + (live_size[1] - crop_height) * centering[1] + + crop = (crop_left, crop_top, crop_left + crop_width, crop_top + crop_height) + + # resize the image and return it + return image.resize(size, method, box=crop) + + +def flip(image): + """ + Flip the image vertically (top to bottom). + + :param image: The image to flip. + :return: An image. + """ + return image.transpose(Image.FLIP_TOP_BOTTOM) + + +def grayscale(image): + """ + Convert the image to grayscale. + + :param image: The image to convert. + :return: An image. + """ + return image.convert("L") + + +def invert(image): + """ + Invert (negate) the image. + + :param image: The image to invert. + :return: An image. + """ + lut = [] + for i in range(256): + lut.append(255 - i) + return _lut(image, lut) + + +def mirror(image): + """ + Flip image horizontally (left to right). + + :param image: The image to mirror. + :return: An image. + """ + return image.transpose(Image.FLIP_LEFT_RIGHT) + + +def posterize(image, bits): + """ + Reduce the number of bits for each color channel. + + :param image: The image to posterize. + :param bits: The number of bits to keep for each channel (1-8). + :return: An image. + """ + lut = [] + mask = ~(2 ** (8 - bits) - 1) + for i in range(256): + lut.append(i & mask) + return _lut(image, lut) + + +def solarize(image, threshold=128): + """ + Invert all pixel values above a threshold. + + :param image: The image to solarize. + :param threshold: All pixels above this greyscale level are inverted. + :return: An image. + """ + lut = [] + for i in range(256): + if i < threshold: + lut.append(i) + else: + lut.append(255 - i) + return _lut(image, lut) + + +def exif_transpose(image): + """ + If an image has an EXIF Orientation tag, return a new image that is + transposed accordingly. Otherwise, return a copy of the image. + + :param image: The image to transpose. + :return: An image. + """ + exif = image.getexif() + orientation = exif.get(0x0112) + method = { + 2: Image.FLIP_LEFT_RIGHT, + 3: Image.ROTATE_180, + 4: Image.FLIP_TOP_BOTTOM, + 5: Image.TRANSPOSE, + 6: Image.ROTATE_270, + 7: Image.TRANSVERSE, + 8: Image.ROTATE_90, + }.get(orientation) + if method is not None: + transposed_image = image.transpose(method) + del exif[0x0112] + transposed_image.info["exif"] = exif.tobytes() + return transposed_image + return image.copy() diff --git a/venv/Lib/site-packages/PIL/ImagePalette.py b/venv/Lib/site-packages/PIL/ImagePalette.py new file mode 100644 index 0000000..e0d439c --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImagePalette.py @@ -0,0 +1,221 @@ +# +# The Python Imaging Library. +# $Id$ +# +# image palette object +# +# History: +# 1996-03-11 fl Rewritten. +# 1997-01-03 fl Up and running. +# 1997-08-23 fl Added load hack +# 2001-04-16 fl Fixed randint shadow bug in random() +# +# Copyright (c) 1997-2001 by Secret Labs AB +# Copyright (c) 1996-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import array + +from . import GimpGradientFile, GimpPaletteFile, ImageColor, PaletteFile + + +class ImagePalette: + """ + Color palette for palette mapped images + + :param mode: The mode to use for the Palette. See: + :ref:`concept-modes`. Defaults to "RGB" + :param palette: An optional palette. If given, it must be a bytearray, + an array or a list of ints between 0-255 and of length ``size`` + times the number of colors in ``mode``. The list must be aligned + by channel (All R values must be contiguous in the list before G + and B values.) Defaults to 0 through 255 per channel. + :param size: An optional palette size. If given, it cannot be equal to + or greater than 256. Defaults to 0. + """ + + def __init__(self, mode="RGB", palette=None, size=0): + self.mode = mode + self.rawmode = None # if set, palette contains raw data + self.palette = palette or bytearray(range(256)) * len(self.mode) + self.colors = {} + self.dirty = None + if (size == 0 and len(self.mode) * 256 != len(self.palette)) or ( + size != 0 and size != len(self.palette) + ): + raise ValueError("wrong palette size") + + def copy(self): + new = ImagePalette() + + new.mode = self.mode + new.rawmode = self.rawmode + if self.palette is not None: + new.palette = self.palette[:] + new.colors = self.colors.copy() + new.dirty = self.dirty + + return new + + def getdata(self): + """ + Get palette contents in format suitable for the low-level + ``im.putpalette`` primitive. + + .. warning:: This method is experimental. + """ + if self.rawmode: + return self.rawmode, self.palette + return self.mode + ";L", self.tobytes() + + def tobytes(self): + """Convert palette to bytes. + + .. warning:: This method is experimental. + """ + if self.rawmode: + raise ValueError("palette contains raw palette data") + if isinstance(self.palette, bytes): + return self.palette + arr = array.array("B", self.palette) + if hasattr(arr, "tobytes"): + return arr.tobytes() + return arr.tostring() + + # Declare tostring as an alias for tobytes + tostring = tobytes + + def getcolor(self, color): + """Given an rgb tuple, allocate palette entry. + + .. warning:: This method is experimental. + """ + if self.rawmode: + raise ValueError("palette contains raw palette data") + if isinstance(color, tuple): + try: + return self.colors[color] + except KeyError: + # allocate new color slot + if isinstance(self.palette, bytes): + self.palette = bytearray(self.palette) + index = len(self.colors) + if index >= 256: + raise ValueError("cannot allocate more than 256 colors") + self.colors[color] = index + self.palette[index] = color[0] + self.palette[index + 256] = color[1] + self.palette[index + 512] = color[2] + self.dirty = 1 + return index + else: + raise ValueError("unknown color specifier: %r" % color) + + def save(self, fp): + """Save palette to text file. + + .. warning:: This method is experimental. + """ + if self.rawmode: + raise ValueError("palette contains raw palette data") + if isinstance(fp, str): + fp = open(fp, "w") + fp.write("# Palette\n") + fp.write("# Mode: %s\n" % self.mode) + for i in range(256): + fp.write("%d" % i) + for j in range(i * len(self.mode), (i + 1) * len(self.mode)): + try: + fp.write(" %d" % self.palette[j]) + except IndexError: + fp.write(" 0") + fp.write("\n") + fp.close() + + +# -------------------------------------------------------------------- +# Internal + + +def raw(rawmode, data): + palette = ImagePalette() + palette.rawmode = rawmode + palette.palette = data + palette.dirty = 1 + return palette + + +# -------------------------------------------------------------------- +# Factories + + +def make_linear_lut(black, white): + lut = [] + if black == 0: + for i in range(256): + lut.append(white * i // 255) + else: + raise NotImplementedError # FIXME + return lut + + +def make_gamma_lut(exp): + lut = [] + for i in range(256): + lut.append(int(((i / 255.0) ** exp) * 255.0 + 0.5)) + return lut + + +def negative(mode="RGB"): + palette = list(range(256)) + palette.reverse() + return ImagePalette(mode, palette * len(mode)) + + +def random(mode="RGB"): + from random import randint + + palette = [] + for i in range(256 * len(mode)): + palette.append(randint(0, 255)) + return ImagePalette(mode, palette) + + +def sepia(white="#fff0c0"): + r, g, b = ImageColor.getrgb(white) + r = make_linear_lut(0, r) + g = make_linear_lut(0, g) + b = make_linear_lut(0, b) + return ImagePalette("RGB", r + g + b) + + +def wedge(mode="RGB"): + return ImagePalette(mode, list(range(256)) * len(mode)) + + +def load(filename): + + # FIXME: supports GIMP gradients only + + with open(filename, "rb") as fp: + + for paletteHandler in [ + GimpPaletteFile.GimpPaletteFile, + GimpGradientFile.GimpGradientFile, + PaletteFile.PaletteFile, + ]: + try: + fp.seek(0) + lut = paletteHandler(fp).getpalette() + if lut: + break + except (SyntaxError, ValueError): + # import traceback + # traceback.print_exc() + pass + else: + raise OSError("cannot load palette") + + return lut # data, rawmode diff --git a/venv/Lib/site-packages/PIL/ImagePath.py b/venv/Lib/site-packages/PIL/ImagePath.py new file mode 100644 index 0000000..3d3538c --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImagePath.py @@ -0,0 +1,19 @@ +# +# The Python Imaging Library +# $Id$ +# +# path interface +# +# History: +# 1996-11-04 fl Created +# 2002-04-14 fl Added documentation stub class +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + +from . import Image + +Path = Image.core.path diff --git a/venv/Lib/site-packages/PIL/ImageQt.py b/venv/Lib/site-packages/PIL/ImageQt.py new file mode 100644 index 0000000..dfe2f80 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageQt.py @@ -0,0 +1,200 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a simple Qt image interface. +# +# history: +# 2006-06-03 fl: created +# 2006-06-04 fl: inherit from QImage instead of wrapping it +# 2006-06-05 fl: removed toimage helper; move string support to ImageQt +# 2013-11-13 fl: add support for Qt5 (aurelien.ballier@cyclonit.com) +# +# Copyright (c) 2006 by Secret Labs AB +# Copyright (c) 2006 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import sys +from io import BytesIO + +from . import Image +from ._util import isPath + +qt_versions = [["5", "PyQt5"], ["side2", "PySide2"]] + +# If a version has already been imported, attempt it first +qt_versions.sort(key=lambda qt_version: qt_version[1] in sys.modules, reverse=True) +for qt_version, qt_module in qt_versions: + try: + if qt_module == "PyQt5": + from PyQt5.QtGui import QImage, qRgba, QPixmap + from PyQt5.QtCore import QBuffer, QIODevice + elif qt_module == "PySide2": + from PySide2.QtGui import QImage, qRgba, QPixmap + from PySide2.QtCore import QBuffer, QIODevice + except (ImportError, RuntimeError): + continue + qt_is_installed = True + break +else: + qt_is_installed = False + qt_version = None + + +def rgb(r, g, b, a=255): + """(Internal) Turns an RGB color into a Qt compatible color integer.""" + # use qRgb to pack the colors, and then turn the resulting long + # into a negative integer with the same bitpattern. + return qRgba(r, g, b, a) & 0xFFFFFFFF + + +def fromqimage(im): + """ + :param im: A PIL Image object, or a file name + (given either as Python string or a PyQt string object) + """ + buffer = QBuffer() + buffer.open(QIODevice.ReadWrite) + # preserve alpha channel with png + # otherwise ppm is more friendly with Image.open + if im.hasAlphaChannel(): + im.save(buffer, "png") + else: + im.save(buffer, "ppm") + + b = BytesIO() + b.write(buffer.data()) + buffer.close() + b.seek(0) + + return Image.open(b) + + +def fromqpixmap(im): + return fromqimage(im) + # buffer = QBuffer() + # buffer.open(QIODevice.ReadWrite) + # # im.save(buffer) + # # What if png doesn't support some image features like animation? + # im.save(buffer, 'ppm') + # bytes_io = BytesIO() + # bytes_io.write(buffer.data()) + # buffer.close() + # bytes_io.seek(0) + # return Image.open(bytes_io) + + +def align8to32(bytes, width, mode): + """ + converts each scanline of data from 8 bit to 32 bit aligned + """ + + bits_per_pixel = {"1": 1, "L": 8, "P": 8}[mode] + + # calculate bytes per line and the extra padding if needed + bits_per_line = bits_per_pixel * width + full_bytes_per_line, remaining_bits_per_line = divmod(bits_per_line, 8) + bytes_per_line = full_bytes_per_line + (1 if remaining_bits_per_line else 0) + + extra_padding = -bytes_per_line % 4 + + # already 32 bit aligned by luck + if not extra_padding: + return bytes + + new_data = [] + for i in range(len(bytes) // bytes_per_line): + new_data.append( + bytes[i * bytes_per_line : (i + 1) * bytes_per_line] + + b"\x00" * extra_padding + ) + + return b"".join(new_data) + + +def _toqclass_helper(im): + data = None + colortable = None + + # handle filename, if given instead of image name + if hasattr(im, "toUtf8"): + # FIXME - is this really the best way to do this? + im = str(im.toUtf8(), "utf-8") + if isPath(im): + im = Image.open(im) + + if im.mode == "1": + format = QImage.Format_Mono + elif im.mode == "L": + format = QImage.Format_Indexed8 + colortable = [] + for i in range(256): + colortable.append(rgb(i, i, i)) + elif im.mode == "P": + format = QImage.Format_Indexed8 + colortable = [] + palette = im.getpalette() + for i in range(0, len(palette), 3): + colortable.append(rgb(*palette[i : i + 3])) + elif im.mode == "RGB": + data = im.tobytes("raw", "BGRX") + format = QImage.Format_RGB32 + elif im.mode == "RGBA": + try: + data = im.tobytes("raw", "BGRA") + except SystemError: + # workaround for earlier versions + r, g, b, a = im.split() + im = Image.merge("RGBA", (b, g, r, a)) + format = QImage.Format_ARGB32 + else: + raise ValueError("unsupported image mode %r" % im.mode) + + __data = data or align8to32(im.tobytes(), im.size[0], im.mode) + return {"data": __data, "im": im, "format": format, "colortable": colortable} + + +if qt_is_installed: + + class ImageQt(QImage): + def __init__(self, im): + """ + An PIL image wrapper for Qt. This is a subclass of PyQt's QImage + class. + + :param im: A PIL Image object, or a file name (given either as + Python string or a PyQt string object). + """ + im_data = _toqclass_helper(im) + # must keep a reference, or Qt will crash! + # All QImage constructors that take data operate on an existing + # buffer, so this buffer has to hang on for the life of the image. + # Fixes https://github.com/python-pillow/Pillow/issues/1370 + self.__data = im_data["data"] + super().__init__( + self.__data, + im_data["im"].size[0], + im_data["im"].size[1], + im_data["format"], + ) + if im_data["colortable"]: + self.setColorTable(im_data["colortable"]) + + +def toqimage(im): + return ImageQt(im) + + +def toqpixmap(im): + # # This doesn't work. For now using a dumb approach. + # im_data = _toqclass_helper(im) + # result = QPixmap(im_data['im'].size[0], im_data['im'].size[1]) + # result.loadFromData(im_data['data']) + # Fix some strange bug that causes + if im.mode == "RGB": + im = im.convert("RGBA") + + qimage = toqimage(im) + return QPixmap.fromImage(qimage) diff --git a/venv/Lib/site-packages/PIL/ImageSequence.py b/venv/Lib/site-packages/PIL/ImageSequence.py new file mode 100644 index 0000000..4e9f5c2 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageSequence.py @@ -0,0 +1,75 @@ +# +# The Python Imaging Library. +# $Id$ +# +# sequence support classes +# +# history: +# 1997-02-20 fl Created +# +# Copyright (c) 1997 by Secret Labs AB. +# Copyright (c) 1997 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +## + + +class Iterator: + """ + This class implements an iterator object that can be used to loop + over an image sequence. + + You can use the ``[]`` operator to access elements by index. This operator + will raise an :py:exc:`IndexError` if you try to access a nonexistent + frame. + + :param im: An image object. + """ + + def __init__(self, im): + if not hasattr(im, "seek"): + raise AttributeError("im must have seek method") + self.im = im + self.position = getattr(self.im, "_min_frame", 0) + + def __getitem__(self, ix): + try: + self.im.seek(ix) + return self.im + except EOFError: + raise IndexError # end of sequence + + def __iter__(self): + return self + + def __next__(self): + try: + self.im.seek(self.position) + self.position += 1 + return self.im + except EOFError: + raise StopIteration + + +def all_frames(im, func=None): + """ + Applies a given function to all frames in an image or a list of images. + The frames are returned as a list of separate images. + + :param im: An image, or a list of images. + :param func: The function to apply to all of the image frames. + :returns: A list of images. + """ + if not isinstance(im, list): + im = [im] + + ims = [] + for imSequence in im: + current = imSequence.tell() + + ims += [im_frame.copy() for im_frame in Iterator(imSequence)] + + imSequence.seek(current) + return [func(im) for im in ims] if func else ims diff --git a/venv/Lib/site-packages/PIL/ImageShow.py b/venv/Lib/site-packages/PIL/ImageShow.py new file mode 100644 index 0000000..fc50894 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageShow.py @@ -0,0 +1,207 @@ +# +# The Python Imaging Library. +# $Id$ +# +# im.show() drivers +# +# History: +# 2008-04-06 fl Created +# +# Copyright (c) Secret Labs AB 2008. +# +# See the README file for information on usage and redistribution. +# +import os +import shutil +import subprocess +import sys +import tempfile +from shlex import quote + +from PIL import Image + +_viewers = [] + + +def register(viewer, order=1): + try: + if issubclass(viewer, Viewer): + viewer = viewer() + except TypeError: + pass # raised if viewer wasn't a class + if order > 0: + _viewers.append(viewer) + elif order < 0: + _viewers.insert(0, viewer) + + +def show(image, title=None, **options): + r""" + Display a given image. + + :param image: An image object. + :param title: Optional title. Not all viewers can display the title. + :param \**options: Additional viewer options. + :returns: True if a suitable viewer was found, false otherwise. + """ + for viewer in _viewers: + if viewer.show(image, title=title, **options): + return 1 + return 0 + + +class Viewer: + """Base class for viewers.""" + + # main api + + def show(self, image, **options): + + # save temporary image to disk + if not ( + image.mode in ("1", "RGBA") or (self.format == "PNG" and image.mode == "LA") + ): + base = Image.getmodebase(image.mode) + if image.mode != base: + image = image.convert(base) + + return self.show_image(image, **options) + + # hook methods + + format = None + options = {} + + def get_format(self, image): + """Return format name, or None to save as PGM/PPM""" + return self.format + + def get_command(self, file, **options): + raise NotImplementedError + + def save_image(self, image): + """Save to temporary file, and return filename""" + return image._dump(format=self.get_format(image), **self.options) + + def show_image(self, image, **options): + """Display given image""" + return self.show_file(self.save_image(image), **options) + + def show_file(self, file, **options): + """Display given file""" + os.system(self.get_command(file, **options)) + return 1 + + +# -------------------------------------------------------------------- + + +if sys.platform == "win32": + + class WindowsViewer(Viewer): + format = "PNG" + options = {"compress_level": 1} + + def get_command(self, file, **options): + return ( + 'start "Pillow" /WAIT "%s" ' + "&& ping -n 2 127.0.0.1 >NUL " + '&& del /f "%s"' % (file, file) + ) + + register(WindowsViewer) + +elif sys.platform == "darwin": + + class MacViewer(Viewer): + format = "PNG" + options = {"compress_level": 1} + + def get_command(self, file, **options): + # on darwin open returns immediately resulting in the temp + # file removal while app is opening + command = "open -a Preview.app" + command = "({} {}; sleep 20; rm -f {})&".format( + command, quote(file), quote(file) + ) + return command + + def show_file(self, file, **options): + """Display given file""" + fd, path = tempfile.mkstemp() + with os.fdopen(fd, "w") as f: + f.write(file) + with open(path, "r") as f: + subprocess.Popen( + ["im=$(cat); open -a Preview.app $im; sleep 20; rm -f $im"], + shell=True, + stdin=f, + ) + os.remove(path) + return 1 + + register(MacViewer) + +else: + + # unixoids + + class UnixViewer(Viewer): + format = "PNG" + options = {"compress_level": 1} + + def get_command(self, file, **options): + command = self.get_command_ex(file, **options)[0] + return "({} {}; rm -f {})&".format(command, quote(file), quote(file)) + + def show_file(self, file, **options): + """Display given file""" + fd, path = tempfile.mkstemp() + with os.fdopen(fd, "w") as f: + f.write(file) + with open(path, "r") as f: + command = self.get_command_ex(file, **options)[0] + subprocess.Popen( + ["im=$(cat);" + command + " $im; rm -f $im"], shell=True, stdin=f + ) + os.remove(path) + return 1 + + # implementations + + class DisplayViewer(UnixViewer): + def get_command_ex(self, file, **options): + command = executable = "display" + return command, executable + + if shutil.which("display"): + register(DisplayViewer) + + class EogViewer(UnixViewer): + def get_command_ex(self, file, **options): + command = executable = "eog" + return command, executable + + if shutil.which("eog"): + register(EogViewer) + + class XVViewer(UnixViewer): + def get_command_ex(self, file, title=None, **options): + # note: xv is pretty outdated. most modern systems have + # imagemagick's display command instead. + command = executable = "xv" + if title: + command += " -name %s" % quote(title) + return command, executable + + if shutil.which("xv"): + register(XVViewer) + +if __name__ == "__main__": + + if len(sys.argv) < 2: + print("Syntax: python ImageShow.py imagefile [title]") + sys.exit() + + with Image.open(sys.argv[1]) as im: + print(show(im, *sys.argv[2:])) diff --git a/venv/Lib/site-packages/PIL/ImageStat.py b/venv/Lib/site-packages/PIL/ImageStat.py new file mode 100644 index 0000000..50bafc9 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageStat.py @@ -0,0 +1,147 @@ +# +# The Python Imaging Library. +# $Id$ +# +# global image statistics +# +# History: +# 1996-04-05 fl Created +# 1997-05-21 fl Added mask; added rms, var, stddev attributes +# 1997-08-05 fl Added median +# 1998-07-05 hk Fixed integer overflow error +# +# Notes: +# This class shows how to implement delayed evaluation of attributes. +# To get a certain value, simply access the corresponding attribute. +# The __getattr__ dispatcher takes care of the rest. +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996-97. +# +# See the README file for information on usage and redistribution. +# + +import functools +import math +import operator + + +class Stat: + def __init__(self, image_or_list, mask=None): + try: + if mask: + self.h = image_or_list.histogram(mask) + else: + self.h = image_or_list.histogram() + except AttributeError: + self.h = image_or_list # assume it to be a histogram list + if not isinstance(self.h, list): + raise TypeError("first argument must be image or list") + self.bands = list(range(len(self.h) // 256)) + + def __getattr__(self, id): + """Calculate missing attribute""" + if id[:4] == "_get": + raise AttributeError(id) + # calculate missing attribute + v = getattr(self, "_get" + id)() + setattr(self, id, v) + return v + + def _getextrema(self): + """Get min/max values for each band in the image""" + + def minmax(histogram): + n = 255 + x = 0 + for i in range(256): + if histogram[i]: + n = min(n, i) + x = max(x, i) + return n, x # returns (255, 0) if there's no data in the histogram + + v = [] + for i in range(0, len(self.h), 256): + v.append(minmax(self.h[i:])) + return v + + def _getcount(self): + """Get total number of pixels in each layer""" + + v = [] + for i in range(0, len(self.h), 256): + v.append(functools.reduce(operator.add, self.h[i : i + 256])) + return v + + def _getsum(self): + """Get sum of all pixels in each layer""" + + v = [] + for i in range(0, len(self.h), 256): + layerSum = 0.0 + for j in range(256): + layerSum += j * self.h[i + j] + v.append(layerSum) + return v + + def _getsum2(self): + """Get squared sum of all pixels in each layer""" + + v = [] + for i in range(0, len(self.h), 256): + sum2 = 0.0 + for j in range(256): + sum2 += (j ** 2) * float(self.h[i + j]) + v.append(sum2) + return v + + def _getmean(self): + """Get average pixel level for each layer""" + + v = [] + for i in self.bands: + v.append(self.sum[i] / self.count[i]) + return v + + def _getmedian(self): + """Get median pixel level for each layer""" + + v = [] + for i in self.bands: + s = 0 + half = self.count[i] // 2 + b = i * 256 + for j in range(256): + s = s + self.h[b + j] + if s > half: + break + v.append(j) + return v + + def _getrms(self): + """Get RMS for each layer""" + + v = [] + for i in self.bands: + v.append(math.sqrt(self.sum2[i] / self.count[i])) + return v + + def _getvar(self): + """Get variance for each layer""" + + v = [] + for i in self.bands: + n = self.count[i] + v.append((self.sum2[i] - (self.sum[i] ** 2.0) / n) / n) + return v + + def _getstddev(self): + """Get standard deviation for each layer""" + + v = [] + for i in self.bands: + v.append(math.sqrt(self.var[i])) + return v + + +Global = Stat # compatibility diff --git a/venv/Lib/site-packages/PIL/ImageTk.py b/venv/Lib/site-packages/PIL/ImageTk.py new file mode 100644 index 0000000..ee707cf --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageTk.py @@ -0,0 +1,300 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a Tk display interface +# +# History: +# 96-04-08 fl Created +# 96-09-06 fl Added getimage method +# 96-11-01 fl Rewritten, removed image attribute and crop method +# 97-05-09 fl Use PyImagingPaste method instead of image type +# 97-05-12 fl Minor tweaks to match the IFUNC95 interface +# 97-05-17 fl Support the "pilbitmap" booster patch +# 97-06-05 fl Added file= and data= argument to image constructors +# 98-03-09 fl Added width and height methods to Image classes +# 98-07-02 fl Use default mode for "P" images without palette attribute +# 98-07-02 fl Explicitly destroy Tkinter image objects +# 99-07-24 fl Support multiple Tk interpreters (from Greg Couch) +# 99-07-26 fl Automatically hook into Tkinter (if possible) +# 99-08-15 fl Hook uses _imagingtk instead of _imaging +# +# Copyright (c) 1997-1999 by Secret Labs AB +# Copyright (c) 1996-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import tkinter +from io import BytesIO + +from . import Image + +# -------------------------------------------------------------------- +# Check for Tkinter interface hooks + +_pilbitmap_ok = None + + +def _pilbitmap_check(): + global _pilbitmap_ok + if _pilbitmap_ok is None: + try: + im = Image.new("1", (1, 1)) + tkinter.BitmapImage(data="PIL:%d" % im.im.id) + _pilbitmap_ok = 1 + except tkinter.TclError: + _pilbitmap_ok = 0 + return _pilbitmap_ok + + +def _get_image_from_kw(kw): + source = None + if "file" in kw: + source = kw.pop("file") + elif "data" in kw: + source = BytesIO(kw.pop("data")) + if source: + return Image.open(source) + + +# -------------------------------------------------------------------- +# PhotoImage + + +class PhotoImage: + """ + A Tkinter-compatible photo image. This can be used + everywhere Tkinter expects an image object. If the image is an RGBA + image, pixels having alpha 0 are treated as transparent. + + The constructor takes either a PIL image, or a mode and a size. + Alternatively, you can use the **file** or **data** options to initialize + the photo image object. + + :param image: Either a PIL image, or a mode string. If a mode string is + used, a size must also be given. + :param size: If the first argument is a mode string, this defines the size + of the image. + :keyword file: A filename to load the image from (using + ``Image.open(file)``). + :keyword data: An 8-bit string containing image data (as loaded from an + image file). + """ + + def __init__(self, image=None, size=None, **kw): + + # Tk compatibility: file or data + if image is None: + image = _get_image_from_kw(kw) + + if hasattr(image, "mode") and hasattr(image, "size"): + # got an image instead of a mode + mode = image.mode + if mode == "P": + # palette mapped data + image.load() + try: + mode = image.palette.mode + except AttributeError: + mode = "RGB" # default + size = image.size + kw["width"], kw["height"] = size + else: + mode = image + image = None + + if mode not in ["1", "L", "RGB", "RGBA"]: + mode = Image.getmodebase(mode) + + self.__mode = mode + self.__size = size + self.__photo = tkinter.PhotoImage(**kw) + self.tk = self.__photo.tk + if image: + self.paste(image) + + def __del__(self): + name = self.__photo.name + self.__photo.name = None + try: + self.__photo.tk.call("image", "delete", name) + except Exception: + pass # ignore internal errors + + def __str__(self): + """ + Get the Tkinter photo image identifier. This method is automatically + called by Tkinter whenever a PhotoImage object is passed to a Tkinter + method. + + :return: A Tkinter photo image identifier (a string). + """ + return str(self.__photo) + + def width(self): + """ + Get the width of the image. + + :return: The width, in pixels. + """ + return self.__size[0] + + def height(self): + """ + Get the height of the image. + + :return: The height, in pixels. + """ + return self.__size[1] + + def paste(self, im, box=None): + """ + Paste a PIL image into the photo image. Note that this can + be very slow if the photo image is displayed. + + :param im: A PIL image. The size must match the target region. If the + mode does not match, the image is converted to the mode of + the bitmap image. + :param box: A 4-tuple defining the left, upper, right, and lower pixel + coordinate. See :ref:`coordinate-system`. If None is given + instead of a tuple, all of the image is assumed. + """ + + # convert to blittable + im.load() + image = im.im + if image.isblock() and im.mode == self.__mode: + block = image + else: + block = image.new_block(self.__mode, im.size) + image.convert2(block, image) # convert directly between buffers + + tk = self.__photo.tk + + try: + tk.call("PyImagingPhoto", self.__photo, block.id) + except tkinter.TclError: + # activate Tkinter hook + try: + from . import _imagingtk + + try: + if hasattr(tk, "interp"): + # Required for PyPy, which always has CFFI installed + from cffi import FFI + + ffi = FFI() + + # PyPy is using an FFI CDATA element + # (Pdb) self.tk.interp + # + _imagingtk.tkinit(int(ffi.cast("uintptr_t", tk.interp)), 1) + else: + _imagingtk.tkinit(tk.interpaddr(), 1) + except AttributeError: + _imagingtk.tkinit(id(tk), 0) + tk.call("PyImagingPhoto", self.__photo, block.id) + except (ImportError, AttributeError, tkinter.TclError): + raise # configuration problem; cannot attach to Tkinter + + +# -------------------------------------------------------------------- +# BitmapImage + + +class BitmapImage: + """ + A Tkinter-compatible bitmap image. This can be used everywhere Tkinter + expects an image object. + + The given image must have mode "1". Pixels having value 0 are treated as + transparent. Options, if any, are passed on to Tkinter. The most commonly + used option is **foreground**, which is used to specify the color for the + non-transparent parts. See the Tkinter documentation for information on + how to specify colours. + + :param image: A PIL image. + """ + + def __init__(self, image=None, **kw): + + # Tk compatibility: file or data + if image is None: + image = _get_image_from_kw(kw) + + self.__mode = image.mode + self.__size = image.size + + if _pilbitmap_check(): + # fast way (requires the pilbitmap booster patch) + image.load() + kw["data"] = "PIL:%d" % image.im.id + self.__im = image # must keep a reference + else: + # slow but safe way + kw["data"] = image.tobitmap() + self.__photo = tkinter.BitmapImage(**kw) + + def __del__(self): + name = self.__photo.name + self.__photo.name = None + try: + self.__photo.tk.call("image", "delete", name) + except Exception: + pass # ignore internal errors + + def width(self): + """ + Get the width of the image. + + :return: The width, in pixels. + """ + return self.__size[0] + + def height(self): + """ + Get the height of the image. + + :return: The height, in pixels. + """ + return self.__size[1] + + def __str__(self): + """ + Get the Tkinter bitmap image identifier. This method is automatically + called by Tkinter whenever a BitmapImage object is passed to a Tkinter + method. + + :return: A Tkinter bitmap image identifier (a string). + """ + return str(self.__photo) + + +def getimage(photo): + """Copies the contents of a PhotoImage to a PIL image memory.""" + im = Image.new("RGBA", (photo.width(), photo.height())) + block = im.im + + photo.tk.call("PyImagingPhotoGet", photo, block.id) + + return im + + +def _show(image, title): + """Helper for the Image.show method.""" + + class UI(tkinter.Label): + def __init__(self, master, im): + if im.mode == "1": + self.image = BitmapImage(im, foreground="white", master=master) + else: + self.image = PhotoImage(im, master=master) + super().__init__(master, image=self.image, bg="black", bd=0) + + if not tkinter._default_root: + raise OSError("tkinter not initialized") + top = tkinter.Toplevel() + if title: + top.title(title) + UI(top, image).pack() diff --git a/venv/Lib/site-packages/PIL/ImageTransform.py b/venv/Lib/site-packages/PIL/ImageTransform.py new file mode 100644 index 0000000..77791ab --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageTransform.py @@ -0,0 +1,102 @@ +# +# The Python Imaging Library. +# $Id$ +# +# transform wrappers +# +# History: +# 2002-04-08 fl Created +# +# Copyright (c) 2002 by Secret Labs AB +# Copyright (c) 2002 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image + + +class Transform(Image.ImageTransformHandler): + def __init__(self, data): + self.data = data + + def getdata(self): + return self.method, self.data + + def transform(self, size, image, **options): + # can be overridden + method, data = self.getdata() + return image.transform(size, method, data, **options) + + +class AffineTransform(Transform): + """ + Define an affine image transform. + + This function takes a 6-tuple (a, b, c, d, e, f) which contain the first + two rows from an affine transform matrix. For each pixel (x, y) in the + output image, the new value is taken from a position (a x + b y + c, + d x + e y + f) in the input image, rounded to nearest pixel. + + This function can be used to scale, translate, rotate, and shear the + original image. + + See :py:meth:`~PIL.Image.Image.transform` + + :param matrix: A 6-tuple (a, b, c, d, e, f) containing the first two rows + from an affine transform matrix. + """ + + method = Image.AFFINE + + +class ExtentTransform(Transform): + """ + Define a transform to extract a subregion from an image. + + Maps a rectangle (defined by two corners) from the image to a rectangle of + the given size. The resulting image will contain data sampled from between + the corners, such that (x0, y0) in the input image will end up at (0,0) in + the output image, and (x1, y1) at size. + + This method can be used to crop, stretch, shrink, or mirror an arbitrary + rectangle in the current image. It is slightly slower than crop, but about + as fast as a corresponding resize operation. + + See :py:meth:`~PIL.Image.Image.transform` + + :param bbox: A 4-tuple (x0, y0, x1, y1) which specifies two points in the + input image's coordinate system. See :ref:`coordinate-system`. + """ + + method = Image.EXTENT + + +class QuadTransform(Transform): + """ + Define a quad image transform. + + Maps a quadrilateral (a region defined by four corners) from the image to a + rectangle of the given size. + + See :py:meth:`~PIL.Image.Image.transform` + + :param xy: An 8-tuple (x0, y0, x1, y1, x2, y2, x3, y3) which contain the + upper left, lower left, lower right, and upper right corner of the + source quadrilateral. + """ + + method = Image.QUAD + + +class MeshTransform(Transform): + """ + Define a mesh image transform. A mesh transform consists of one or more + individual quad transforms. + + See :py:meth:`~PIL.Image.Image.transform` + + :param data: A list of (bbox, quad) tuples. + """ + + method = Image.MESH diff --git a/venv/Lib/site-packages/PIL/ImageWin.py b/venv/Lib/site-packages/PIL/ImageWin.py new file mode 100644 index 0000000..927b169 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageWin.py @@ -0,0 +1,230 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a Windows DIB display interface +# +# History: +# 1996-05-20 fl Created +# 1996-09-20 fl Fixed subregion exposure +# 1997-09-21 fl Added draw primitive (for tzPrint) +# 2003-05-21 fl Added experimental Window/ImageWindow classes +# 2003-09-05 fl Added fromstring/tostring methods +# +# Copyright (c) Secret Labs AB 1997-2003. +# Copyright (c) Fredrik Lundh 1996-2003. +# +# See the README file for information on usage and redistribution. +# + +from . import Image + + +class HDC: + """ + Wraps an HDC integer. The resulting object can be passed to the + :py:meth:`~PIL.ImageWin.Dib.draw` and :py:meth:`~PIL.ImageWin.Dib.expose` + methods. + """ + + def __init__(self, dc): + self.dc = dc + + def __int__(self): + return self.dc + + +class HWND: + """ + Wraps an HWND integer. The resulting object can be passed to the + :py:meth:`~PIL.ImageWin.Dib.draw` and :py:meth:`~PIL.ImageWin.Dib.expose` + methods, instead of a DC. + """ + + def __init__(self, wnd): + self.wnd = wnd + + def __int__(self): + return self.wnd + + +class Dib: + """ + A Windows bitmap with the given mode and size. The mode can be one of "1", + "L", "P", or "RGB". + + If the display requires a palette, this constructor creates a suitable + palette and associates it with the image. For an "L" image, 128 greylevels + are allocated. For an "RGB" image, a 6x6x6 colour cube is used, together + with 20 greylevels. + + To make sure that palettes work properly under Windows, you must call the + **palette** method upon certain events from Windows. + + :param image: Either a PIL image, or a mode string. If a mode string is + used, a size must also be given. The mode can be one of "1", + "L", "P", or "RGB". + :param size: If the first argument is a mode string, this + defines the size of the image. + """ + + def __init__(self, image, size=None): + if hasattr(image, "mode") and hasattr(image, "size"): + mode = image.mode + size = image.size + else: + mode = image + image = None + if mode not in ["1", "L", "P", "RGB"]: + mode = Image.getmodebase(mode) + self.image = Image.core.display(mode, size) + self.mode = mode + self.size = size + if image: + self.paste(image) + + def expose(self, handle): + """ + Copy the bitmap contents to a device context. + + :param handle: Device context (HDC), cast to a Python integer, or an + HDC or HWND instance. In PythonWin, you can use the + :py:meth:`CDC.GetHandleAttrib` to get a suitable handle. + """ + if isinstance(handle, HWND): + dc = self.image.getdc(handle) + try: + result = self.image.expose(dc) + finally: + self.image.releasedc(handle, dc) + else: + result = self.image.expose(handle) + return result + + def draw(self, handle, dst, src=None): + """ + Same as expose, but allows you to specify where to draw the image, and + what part of it to draw. + + The destination and source areas are given as 4-tuple rectangles. If + the source is omitted, the entire image is copied. If the source and + the destination have different sizes, the image is resized as + necessary. + """ + if not src: + src = (0, 0) + self.size + if isinstance(handle, HWND): + dc = self.image.getdc(handle) + try: + result = self.image.draw(dc, dst, src) + finally: + self.image.releasedc(handle, dc) + else: + result = self.image.draw(handle, dst, src) + return result + + def query_palette(self, handle): + """ + Installs the palette associated with the image in the given device + context. + + This method should be called upon **QUERYNEWPALETTE** and + **PALETTECHANGED** events from Windows. If this method returns a + non-zero value, one or more display palette entries were changed, and + the image should be redrawn. + + :param handle: Device context (HDC), cast to a Python integer, or an + HDC or HWND instance. + :return: A true value if one or more entries were changed (this + indicates that the image should be redrawn). + """ + if isinstance(handle, HWND): + handle = self.image.getdc(handle) + try: + result = self.image.query_palette(handle) + finally: + self.image.releasedc(handle, handle) + else: + result = self.image.query_palette(handle) + return result + + def paste(self, im, box=None): + """ + Paste a PIL image into the bitmap image. + + :param im: A PIL image. The size must match the target region. + If the mode does not match, the image is converted to the + mode of the bitmap image. + :param box: A 4-tuple defining the left, upper, right, and + lower pixel coordinate. See :ref:`coordinate-system`. If + None is given instead of a tuple, all of the image is + assumed. + """ + im.load() + if self.mode != im.mode: + im = im.convert(self.mode) + if box: + self.image.paste(im.im, box) + else: + self.image.paste(im.im) + + def frombytes(self, buffer): + """ + Load display memory contents from byte data. + + :param buffer: A buffer containing display data (usually + data returned from tobytes) + """ + return self.image.frombytes(buffer) + + def tobytes(self): + """ + Copy display memory contents to bytes object. + + :return: A bytes object containing display data. + """ + return self.image.tobytes() + + +class Window: + """Create a Window with the given title size.""" + + def __init__(self, title="PIL", width=None, height=None): + self.hwnd = Image.core.createwindow( + title, self.__dispatcher, width or 0, height or 0 + ) + + def __dispatcher(self, action, *args): + return getattr(self, "ui_handle_" + action)(*args) + + def ui_handle_clear(self, dc, x0, y0, x1, y1): + pass + + def ui_handle_damage(self, x0, y0, x1, y1): + pass + + def ui_handle_destroy(self): + pass + + def ui_handle_repair(self, dc, x0, y0, x1, y1): + pass + + def ui_handle_resize(self, width, height): + pass + + def mainloop(self): + Image.core.eventloop() + + +class ImageWindow(Window): + """Create an image window which displays the given image.""" + + def __init__(self, image, title="PIL"): + if not isinstance(image, Dib): + image = Dib(image) + self.image = image + width, height = image.size + super().__init__(title, width=width, height=height) + + def ui_handle_repair(self, dc, x0, y0, x1, y1): + self.image.draw(dc, (x0, y0, x1, y1)) diff --git a/venv/Lib/site-packages/PIL/ImtImagePlugin.py b/venv/Lib/site-packages/PIL/ImtImagePlugin.py new file mode 100644 index 0000000..21ffd74 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImtImagePlugin.py @@ -0,0 +1,93 @@ +# +# The Python Imaging Library. +# $Id$ +# +# IM Tools support for PIL +# +# history: +# 1996-05-27 fl Created (read 8-bit images only) +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.2) +# +# Copyright (c) Secret Labs AB 1997-2001. +# Copyright (c) Fredrik Lundh 1996-2001. +# +# See the README file for information on usage and redistribution. +# + + +import re + +from . import Image, ImageFile + +# +# -------------------------------------------------------------------- + +field = re.compile(br"([a-z]*) ([^ \r\n]*)") + + +## +# Image plugin for IM Tools images. + + +class ImtImageFile(ImageFile.ImageFile): + + format = "IMT" + format_description = "IM Tools" + + def _open(self): + + # Quick rejection: if there's not a LF among the first + # 100 bytes, this is (probably) not a text header. + + if b"\n" not in self.fp.read(100): + raise SyntaxError("not an IM file") + self.fp.seek(0) + + xsize = ysize = 0 + + while True: + + s = self.fp.read(1) + if not s: + break + + if s == b"\x0C": + + # image data begins + self.tile = [ + ("raw", (0, 0) + self.size, self.fp.tell(), (self.mode, 0, 1)) + ] + + break + + else: + + # read key/value pair + # FIXME: dangerous, may read whole file + s = s + self.fp.readline() + if len(s) == 1 or len(s) > 100: + break + if s[0] == ord(b"*"): + continue # comment + + m = field.match(s) + if not m: + break + k, v = m.group(1, 2) + if k == "width": + xsize = int(v) + self._size = xsize, ysize + elif k == "height": + ysize = int(v) + self._size = xsize, ysize + elif k == "pixel" and v == "n8": + self.mode = "L" + + +# +# -------------------------------------------------------------------- + +Image.register_open(ImtImageFile.format, ImtImageFile) + +# +# no extension registered (".im" is simply too common) diff --git a/venv/Lib/site-packages/PIL/IptcImagePlugin.py b/venv/Lib/site-packages/PIL/IptcImagePlugin.py new file mode 100644 index 0000000..b2f976d --- /dev/null +++ b/venv/Lib/site-packages/PIL/IptcImagePlugin.py @@ -0,0 +1,226 @@ +# +# The Python Imaging Library. +# $Id$ +# +# IPTC/NAA file handling +# +# history: +# 1995-10-01 fl Created +# 1998-03-09 fl Cleaned up and added to PIL +# 2002-06-18 fl Added getiptcinfo helper +# +# Copyright (c) Secret Labs AB 1997-2002. +# Copyright (c) Fredrik Lundh 1995. +# +# See the README file for information on usage and redistribution. +# +import os +import tempfile + +from . import Image, ImageFile +from ._binary import i8, i16be as i16, i32be as i32, o8 + +COMPRESSION = {1: "raw", 5: "jpeg"} + +PAD = o8(0) * 4 + + +# +# Helpers + + +def i(c): + return i32((PAD + c)[-4:]) + + +def dump(c): + for i in c: + print("%02x" % i8(i), end=" ") + print() + + +## +# Image plugin for IPTC/NAA datastreams. To read IPTC/NAA fields +# from TIFF and JPEG files, use the getiptcinfo function. + + +class IptcImageFile(ImageFile.ImageFile): + + format = "IPTC" + format_description = "IPTC/NAA" + + def getint(self, key): + return i(self.info[key]) + + def field(self): + # + # get a IPTC field header + s = self.fp.read(5) + if not len(s): + return None, 0 + + tag = i8(s[1]), i8(s[2]) + + # syntax + if i8(s[0]) != 0x1C or tag[0] < 1 or tag[0] > 9: + raise SyntaxError("invalid IPTC/NAA file") + + # field size + size = i8(s[3]) + if size > 132: + raise OSError("illegal field length in IPTC/NAA file") + elif size == 128: + size = 0 + elif size > 128: + size = i(self.fp.read(size - 128)) + else: + size = i16(s[3:]) + + return tag, size + + def _open(self): + + # load descriptive fields + while True: + offset = self.fp.tell() + tag, size = self.field() + if not tag or tag == (8, 10): + break + if size: + tagdata = self.fp.read(size) + else: + tagdata = None + if tag in self.info: + if isinstance(self.info[tag], list): + self.info[tag].append(tagdata) + else: + self.info[tag] = [self.info[tag], tagdata] + else: + self.info[tag] = tagdata + + # mode + layers = i8(self.info[(3, 60)][0]) + component = i8(self.info[(3, 60)][1]) + if (3, 65) in self.info: + id = i8(self.info[(3, 65)][0]) - 1 + else: + id = 0 + if layers == 1 and not component: + self.mode = "L" + elif layers == 3 and component: + self.mode = "RGB"[id] + elif layers == 4 and component: + self.mode = "CMYK"[id] + + # size + self._size = self.getint((3, 20)), self.getint((3, 30)) + + # compression + try: + compression = COMPRESSION[self.getint((3, 120))] + except KeyError: + raise OSError("Unknown IPTC image compression") + + # tile + if tag == (8, 10): + self.tile = [ + ("iptc", (compression, offset), (0, 0, self.size[0], self.size[1])) + ] + + def load(self): + + if len(self.tile) != 1 or self.tile[0][0] != "iptc": + return ImageFile.ImageFile.load(self) + + type, tile, box = self.tile[0] + + encoding, offset = tile + + self.fp.seek(offset) + + # Copy image data to temporary file + o_fd, outfile = tempfile.mkstemp(text=False) + o = os.fdopen(o_fd) + if encoding == "raw": + # To simplify access to the extracted file, + # prepend a PPM header + o.write("P5\n%d %d\n255\n" % self.size) + while True: + type, size = self.field() + if type != (8, 10): + break + while size > 0: + s = self.fp.read(min(size, 8192)) + if not s: + break + o.write(s) + size -= len(s) + o.close() + + try: + with Image.open(outfile) as _im: + _im.load() + self.im = _im.im + finally: + try: + os.unlink(outfile) + except OSError: + pass + + +Image.register_open(IptcImageFile.format, IptcImageFile) + +Image.register_extension(IptcImageFile.format, ".iim") + + +def getiptcinfo(im): + """ + Get IPTC information from TIFF, JPEG, or IPTC file. + + :param im: An image containing IPTC data. + :returns: A dictionary containing IPTC information, or None if + no IPTC information block was found. + """ + from . import TiffImagePlugin, JpegImagePlugin + import io + + data = None + + if isinstance(im, IptcImageFile): + # return info dictionary right away + return im.info + + elif isinstance(im, JpegImagePlugin.JpegImageFile): + # extract the IPTC/NAA resource + photoshop = im.info.get("photoshop") + if photoshop: + data = photoshop.get(0x0404) + + elif isinstance(im, TiffImagePlugin.TiffImageFile): + # get raw data from the IPTC/NAA tag (PhotoShop tags the data + # as 4-byte integers, so we cannot use the get method...) + try: + data = im.tag.tagdata[TiffImagePlugin.IPTC_NAA_CHUNK] + except (AttributeError, KeyError): + pass + + if data is None: + return None # no properties + + # create an IptcImagePlugin object without initializing it + class FakeImage: + pass + + im = FakeImage() + im.__class__ = IptcImageFile + + # parse the IPTC information chunk + im.info = {} + im.fp = io.BytesIO(data) + + try: + im._open() + except (IndexError, KeyError): + pass # expected failure + + return im.info diff --git a/venv/Lib/site-packages/PIL/Jpeg2KImagePlugin.py b/venv/Lib/site-packages/PIL/Jpeg2KImagePlugin.py new file mode 100644 index 0000000..0b0d433 --- /dev/null +++ b/venv/Lib/site-packages/PIL/Jpeg2KImagePlugin.py @@ -0,0 +1,314 @@ +# +# The Python Imaging Library +# $Id$ +# +# JPEG2000 file handling +# +# History: +# 2014-03-12 ajh Created +# +# Copyright (c) 2014 Coriolis Systems Limited +# Copyright (c) 2014 Alastair Houghton +# +# See the README file for information on usage and redistribution. +# +import io +import os +import struct + +from . import Image, ImageFile + + +def _parse_codestream(fp): + """Parse the JPEG 2000 codestream to extract the size and component + count from the SIZ marker segment, returning a PIL (size, mode) tuple.""" + + hdr = fp.read(2) + lsiz = struct.unpack(">H", hdr)[0] + siz = hdr + fp.read(lsiz - 2) + lsiz, rsiz, xsiz, ysiz, xosiz, yosiz, _, _, _, _, csiz = struct.unpack_from( + ">HHIIIIIIIIH", siz + ) + ssiz = [None] * csiz + xrsiz = [None] * csiz + yrsiz = [None] * csiz + for i in range(csiz): + ssiz[i], xrsiz[i], yrsiz[i] = struct.unpack_from(">BBB", siz, 36 + 3 * i) + + size = (xsiz - xosiz, ysiz - yosiz) + if csiz == 1: + if (yrsiz[0] & 0x7F) > 8: + mode = "I;16" + else: + mode = "L" + elif csiz == 2: + mode = "LA" + elif csiz == 3: + mode = "RGB" + elif csiz == 4: + mode = "RGBA" + else: + mode = None + + return (size, mode) + + +def _parse_jp2_header(fp): + """Parse the JP2 header box to extract size, component count and + color space information, returning a (size, mode, mimetype) tuple.""" + + # Find the JP2 header box + header = None + mimetype = None + while True: + lbox, tbox = struct.unpack(">I4s", fp.read(8)) + if lbox == 1: + lbox = struct.unpack(">Q", fp.read(8))[0] + hlen = 16 + else: + hlen = 8 + + if lbox < hlen: + raise SyntaxError("Invalid JP2 header length") + + if tbox == b"jp2h": + header = fp.read(lbox - hlen) + break + elif tbox == b"ftyp": + if fp.read(4) == b"jpx ": + mimetype = "image/jpx" + fp.seek(lbox - hlen - 4, os.SEEK_CUR) + else: + fp.seek(lbox - hlen, os.SEEK_CUR) + + if header is None: + raise SyntaxError("could not find JP2 header") + + size = None + mode = None + bpc = None + nc = None + + hio = io.BytesIO(header) + while True: + lbox, tbox = struct.unpack(">I4s", hio.read(8)) + if lbox == 1: + lbox = struct.unpack(">Q", hio.read(8))[0] + hlen = 16 + else: + hlen = 8 + + content = hio.read(lbox - hlen) + + if tbox == b"ihdr": + height, width, nc, bpc, c, unkc, ipr = struct.unpack(">IIHBBBB", content) + size = (width, height) + if unkc: + if nc == 1 and (bpc & 0x7F) > 8: + mode = "I;16" + elif nc == 1: + mode = "L" + elif nc == 2: + mode = "LA" + elif nc == 3: + mode = "RGB" + elif nc == 4: + mode = "RGBA" + break + elif tbox == b"colr": + meth, prec, approx = struct.unpack_from(">BBB", content) + if meth == 1: + cs = struct.unpack_from(">I", content, 3)[0] + if cs == 16: # sRGB + if nc == 1 and (bpc & 0x7F) > 8: + mode = "I;16" + elif nc == 1: + mode = "L" + elif nc == 3: + mode = "RGB" + elif nc == 4: + mode = "RGBA" + break + elif cs == 17: # grayscale + if nc == 1 and (bpc & 0x7F) > 8: + mode = "I;16" + elif nc == 1: + mode = "L" + elif nc == 2: + mode = "LA" + break + elif cs == 18: # sYCC + if nc == 3: + mode = "RGB" + elif nc == 4: + mode = "RGBA" + break + + if size is None or mode is None: + raise SyntaxError("Malformed jp2 header") + + return (size, mode, mimetype) + + +## +# Image plugin for JPEG2000 images. + + +class Jpeg2KImageFile(ImageFile.ImageFile): + format = "JPEG2000" + format_description = "JPEG 2000 (ISO 15444)" + + def _open(self): + sig = self.fp.read(4) + if sig == b"\xff\x4f\xff\x51": + self.codec = "j2k" + self._size, self.mode = _parse_codestream(self.fp) + else: + sig = sig + self.fp.read(8) + + if sig == b"\x00\x00\x00\x0cjP \x0d\x0a\x87\x0a": + self.codec = "jp2" + header = _parse_jp2_header(self.fp) + self._size, self.mode, self.custom_mimetype = header + else: + raise SyntaxError("not a JPEG 2000 file") + + if self.size is None or self.mode is None: + raise SyntaxError("unable to determine size/mode") + + self._reduce = 0 + self.layers = 0 + + fd = -1 + length = -1 + + try: + fd = self.fp.fileno() + length = os.fstat(fd).st_size + except Exception: + fd = -1 + try: + pos = self.fp.tell() + self.fp.seek(0, io.SEEK_END) + length = self.fp.tell() + self.fp.seek(pos) + except Exception: + length = -1 + + self.tile = [ + ( + "jpeg2k", + (0, 0) + self.size, + 0, + (self.codec, self._reduce, self.layers, fd, length), + ) + ] + + @property + def reduce(self): + # https://github.com/python-pillow/Pillow/issues/4343 found that the + # new Image 'reduce' method was shadowed by this plugin's 'reduce' + # property. This attempts to allow for both scenarios + return self._reduce or super().reduce + + @reduce.setter + def reduce(self, value): + self._reduce = value + + def load(self): + if self.tile and self._reduce: + power = 1 << self._reduce + adjust = power >> 1 + self._size = ( + int((self.size[0] + adjust) / power), + int((self.size[1] + adjust) / power), + ) + + # Update the reduce and layers settings + t = self.tile[0] + t3 = (t[3][0], self._reduce, self.layers, t[3][3], t[3][4]) + self.tile = [(t[0], (0, 0) + self.size, t[2], t3)] + + return ImageFile.ImageFile.load(self) + + +def _accept(prefix): + return ( + prefix[:4] == b"\xff\x4f\xff\x51" + or prefix[:12] == b"\x00\x00\x00\x0cjP \x0d\x0a\x87\x0a" + ) + + +# ------------------------------------------------------------ +# Save support + + +def _save(im, fp, filename): + if filename.endswith(".j2k"): + kind = "j2k" + else: + kind = "jp2" + + # Get the keyword arguments + info = im.encoderinfo + + offset = info.get("offset", None) + tile_offset = info.get("tile_offset", None) + tile_size = info.get("tile_size", None) + quality_mode = info.get("quality_mode", "rates") + quality_layers = info.get("quality_layers", None) + if quality_layers is not None and not ( + isinstance(quality_layers, (list, tuple)) + and all( + [ + isinstance(quality_layer, (int, float)) + for quality_layer in quality_layers + ] + ) + ): + raise ValueError("quality_layers must be a sequence of numbers") + + num_resolutions = info.get("num_resolutions", 0) + cblk_size = info.get("codeblock_size", None) + precinct_size = info.get("precinct_size", None) + irreversible = info.get("irreversible", False) + progression = info.get("progression", "LRCP") + cinema_mode = info.get("cinema_mode", "no") + fd = -1 + + if hasattr(fp, "fileno"): + try: + fd = fp.fileno() + except Exception: + fd = -1 + + im.encoderconfig = ( + offset, + tile_offset, + tile_size, + quality_mode, + quality_layers, + num_resolutions, + cblk_size, + precinct_size, + irreversible, + progression, + cinema_mode, + fd, + ) + + ImageFile._save(im, fp, [("jpeg2k", (0, 0) + im.size, 0, kind)]) + + +# ------------------------------------------------------------ +# Registry stuff + + +Image.register_open(Jpeg2KImageFile.format, Jpeg2KImageFile, _accept) +Image.register_save(Jpeg2KImageFile.format, _save) + +Image.register_extensions( + Jpeg2KImageFile.format, [".jp2", ".j2k", ".jpc", ".jpf", ".jpx", ".j2c"] +) + +Image.register_mime(Jpeg2KImageFile.format, "image/jp2") diff --git a/venv/Lib/site-packages/PIL/JpegImagePlugin.py b/venv/Lib/site-packages/PIL/JpegImagePlugin.py new file mode 100644 index 0000000..2aa029e --- /dev/null +++ b/venv/Lib/site-packages/PIL/JpegImagePlugin.py @@ -0,0 +1,807 @@ +# +# The Python Imaging Library. +# $Id$ +# +# JPEG (JFIF) file handling +# +# See "Digital Compression and Coding of Continuous-Tone Still Images, +# Part 1, Requirements and Guidelines" (CCITT T.81 / ISO 10918-1) +# +# History: +# 1995-09-09 fl Created +# 1995-09-13 fl Added full parser +# 1996-03-25 fl Added hack to use the IJG command line utilities +# 1996-05-05 fl Workaround Photoshop 2.5 CMYK polarity bug +# 1996-05-28 fl Added draft support, JFIF version (0.1) +# 1996-12-30 fl Added encoder options, added progression property (0.2) +# 1997-08-27 fl Save mode 1 images as BW (0.3) +# 1998-07-12 fl Added YCbCr to draft and save methods (0.4) +# 1998-10-19 fl Don't hang on files using 16-bit DQT's (0.4.1) +# 2001-04-16 fl Extract DPI settings from JFIF files (0.4.2) +# 2002-07-01 fl Skip pad bytes before markers; identify Exif files (0.4.3) +# 2003-04-25 fl Added experimental EXIF decoder (0.5) +# 2003-06-06 fl Added experimental EXIF GPSinfo decoder +# 2003-09-13 fl Extract COM markers +# 2009-09-06 fl Added icc_profile support (from Florian Hoech) +# 2009-03-06 fl Changed CMYK handling; always use Adobe polarity (0.6) +# 2009-03-08 fl Added subsampling support (from Justin Huff). +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-1996 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +import array +import io +import os +import struct +import subprocess +import tempfile +import warnings + +from . import Image, ImageFile, TiffImagePlugin +from ._binary import i8, i16be as i16, i32be as i32, o8 +from .JpegPresets import presets + +# +# Parser + + +def Skip(self, marker): + n = i16(self.fp.read(2)) - 2 + ImageFile._safe_read(self.fp, n) + + +def APP(self, marker): + # + # Application marker. Store these in the APP dictionary. + # Also look for well-known application markers. + + n = i16(self.fp.read(2)) - 2 + s = ImageFile._safe_read(self.fp, n) + + app = "APP%d" % (marker & 15) + + self.app[app] = s # compatibility + self.applist.append((app, s)) + + if marker == 0xFFE0 and s[:4] == b"JFIF": + # extract JFIF information + self.info["jfif"] = version = i16(s, 5) # version + self.info["jfif_version"] = divmod(version, 256) + # extract JFIF properties + try: + jfif_unit = i8(s[7]) + jfif_density = i16(s, 8), i16(s, 10) + except Exception: + pass + else: + if jfif_unit == 1: + self.info["dpi"] = jfif_density + self.info["jfif_unit"] = jfif_unit + self.info["jfif_density"] = jfif_density + elif marker == 0xFFE1 and s[:5] == b"Exif\0": + if "exif" not in self.info: + # extract EXIF information (incomplete) + self.info["exif"] = s # FIXME: value will change + elif marker == 0xFFE2 and s[:5] == b"FPXR\0": + # extract FlashPix information (incomplete) + self.info["flashpix"] = s # FIXME: value will change + elif marker == 0xFFE2 and s[:12] == b"ICC_PROFILE\0": + # Since an ICC profile can be larger than the maximum size of + # a JPEG marker (64K), we need provisions to split it into + # multiple markers. The format defined by the ICC specifies + # one or more APP2 markers containing the following data: + # Identifying string ASCII "ICC_PROFILE\0" (12 bytes) + # Marker sequence number 1, 2, etc (1 byte) + # Number of markers Total of APP2's used (1 byte) + # Profile data (remainder of APP2 data) + # Decoders should use the marker sequence numbers to + # reassemble the profile, rather than assuming that the APP2 + # markers appear in the correct sequence. + self.icclist.append(s) + elif marker == 0xFFED and s[:14] == b"Photoshop 3.0\x00": + # parse the image resource block + offset = 14 + photoshop = self.info.setdefault("photoshop", {}) + while s[offset : offset + 4] == b"8BIM": + try: + offset += 4 + # resource code + code = i16(s, offset) + offset += 2 + # resource name (usually empty) + name_len = i8(s[offset]) + # name = s[offset+1:offset+1+name_len] + offset += 1 + name_len + offset += offset & 1 # align + # resource data block + size = i32(s, offset) + offset += 4 + data = s[offset : offset + size] + if code == 0x03ED: # ResolutionInfo + data = { + "XResolution": i32(data[:4]) / 65536, + "DisplayedUnitsX": i16(data[4:8]), + "YResolution": i32(data[8:12]) / 65536, + "DisplayedUnitsY": i16(data[12:]), + } + photoshop[code] = data + offset += size + offset += offset & 1 # align + except struct.error: + break # insufficient data + + elif marker == 0xFFEE and s[:5] == b"Adobe": + self.info["adobe"] = i16(s, 5) + # extract Adobe custom properties + try: + adobe_transform = i8(s[1]) + except Exception: + pass + else: + self.info["adobe_transform"] = adobe_transform + elif marker == 0xFFE2 and s[:4] == b"MPF\0": + # extract MPO information + self.info["mp"] = s[4:] + # offset is current location minus buffer size + # plus constant header size + self.info["mpoffset"] = self.fp.tell() - n + 4 + + # If DPI isn't in JPEG header, fetch from EXIF + if "dpi" not in self.info and "exif" in self.info: + try: + exif = self.getexif() + resolution_unit = exif[0x0128] + x_resolution = exif[0x011A] + try: + dpi = float(x_resolution[0]) / x_resolution[1] + except TypeError: + dpi = x_resolution + if resolution_unit == 3: # cm + # 1 dpcm = 2.54 dpi + dpi *= 2.54 + self.info["dpi"] = int(dpi + 0.5), int(dpi + 0.5) + except (KeyError, SyntaxError, ValueError, ZeroDivisionError): + # SyntaxError for invalid/unreadable EXIF + # KeyError for dpi not included + # ZeroDivisionError for invalid dpi rational value + # ValueError for x_resolution[0] being an invalid float + self.info["dpi"] = 72, 72 + + +def COM(self, marker): + # + # Comment marker. Store these in the APP dictionary. + n = i16(self.fp.read(2)) - 2 + s = ImageFile._safe_read(self.fp, n) + + self.info["comment"] = s + self.app["COM"] = s # compatibility + self.applist.append(("COM", s)) + + +def SOF(self, marker): + # + # Start of frame marker. Defines the size and mode of the + # image. JPEG is colour blind, so we use some simple + # heuristics to map the number of layers to an appropriate + # mode. Note that this could be made a bit brighter, by + # looking for JFIF and Adobe APP markers. + + n = i16(self.fp.read(2)) - 2 + s = ImageFile._safe_read(self.fp, n) + self._size = i16(s[3:]), i16(s[1:]) + + self.bits = i8(s[0]) + if self.bits != 8: + raise SyntaxError("cannot handle %d-bit layers" % self.bits) + + self.layers = i8(s[5]) + if self.layers == 1: + self.mode = "L" + elif self.layers == 3: + self.mode = "RGB" + elif self.layers == 4: + self.mode = "CMYK" + else: + raise SyntaxError("cannot handle %d-layer images" % self.layers) + + if marker in [0xFFC2, 0xFFC6, 0xFFCA, 0xFFCE]: + self.info["progressive"] = self.info["progression"] = 1 + + if self.icclist: + # fixup icc profile + self.icclist.sort() # sort by sequence number + if i8(self.icclist[0][13]) == len(self.icclist): + profile = [] + for p in self.icclist: + profile.append(p[14:]) + icc_profile = b"".join(profile) + else: + icc_profile = None # wrong number of fragments + self.info["icc_profile"] = icc_profile + self.icclist = None + + for i in range(6, len(s), 3): + t = s[i : i + 3] + # 4-tuples: id, vsamp, hsamp, qtable + self.layer.append((t[0], i8(t[1]) // 16, i8(t[1]) & 15, i8(t[2]))) + + +def DQT(self, marker): + # + # Define quantization table. Support baseline 8-bit tables + # only. Note that there might be more than one table in + # each marker. + + # FIXME: The quantization tables can be used to estimate the + # compression quality. + + n = i16(self.fp.read(2)) - 2 + s = ImageFile._safe_read(self.fp, n) + while len(s): + if len(s) < 65: + raise SyntaxError("bad quantization table marker") + v = i8(s[0]) + if v // 16 == 0: + self.quantization[v & 15] = array.array("B", s[1:65]) + s = s[65:] + else: + return # FIXME: add code to read 16-bit tables! + # raise SyntaxError, "bad quantization table element size" + + +# +# JPEG marker table + +MARKER = { + 0xFFC0: ("SOF0", "Baseline DCT", SOF), + 0xFFC1: ("SOF1", "Extended Sequential DCT", SOF), + 0xFFC2: ("SOF2", "Progressive DCT", SOF), + 0xFFC3: ("SOF3", "Spatial lossless", SOF), + 0xFFC4: ("DHT", "Define Huffman table", Skip), + 0xFFC5: ("SOF5", "Differential sequential DCT", SOF), + 0xFFC6: ("SOF6", "Differential progressive DCT", SOF), + 0xFFC7: ("SOF7", "Differential spatial", SOF), + 0xFFC8: ("JPG", "Extension", None), + 0xFFC9: ("SOF9", "Extended sequential DCT (AC)", SOF), + 0xFFCA: ("SOF10", "Progressive DCT (AC)", SOF), + 0xFFCB: ("SOF11", "Spatial lossless DCT (AC)", SOF), + 0xFFCC: ("DAC", "Define arithmetic coding conditioning", Skip), + 0xFFCD: ("SOF13", "Differential sequential DCT (AC)", SOF), + 0xFFCE: ("SOF14", "Differential progressive DCT (AC)", SOF), + 0xFFCF: ("SOF15", "Differential spatial (AC)", SOF), + 0xFFD0: ("RST0", "Restart 0", None), + 0xFFD1: ("RST1", "Restart 1", None), + 0xFFD2: ("RST2", "Restart 2", None), + 0xFFD3: ("RST3", "Restart 3", None), + 0xFFD4: ("RST4", "Restart 4", None), + 0xFFD5: ("RST5", "Restart 5", None), + 0xFFD6: ("RST6", "Restart 6", None), + 0xFFD7: ("RST7", "Restart 7", None), + 0xFFD8: ("SOI", "Start of image", None), + 0xFFD9: ("EOI", "End of image", None), + 0xFFDA: ("SOS", "Start of scan", Skip), + 0xFFDB: ("DQT", "Define quantization table", DQT), + 0xFFDC: ("DNL", "Define number of lines", Skip), + 0xFFDD: ("DRI", "Define restart interval", Skip), + 0xFFDE: ("DHP", "Define hierarchical progression", SOF), + 0xFFDF: ("EXP", "Expand reference component", Skip), + 0xFFE0: ("APP0", "Application segment 0", APP), + 0xFFE1: ("APP1", "Application segment 1", APP), + 0xFFE2: ("APP2", "Application segment 2", APP), + 0xFFE3: ("APP3", "Application segment 3", APP), + 0xFFE4: ("APP4", "Application segment 4", APP), + 0xFFE5: ("APP5", "Application segment 5", APP), + 0xFFE6: ("APP6", "Application segment 6", APP), + 0xFFE7: ("APP7", "Application segment 7", APP), + 0xFFE8: ("APP8", "Application segment 8", APP), + 0xFFE9: ("APP9", "Application segment 9", APP), + 0xFFEA: ("APP10", "Application segment 10", APP), + 0xFFEB: ("APP11", "Application segment 11", APP), + 0xFFEC: ("APP12", "Application segment 12", APP), + 0xFFED: ("APP13", "Application segment 13", APP), + 0xFFEE: ("APP14", "Application segment 14", APP), + 0xFFEF: ("APP15", "Application segment 15", APP), + 0xFFF0: ("JPG0", "Extension 0", None), + 0xFFF1: ("JPG1", "Extension 1", None), + 0xFFF2: ("JPG2", "Extension 2", None), + 0xFFF3: ("JPG3", "Extension 3", None), + 0xFFF4: ("JPG4", "Extension 4", None), + 0xFFF5: ("JPG5", "Extension 5", None), + 0xFFF6: ("JPG6", "Extension 6", None), + 0xFFF7: ("JPG7", "Extension 7", None), + 0xFFF8: ("JPG8", "Extension 8", None), + 0xFFF9: ("JPG9", "Extension 9", None), + 0xFFFA: ("JPG10", "Extension 10", None), + 0xFFFB: ("JPG11", "Extension 11", None), + 0xFFFC: ("JPG12", "Extension 12", None), + 0xFFFD: ("JPG13", "Extension 13", None), + 0xFFFE: ("COM", "Comment", COM), +} + + +def _accept(prefix): + return prefix[0:1] == b"\377" + + +## +# Image plugin for JPEG and JFIF images. + + +class JpegImageFile(ImageFile.ImageFile): + + format = "JPEG" + format_description = "JPEG (ISO 10918)" + + def _open(self): + + s = self.fp.read(1) + + if i8(s) != 255: + raise SyntaxError("not a JPEG file") + + # Create attributes + self.bits = self.layers = 0 + + # JPEG specifics (internal) + self.layer = [] + self.huffman_dc = {} + self.huffman_ac = {} + self.quantization = {} + self.app = {} # compatibility + self.applist = [] + self.icclist = [] + + while True: + + i = i8(s) + if i == 0xFF: + s = s + self.fp.read(1) + i = i16(s) + else: + # Skip non-0xFF junk + s = self.fp.read(1) + continue + + if i in MARKER: + name, description, handler = MARKER[i] + if handler is not None: + handler(self, i) + if i == 0xFFDA: # start of scan + rawmode = self.mode + if self.mode == "CMYK": + rawmode = "CMYK;I" # assume adobe conventions + self.tile = [("jpeg", (0, 0) + self.size, 0, (rawmode, ""))] + # self.__offset = self.fp.tell() + break + s = self.fp.read(1) + elif i == 0 or i == 0xFFFF: + # padded marker or junk; move on + s = b"\xff" + elif i == 0xFF00: # Skip extraneous data (escaped 0xFF) + s = self.fp.read(1) + else: + raise SyntaxError("no marker found") + + def load_read(self, read_bytes): + """ + internal: read more image data + For premature EOF and LOAD_TRUNCATED_IMAGES adds EOI marker + so libjpeg can finish decoding + """ + s = self.fp.read(read_bytes) + + if not s and ImageFile.LOAD_TRUNCATED_IMAGES: + # Premature EOF. + # Pretend file is finished adding EOI marker + return b"\xFF\xD9" + + return s + + def draft(self, mode, size): + + if len(self.tile) != 1: + return + + # Protect from second call + if self.decoderconfig: + return + + d, e, o, a = self.tile[0] + scale = 1 + original_size = self.size + + if a[0] == "RGB" and mode in ["L", "YCbCr"]: + self.mode = mode + a = mode, "" + + if size: + scale = min(self.size[0] // size[0], self.size[1] // size[1]) + for s in [8, 4, 2, 1]: + if scale >= s: + break + e = ( + e[0], + e[1], + (e[2] - e[0] + s - 1) // s + e[0], + (e[3] - e[1] + s - 1) // s + e[1], + ) + self._size = ((self.size[0] + s - 1) // s, (self.size[1] + s - 1) // s) + scale = s + + self.tile = [(d, e, o, a)] + self.decoderconfig = (scale, 0) + + box = (0, 0, original_size[0] / scale, original_size[1] / scale) + return (self.mode, box) + + def load_djpeg(self): + + # ALTERNATIVE: handle JPEGs via the IJG command line utilities + + f, path = tempfile.mkstemp() + os.close(f) + if os.path.exists(self.filename): + subprocess.check_call(["djpeg", "-outfile", path, self.filename]) + else: + raise ValueError("Invalid Filename") + + try: + with Image.open(path) as _im: + _im.load() + self.im = _im.im + finally: + try: + os.unlink(path) + except OSError: + pass + + self.mode = self.im.mode + self._size = self.im.size + + self.tile = [] + + def _getexif(self): + return _getexif(self) + + def _getmp(self): + return _getmp(self) + + +def _fixup_dict(src_dict): + # Helper function for _getexif() + # returns a dict with any single item tuples/lists as individual values + exif = Image.Exif() + return exif._fixup_dict(src_dict) + + +def _getexif(self): + if "exif" not in self.info: + return None + return dict(self.getexif()) + + +def _getmp(self): + # Extract MP information. This method was inspired by the "highly + # experimental" _getexif version that's been in use for years now, + # itself based on the ImageFileDirectory class in the TIFF plug-in. + + # The MP record essentially consists of a TIFF file embedded in a JPEG + # application marker. + try: + data = self.info["mp"] + except KeyError: + return None + file_contents = io.BytesIO(data) + head = file_contents.read(8) + endianness = ">" if head[:4] == b"\x4d\x4d\x00\x2a" else "<" + # process dictionary + try: + info = TiffImagePlugin.ImageFileDirectory_v2(head) + file_contents.seek(info.next) + info.load(file_contents) + mp = dict(info) + except Exception: + raise SyntaxError("malformed MP Index (unreadable directory)") + # it's an error not to have a number of images + try: + quant = mp[0xB001] + except KeyError: + raise SyntaxError("malformed MP Index (no number of images)") + # get MP entries + mpentries = [] + try: + rawmpentries = mp[0xB002] + for entrynum in range(0, quant): + unpackedentry = struct.unpack_from( + "{}LLLHH".format(endianness), rawmpentries, entrynum * 16 + ) + labels = ("Attribute", "Size", "DataOffset", "EntryNo1", "EntryNo2") + mpentry = dict(zip(labels, unpackedentry)) + mpentryattr = { + "DependentParentImageFlag": bool(mpentry["Attribute"] & (1 << 31)), + "DependentChildImageFlag": bool(mpentry["Attribute"] & (1 << 30)), + "RepresentativeImageFlag": bool(mpentry["Attribute"] & (1 << 29)), + "Reserved": (mpentry["Attribute"] & (3 << 27)) >> 27, + "ImageDataFormat": (mpentry["Attribute"] & (7 << 24)) >> 24, + "MPType": mpentry["Attribute"] & 0x00FFFFFF, + } + if mpentryattr["ImageDataFormat"] == 0: + mpentryattr["ImageDataFormat"] = "JPEG" + else: + raise SyntaxError("unsupported picture format in MPO") + mptypemap = { + 0x000000: "Undefined", + 0x010001: "Large Thumbnail (VGA Equivalent)", + 0x010002: "Large Thumbnail (Full HD Equivalent)", + 0x020001: "Multi-Frame Image (Panorama)", + 0x020002: "Multi-Frame Image: (Disparity)", + 0x020003: "Multi-Frame Image: (Multi-Angle)", + 0x030000: "Baseline MP Primary Image", + } + mpentryattr["MPType"] = mptypemap.get(mpentryattr["MPType"], "Unknown") + mpentry["Attribute"] = mpentryattr + mpentries.append(mpentry) + mp[0xB002] = mpentries + except KeyError: + raise SyntaxError("malformed MP Index (bad MP Entry)") + # Next we should try and parse the individual image unique ID list; + # we don't because I've never seen this actually used in a real MPO + # file and so can't test it. + return mp + + +# -------------------------------------------------------------------- +# stuff to save JPEG files + +RAWMODE = { + "1": "L", + "L": "L", + "RGB": "RGB", + "RGBX": "RGB", + "CMYK": "CMYK;I", # assume adobe conventions + "YCbCr": "YCbCr", +} + +# fmt: off +zigzag_index = ( + 0, 1, 5, 6, 14, 15, 27, 28, + 2, 4, 7, 13, 16, 26, 29, 42, + 3, 8, 12, 17, 25, 30, 41, 43, + 9, 11, 18, 24, 31, 40, 44, 53, + 10, 19, 23, 32, 39, 45, 52, 54, + 20, 22, 33, 38, 46, 51, 55, 60, + 21, 34, 37, 47, 50, 56, 59, 61, + 35, 36, 48, 49, 57, 58, 62, 63, +) + +samplings = { + (1, 1, 1, 1, 1, 1): 0, + (2, 1, 1, 1, 1, 1): 1, + (2, 2, 1, 1, 1, 1): 2, +} +# fmt: on + + +def convert_dict_qtables(qtables): + qtables = [qtables[key] for key in range(len(qtables)) if key in qtables] + for idx, table in enumerate(qtables): + qtables[idx] = [table[i] for i in zigzag_index] + return qtables + + +def get_sampling(im): + # There's no subsampling when image have only 1 layer + # (grayscale images) or when they are CMYK (4 layers), + # so set subsampling to default value. + # + # NOTE: currently Pillow can't encode JPEG to YCCK format. + # If YCCK support is added in the future, subsampling code will have + # to be updated (here and in JpegEncode.c) to deal with 4 layers. + if not hasattr(im, "layers") or im.layers in (1, 4): + return -1 + sampling = im.layer[0][1:3] + im.layer[1][1:3] + im.layer[2][1:3] + return samplings.get(sampling, -1) + + +def _save(im, fp, filename): + + try: + rawmode = RAWMODE[im.mode] + except KeyError: + raise OSError("cannot write mode %s as JPEG" % im.mode) + + info = im.encoderinfo + + dpi = [round(x) for x in info.get("dpi", (0, 0))] + + quality = info.get("quality", -1) + subsampling = info.get("subsampling", -1) + qtables = info.get("qtables") + + if quality == "keep": + quality = -1 + subsampling = "keep" + qtables = "keep" + elif quality in presets: + preset = presets[quality] + quality = -1 + subsampling = preset.get("subsampling", -1) + qtables = preset.get("quantization") + elif not isinstance(quality, int): + raise ValueError("Invalid quality setting") + else: + if subsampling in presets: + subsampling = presets[subsampling].get("subsampling", -1) + if isinstance(qtables, str) and qtables in presets: + qtables = presets[qtables].get("quantization") + + if subsampling == "4:4:4": + subsampling = 0 + elif subsampling == "4:2:2": + subsampling = 1 + elif subsampling == "4:2:0": + subsampling = 2 + elif subsampling == "4:1:1": + # For compatibility. Before Pillow 4.3, 4:1:1 actually meant 4:2:0. + # Set 4:2:0 if someone is still using that value. + subsampling = 2 + elif subsampling == "keep": + if im.format != "JPEG": + raise ValueError("Cannot use 'keep' when original image is not a JPEG") + subsampling = get_sampling(im) + + def validate_qtables(qtables): + if qtables is None: + return qtables + if isinstance(qtables, str): + try: + lines = [ + int(num) + for line in qtables.splitlines() + for num in line.split("#", 1)[0].split() + ] + except ValueError: + raise ValueError("Invalid quantization table") + else: + qtables = [lines[s : s + 64] for s in range(0, len(lines), 64)] + if isinstance(qtables, (tuple, list, dict)): + if isinstance(qtables, dict): + qtables = convert_dict_qtables(qtables) + elif isinstance(qtables, tuple): + qtables = list(qtables) + if not (0 < len(qtables) < 5): + raise ValueError("None or too many quantization tables") + for idx, table in enumerate(qtables): + try: + if len(table) != 64: + raise TypeError + table = array.array("B", table) + except TypeError: + raise ValueError("Invalid quantization table") + else: + qtables[idx] = list(table) + return qtables + + if qtables == "keep": + if im.format != "JPEG": + raise ValueError("Cannot use 'keep' when original image is not a JPEG") + qtables = getattr(im, "quantization", None) + qtables = validate_qtables(qtables) + + extra = b"" + + icc_profile = info.get("icc_profile") + if icc_profile: + ICC_OVERHEAD_LEN = 14 + MAX_BYTES_IN_MARKER = 65533 + MAX_DATA_BYTES_IN_MARKER = MAX_BYTES_IN_MARKER - ICC_OVERHEAD_LEN + markers = [] + while icc_profile: + markers.append(icc_profile[:MAX_DATA_BYTES_IN_MARKER]) + icc_profile = icc_profile[MAX_DATA_BYTES_IN_MARKER:] + i = 1 + for marker in markers: + size = struct.pack(">H", 2 + ICC_OVERHEAD_LEN + len(marker)) + extra += ( + b"\xFF\xE2" + + size + + b"ICC_PROFILE\0" + + o8(i) + + o8(len(markers)) + + marker + ) + i += 1 + + # "progressive" is the official name, but older documentation + # says "progression" + # FIXME: issue a warning if the wrong form is used (post-1.1.7) + progressive = info.get("progressive", False) or info.get("progression", False) + + optimize = info.get("optimize", False) + + exif = info.get("exif", b"") + if isinstance(exif, Image.Exif): + exif = exif.tobytes() + + # get keyword arguments + im.encoderconfig = ( + quality, + progressive, + info.get("smooth", 0), + optimize, + info.get("streamtype", 0), + dpi[0], + dpi[1], + subsampling, + qtables, + extra, + exif, + ) + + # if we optimize, libjpeg needs a buffer big enough to hold the whole image + # in a shot. Guessing on the size, at im.size bytes. (raw pixel size is + # channels*size, this is a value that's been used in a django patch. + # https://github.com/matthewwithanm/django-imagekit/issues/50 + bufsize = 0 + if optimize or progressive: + # CMYK can be bigger + if im.mode == "CMYK": + bufsize = 4 * im.size[0] * im.size[1] + # keep sets quality to -1, but the actual value may be high. + elif quality >= 95 or quality == -1: + bufsize = 2 * im.size[0] * im.size[1] + else: + bufsize = im.size[0] * im.size[1] + + # The EXIF info needs to be written as one block, + APP1, + one spare byte. + # Ensure that our buffer is big enough. Same with the icc_profile block. + bufsize = max(ImageFile.MAXBLOCK, bufsize, len(exif) + 5, len(extra) + 1) + + ImageFile._save(im, fp, [("jpeg", (0, 0) + im.size, 0, rawmode)], bufsize) + + +def _save_cjpeg(im, fp, filename): + # ALTERNATIVE: handle JPEGs via the IJG command line utilities. + tempfile = im._dump() + subprocess.check_call(["cjpeg", "-outfile", filename, tempfile]) + try: + os.unlink(tempfile) + except OSError: + pass + + +## +# Factory for making JPEG and MPO instances +def jpeg_factory(fp=None, filename=None): + im = JpegImageFile(fp, filename) + try: + mpheader = im._getmp() + if mpheader[45057] > 1: + # It's actually an MPO + from .MpoImagePlugin import MpoImageFile + + # Don't reload everything, just convert it. + im = MpoImageFile.adopt(im, mpheader) + except (TypeError, IndexError): + # It is really a JPEG + pass + except SyntaxError: + warnings.warn( + "Image appears to be a malformed MPO file, it will be " + "interpreted as a base JPEG file" + ) + return im + + +# --------------------------------------------------------------------- +# Registry stuff + +Image.register_open(JpegImageFile.format, jpeg_factory, _accept) +Image.register_save(JpegImageFile.format, _save) + +Image.register_extensions(JpegImageFile.format, [".jfif", ".jpe", ".jpg", ".jpeg"]) + +Image.register_mime(JpegImageFile.format, "image/jpeg") diff --git a/venv/Lib/site-packages/PIL/JpegPresets.py b/venv/Lib/site-packages/PIL/JpegPresets.py new file mode 100644 index 0000000..012bf81 --- /dev/null +++ b/venv/Lib/site-packages/PIL/JpegPresets.py @@ -0,0 +1,247 @@ +""" +JPEG quality settings equivalent to the Photoshop settings. + +More presets can be added to the presets dict if needed. + +Can be use when saving JPEG file. + +To apply the preset, specify:: + + quality="preset_name" + +To apply only the quantization table:: + + qtables="preset_name" + +To apply only the subsampling setting:: + + subsampling="preset_name" + +Example:: + + im.save("image_name.jpg", quality="web_high") + + +Subsampling +----------- + +Subsampling is the practice of encoding images by implementing less resolution +for chroma information than for luma information. +(ref.: https://en.wikipedia.org/wiki/Chroma_subsampling) + +Possible subsampling values are 0, 1 and 2 that correspond to 4:4:4, 4:2:2 and +4:2:0. + +You can get the subsampling of a JPEG with the +`JpegImagePlugin.get_sampling(im)` function. + +In JPEG compressed data a JPEG marker is used instead of an EXIF tag. +(ref.: https://www.exiv2.org/tags.html) + + +Quantization tables +------------------- + +They are values use by the DCT (Discrete cosine transform) to remove +*unnecessary* information from the image (the lossy part of the compression). +(ref.: https://en.wikipedia.org/wiki/Quantization_matrix#Quantization_matrices, +https://en.wikipedia.org/wiki/JPEG#Quantization) + +You can get the quantization tables of a JPEG with:: + + im.quantization + +This will return a dict with a number of arrays. You can pass this dict +directly as the qtables argument when saving a JPEG. + +The tables format between im.quantization and quantization in presets differ in +3 ways: + +1. The base container of the preset is a list with sublists instead of dict. + dict[0] -> list[0], dict[1] -> list[1], ... +2. Each table in a preset is a list instead of an array. +3. The zigzag order is remove in the preset (needed by libjpeg >= 6a). + +You can convert the dict format to the preset format with the +`JpegImagePlugin.convert_dict_qtables(dict_qtables)` function. + +Libjpeg ref.: +https://web.archive.org/web/20120328125543/http://www.jpegcameras.com/libjpeg/libjpeg-3.html + +""" + +# fmt: off +presets = { # noqa: E128 + 'web_low': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [20, 16, 25, 39, 50, 46, 62, 68, + 16, 18, 23, 38, 38, 53, 65, 68, + 25, 23, 31, 38, 53, 65, 68, 68, + 39, 38, 38, 53, 65, 68, 68, 68, + 50, 38, 53, 65, 68, 68, 68, 68, + 46, 53, 65, 68, 68, 68, 68, 68, + 62, 65, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68], + [21, 25, 32, 38, 54, 68, 68, 68, + 25, 28, 24, 38, 54, 68, 68, 68, + 32, 24, 32, 43, 66, 68, 68, 68, + 38, 38, 43, 53, 68, 68, 68, 68, + 54, 54, 66, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68] + ]}, + 'web_medium': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [16, 11, 11, 16, 23, 27, 31, 30, + 11, 12, 12, 15, 20, 23, 23, 30, + 11, 12, 13, 16, 23, 26, 35, 47, + 16, 15, 16, 23, 26, 37, 47, 64, + 23, 20, 23, 26, 39, 51, 64, 64, + 27, 23, 26, 37, 51, 64, 64, 64, + 31, 23, 35, 47, 64, 64, 64, 64, + 30, 30, 47, 64, 64, 64, 64, 64], + [17, 15, 17, 21, 20, 26, 38, 48, + 15, 19, 18, 17, 20, 26, 35, 43, + 17, 18, 20, 22, 26, 30, 46, 53, + 21, 17, 22, 28, 30, 39, 53, 64, + 20, 20, 26, 30, 39, 48, 64, 64, + 26, 26, 30, 39, 48, 63, 64, 64, + 38, 35, 46, 53, 64, 64, 64, 64, + 48, 43, 53, 64, 64, 64, 64, 64] + ]}, + 'web_high': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [6, 4, 4, 6, 9, 11, 12, 16, + 4, 5, 5, 6, 8, 10, 12, 12, + 4, 5, 5, 6, 10, 12, 14, 19, + 6, 6, 6, 11, 12, 15, 19, 28, + 9, 8, 10, 12, 16, 20, 27, 31, + 11, 10, 12, 15, 20, 27, 31, 31, + 12, 12, 14, 19, 27, 31, 31, 31, + 16, 12, 19, 28, 31, 31, 31, 31], + [7, 7, 13, 24, 26, 31, 31, 31, + 7, 12, 16, 21, 31, 31, 31, 31, + 13, 16, 17, 31, 31, 31, 31, 31, + 24, 21, 31, 31, 31, 31, 31, 31, + 26, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31] + ]}, + 'web_very_high': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 4, 5, 7, 9, + 2, 2, 2, 4, 5, 7, 9, 12, + 3, 3, 4, 5, 8, 10, 12, 12, + 4, 4, 5, 7, 10, 12, 12, 12, + 5, 5, 7, 9, 12, 12, 12, 12, + 6, 6, 9, 12, 12, 12, 12, 12], + [3, 3, 5, 9, 13, 15, 15, 15, + 3, 4, 6, 11, 14, 12, 12, 12, + 5, 6, 9, 14, 12, 12, 12, 12, + 9, 11, 14, 12, 12, 12, 12, 12, + 13, 14, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'web_maximum': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 2, 2, + 1, 1, 1, 1, 1, 2, 2, 3, + 1, 1, 1, 1, 2, 2, 3, 3, + 1, 1, 1, 2, 2, 3, 3, 3, + 1, 1, 2, 2, 3, 3, 3, 3], + [1, 1, 1, 2, 2, 3, 3, 3, + 1, 1, 1, 2, 3, 3, 3, 3, + 1, 1, 1, 3, 3, 3, 3, 3, + 2, 2, 3, 3, 3, 3, 3, 3, + 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3] + ]}, + 'low': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [18, 14, 14, 21, 30, 35, 34, 17, + 14, 16, 16, 19, 26, 23, 12, 12, + 14, 16, 17, 21, 23, 12, 12, 12, + 21, 19, 21, 23, 12, 12, 12, 12, + 30, 26, 23, 12, 12, 12, 12, 12, + 35, 23, 12, 12, 12, 12, 12, 12, + 34, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12], + [20, 19, 22, 27, 20, 20, 17, 17, + 19, 25, 23, 14, 14, 12, 12, 12, + 22, 23, 14, 14, 12, 12, 12, 12, + 27, 14, 14, 12, 12, 12, 12, 12, + 20, 14, 12, 12, 12, 12, 12, 12, + 20, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'medium': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [12, 8, 8, 12, 17, 21, 24, 17, + 8, 9, 9, 11, 15, 19, 12, 12, + 8, 9, 10, 12, 19, 12, 12, 12, + 12, 11, 12, 21, 12, 12, 12, 12, + 17, 15, 19, 12, 12, 12, 12, 12, + 21, 19, 12, 12, 12, 12, 12, 12, + 24, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12], + [13, 11, 13, 16, 20, 20, 17, 17, + 11, 14, 14, 14, 14, 12, 12, 12, + 13, 14, 14, 14, 12, 12, 12, 12, + 16, 14, 14, 12, 12, 12, 12, 12, + 20, 14, 12, 12, 12, 12, 12, 12, + 20, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'high': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [6, 4, 4, 6, 9, 11, 12, 16, + 4, 5, 5, 6, 8, 10, 12, 12, + 4, 5, 5, 6, 10, 12, 12, 12, + 6, 6, 6, 11, 12, 12, 12, 12, + 9, 8, 10, 12, 12, 12, 12, 12, + 11, 10, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 16, 12, 12, 12, 12, 12, 12, 12], + [7, 7, 13, 24, 20, 20, 17, 17, + 7, 12, 16, 14, 14, 12, 12, 12, + 13, 16, 14, 14, 12, 12, 12, 12, + 24, 14, 14, 12, 12, 12, 12, 12, + 20, 14, 12, 12, 12, 12, 12, 12, + 20, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'maximum': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 4, 5, 7, 9, + 2, 2, 2, 4, 5, 7, 9, 12, + 3, 3, 4, 5, 8, 10, 12, 12, + 4, 4, 5, 7, 10, 12, 12, 12, + 5, 5, 7, 9, 12, 12, 12, 12, + 6, 6, 9, 12, 12, 12, 12, 12], + [3, 3, 5, 9, 13, 15, 15, 15, + 3, 4, 6, 10, 14, 12, 12, 12, + 5, 6, 9, 14, 12, 12, 12, 12, + 9, 10, 14, 12, 12, 12, 12, 12, + 13, 14, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12] + ]}, +} +# fmt: on diff --git a/venv/Lib/site-packages/PIL/McIdasImagePlugin.py b/venv/Lib/site-packages/PIL/McIdasImagePlugin.py new file mode 100644 index 0000000..cd047fe --- /dev/null +++ b/venv/Lib/site-packages/PIL/McIdasImagePlugin.py @@ -0,0 +1,75 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Basic McIdas support for PIL +# +# History: +# 1997-05-05 fl Created (8-bit images only) +# 2009-03-08 fl Added 16/32-bit support. +# +# Thanks to Richard Jones and Craig Swank for specs and samples. +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + +import struct + +from . import Image, ImageFile + + +def _accept(s): + return s[:8] == b"\x00\x00\x00\x00\x00\x00\x00\x04" + + +## +# Image plugin for McIdas area images. + + +class McIdasImageFile(ImageFile.ImageFile): + + format = "MCIDAS" + format_description = "McIdas area file" + + def _open(self): + + # parse area file directory + s = self.fp.read(256) + if not _accept(s) or len(s) != 256: + raise SyntaxError("not an McIdas area file") + + self.area_descriptor_raw = s + self.area_descriptor = w = [0] + list(struct.unpack("!64i", s)) + + # get mode + if w[11] == 1: + mode = rawmode = "L" + elif w[11] == 2: + # FIXME: add memory map support + mode = "I" + rawmode = "I;16B" + elif w[11] == 4: + # FIXME: add memory map support + mode = "I" + rawmode = "I;32B" + else: + raise SyntaxError("unsupported McIdas format") + + self.mode = mode + self._size = w[10], w[9] + + offset = w[34] + w[15] + stride = w[15] + w[10] * w[11] * w[14] + + self.tile = [("raw", (0, 0) + self.size, offset, (rawmode, stride, 1))] + + +# -------------------------------------------------------------------- +# registry + +Image.register_open(McIdasImageFile.format, McIdasImageFile, _accept) + +# no default extension diff --git a/venv/Lib/site-packages/PIL/MicImagePlugin.py b/venv/Lib/site-packages/PIL/MicImagePlugin.py new file mode 100644 index 0000000..8610988 --- /dev/null +++ b/venv/Lib/site-packages/PIL/MicImagePlugin.py @@ -0,0 +1,113 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Microsoft Image Composer support for PIL +# +# Notes: +# uses TiffImagePlugin.py to read the actual image streams +# +# History: +# 97-01-20 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + + +import olefile + +from . import Image, TiffImagePlugin + +# +# -------------------------------------------------------------------- + + +def _accept(prefix): + return prefix[:8] == olefile.MAGIC + + +## +# Image plugin for Microsoft's Image Composer file format. + + +class MicImageFile(TiffImagePlugin.TiffImageFile): + + format = "MIC" + format_description = "Microsoft Image Composer" + _close_exclusive_fp_after_loading = False + + def _open(self): + + # read the OLE directory and see if this is a likely + # to be a Microsoft Image Composer file + + try: + self.ole = olefile.OleFileIO(self.fp) + except OSError: + raise SyntaxError("not an MIC file; invalid OLE file") + + # find ACI subfiles with Image members (maybe not the + # best way to identify MIC files, but what the... ;-) + + self.images = [] + for path in self.ole.listdir(): + if path[1:] and path[0][-4:] == ".ACI" and path[1] == "Image": + self.images.append(path) + + # if we didn't find any images, this is probably not + # an MIC file. + if not self.images: + raise SyntaxError("not an MIC file; no image entries") + + self.__fp = self.fp + self.frame = None + + if len(self.images) > 1: + self.category = Image.CONTAINER + + self.seek(0) + + @property + def n_frames(self): + return len(self.images) + + @property + def is_animated(self): + return len(self.images) > 1 + + def seek(self, frame): + if not self._seek_check(frame): + return + try: + filename = self.images[frame] + except IndexError: + raise EOFError("no such frame") + + self.fp = self.ole.openstream(filename) + + TiffImagePlugin.TiffImageFile._open(self) + + self.frame = frame + + def tell(self): + return self.frame + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +# +# -------------------------------------------------------------------- + +Image.register_open(MicImageFile.format, MicImageFile, _accept) + +Image.register_extension(MicImageFile.format, ".mic") diff --git a/venv/Lib/site-packages/PIL/MpegImagePlugin.py b/venv/Lib/site-packages/PIL/MpegImagePlugin.py new file mode 100644 index 0000000..a358dfd --- /dev/null +++ b/venv/Lib/site-packages/PIL/MpegImagePlugin.py @@ -0,0 +1,83 @@ +# +# The Python Imaging Library. +# $Id$ +# +# MPEG file handling +# +# History: +# 95-09-09 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1995. +# +# See the README file for information on usage and redistribution. +# + + +from . import Image, ImageFile +from ._binary import i8 + +# +# Bitstream parser + + +class BitStream: + def __init__(self, fp): + self.fp = fp + self.bits = 0 + self.bitbuffer = 0 + + def next(self): + return i8(self.fp.read(1)) + + def peek(self, bits): + while self.bits < bits: + c = self.next() + if c < 0: + self.bits = 0 + continue + self.bitbuffer = (self.bitbuffer << 8) + c + self.bits += 8 + return self.bitbuffer >> (self.bits - bits) & (1 << bits) - 1 + + def skip(self, bits): + while self.bits < bits: + self.bitbuffer = (self.bitbuffer << 8) + i8(self.fp.read(1)) + self.bits += 8 + self.bits = self.bits - bits + + def read(self, bits): + v = self.peek(bits) + self.bits = self.bits - bits + return v + + +## +# Image plugin for MPEG streams. This plugin can identify a stream, +# but it cannot read it. + + +class MpegImageFile(ImageFile.ImageFile): + + format = "MPEG" + format_description = "MPEG" + + def _open(self): + + s = BitStream(self.fp) + + if s.read(32) != 0x1B3: + raise SyntaxError("not an MPEG file") + + self.mode = "RGB" + self._size = s.read(12), s.read(12) + + +# -------------------------------------------------------------------- +# Registry stuff + +Image.register_open(MpegImageFile.format, MpegImageFile) + +Image.register_extensions(MpegImageFile.format, [".mpg", ".mpeg"]) + +Image.register_mime(MpegImageFile.format, "video/mpeg") diff --git a/venv/Lib/site-packages/PIL/MpoImagePlugin.py b/venv/Lib/site-packages/PIL/MpoImagePlugin.py new file mode 100644 index 0000000..e97176d --- /dev/null +++ b/venv/Lib/site-packages/PIL/MpoImagePlugin.py @@ -0,0 +1,141 @@ +# +# The Python Imaging Library. +# $Id$ +# +# MPO file handling +# +# See "Multi-Picture Format" (CIPA DC-007-Translation 2009, Standard of the +# Camera & Imaging Products Association) +# +# The multi-picture object combines multiple JPEG images (with a modified EXIF +# data format) into a single file. While it can theoretically be used much like +# a GIF animation, it is commonly used to represent 3D photographs and is (as +# of this writing) the most commonly used format by 3D cameras. +# +# History: +# 2014-03-13 Feneric Created +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFile, JpegImagePlugin +from ._binary import i16be as i16 + + +def _accept(prefix): + return JpegImagePlugin._accept(prefix) + + +def _save(im, fp, filename): + # Note that we can only save the current frame at present + return JpegImagePlugin._save(im, fp, filename) + + +## +# Image plugin for MPO images. + + +class MpoImageFile(JpegImagePlugin.JpegImageFile): + + format = "MPO" + format_description = "MPO (CIPA DC-007)" + _close_exclusive_fp_after_loading = False + + def _open(self): + self.fp.seek(0) # prep the fp in order to pass the JPEG test + JpegImagePlugin.JpegImageFile._open(self) + self._after_jpeg_open() + + def _after_jpeg_open(self, mpheader=None): + self.mpinfo = mpheader if mpheader is not None else self._getmp() + self.__framecount = self.mpinfo[0xB001] + self.__mpoffsets = [ + mpent["DataOffset"] + self.info["mpoffset"] for mpent in self.mpinfo[0xB002] + ] + self.__mpoffsets[0] = 0 + # Note that the following assertion will only be invalid if something + # gets broken within JpegImagePlugin. + assert self.__framecount == len(self.__mpoffsets) + del self.info["mpoffset"] # no longer needed + self.__fp = self.fp # FIXME: hack + self.__fp.seek(self.__mpoffsets[0]) # get ready to read first frame + self.__frame = 0 + self.offset = 0 + # for now we can only handle reading and individual frame extraction + self.readonly = 1 + + def load_seek(self, pos): + self.__fp.seek(pos) + + @property + def n_frames(self): + return self.__framecount + + @property + def is_animated(self): + return self.__framecount > 1 + + def seek(self, frame): + if not self._seek_check(frame): + return + self.fp = self.__fp + self.offset = self.__mpoffsets[frame] + + self.fp.seek(self.offset + 2) # skip SOI marker + segment = self.fp.read(2) + if not segment: + raise ValueError("No data found for frame") + if i16(segment) == 0xFFE1: # APP1 + n = i16(self.fp.read(2)) - 2 + self.info["exif"] = ImageFile._safe_read(self.fp, n) + + exif = self.getexif() + if 40962 in exif and 40963 in exif: + self._size = (exif[40962], exif[40963]) + elif "exif" in self.info: + del self.info["exif"] + + self.tile = [("jpeg", (0, 0) + self.size, self.offset, (self.mode, ""))] + self.__frame = frame + + def tell(self): + return self.__frame + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + @staticmethod + def adopt(jpeg_instance, mpheader=None): + """ + Transform the instance of JpegImageFile into + an instance of MpoImageFile. + After the call, the JpegImageFile is extended + to be an MpoImageFile. + + This is essentially useful when opening a JPEG + file that reveals itself as an MPO, to avoid + double call to _open. + """ + jpeg_instance.__class__ = MpoImageFile + jpeg_instance._after_jpeg_open(mpheader) + return jpeg_instance + + +# --------------------------------------------------------------------- +# Registry stuff + +# Note that since MPO shares a factory with JPEG, we do not need to do a +# separate registration for it here. +# Image.register_open(MpoImageFile.format, +# JpegImagePlugin.jpeg_factory, _accept) +Image.register_save(MpoImageFile.format, _save) + +Image.register_extension(MpoImageFile.format, ".mpo") + +Image.register_mime(MpoImageFile.format, "image/mpo") diff --git a/venv/Lib/site-packages/PIL/MspImagePlugin.py b/venv/Lib/site-packages/PIL/MspImagePlugin.py new file mode 100644 index 0000000..2b2937e --- /dev/null +++ b/venv/Lib/site-packages/PIL/MspImagePlugin.py @@ -0,0 +1,193 @@ +# +# The Python Imaging Library. +# +# MSP file handling +# +# This is the format used by the Paint program in Windows 1 and 2. +# +# History: +# 95-09-05 fl Created +# 97-01-03 fl Read/write MSP images +# 17-02-21 es Fixed RLE interpretation +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1995-97. +# Copyright (c) Eric Soroos 2017. +# +# See the README file for information on usage and redistribution. +# +# More info on this format: https://archive.org/details/gg243631 +# Page 313: +# Figure 205. Windows Paint Version 1: "DanM" Format +# Figure 206. Windows Paint Version 2: "LinS" Format. Used in Windows V2.03 +# +# See also: http://www.fileformat.info/format/mspaint/egff.htm + +import io +import struct + +from . import Image, ImageFile +from ._binary import i8, i16le as i16, o16le as o16 + +# +# read MSP files + + +def _accept(prefix): + return prefix[:4] in [b"DanM", b"LinS"] + + +## +# Image plugin for Windows MSP images. This plugin supports both +# uncompressed (Windows 1.0). + + +class MspImageFile(ImageFile.ImageFile): + + format = "MSP" + format_description = "Windows Paint" + + def _open(self): + + # Header + s = self.fp.read(32) + if s[:4] not in [b"DanM", b"LinS"]: + raise SyntaxError("not an MSP file") + + # Header checksum + checksum = 0 + for i in range(0, 32, 2): + checksum = checksum ^ i16(s[i : i + 2]) + if checksum != 0: + raise SyntaxError("bad MSP checksum") + + self.mode = "1" + self._size = i16(s[4:]), i16(s[6:]) + + if s[:4] == b"DanM": + self.tile = [("raw", (0, 0) + self.size, 32, ("1", 0, 1))] + else: + self.tile = [("MSP", (0, 0) + self.size, 32, None)] + + +class MspDecoder(ImageFile.PyDecoder): + # The algo for the MSP decoder is from + # http://www.fileformat.info/format/mspaint/egff.htm + # cc-by-attribution -- That page references is taken from the + # Encyclopedia of Graphics File Formats and is licensed by + # O'Reilly under the Creative Common/Attribution license + # + # For RLE encoded files, the 32byte header is followed by a scan + # line map, encoded as one 16bit word of encoded byte length per + # line. + # + # NOTE: the encoded length of the line can be 0. This was not + # handled in the previous version of this encoder, and there's no + # mention of how to handle it in the documentation. From the few + # examples I've seen, I've assumed that it is a fill of the + # background color, in this case, white. + # + # + # Pseudocode of the decoder: + # Read a BYTE value as the RunType + # If the RunType value is zero + # Read next byte as the RunCount + # Read the next byte as the RunValue + # Write the RunValue byte RunCount times + # If the RunType value is non-zero + # Use this value as the RunCount + # Read and write the next RunCount bytes literally + # + # e.g.: + # 0x00 03 ff 05 00 01 02 03 04 + # would yield the bytes: + # 0xff ff ff 00 01 02 03 04 + # + # which are then interpreted as a bit packed mode '1' image + + _pulls_fd = True + + def decode(self, buffer): + + img = io.BytesIO() + blank_line = bytearray((0xFF,) * ((self.state.xsize + 7) // 8)) + try: + self.fd.seek(32) + rowmap = struct.unpack_from( + "<%dH" % (self.state.ysize), self.fd.read(self.state.ysize * 2) + ) + except struct.error: + raise OSError("Truncated MSP file in row map") + + for x, rowlen in enumerate(rowmap): + try: + if rowlen == 0: + img.write(blank_line) + continue + row = self.fd.read(rowlen) + if len(row) != rowlen: + raise OSError( + "Truncated MSP file, expected %d bytes on row %s", (rowlen, x) + ) + idx = 0 + while idx < rowlen: + runtype = i8(row[idx]) + idx += 1 + if runtype == 0: + (runcount, runval) = struct.unpack_from("Bc", row, idx) + img.write(runval * runcount) + idx += 2 + else: + runcount = runtype + img.write(row[idx : idx + runcount]) + idx += runcount + + except struct.error: + raise OSError("Corrupted MSP file in row %d" % x) + + self.set_as_raw(img.getvalue(), ("1", 0, 1)) + + return 0, 0 + + +Image.register_decoder("MSP", MspDecoder) + + +# +# write MSP files (uncompressed only) + + +def _save(im, fp, filename): + + if im.mode != "1": + raise OSError("cannot write mode %s as MSP" % im.mode) + + # create MSP header + header = [0] * 16 + + header[0], header[1] = i16(b"Da"), i16(b"nM") # version 1 + header[2], header[3] = im.size + header[4], header[5] = 1, 1 + header[6], header[7] = 1, 1 + header[8], header[9] = im.size + + checksum = 0 + for h in header: + checksum = checksum ^ h + header[12] = checksum # FIXME: is this the right field? + + # header + for h in header: + fp.write(o16(h)) + + # image body + ImageFile._save(im, fp, [("raw", (0, 0) + im.size, 32, ("1", 0, 1))]) + + +# +# registry + +Image.register_open(MspImageFile.format, MspImageFile, _accept) +Image.register_save(MspImageFile.format, _save) + +Image.register_extension(MspImageFile.format, ".msp") diff --git a/venv/Lib/site-packages/PIL/PSDraw.py b/venv/Lib/site-packages/PIL/PSDraw.py new file mode 100644 index 0000000..762d31e --- /dev/null +++ b/venv/Lib/site-packages/PIL/PSDraw.py @@ -0,0 +1,237 @@ +# +# The Python Imaging Library +# $Id$ +# +# simple postscript graphics interface +# +# History: +# 1996-04-20 fl Created +# 1999-01-10 fl Added gsave/grestore to image method +# 2005-05-04 fl Fixed floating point issue in image (from Eric Etheridge) +# +# Copyright (c) 1997-2005 by Secret Labs AB. All rights reserved. +# Copyright (c) 1996 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +import sys + +from . import EpsImagePlugin + +## +# Simple Postscript graphics interface. + + +class PSDraw: + """ + Sets up printing to the given file. If **fp** is omitted, + :py:attr:`sys.stdout` is assumed. + """ + + def __init__(self, fp=None): + if not fp: + fp = sys.stdout + self.fp = fp + + def _fp_write(self, to_write): + if self.fp == sys.stdout: + self.fp.write(to_write) + else: + self.fp.write(bytes(to_write, "UTF-8")) + + def begin_document(self, id=None): + """Set up printing of a document. (Write Postscript DSC header.)""" + # FIXME: incomplete + self._fp_write( + "%!PS-Adobe-3.0\n" + "save\n" + "/showpage { } def\n" + "%%EndComments\n" + "%%BeginDocument\n" + ) + # self._fp_write(ERROR_PS) # debugging! + self._fp_write(EDROFF_PS) + self._fp_write(VDI_PS) + self._fp_write("%%EndProlog\n") + self.isofont = {} + + def end_document(self): + """Ends printing. (Write Postscript DSC footer.)""" + self._fp_write("%%EndDocument\nrestore showpage\n%%End\n") + if hasattr(self.fp, "flush"): + self.fp.flush() + + def setfont(self, font, size): + """ + Selects which font to use. + + :param font: A Postscript font name + :param size: Size in points. + """ + if font not in self.isofont: + # reencode font + self._fp_write("/PSDraw-{} ISOLatin1Encoding /{} E\n".format(font, font)) + self.isofont[font] = 1 + # rough + self._fp_write("/F0 %d /PSDraw-%s F\n" % (size, font)) + + def line(self, xy0, xy1): + """ + Draws a line between the two points. Coordinates are given in + Postscript point coordinates (72 points per inch, (0, 0) is the lower + left corner of the page). + """ + xy = xy0 + xy1 + self._fp_write("%d %d %d %d Vl\n" % xy) + + def rectangle(self, box): + """ + Draws a rectangle. + + :param box: A 4-tuple of integers whose order and function is currently + undocumented. + + Hint: the tuple is passed into this format string: + + .. code-block:: python + + %d %d M %d %d 0 Vr\n + """ + self._fp_write("%d %d M %d %d 0 Vr\n" % box) + + def text(self, xy, text): + """ + Draws text at the given position. You must use + :py:meth:`~PIL.PSDraw.PSDraw.setfont` before calling this method. + """ + text = "\\(".join(text.split("(")) + text = "\\)".join(text.split(")")) + xy = xy + (text,) + self._fp_write("%d %d M (%s) S\n" % xy) + + def image(self, box, im, dpi=None): + """Draw a PIL image, centered in the given box.""" + # default resolution depends on mode + if not dpi: + if im.mode == "1": + dpi = 200 # fax + else: + dpi = 100 # greyscale + # image size (on paper) + x = im.size[0] * 72 / dpi + y = im.size[1] * 72 / dpi + # max allowed size + xmax = float(box[2] - box[0]) + ymax = float(box[3] - box[1]) + if x > xmax: + y = y * xmax / x + x = xmax + if y > ymax: + x = x * ymax / y + y = ymax + dx = (xmax - x) / 2 + box[0] + dy = (ymax - y) / 2 + box[1] + self._fp_write("gsave\n{:f} {:f} translate\n".format(dx, dy)) + if (x, y) != im.size: + # EpsImagePlugin._save prints the image at (0,0,xsize,ysize) + sx = x / im.size[0] + sy = y / im.size[1] + self._fp_write("{:f} {:f} scale\n".format(sx, sy)) + EpsImagePlugin._save(im, self.fp, None, 0) + self._fp_write("\ngrestore\n") + + +# -------------------------------------------------------------------- +# Postscript driver + +# +# EDROFF.PS -- Postscript driver for Edroff 2 +# +# History: +# 94-01-25 fl: created (edroff 2.04) +# +# Copyright (c) Fredrik Lundh 1994. +# + + +EDROFF_PS = """\ +/S { show } bind def +/P { moveto show } bind def +/M { moveto } bind def +/X { 0 rmoveto } bind def +/Y { 0 exch rmoveto } bind def +/E { findfont + dup maxlength dict begin + { + 1 index /FID ne { def } { pop pop } ifelse + } forall + /Encoding exch def + dup /FontName exch def + currentdict end definefont pop +} bind def +/F { findfont exch scalefont dup setfont + [ exch /setfont cvx ] cvx bind def +} bind def +""" + +# +# VDI.PS -- Postscript driver for VDI meta commands +# +# History: +# 94-01-25 fl: created (edroff 2.04) +# +# Copyright (c) Fredrik Lundh 1994. +# + +VDI_PS = """\ +/Vm { moveto } bind def +/Va { newpath arcn stroke } bind def +/Vl { moveto lineto stroke } bind def +/Vc { newpath 0 360 arc closepath } bind def +/Vr { exch dup 0 rlineto + exch dup neg 0 exch rlineto + exch neg 0 rlineto + 0 exch rlineto + 100 div setgray fill 0 setgray } bind def +/Tm matrix def +/Ve { Tm currentmatrix pop + translate scale newpath 0 0 .5 0 360 arc closepath + Tm setmatrix +} bind def +/Vf { currentgray exch setgray fill setgray } bind def +""" + +# +# ERROR.PS -- Error handler +# +# History: +# 89-11-21 fl: created (pslist 1.10) +# + +ERROR_PS = """\ +/landscape false def +/errorBUF 200 string def +/errorNL { currentpoint 10 sub exch pop 72 exch moveto } def +errordict begin /handleerror { + initmatrix /Courier findfont 10 scalefont setfont + newpath 72 720 moveto $error begin /newerror false def + (PostScript Error) show errorNL errorNL + (Error: ) show + /errorname load errorBUF cvs show errorNL errorNL + (Command: ) show + /command load dup type /stringtype ne { errorBUF cvs } if show + errorNL errorNL + (VMstatus: ) show + vmstatus errorBUF cvs show ( bytes available, ) show + errorBUF cvs show ( bytes used at level ) show + errorBUF cvs show errorNL errorNL + (Operand stargck: ) show errorNL /ostargck load { + dup type /stringtype ne { errorBUF cvs } if 72 0 rmoveto show errorNL + } forall errorNL + (Execution stargck: ) show errorNL /estargck load { + dup type /stringtype ne { errorBUF cvs } if 72 0 rmoveto show errorNL + } forall + end showpage +} def end +""" diff --git a/venv/Lib/site-packages/PIL/PaletteFile.py b/venv/Lib/site-packages/PIL/PaletteFile.py new file mode 100644 index 0000000..73f1b4b --- /dev/null +++ b/venv/Lib/site-packages/PIL/PaletteFile.py @@ -0,0 +1,55 @@ +# +# Python Imaging Library +# $Id$ +# +# stuff to read simple, teragon-style palette files +# +# History: +# 97-08-23 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + +from ._binary import o8 + +## +# File handler for Teragon-style palette files. + + +class PaletteFile: + + rawmode = "RGB" + + def __init__(self, fp): + + self.palette = [(i, i, i) for i in range(256)] + + while True: + + s = fp.readline() + + if not s: + break + if s[0:1] == b"#": + continue + if len(s) > 100: + raise SyntaxError("bad palette file") + + v = [int(x) for x in s.split()] + try: + [i, r, g, b] = v + except ValueError: + [i, r] = v + g = b = r + + if 0 <= i <= 255: + self.palette[i] = o8(r) + o8(g) + o8(b) + + self.palette = b"".join(self.palette) + + def getpalette(self): + + return self.palette, self.rawmode diff --git a/venv/Lib/site-packages/PIL/PalmImagePlugin.py b/venv/Lib/site-packages/PIL/PalmImagePlugin.py new file mode 100644 index 0000000..804ece3 --- /dev/null +++ b/venv/Lib/site-packages/PIL/PalmImagePlugin.py @@ -0,0 +1,226 @@ +# +# The Python Imaging Library. +# $Id$ +# + +## +# Image plugin for Palm pixmap images (output only). +## + +from . import Image, ImageFile +from ._binary import o8, o16be as o16b + +# fmt: off +_Palm8BitColormapValues = ( # noqa: E131 + (255, 255, 255), (255, 204, 255), (255, 153, 255), (255, 102, 255), + (255, 51, 255), (255, 0, 255), (255, 255, 204), (255, 204, 204), + (255, 153, 204), (255, 102, 204), (255, 51, 204), (255, 0, 204), + (255, 255, 153), (255, 204, 153), (255, 153, 153), (255, 102, 153), + (255, 51, 153), (255, 0, 153), (204, 255, 255), (204, 204, 255), + (204, 153, 255), (204, 102, 255), (204, 51, 255), (204, 0, 255), + (204, 255, 204), (204, 204, 204), (204, 153, 204), (204, 102, 204), + (204, 51, 204), (204, 0, 204), (204, 255, 153), (204, 204, 153), + (204, 153, 153), (204, 102, 153), (204, 51, 153), (204, 0, 153), + (153, 255, 255), (153, 204, 255), (153, 153, 255), (153, 102, 255), + (153, 51, 255), (153, 0, 255), (153, 255, 204), (153, 204, 204), + (153, 153, 204), (153, 102, 204), (153, 51, 204), (153, 0, 204), + (153, 255, 153), (153, 204, 153), (153, 153, 153), (153, 102, 153), + (153, 51, 153), (153, 0, 153), (102, 255, 255), (102, 204, 255), + (102, 153, 255), (102, 102, 255), (102, 51, 255), (102, 0, 255), + (102, 255, 204), (102, 204, 204), (102, 153, 204), (102, 102, 204), + (102, 51, 204), (102, 0, 204), (102, 255, 153), (102, 204, 153), + (102, 153, 153), (102, 102, 153), (102, 51, 153), (102, 0, 153), + (51, 255, 255), (51, 204, 255), (51, 153, 255), (51, 102, 255), + (51, 51, 255), (51, 0, 255), (51, 255, 204), (51, 204, 204), + (51, 153, 204), (51, 102, 204), (51, 51, 204), (51, 0, 204), + (51, 255, 153), (51, 204, 153), (51, 153, 153), (51, 102, 153), + (51, 51, 153), (51, 0, 153), (0, 255, 255), (0, 204, 255), + (0, 153, 255), (0, 102, 255), (0, 51, 255), (0, 0, 255), + (0, 255, 204), (0, 204, 204), (0, 153, 204), (0, 102, 204), + (0, 51, 204), (0, 0, 204), (0, 255, 153), (0, 204, 153), + (0, 153, 153), (0, 102, 153), (0, 51, 153), (0, 0, 153), + (255, 255, 102), (255, 204, 102), (255, 153, 102), (255, 102, 102), + (255, 51, 102), (255, 0, 102), (255, 255, 51), (255, 204, 51), + (255, 153, 51), (255, 102, 51), (255, 51, 51), (255, 0, 51), + (255, 255, 0), (255, 204, 0), (255, 153, 0), (255, 102, 0), + (255, 51, 0), (255, 0, 0), (204, 255, 102), (204, 204, 102), + (204, 153, 102), (204, 102, 102), (204, 51, 102), (204, 0, 102), + (204, 255, 51), (204, 204, 51), (204, 153, 51), (204, 102, 51), + (204, 51, 51), (204, 0, 51), (204, 255, 0), (204, 204, 0), + (204, 153, 0), (204, 102, 0), (204, 51, 0), (204, 0, 0), + (153, 255, 102), (153, 204, 102), (153, 153, 102), (153, 102, 102), + (153, 51, 102), (153, 0, 102), (153, 255, 51), (153, 204, 51), + (153, 153, 51), (153, 102, 51), (153, 51, 51), (153, 0, 51), + (153, 255, 0), (153, 204, 0), (153, 153, 0), (153, 102, 0), + (153, 51, 0), (153, 0, 0), (102, 255, 102), (102, 204, 102), + (102, 153, 102), (102, 102, 102), (102, 51, 102), (102, 0, 102), + (102, 255, 51), (102, 204, 51), (102, 153, 51), (102, 102, 51), + (102, 51, 51), (102, 0, 51), (102, 255, 0), (102, 204, 0), + (102, 153, 0), (102, 102, 0), (102, 51, 0), (102, 0, 0), + (51, 255, 102), (51, 204, 102), (51, 153, 102), (51, 102, 102), + (51, 51, 102), (51, 0, 102), (51, 255, 51), (51, 204, 51), + (51, 153, 51), (51, 102, 51), (51, 51, 51), (51, 0, 51), + (51, 255, 0), (51, 204, 0), (51, 153, 0), (51, 102, 0), + (51, 51, 0), (51, 0, 0), (0, 255, 102), (0, 204, 102), + (0, 153, 102), (0, 102, 102), (0, 51, 102), (0, 0, 102), + (0, 255, 51), (0, 204, 51), (0, 153, 51), (0, 102, 51), + (0, 51, 51), (0, 0, 51), (0, 255, 0), (0, 204, 0), + (0, 153, 0), (0, 102, 0), (0, 51, 0), (17, 17, 17), + (34, 34, 34), (68, 68, 68), (85, 85, 85), (119, 119, 119), + (136, 136, 136), (170, 170, 170), (187, 187, 187), (221, 221, 221), + (238, 238, 238), (192, 192, 192), (128, 0, 0), (128, 0, 128), + (0, 128, 0), (0, 128, 128), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0)) +# fmt: on + + +# so build a prototype image to be used for palette resampling +def build_prototype_image(): + image = Image.new("L", (1, len(_Palm8BitColormapValues))) + image.putdata(list(range(len(_Palm8BitColormapValues)))) + palettedata = () + for colormapValue in _Palm8BitColormapValues: + palettedata += colormapValue + palettedata += (0, 0, 0) * (256 - len(_Palm8BitColormapValues)) + image.putpalette(palettedata) + return image + + +Palm8BitColormapImage = build_prototype_image() + +# OK, we now have in Palm8BitColormapImage, +# a "P"-mode image with the right palette +# +# -------------------------------------------------------------------- + +_FLAGS = {"custom-colormap": 0x4000, "is-compressed": 0x8000, "has-transparent": 0x2000} + +_COMPRESSION_TYPES = {"none": 0xFF, "rle": 0x01, "scanline": 0x00} + + +# +# -------------------------------------------------------------------- + +## +# (Internal) Image save plugin for the Palm format. + + +def _save(im, fp, filename): + + if im.mode == "P": + + # we assume this is a color Palm image with the standard colormap, + # unless the "info" dict has a "custom-colormap" field + + rawmode = "P" + bpp = 8 + version = 1 + + elif im.mode == "L": + if im.encoderinfo.get("bpp") in (1, 2, 4): + # this is 8-bit grayscale, so we shift it to get the high-order bits, + # and invert it because + # Palm does greyscale from white (0) to black (1) + bpp = im.encoderinfo["bpp"] + im = im.point( + lambda x, shift=8 - bpp, maxval=(1 << bpp) - 1: maxval - (x >> shift) + ) + elif im.info.get("bpp") in (1, 2, 4): + # here we assume that even though the inherent mode is 8-bit grayscale, + # only the lower bpp bits are significant. + # We invert them to match the Palm. + bpp = im.info["bpp"] + im = im.point(lambda x, maxval=(1 << bpp) - 1: maxval - (x & maxval)) + else: + raise OSError("cannot write mode %s as Palm" % im.mode) + + # we ignore the palette here + im.mode = "P" + rawmode = "P;" + str(bpp) + version = 1 + + elif im.mode == "1": + + # monochrome -- write it inverted, as is the Palm standard + rawmode = "1;I" + bpp = 1 + version = 0 + + else: + + raise OSError("cannot write mode %s as Palm" % im.mode) + + # + # make sure image data is available + im.load() + + # write header + + cols = im.size[0] + rows = im.size[1] + + rowbytes = int((cols + (16 // bpp - 1)) / (16 // bpp)) * 2 + transparent_index = 0 + compression_type = _COMPRESSION_TYPES["none"] + + flags = 0 + if im.mode == "P" and "custom-colormap" in im.info: + flags = flags & _FLAGS["custom-colormap"] + colormapsize = 4 * 256 + 2 + colormapmode = im.palette.mode + colormap = im.getdata().getpalette() + else: + colormapsize = 0 + + if "offset" in im.info: + offset = (rowbytes * rows + 16 + 3 + colormapsize) // 4 + else: + offset = 0 + + fp.write(o16b(cols) + o16b(rows) + o16b(rowbytes) + o16b(flags)) + fp.write(o8(bpp)) + fp.write(o8(version)) + fp.write(o16b(offset)) + fp.write(o8(transparent_index)) + fp.write(o8(compression_type)) + fp.write(o16b(0)) # reserved by Palm + + # now write colormap if necessary + + if colormapsize > 0: + fp.write(o16b(256)) + for i in range(256): + fp.write(o8(i)) + if colormapmode == "RGB": + fp.write( + o8(colormap[3 * i]) + + o8(colormap[3 * i + 1]) + + o8(colormap[3 * i + 2]) + ) + elif colormapmode == "RGBA": + fp.write( + o8(colormap[4 * i]) + + o8(colormap[4 * i + 1]) + + o8(colormap[4 * i + 2]) + ) + + # now convert data to raw form + ImageFile._save(im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, rowbytes, 1))]) + + if hasattr(fp, "flush"): + fp.flush() + + +# +# -------------------------------------------------------------------- + +Image.register_save("Palm", _save) + +Image.register_extension("Palm", ".palm") + +Image.register_mime("Palm", "image/palm") diff --git a/venv/Lib/site-packages/PIL/PcdImagePlugin.py b/venv/Lib/site-packages/PIL/PcdImagePlugin.py new file mode 100644 index 0000000..625f556 --- /dev/null +++ b/venv/Lib/site-packages/PIL/PcdImagePlugin.py @@ -0,0 +1,64 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PCD file handling +# +# History: +# 96-05-10 fl Created +# 96-05-27 fl Added draft mode (128x192, 256x384) +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + + +from . import Image, ImageFile +from ._binary import i8 + +## +# Image plugin for PhotoCD images. This plugin only reads the 768x512 +# image from the file; higher resolutions are encoded in a proprietary +# encoding. + + +class PcdImageFile(ImageFile.ImageFile): + + format = "PCD" + format_description = "Kodak PhotoCD" + + def _open(self): + + # rough + self.fp.seek(2048) + s = self.fp.read(2048) + + if s[:4] != b"PCD_": + raise SyntaxError("not a PCD file") + + orientation = i8(s[1538]) & 3 + self.tile_post_rotate = None + if orientation == 1: + self.tile_post_rotate = 90 + elif orientation == 3: + self.tile_post_rotate = -90 + + self.mode = "RGB" + self._size = 768, 512 # FIXME: not correct for rotated images! + self.tile = [("pcd", (0, 0) + self.size, 96 * 2048, None)] + + def load_end(self): + if self.tile_post_rotate: + # Handle rotated PCDs + self.im = self.im.rotate(self.tile_post_rotate) + self._size = self.im.size + + +# +# registry + +Image.register_open(PcdImageFile.format, PcdImageFile) + +Image.register_extension(PcdImageFile.format, ".pcd") diff --git a/venv/Lib/site-packages/PIL/PcfFontFile.py b/venv/Lib/site-packages/PIL/PcfFontFile.py new file mode 100644 index 0000000..c463533 --- /dev/null +++ b/venv/Lib/site-packages/PIL/PcfFontFile.py @@ -0,0 +1,247 @@ +# +# THIS IS WORK IN PROGRESS +# +# The Python Imaging Library +# $Id$ +# +# portable compiled font file parser +# +# history: +# 1997-08-19 fl created +# 2003-09-13 fl fixed loading of unicode fonts +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1997-2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +import io + +from . import FontFile, Image +from ._binary import i8, i16be as b16, i16le as l16, i32be as b32, i32le as l32 + +# -------------------------------------------------------------------- +# declarations + +PCF_MAGIC = 0x70636601 # "\x01fcp" + +PCF_PROPERTIES = 1 << 0 +PCF_ACCELERATORS = 1 << 1 +PCF_METRICS = 1 << 2 +PCF_BITMAPS = 1 << 3 +PCF_INK_METRICS = 1 << 4 +PCF_BDF_ENCODINGS = 1 << 5 +PCF_SWIDTHS = 1 << 6 +PCF_GLYPH_NAMES = 1 << 7 +PCF_BDF_ACCELERATORS = 1 << 8 + +BYTES_PER_ROW = [ + lambda bits: ((bits + 7) >> 3), + lambda bits: ((bits + 15) >> 3) & ~1, + lambda bits: ((bits + 31) >> 3) & ~3, + lambda bits: ((bits + 63) >> 3) & ~7, +] + + +def sz(s, o): + return s[o : s.index(b"\0", o)] + + +## +# Font file plugin for the X11 PCF format. + + +class PcfFontFile(FontFile.FontFile): + + name = "name" + + def __init__(self, fp, charset_encoding="iso8859-1"): + + self.charset_encoding = charset_encoding + + magic = l32(fp.read(4)) + if magic != PCF_MAGIC: + raise SyntaxError("not a PCF file") + + super().__init__() + + count = l32(fp.read(4)) + self.toc = {} + for i in range(count): + type = l32(fp.read(4)) + self.toc[type] = l32(fp.read(4)), l32(fp.read(4)), l32(fp.read(4)) + + self.fp = fp + + self.info = self._load_properties() + + metrics = self._load_metrics() + bitmaps = self._load_bitmaps(metrics) + encoding = self._load_encoding() + + # + # create glyph structure + + for ch in range(256): + ix = encoding[ch] + if ix is not None: + x, y, l, r, w, a, d, f = metrics[ix] + glyph = (w, 0), (l, d - y, x + l, d), (0, 0, x, y), bitmaps[ix] + self.glyph[ch] = glyph + + def _getformat(self, tag): + + format, size, offset = self.toc[tag] + + fp = self.fp + fp.seek(offset) + + format = l32(fp.read(4)) + + if format & 4: + i16, i32 = b16, b32 + else: + i16, i32 = l16, l32 + + return fp, format, i16, i32 + + def _load_properties(self): + + # + # font properties + + properties = {} + + fp, format, i16, i32 = self._getformat(PCF_PROPERTIES) + + nprops = i32(fp.read(4)) + + # read property description + p = [] + for i in range(nprops): + p.append((i32(fp.read(4)), i8(fp.read(1)), i32(fp.read(4)))) + if nprops & 3: + fp.seek(4 - (nprops & 3), io.SEEK_CUR) # pad + + data = fp.read(i32(fp.read(4))) + + for k, s, v in p: + k = sz(data, k) + if s: + v = sz(data, v) + properties[k] = v + + return properties + + def _load_metrics(self): + + # + # font metrics + + metrics = [] + + fp, format, i16, i32 = self._getformat(PCF_METRICS) + + append = metrics.append + + if (format & 0xFF00) == 0x100: + + # "compressed" metrics + for i in range(i16(fp.read(2))): + left = i8(fp.read(1)) - 128 + right = i8(fp.read(1)) - 128 + width = i8(fp.read(1)) - 128 + ascent = i8(fp.read(1)) - 128 + descent = i8(fp.read(1)) - 128 + xsize = right - left + ysize = ascent + descent + append((xsize, ysize, left, right, width, ascent, descent, 0)) + + else: + + # "jumbo" metrics + for i in range(i32(fp.read(4))): + left = i16(fp.read(2)) + right = i16(fp.read(2)) + width = i16(fp.read(2)) + ascent = i16(fp.read(2)) + descent = i16(fp.read(2)) + attributes = i16(fp.read(2)) + xsize = right - left + ysize = ascent + descent + append((xsize, ysize, left, right, width, ascent, descent, attributes)) + + return metrics + + def _load_bitmaps(self, metrics): + + # + # bitmap data + + bitmaps = [] + + fp, format, i16, i32 = self._getformat(PCF_BITMAPS) + + nbitmaps = i32(fp.read(4)) + + if nbitmaps != len(metrics): + raise OSError("Wrong number of bitmaps") + + offsets = [] + for i in range(nbitmaps): + offsets.append(i32(fp.read(4))) + + bitmapSizes = [] + for i in range(4): + bitmapSizes.append(i32(fp.read(4))) + + # byteorder = format & 4 # non-zero => MSB + bitorder = format & 8 # non-zero => MSB + padindex = format & 3 + + bitmapsize = bitmapSizes[padindex] + offsets.append(bitmapsize) + + data = fp.read(bitmapsize) + + pad = BYTES_PER_ROW[padindex] + mode = "1;R" + if bitorder: + mode = "1" + + for i in range(nbitmaps): + x, y, l, r, w, a, d, f = metrics[i] + b, e = offsets[i], offsets[i + 1] + bitmaps.append(Image.frombytes("1", (x, y), data[b:e], "raw", mode, pad(x))) + + return bitmaps + + def _load_encoding(self): + + # map character code to bitmap index + encoding = [None] * 256 + + fp, format, i16, i32 = self._getformat(PCF_BDF_ENCODINGS) + + firstCol, lastCol = i16(fp.read(2)), i16(fp.read(2)) + firstRow, lastRow = i16(fp.read(2)), i16(fp.read(2)) + + i16(fp.read(2)) # default + + nencoding = (lastCol - firstCol + 1) * (lastRow - firstRow + 1) + + encodingOffsets = [i16(fp.read(2)) for _ in range(nencoding)] + + for i in range(firstCol, len(encoding)): + try: + encodingOffset = encodingOffsets[ + ord(bytearray([i]).decode(self.charset_encoding)) + ] + if encodingOffset != 0xFFFF: + encoding[i] = encodingOffset + except UnicodeDecodeError: + # character is not supported in selected encoding + pass + + return encoding diff --git a/venv/Lib/site-packages/PIL/PcxImagePlugin.py b/venv/Lib/site-packages/PIL/PcxImagePlugin.py new file mode 100644 index 0000000..6cf10de --- /dev/null +++ b/venv/Lib/site-packages/PIL/PcxImagePlugin.py @@ -0,0 +1,206 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PCX file handling +# +# This format was originally used by ZSoft's popular PaintBrush +# program for the IBM PC. It is also supported by many MS-DOS and +# Windows applications, including the Windows PaintBrush program in +# Windows 3. +# +# history: +# 1995-09-01 fl Created +# 1996-05-20 fl Fixed RGB support +# 1997-01-03 fl Fixed 2-bit and 4-bit support +# 1999-02-03 fl Fixed 8-bit support (broken in 1.0b1) +# 1999-02-07 fl Added write support +# 2002-06-09 fl Made 2-bit and 4-bit support a bit more robust +# 2002-07-30 fl Seek from to current position, not beginning of file +# 2003-06-03 fl Extract DPI settings (info["dpi"]) +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +import io +import logging + +from . import Image, ImageFile, ImagePalette +from ._binary import i8, i16le as i16, o8, o16le as o16 + +logger = logging.getLogger(__name__) + + +def _accept(prefix): + return i8(prefix[0]) == 10 and i8(prefix[1]) in [0, 2, 3, 5] + + +## +# Image plugin for Paintbrush images. + + +class PcxImageFile(ImageFile.ImageFile): + + format = "PCX" + format_description = "Paintbrush" + + def _open(self): + + # header + s = self.fp.read(128) + if not _accept(s): + raise SyntaxError("not a PCX file") + + # image + bbox = i16(s, 4), i16(s, 6), i16(s, 8) + 1, i16(s, 10) + 1 + if bbox[2] <= bbox[0] or bbox[3] <= bbox[1]: + raise SyntaxError("bad PCX image size") + logger.debug("BBox: %s %s %s %s", *bbox) + + # format + version = i8(s[1]) + bits = i8(s[3]) + planes = i8(s[65]) + stride = i16(s, 66) + logger.debug( + "PCX version %s, bits %s, planes %s, stride %s", + version, + bits, + planes, + stride, + ) + + self.info["dpi"] = i16(s, 12), i16(s, 14) + + if bits == 1 and planes == 1: + mode = rawmode = "1" + + elif bits == 1 and planes in (2, 4): + mode = "P" + rawmode = "P;%dL" % planes + self.palette = ImagePalette.raw("RGB", s[16:64]) + + elif version == 5 and bits == 8 and planes == 1: + mode = rawmode = "L" + # FIXME: hey, this doesn't work with the incremental loader !!! + self.fp.seek(-769, io.SEEK_END) + s = self.fp.read(769) + if len(s) == 769 and i8(s[0]) == 12: + # check if the palette is linear greyscale + for i in range(256): + if s[i * 3 + 1 : i * 3 + 4] != o8(i) * 3: + mode = rawmode = "P" + break + if mode == "P": + self.palette = ImagePalette.raw("RGB", s[1:]) + self.fp.seek(128) + + elif version == 5 and bits == 8 and planes == 3: + mode = "RGB" + rawmode = "RGB;L" + + else: + raise OSError("unknown PCX mode") + + self.mode = mode + self._size = bbox[2] - bbox[0], bbox[3] - bbox[1] + + bbox = (0, 0) + self.size + logger.debug("size: %sx%s", *self.size) + + self.tile = [("pcx", bbox, self.fp.tell(), (rawmode, planes * stride))] + + +# -------------------------------------------------------------------- +# save PCX files + + +SAVE = { + # mode: (version, bits, planes, raw mode) + "1": (2, 1, 1, "1"), + "L": (5, 8, 1, "L"), + "P": (5, 8, 1, "P"), + "RGB": (5, 8, 3, "RGB;L"), +} + + +def _save(im, fp, filename): + + try: + version, bits, planes, rawmode = SAVE[im.mode] + except KeyError: + raise ValueError("Cannot save %s images as PCX" % im.mode) + + # bytes per plane + stride = (im.size[0] * bits + 7) // 8 + # stride should be even + stride += stride % 2 + # Stride needs to be kept in sync with the PcxEncode.c version. + # Ideally it should be passed in in the state, but the bytes value + # gets overwritten. + + logger.debug( + "PcxImagePlugin._save: xwidth: %d, bits: %d, stride: %d", + im.size[0], + bits, + stride, + ) + + # under windows, we could determine the current screen size with + # "Image.core.display_mode()[1]", but I think that's overkill... + + screen = im.size + + dpi = 100, 100 + + # PCX header + fp.write( + o8(10) + + o8(version) + + o8(1) + + o8(bits) + + o16(0) + + o16(0) + + o16(im.size[0] - 1) + + o16(im.size[1] - 1) + + o16(dpi[0]) + + o16(dpi[1]) + + b"\0" * 24 + + b"\xFF" * 24 + + b"\0" + + o8(planes) + + o16(stride) + + o16(1) + + o16(screen[0]) + + o16(screen[1]) + + b"\0" * 54 + ) + + assert fp.tell() == 128 + + ImageFile._save(im, fp, [("pcx", (0, 0) + im.size, 0, (rawmode, bits * planes))]) + + if im.mode == "P": + # colour palette + fp.write(o8(12)) + fp.write(im.im.getpalette("RGB", "RGB")) # 768 bytes + elif im.mode == "L": + # greyscale palette + fp.write(o8(12)) + for i in range(256): + fp.write(o8(i) * 3) + + +# -------------------------------------------------------------------- +# registry + + +Image.register_open(PcxImageFile.format, PcxImageFile, _accept) +Image.register_save(PcxImageFile.format, _save) + +Image.register_extension(PcxImageFile.format, ".pcx") + +Image.register_mime(PcxImageFile.format, "image/x-pcx") diff --git a/venv/Lib/site-packages/PIL/PdfImagePlugin.py b/venv/Lib/site-packages/PIL/PdfImagePlugin.py new file mode 100644 index 0000000..47500ba --- /dev/null +++ b/venv/Lib/site-packages/PIL/PdfImagePlugin.py @@ -0,0 +1,243 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PDF (Acrobat) file handling +# +# History: +# 1996-07-16 fl Created +# 1997-01-18 fl Fixed header +# 2004-02-21 fl Fixes for 1/L/CMYK images, etc. +# 2004-02-24 fl Fixes for 1 and P images. +# +# Copyright (c) 1997-2004 by Secret Labs AB. All rights reserved. +# Copyright (c) 1996-1997 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +## +# Image plugin for PDF images (output only). +## + +import io +import os +import time + +from . import Image, ImageFile, ImageSequence, PdfParser, __version__ + +# +# -------------------------------------------------------------------- + +# object ids: +# 1. catalogue +# 2. pages +# 3. image +# 4. page +# 5. page contents + + +def _save_all(im, fp, filename): + _save(im, fp, filename, save_all=True) + + +## +# (Internal) Image save plugin for the PDF format. + + +def _save(im, fp, filename, save_all=False): + is_appending = im.encoderinfo.get("append", False) + if is_appending: + existing_pdf = PdfParser.PdfParser(f=fp, filename=filename, mode="r+b") + else: + existing_pdf = PdfParser.PdfParser(f=fp, filename=filename, mode="w+b") + + resolution = im.encoderinfo.get("resolution", 72.0) + + info = { + "title": None + if is_appending + else os.path.splitext(os.path.basename(filename))[0], + "author": None, + "subject": None, + "keywords": None, + "creator": None, + "producer": None, + "creationDate": None if is_appending else time.gmtime(), + "modDate": None if is_appending else time.gmtime(), + } + for k, default in info.items(): + v = im.encoderinfo.get(k) if k in im.encoderinfo else default + if v: + existing_pdf.info[k[0].upper() + k[1:]] = v + + # + # make sure image data is available + im.load() + + existing_pdf.start_writing() + existing_pdf.write_header() + existing_pdf.write_comment("created by Pillow {} PDF driver".format(__version__)) + + # + # pages + ims = [im] + if save_all: + append_images = im.encoderinfo.get("append_images", []) + for append_im in append_images: + append_im.encoderinfo = im.encoderinfo.copy() + ims.append(append_im) + numberOfPages = 0 + image_refs = [] + page_refs = [] + contents_refs = [] + for im in ims: + im_numberOfPages = 1 + if save_all: + try: + im_numberOfPages = im.n_frames + except AttributeError: + # Image format does not have n_frames. + # It is a single frame image + pass + numberOfPages += im_numberOfPages + for i in range(im_numberOfPages): + image_refs.append(existing_pdf.next_object_id(0)) + page_refs.append(existing_pdf.next_object_id(0)) + contents_refs.append(existing_pdf.next_object_id(0)) + existing_pdf.pages.append(page_refs[-1]) + + # + # catalog and list of pages + existing_pdf.write_catalog() + + pageNumber = 0 + for imSequence in ims: + im_pages = ImageSequence.Iterator(imSequence) if save_all else [imSequence] + for im in im_pages: + # FIXME: Should replace ASCIIHexDecode with RunLengthDecode + # (packbits) or LZWDecode (tiff/lzw compression). Note that + # PDF 1.2 also supports Flatedecode (zip compression). + + bits = 8 + params = None + + if im.mode == "1": + filter = "ASCIIHexDecode" + colorspace = PdfParser.PdfName("DeviceGray") + procset = "ImageB" # grayscale + bits = 1 + elif im.mode == "L": + filter = "DCTDecode" + # params = "<< /Predictor 15 /Columns %d >>" % (width-2) + colorspace = PdfParser.PdfName("DeviceGray") + procset = "ImageB" # grayscale + elif im.mode == "P": + filter = "ASCIIHexDecode" + palette = im.im.getpalette("RGB") + colorspace = [ + PdfParser.PdfName("Indexed"), + PdfParser.PdfName("DeviceRGB"), + 255, + PdfParser.PdfBinary(palette), + ] + procset = "ImageI" # indexed color + elif im.mode == "RGB": + filter = "DCTDecode" + colorspace = PdfParser.PdfName("DeviceRGB") + procset = "ImageC" # color images + elif im.mode == "CMYK": + filter = "DCTDecode" + colorspace = PdfParser.PdfName("DeviceCMYK") + procset = "ImageC" # color images + else: + raise ValueError("cannot save mode %s" % im.mode) + + # + # image + + op = io.BytesIO() + + if filter == "ASCIIHexDecode": + if bits == 1: + # FIXME: the hex encoder doesn't support packed 1-bit + # images; do things the hard way... + data = im.tobytes("raw", "1") + im = Image.new("L", im.size) + im.putdata(data) + ImageFile._save(im, op, [("hex", (0, 0) + im.size, 0, im.mode)]) + elif filter == "DCTDecode": + Image.SAVE["JPEG"](im, op, filename) + elif filter == "FlateDecode": + ImageFile._save(im, op, [("zip", (0, 0) + im.size, 0, im.mode)]) + elif filter == "RunLengthDecode": + ImageFile._save(im, op, [("packbits", (0, 0) + im.size, 0, im.mode)]) + else: + raise ValueError("unsupported PDF filter (%s)" % filter) + + # + # Get image characteristics + + width, height = im.size + + existing_pdf.write_obj( + image_refs[pageNumber], + stream=op.getvalue(), + Type=PdfParser.PdfName("XObject"), + Subtype=PdfParser.PdfName("Image"), + Width=width, # * 72.0 / resolution, + Height=height, # * 72.0 / resolution, + Filter=PdfParser.PdfName(filter), + BitsPerComponent=bits, + DecodeParams=params, + ColorSpace=colorspace, + ) + + # + # page + + existing_pdf.write_page( + page_refs[pageNumber], + Resources=PdfParser.PdfDict( + ProcSet=[PdfParser.PdfName("PDF"), PdfParser.PdfName(procset)], + XObject=PdfParser.PdfDict(image=image_refs[pageNumber]), + ), + MediaBox=[ + 0, + 0, + int(width * 72.0 / resolution), + int(height * 72.0 / resolution), + ], + Contents=contents_refs[pageNumber], + ) + + # + # page contents + + page_contents = b"q %d 0 0 %d 0 0 cm /image Do Q\n" % ( + int(width * 72.0 / resolution), + int(height * 72.0 / resolution), + ) + + existing_pdf.write_obj(contents_refs[pageNumber], stream=page_contents) + + pageNumber += 1 + + # + # trailer + existing_pdf.write_xref_and_trailer() + if hasattr(fp, "flush"): + fp.flush() + existing_pdf.close() + + +# +# -------------------------------------------------------------------- + + +Image.register_save("PDF", _save) +Image.register_save_all("PDF", _save_all) + +Image.register_extension("PDF", ".pdf") + +Image.register_mime("PDF", "application/pdf") diff --git a/venv/Lib/site-packages/PIL/PdfParser.py b/venv/Lib/site-packages/PIL/PdfParser.py new file mode 100644 index 0000000..fdb35ed --- /dev/null +++ b/venv/Lib/site-packages/PIL/PdfParser.py @@ -0,0 +1,995 @@ +import calendar +import codecs +import collections +import mmap +import os +import re +import time +import zlib + + +# see 7.9.2.2 Text String Type on page 86 and D.3 PDFDocEncoding Character Set +# on page 656 +def encode_text(s): + return codecs.BOM_UTF16_BE + s.encode("utf_16_be") + + +PDFDocEncoding = { + 0x16: "\u0017", + 0x18: "\u02D8", + 0x19: "\u02C7", + 0x1A: "\u02C6", + 0x1B: "\u02D9", + 0x1C: "\u02DD", + 0x1D: "\u02DB", + 0x1E: "\u02DA", + 0x1F: "\u02DC", + 0x80: "\u2022", + 0x81: "\u2020", + 0x82: "\u2021", + 0x83: "\u2026", + 0x84: "\u2014", + 0x85: "\u2013", + 0x86: "\u0192", + 0x87: "\u2044", + 0x88: "\u2039", + 0x89: "\u203A", + 0x8A: "\u2212", + 0x8B: "\u2030", + 0x8C: "\u201E", + 0x8D: "\u201C", + 0x8E: "\u201D", + 0x8F: "\u2018", + 0x90: "\u2019", + 0x91: "\u201A", + 0x92: "\u2122", + 0x93: "\uFB01", + 0x94: "\uFB02", + 0x95: "\u0141", + 0x96: "\u0152", + 0x97: "\u0160", + 0x98: "\u0178", + 0x99: "\u017D", + 0x9A: "\u0131", + 0x9B: "\u0142", + 0x9C: "\u0153", + 0x9D: "\u0161", + 0x9E: "\u017E", + 0xA0: "\u20AC", +} + + +def decode_text(b): + if b[: len(codecs.BOM_UTF16_BE)] == codecs.BOM_UTF16_BE: + return b[len(codecs.BOM_UTF16_BE) :].decode("utf_16_be") + else: + return "".join(PDFDocEncoding.get(byte, chr(byte)) for byte in b) + + +class PdfFormatError(RuntimeError): + """An error that probably indicates a syntactic or semantic error in the + PDF file structure""" + + pass + + +def check_format_condition(condition, error_message): + if not condition: + raise PdfFormatError(error_message) + + +class IndirectReference( + collections.namedtuple("IndirectReferenceTuple", ["object_id", "generation"]) +): + def __str__(self): + return "%s %s R" % self + + def __bytes__(self): + return self.__str__().encode("us-ascii") + + def __eq__(self, other): + return ( + other.__class__ is self.__class__ + and other.object_id == self.object_id + and other.generation == self.generation + ) + + def __ne__(self, other): + return not (self == other) + + def __hash__(self): + return hash((self.object_id, self.generation)) + + +class IndirectObjectDef(IndirectReference): + def __str__(self): + return "%s %s obj" % self + + +class XrefTable: + def __init__(self): + self.existing_entries = {} # object ID => (offset, generation) + self.new_entries = {} # object ID => (offset, generation) + self.deleted_entries = {0: 65536} # object ID => generation + self.reading_finished = False + + def __setitem__(self, key, value): + if self.reading_finished: + self.new_entries[key] = value + else: + self.existing_entries[key] = value + if key in self.deleted_entries: + del self.deleted_entries[key] + + def __getitem__(self, key): + try: + return self.new_entries[key] + except KeyError: + return self.existing_entries[key] + + def __delitem__(self, key): + if key in self.new_entries: + generation = self.new_entries[key][1] + 1 + del self.new_entries[key] + self.deleted_entries[key] = generation + elif key in self.existing_entries: + generation = self.existing_entries[key][1] + 1 + self.deleted_entries[key] = generation + elif key in self.deleted_entries: + generation = self.deleted_entries[key] + else: + raise IndexError( + "object ID " + str(key) + " cannot be deleted because it doesn't exist" + ) + + def __contains__(self, key): + return key in self.existing_entries or key in self.new_entries + + def __len__(self): + return len( + set(self.existing_entries.keys()) + | set(self.new_entries.keys()) + | set(self.deleted_entries.keys()) + ) + + def keys(self): + return ( + set(self.existing_entries.keys()) - set(self.deleted_entries.keys()) + ) | set(self.new_entries.keys()) + + def write(self, f): + keys = sorted(set(self.new_entries.keys()) | set(self.deleted_entries.keys())) + deleted_keys = sorted(set(self.deleted_entries.keys())) + startxref = f.tell() + f.write(b"xref\n") + while keys: + # find a contiguous sequence of object IDs + prev = None + for index, key in enumerate(keys): + if prev is None or prev + 1 == key: + prev = key + else: + contiguous_keys = keys[:index] + keys = keys[index:] + break + else: + contiguous_keys = keys + keys = None + f.write(b"%d %d\n" % (contiguous_keys[0], len(contiguous_keys))) + for object_id in contiguous_keys: + if object_id in self.new_entries: + f.write(b"%010d %05d n \n" % self.new_entries[object_id]) + else: + this_deleted_object_id = deleted_keys.pop(0) + check_format_condition( + object_id == this_deleted_object_id, + "expected the next deleted object ID to be %s, instead found %s" + % (object_id, this_deleted_object_id), + ) + try: + next_in_linked_list = deleted_keys[0] + except IndexError: + next_in_linked_list = 0 + f.write( + b"%010d %05d f \n" + % (next_in_linked_list, self.deleted_entries[object_id]) + ) + return startxref + + +class PdfName: + def __init__(self, name): + if isinstance(name, PdfName): + self.name = name.name + elif isinstance(name, bytes): + self.name = name + else: + self.name = name.encode("us-ascii") + + def name_as_str(self): + return self.name.decode("us-ascii") + + def __eq__(self, other): + return ( + isinstance(other, PdfName) and other.name == self.name + ) or other == self.name + + def __hash__(self): + return hash(self.name) + + def __repr__(self): + return "PdfName(%s)" % repr(self.name) + + @classmethod + def from_pdf_stream(cls, data): + return cls(PdfParser.interpret_name(data)) + + allowed_chars = set(range(33, 127)) - {ord(c) for c in "#%/()<>[]{}"} + + def __bytes__(self): + result = bytearray(b"/") + for b in self.name: + if b in self.allowed_chars: + result.append(b) + else: + result.extend(b"#%02X" % b) + return bytes(result) + + +class PdfArray(list): + def __bytes__(self): + return b"[ " + b" ".join(pdf_repr(x) for x in self) + b" ]" + + +class PdfDict(collections.UserDict): + def __setattr__(self, key, value): + if key == "data": + collections.UserDict.__setattr__(self, key, value) + else: + self[key.encode("us-ascii")] = value + + def __getattr__(self, key): + try: + value = self[key.encode("us-ascii")] + except KeyError: + raise AttributeError(key) + if isinstance(value, bytes): + value = decode_text(value) + if key.endswith("Date"): + if value.startswith("D:"): + value = value[2:] + + relationship = "Z" + if len(value) > 17: + relationship = value[14] + offset = int(value[15:17]) * 60 + if len(value) > 20: + offset += int(value[18:20]) + + format = "%Y%m%d%H%M%S"[: len(value) - 2] + value = time.strptime(value[: len(format) + 2], format) + if relationship in ["+", "-"]: + offset *= 60 + if relationship == "+": + offset *= -1 + value = time.gmtime(calendar.timegm(value) + offset) + return value + + def __bytes__(self): + out = bytearray(b"<<") + for key, value in self.items(): + if value is None: + continue + value = pdf_repr(value) + out.extend(b"\n") + out.extend(bytes(PdfName(key))) + out.extend(b" ") + out.extend(value) + out.extend(b"\n>>") + return bytes(out) + + +class PdfBinary: + def __init__(self, data): + self.data = data + + def __bytes__(self): + return b"<%s>" % b"".join(b"%02X" % b for b in self.data) + + +class PdfStream: + def __init__(self, dictionary, buf): + self.dictionary = dictionary + self.buf = buf + + def decode(self): + try: + filter = self.dictionary.Filter + except AttributeError: + return self.buf + if filter == b"FlateDecode": + try: + expected_length = self.dictionary.DL + except AttributeError: + expected_length = self.dictionary.Length + return zlib.decompress(self.buf, bufsize=int(expected_length)) + else: + raise NotImplementedError( + "stream filter %s unknown/unsupported" % repr(self.dictionary.Filter) + ) + + +def pdf_repr(x): + if x is True: + return b"true" + elif x is False: + return b"false" + elif x is None: + return b"null" + elif isinstance(x, (PdfName, PdfDict, PdfArray, PdfBinary)): + return bytes(x) + elif isinstance(x, int): + return str(x).encode("us-ascii") + elif isinstance(x, time.struct_time): + return b"(D:" + time.strftime("%Y%m%d%H%M%SZ", x).encode("us-ascii") + b")" + elif isinstance(x, dict): + return bytes(PdfDict(x)) + elif isinstance(x, list): + return bytes(PdfArray(x)) + elif isinstance(x, str): + return pdf_repr(encode_text(x)) + elif isinstance(x, bytes): + # XXX escape more chars? handle binary garbage + x = x.replace(b"\\", b"\\\\") + x = x.replace(b"(", b"\\(") + x = x.replace(b")", b"\\)") + return b"(" + x + b")" + else: + return bytes(x) + + +class PdfParser: + """Based on + https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/PDF32000_2008.pdf + Supports PDF up to 1.4 + """ + + def __init__(self, filename=None, f=None, buf=None, start_offset=0, mode="rb"): + if buf and f: + raise RuntimeError("specify buf or f or filename, but not both buf and f") + self.filename = filename + self.buf = buf + self.f = f + self.start_offset = start_offset + self.should_close_buf = False + self.should_close_file = False + if filename is not None and f is None: + self.f = f = open(filename, mode) + self.should_close_file = True + if f is not None: + self.buf = buf = self.get_buf_from_file(f) + self.should_close_buf = True + if not filename and hasattr(f, "name"): + self.filename = f.name + self.cached_objects = {} + if buf: + self.read_pdf_info() + else: + self.file_size_total = self.file_size_this = 0 + self.root = PdfDict() + self.root_ref = None + self.info = PdfDict() + self.info_ref = None + self.page_tree_root = {} + self.pages = [] + self.orig_pages = [] + self.pages_ref = None + self.last_xref_section_offset = None + self.trailer_dict = {} + self.xref_table = XrefTable() + self.xref_table.reading_finished = True + if f: + self.seek_end() + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + self.close() + return False # do not suppress exceptions + + def start_writing(self): + self.close_buf() + self.seek_end() + + def close_buf(self): + try: + self.buf.close() + except AttributeError: + pass + self.buf = None + + def close(self): + if self.should_close_buf: + self.close_buf() + if self.f is not None and self.should_close_file: + self.f.close() + self.f = None + + def seek_end(self): + self.f.seek(0, os.SEEK_END) + + def write_header(self): + self.f.write(b"%PDF-1.4\n") + + def write_comment(self, s): + self.f.write(("% {}\n".format(s)).encode("utf-8")) + + def write_catalog(self): + self.del_root() + self.root_ref = self.next_object_id(self.f.tell()) + self.pages_ref = self.next_object_id(0) + self.rewrite_pages() + self.write_obj(self.root_ref, Type=PdfName(b"Catalog"), Pages=self.pages_ref) + self.write_obj( + self.pages_ref, + Type=PdfName(b"Pages"), + Count=len(self.pages), + Kids=self.pages, + ) + return self.root_ref + + def rewrite_pages(self): + pages_tree_nodes_to_delete = [] + for i, page_ref in enumerate(self.orig_pages): + page_info = self.cached_objects[page_ref] + del self.xref_table[page_ref.object_id] + pages_tree_nodes_to_delete.append(page_info[PdfName(b"Parent")]) + if page_ref not in self.pages: + # the page has been deleted + continue + # make dict keys into strings for passing to write_page + stringified_page_info = {} + for key, value in page_info.items(): + # key should be a PdfName + stringified_page_info[key.name_as_str()] = value + stringified_page_info["Parent"] = self.pages_ref + new_page_ref = self.write_page(None, **stringified_page_info) + for j, cur_page_ref in enumerate(self.pages): + if cur_page_ref == page_ref: + # replace the page reference with the new one + self.pages[j] = new_page_ref + # delete redundant Pages tree nodes from xref table + for pages_tree_node_ref in pages_tree_nodes_to_delete: + while pages_tree_node_ref: + pages_tree_node = self.cached_objects[pages_tree_node_ref] + if pages_tree_node_ref.object_id in self.xref_table: + del self.xref_table[pages_tree_node_ref.object_id] + pages_tree_node_ref = pages_tree_node.get(b"Parent", None) + self.orig_pages = [] + + def write_xref_and_trailer(self, new_root_ref=None): + if new_root_ref: + self.del_root() + self.root_ref = new_root_ref + if self.info: + self.info_ref = self.write_obj(None, self.info) + start_xref = self.xref_table.write(self.f) + num_entries = len(self.xref_table) + trailer_dict = {b"Root": self.root_ref, b"Size": num_entries} + if self.last_xref_section_offset is not None: + trailer_dict[b"Prev"] = self.last_xref_section_offset + if self.info: + trailer_dict[b"Info"] = self.info_ref + self.last_xref_section_offset = start_xref + self.f.write( + b"trailer\n" + + bytes(PdfDict(trailer_dict)) + + b"\nstartxref\n%d\n%%%%EOF" % start_xref + ) + + def write_page(self, ref, *objs, **dict_obj): + if isinstance(ref, int): + ref = self.pages[ref] + if "Type" not in dict_obj: + dict_obj["Type"] = PdfName(b"Page") + if "Parent" not in dict_obj: + dict_obj["Parent"] = self.pages_ref + return self.write_obj(ref, *objs, **dict_obj) + + def write_obj(self, ref, *objs, **dict_obj): + f = self.f + if ref is None: + ref = self.next_object_id(f.tell()) + else: + self.xref_table[ref.object_id] = (f.tell(), ref.generation) + f.write(bytes(IndirectObjectDef(*ref))) + stream = dict_obj.pop("stream", None) + if stream is not None: + dict_obj["Length"] = len(stream) + if dict_obj: + f.write(pdf_repr(dict_obj)) + for obj in objs: + f.write(pdf_repr(obj)) + if stream is not None: + f.write(b"stream\n") + f.write(stream) + f.write(b"\nendstream\n") + f.write(b"endobj\n") + return ref + + def del_root(self): + if self.root_ref is None: + return + del self.xref_table[self.root_ref.object_id] + del self.xref_table[self.root[b"Pages"].object_id] + + @staticmethod + def get_buf_from_file(f): + if hasattr(f, "getbuffer"): + return f.getbuffer() + elif hasattr(f, "getvalue"): + return f.getvalue() + else: + try: + return mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) + except ValueError: # cannot mmap an empty file + return b"" + + def read_pdf_info(self): + self.file_size_total = len(self.buf) + self.file_size_this = self.file_size_total - self.start_offset + self.read_trailer() + self.root_ref = self.trailer_dict[b"Root"] + self.info_ref = self.trailer_dict.get(b"Info", None) + self.root = PdfDict(self.read_indirect(self.root_ref)) + if self.info_ref is None: + self.info = PdfDict() + else: + self.info = PdfDict(self.read_indirect(self.info_ref)) + check_format_condition(b"Type" in self.root, "/Type missing in Root") + check_format_condition( + self.root[b"Type"] == b"Catalog", "/Type in Root is not /Catalog" + ) + check_format_condition(b"Pages" in self.root, "/Pages missing in Root") + check_format_condition( + isinstance(self.root[b"Pages"], IndirectReference), + "/Pages in Root is not an indirect reference", + ) + self.pages_ref = self.root[b"Pages"] + self.page_tree_root = self.read_indirect(self.pages_ref) + self.pages = self.linearize_page_tree(self.page_tree_root) + # save the original list of page references + # in case the user modifies, adds or deletes some pages + # and we need to rewrite the pages and their list + self.orig_pages = self.pages[:] + + def next_object_id(self, offset=None): + try: + # TODO: support reuse of deleted objects + reference = IndirectReference(max(self.xref_table.keys()) + 1, 0) + except ValueError: + reference = IndirectReference(1, 0) + if offset is not None: + self.xref_table[reference.object_id] = (offset, 0) + return reference + + delimiter = br"[][()<>{}/%]" + delimiter_or_ws = br"[][()<>{}/%\000\011\012\014\015\040]" + whitespace = br"[\000\011\012\014\015\040]" + whitespace_or_hex = br"[\000\011\012\014\015\0400-9a-fA-F]" + whitespace_optional = whitespace + b"*" + whitespace_mandatory = whitespace + b"+" + newline_only = br"[\r\n]+" + newline = whitespace_optional + newline_only + whitespace_optional + re_trailer_end = re.compile( + whitespace_mandatory + + br"trailer" + + whitespace_optional + + br"\<\<(.*\>\>)" + + newline + + br"startxref" + + newline + + br"([0-9]+)" + + newline + + br"%%EOF" + + whitespace_optional + + br"$", + re.DOTALL, + ) + re_trailer_prev = re.compile( + whitespace_optional + + br"trailer" + + whitespace_optional + + br"\<\<(.*?\>\>)" + + newline + + br"startxref" + + newline + + br"([0-9]+)" + + newline + + br"%%EOF" + + whitespace_optional, + re.DOTALL, + ) + + def read_trailer(self): + search_start_offset = len(self.buf) - 16384 + if search_start_offset < self.start_offset: + search_start_offset = self.start_offset + m = self.re_trailer_end.search(self.buf, search_start_offset) + check_format_condition(m, "trailer end not found") + # make sure we found the LAST trailer + last_match = m + while m: + last_match = m + m = self.re_trailer_end.search(self.buf, m.start() + 16) + if not m: + m = last_match + trailer_data = m.group(1) + self.last_xref_section_offset = int(m.group(2)) + self.trailer_dict = self.interpret_trailer(trailer_data) + self.xref_table = XrefTable() + self.read_xref_table(xref_section_offset=self.last_xref_section_offset) + if b"Prev" in self.trailer_dict: + self.read_prev_trailer(self.trailer_dict[b"Prev"]) + + def read_prev_trailer(self, xref_section_offset): + trailer_offset = self.read_xref_table(xref_section_offset=xref_section_offset) + m = self.re_trailer_prev.search( + self.buf[trailer_offset : trailer_offset + 16384] + ) + check_format_condition(m, "previous trailer not found") + trailer_data = m.group(1) + check_format_condition( + int(m.group(2)) == xref_section_offset, + "xref section offset in previous trailer doesn't match what was expected", + ) + trailer_dict = self.interpret_trailer(trailer_data) + if b"Prev" in trailer_dict: + self.read_prev_trailer(trailer_dict[b"Prev"]) + + re_whitespace_optional = re.compile(whitespace_optional) + re_name = re.compile( + whitespace_optional + + br"/([!-$&'*-.0-;=?-Z\\^-z|~]+)(?=" + + delimiter_or_ws + + br")" + ) + re_dict_start = re.compile(whitespace_optional + br"\<\<") + re_dict_end = re.compile(whitespace_optional + br"\>\>" + whitespace_optional) + + @classmethod + def interpret_trailer(cls, trailer_data): + trailer = {} + offset = 0 + while True: + m = cls.re_name.match(trailer_data, offset) + if not m: + m = cls.re_dict_end.match(trailer_data, offset) + check_format_condition( + m and m.end() == len(trailer_data), + "name not found in trailer, remaining data: " + + repr(trailer_data[offset:]), + ) + break + key = cls.interpret_name(m.group(1)) + value, offset = cls.get_value(trailer_data, m.end()) + trailer[key] = value + check_format_condition( + b"Size" in trailer and isinstance(trailer[b"Size"], int), + "/Size not in trailer or not an integer", + ) + check_format_condition( + b"Root" in trailer and isinstance(trailer[b"Root"], IndirectReference), + "/Root not in trailer or not an indirect reference", + ) + return trailer + + re_hashes_in_name = re.compile(br"([^#]*)(#([0-9a-fA-F]{2}))?") + + @classmethod + def interpret_name(cls, raw, as_text=False): + name = b"" + for m in cls.re_hashes_in_name.finditer(raw): + if m.group(3): + name += m.group(1) + bytearray.fromhex(m.group(3).decode("us-ascii")) + else: + name += m.group(1) + if as_text: + return name.decode("utf-8") + else: + return bytes(name) + + re_null = re.compile(whitespace_optional + br"null(?=" + delimiter_or_ws + br")") + re_true = re.compile(whitespace_optional + br"true(?=" + delimiter_or_ws + br")") + re_false = re.compile(whitespace_optional + br"false(?=" + delimiter_or_ws + br")") + re_int = re.compile( + whitespace_optional + br"([-+]?[0-9]+)(?=" + delimiter_or_ws + br")" + ) + re_real = re.compile( + whitespace_optional + + br"([-+]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+))(?=" + + delimiter_or_ws + + br")" + ) + re_array_start = re.compile(whitespace_optional + br"\[") + re_array_end = re.compile(whitespace_optional + br"]") + re_string_hex = re.compile( + whitespace_optional + br"\<(" + whitespace_or_hex + br"*)\>" + ) + re_string_lit = re.compile(whitespace_optional + br"\(") + re_indirect_reference = re.compile( + whitespace_optional + + br"([-+]?[0-9]+)" + + whitespace_mandatory + + br"([-+]?[0-9]+)" + + whitespace_mandatory + + br"R(?=" + + delimiter_or_ws + + br")" + ) + re_indirect_def_start = re.compile( + whitespace_optional + + br"([-+]?[0-9]+)" + + whitespace_mandatory + + br"([-+]?[0-9]+)" + + whitespace_mandatory + + br"obj(?=" + + delimiter_or_ws + + br")" + ) + re_indirect_def_end = re.compile( + whitespace_optional + br"endobj(?=" + delimiter_or_ws + br")" + ) + re_comment = re.compile( + br"(" + whitespace_optional + br"%[^\r\n]*" + newline + br")*" + ) + re_stream_start = re.compile(whitespace_optional + br"stream\r?\n") + re_stream_end = re.compile( + whitespace_optional + br"endstream(?=" + delimiter_or_ws + br")" + ) + + @classmethod + def get_value(cls, data, offset, expect_indirect=None, max_nesting=-1): + if max_nesting == 0: + return None, None + m = cls.re_comment.match(data, offset) + if m: + offset = m.end() + m = cls.re_indirect_def_start.match(data, offset) + if m: + check_format_condition( + int(m.group(1)) > 0, + "indirect object definition: object ID must be greater than 0", + ) + check_format_condition( + int(m.group(2)) >= 0, + "indirect object definition: generation must be non-negative", + ) + check_format_condition( + expect_indirect is None + or expect_indirect + == IndirectReference(int(m.group(1)), int(m.group(2))), + "indirect object definition different than expected", + ) + object, offset = cls.get_value(data, m.end(), max_nesting=max_nesting - 1) + if offset is None: + return object, None + m = cls.re_indirect_def_end.match(data, offset) + check_format_condition(m, "indirect object definition end not found") + return object, m.end() + check_format_condition( + not expect_indirect, "indirect object definition not found" + ) + m = cls.re_indirect_reference.match(data, offset) + if m: + check_format_condition( + int(m.group(1)) > 0, + "indirect object reference: object ID must be greater than 0", + ) + check_format_condition( + int(m.group(2)) >= 0, + "indirect object reference: generation must be non-negative", + ) + return IndirectReference(int(m.group(1)), int(m.group(2))), m.end() + m = cls.re_dict_start.match(data, offset) + if m: + offset = m.end() + result = {} + m = cls.re_dict_end.match(data, offset) + while not m: + key, offset = cls.get_value(data, offset, max_nesting=max_nesting - 1) + if offset is None: + return result, None + value, offset = cls.get_value(data, offset, max_nesting=max_nesting - 1) + result[key] = value + if offset is None: + return result, None + m = cls.re_dict_end.match(data, offset) + offset = m.end() + m = cls.re_stream_start.match(data, offset) + if m: + try: + stream_len = int(result[b"Length"]) + except (TypeError, KeyError, ValueError): + raise PdfFormatError( + "bad or missing Length in stream dict (%r)" + % result.get(b"Length", None) + ) + stream_data = data[m.end() : m.end() + stream_len] + m = cls.re_stream_end.match(data, m.end() + stream_len) + check_format_condition(m, "stream end not found") + offset = m.end() + result = PdfStream(PdfDict(result), stream_data) + else: + result = PdfDict(result) + return result, offset + m = cls.re_array_start.match(data, offset) + if m: + offset = m.end() + result = [] + m = cls.re_array_end.match(data, offset) + while not m: + value, offset = cls.get_value(data, offset, max_nesting=max_nesting - 1) + result.append(value) + if offset is None: + return result, None + m = cls.re_array_end.match(data, offset) + return result, m.end() + m = cls.re_null.match(data, offset) + if m: + return None, m.end() + m = cls.re_true.match(data, offset) + if m: + return True, m.end() + m = cls.re_false.match(data, offset) + if m: + return False, m.end() + m = cls.re_name.match(data, offset) + if m: + return PdfName(cls.interpret_name(m.group(1))), m.end() + m = cls.re_int.match(data, offset) + if m: + return int(m.group(1)), m.end() + m = cls.re_real.match(data, offset) + if m: + # XXX Decimal instead of float??? + return float(m.group(1)), m.end() + m = cls.re_string_hex.match(data, offset) + if m: + # filter out whitespace + hex_string = bytearray( + [b for b in m.group(1) if b in b"0123456789abcdefABCDEF"] + ) + if len(hex_string) % 2 == 1: + # append a 0 if the length is not even - yes, at the end + hex_string.append(ord(b"0")) + return bytearray.fromhex(hex_string.decode("us-ascii")), m.end() + m = cls.re_string_lit.match(data, offset) + if m: + return cls.get_literal_string(data, m.end()) + # return None, offset # fallback (only for debugging) + raise PdfFormatError("unrecognized object: " + repr(data[offset : offset + 32])) + + re_lit_str_token = re.compile( + br"(\\[nrtbf()\\])|(\\[0-9]{1,3})|(\\(\r\n|\r|\n))|(\r\n|\r|\n)|(\()|(\))" + ) + escaped_chars = { + b"n": b"\n", + b"r": b"\r", + b"t": b"\t", + b"b": b"\b", + b"f": b"\f", + b"(": b"(", + b")": b")", + b"\\": b"\\", + ord(b"n"): b"\n", + ord(b"r"): b"\r", + ord(b"t"): b"\t", + ord(b"b"): b"\b", + ord(b"f"): b"\f", + ord(b"("): b"(", + ord(b")"): b")", + ord(b"\\"): b"\\", + } + + @classmethod + def get_literal_string(cls, data, offset): + nesting_depth = 0 + result = bytearray() + for m in cls.re_lit_str_token.finditer(data, offset): + result.extend(data[offset : m.start()]) + if m.group(1): + result.extend(cls.escaped_chars[m.group(1)[1]]) + elif m.group(2): + result.append(int(m.group(2)[1:], 8)) + elif m.group(3): + pass + elif m.group(5): + result.extend(b"\n") + elif m.group(6): + result.extend(b"(") + nesting_depth += 1 + elif m.group(7): + if nesting_depth == 0: + return bytes(result), m.end() + result.extend(b")") + nesting_depth -= 1 + offset = m.end() + raise PdfFormatError("unfinished literal string") + + re_xref_section_start = re.compile(whitespace_optional + br"xref" + newline) + re_xref_subsection_start = re.compile( + whitespace_optional + + br"([0-9]+)" + + whitespace_mandatory + + br"([0-9]+)" + + whitespace_optional + + newline_only + ) + re_xref_entry = re.compile(br"([0-9]{10}) ([0-9]{5}) ([fn])( \r| \n|\r\n)") + + def read_xref_table(self, xref_section_offset): + subsection_found = False + m = self.re_xref_section_start.match( + self.buf, xref_section_offset + self.start_offset + ) + check_format_condition(m, "xref section start not found") + offset = m.end() + while True: + m = self.re_xref_subsection_start.match(self.buf, offset) + if not m: + check_format_condition( + subsection_found, "xref subsection start not found" + ) + break + subsection_found = True + offset = m.end() + first_object = int(m.group(1)) + num_objects = int(m.group(2)) + for i in range(first_object, first_object + num_objects): + m = self.re_xref_entry.match(self.buf, offset) + check_format_condition(m, "xref entry not found") + offset = m.end() + is_free = m.group(3) == b"f" + generation = int(m.group(2)) + if not is_free: + new_entry = (int(m.group(1)), generation) + check_format_condition( + i not in self.xref_table or self.xref_table[i] == new_entry, + "xref entry duplicated (and not identical)", + ) + self.xref_table[i] = new_entry + return offset + + def read_indirect(self, ref, max_nesting=-1): + offset, generation = self.xref_table[ref[0]] + check_format_condition( + generation == ref[1], + "expected to find generation %s for object ID %s in xref table, " + "instead found generation %s at offset %s" + % (ref[1], ref[0], generation, offset), + ) + value = self.get_value( + self.buf, + offset + self.start_offset, + expect_indirect=IndirectReference(*ref), + max_nesting=max_nesting, + )[0] + self.cached_objects[ref] = value + return value + + def linearize_page_tree(self, node=None): + if node is None: + node = self.page_tree_root + check_format_condition( + node[b"Type"] == b"Pages", "/Type of page tree node is not /Pages" + ) + pages = [] + for kid in node[b"Kids"]: + kid_object = self.read_indirect(kid) + if kid_object[b"Type"] == b"Page": + pages.append(kid) + else: + pages.extend(self.linearize_page_tree(node=kid_object)) + return pages diff --git a/venv/Lib/site-packages/PIL/PixarImagePlugin.py b/venv/Lib/site-packages/PIL/PixarImagePlugin.py new file mode 100644 index 0000000..5ea32ba --- /dev/null +++ b/venv/Lib/site-packages/PIL/PixarImagePlugin.py @@ -0,0 +1,70 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PIXAR raster support for PIL +# +# history: +# 97-01-29 fl Created +# +# notes: +# This is incomplete; it is based on a few samples created with +# Photoshop 2.5 and 3.0, and a summary description provided by +# Greg Coats . Hopefully, "L" and +# "RGBA" support will be added in future versions. +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFile +from ._binary import i16le as i16 + +# +# helpers + + +def _accept(prefix): + return prefix[:4] == b"\200\350\000\000" + + +## +# Image plugin for PIXAR raster images. + + +class PixarImageFile(ImageFile.ImageFile): + + format = "PIXAR" + format_description = "PIXAR raster image" + + def _open(self): + + # assuming a 4-byte magic label + s = self.fp.read(4) + if s != b"\200\350\000\000": + raise SyntaxError("not a PIXAR file") + + # read rest of header + s = s + self.fp.read(508) + + self._size = i16(s[418:420]), i16(s[416:418]) + + # get channel/depth descriptions + mode = i16(s[424:426]), i16(s[426:428]) + + if mode == (14, 2): + self.mode = "RGB" + # FIXME: to be continued... + + # create tile descriptor (assuming "dumped") + self.tile = [("raw", (0, 0) + self.size, 1024, (self.mode, 0, 1))] + + +# +# -------------------------------------------------------------------- + +Image.register_open(PixarImageFile.format, PixarImageFile, _accept) + +Image.register_extension(PixarImageFile.format, ".pxr") diff --git a/venv/Lib/site-packages/PIL/PngImagePlugin.py b/venv/Lib/site-packages/PIL/PngImagePlugin.py new file mode 100644 index 0000000..ee9d52b --- /dev/null +++ b/venv/Lib/site-packages/PIL/PngImagePlugin.py @@ -0,0 +1,1340 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PNG support code +# +# See "PNG (Portable Network Graphics) Specification, version 1.0; +# W3C Recommendation", 1996-10-01, Thomas Boutell (ed.). +# +# history: +# 1996-05-06 fl Created (couldn't resist it) +# 1996-12-14 fl Upgraded, added read and verify support (0.2) +# 1996-12-15 fl Separate PNG stream parser +# 1996-12-29 fl Added write support, added getchunks +# 1996-12-30 fl Eliminated circular references in decoder (0.3) +# 1998-07-12 fl Read/write 16-bit images as mode I (0.4) +# 2001-02-08 fl Added transparency support (from Zircon) (0.5) +# 2001-04-16 fl Don't close data source in "open" method (0.6) +# 2004-02-24 fl Don't even pretend to support interlaced files (0.7) +# 2004-08-31 fl Do basic sanity check on chunk identifiers (0.8) +# 2004-09-20 fl Added PngInfo chunk container +# 2004-12-18 fl Added DPI read support (based on code by Niki Spahiev) +# 2008-08-13 fl Added tRNS support for RGB images +# 2009-03-06 fl Support for preserving ICC profiles (by Florian Hoech) +# 2009-03-08 fl Added zTXT support (from Lowell Alleman) +# 2009-03-29 fl Read interlaced PNG files (from Conrado Porto Lopes Gouvua) +# +# Copyright (c) 1997-2009 by Secret Labs AB +# Copyright (c) 1996 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import itertools +import logging +import re +import struct +import warnings +import zlib + +from . import Image, ImageChops, ImageFile, ImagePalette, ImageSequence +from ._binary import i8, i16be as i16, i32be as i32, o8, o16be as o16, o32be as o32 + +logger = logging.getLogger(__name__) + +is_cid = re.compile(br"\w\w\w\w").match + + +_MAGIC = b"\211PNG\r\n\032\n" + + +_MODES = { + # supported bits/color combinations, and corresponding modes/rawmodes + # Greyscale + (1, 0): ("1", "1"), + (2, 0): ("L", "L;2"), + (4, 0): ("L", "L;4"), + (8, 0): ("L", "L"), + (16, 0): ("I", "I;16B"), + # Truecolour + (8, 2): ("RGB", "RGB"), + (16, 2): ("RGB", "RGB;16B"), + # Indexed-colour + (1, 3): ("P", "P;1"), + (2, 3): ("P", "P;2"), + (4, 3): ("P", "P;4"), + (8, 3): ("P", "P"), + # Greyscale with alpha + (8, 4): ("LA", "LA"), + (16, 4): ("RGBA", "LA;16B"), # LA;16B->LA not yet available + # Truecolour with alpha + (8, 6): ("RGBA", "RGBA"), + (16, 6): ("RGBA", "RGBA;16B"), +} + + +_simple_palette = re.compile(b"^\xff*\x00\xff*$") + +# Maximum decompressed size for a iTXt or zTXt chunk. +# Eliminates decompression bombs where compressed chunks can expand 1000x +MAX_TEXT_CHUNK = ImageFile.SAFEBLOCK +# Set the maximum total text chunk size. +MAX_TEXT_MEMORY = 64 * MAX_TEXT_CHUNK + + +# APNG frame disposal modes +APNG_DISPOSE_OP_NONE = 0 +APNG_DISPOSE_OP_BACKGROUND = 1 +APNG_DISPOSE_OP_PREVIOUS = 2 + +# APNG frame blend modes +APNG_BLEND_OP_SOURCE = 0 +APNG_BLEND_OP_OVER = 1 + + +def _safe_zlib_decompress(s): + dobj = zlib.decompressobj() + plaintext = dobj.decompress(s, MAX_TEXT_CHUNK) + if dobj.unconsumed_tail: + raise ValueError("Decompressed Data Too Large") + return plaintext + + +def _crc32(data, seed=0): + return zlib.crc32(data, seed) & 0xFFFFFFFF + + +# -------------------------------------------------------------------- +# Support classes. Suitable for PNG and related formats like MNG etc. + + +class ChunkStream: + def __init__(self, fp): + + self.fp = fp + self.queue = [] + + def read(self): + """Fetch a new chunk. Returns header information.""" + cid = None + + if self.queue: + cid, pos, length = self.queue.pop() + self.fp.seek(pos) + else: + s = self.fp.read(8) + cid = s[4:] + pos = self.fp.tell() + length = i32(s) + + if not is_cid(cid): + if not ImageFile.LOAD_TRUNCATED_IMAGES: + raise SyntaxError("broken PNG file (chunk %s)" % repr(cid)) + + return cid, pos, length + + def __enter__(self): + return self + + def __exit__(self, *args): + self.close() + + def close(self): + self.queue = self.crc = self.fp = None + + def push(self, cid, pos, length): + + self.queue.append((cid, pos, length)) + + def call(self, cid, pos, length): + """Call the appropriate chunk handler""" + + logger.debug("STREAM %r %s %s", cid, pos, length) + return getattr(self, "chunk_" + cid.decode("ascii"))(pos, length) + + def crc(self, cid, data): + """Read and verify checksum""" + + # Skip CRC checks for ancillary chunks if allowed to load truncated + # images + # 5th byte of first char is 1 [specs, section 5.4] + if ImageFile.LOAD_TRUNCATED_IMAGES and (i8(cid[0]) >> 5 & 1): + self.crc_skip(cid, data) + return + + try: + crc1 = _crc32(data, _crc32(cid)) + crc2 = i32(self.fp.read(4)) + if crc1 != crc2: + raise SyntaxError("broken PNG file (bad header checksum in %r)" % cid) + except struct.error: + raise SyntaxError("broken PNG file (incomplete checksum in %r)" % cid) + + def crc_skip(self, cid, data): + """Read checksum. Used if the C module is not present""" + + self.fp.read(4) + + def verify(self, endchunk=b"IEND"): + + # Simple approach; just calculate checksum for all remaining + # blocks. Must be called directly after open. + + cids = [] + + while True: + try: + cid, pos, length = self.read() + except struct.error: + raise OSError("truncated PNG file") + + if cid == endchunk: + break + self.crc(cid, ImageFile._safe_read(self.fp, length)) + cids.append(cid) + + return cids + + +class iTXt(str): + """ + Subclass of string to allow iTXt chunks to look like strings while + keeping their extra information + + """ + + @staticmethod + def __new__(cls, text, lang=None, tkey=None): + """ + :param cls: the class to use when creating the instance + :param text: value for this key + :param lang: language code + :param tkey: UTF-8 version of the key name + """ + + self = str.__new__(cls, text) + self.lang = lang + self.tkey = tkey + return self + + +class PngInfo: + """ + PNG chunk container (for use with save(pnginfo=)) + + """ + + def __init__(self): + self.chunks = [] + + def add(self, cid, data): + """Appends an arbitrary chunk. Use with caution. + + :param cid: a byte string, 4 bytes long. + :param data: a byte string of the encoded data + + """ + + self.chunks.append((cid, data)) + + def add_itxt(self, key, value, lang="", tkey="", zip=False): + """Appends an iTXt chunk. + + :param key: latin-1 encodable text key name + :param value: value for this key + :param lang: language code + :param tkey: UTF-8 version of the key name + :param zip: compression flag + + """ + + if not isinstance(key, bytes): + key = key.encode("latin-1", "strict") + if not isinstance(value, bytes): + value = value.encode("utf-8", "strict") + if not isinstance(lang, bytes): + lang = lang.encode("utf-8", "strict") + if not isinstance(tkey, bytes): + tkey = tkey.encode("utf-8", "strict") + + if zip: + self.add( + b"iTXt", + key + b"\0\x01\0" + lang + b"\0" + tkey + b"\0" + zlib.compress(value), + ) + else: + self.add(b"iTXt", key + b"\0\0\0" + lang + b"\0" + tkey + b"\0" + value) + + def add_text(self, key, value, zip=False): + """Appends a text chunk. + + :param key: latin-1 encodable text key name + :param value: value for this key, text or an + :py:class:`PIL.PngImagePlugin.iTXt` instance + :param zip: compression flag + + """ + if isinstance(value, iTXt): + return self.add_itxt(key, value, value.lang, value.tkey, zip=zip) + + # The tEXt chunk stores latin-1 text + if not isinstance(value, bytes): + try: + value = value.encode("latin-1", "strict") + except UnicodeError: + return self.add_itxt(key, value, zip=zip) + + if not isinstance(key, bytes): + key = key.encode("latin-1", "strict") + + if zip: + self.add(b"zTXt", key + b"\0\0" + zlib.compress(value)) + else: + self.add(b"tEXt", key + b"\0" + value) + + +# -------------------------------------------------------------------- +# PNG image stream (IHDR/IEND) + + +class PngStream(ChunkStream): + def __init__(self, fp): + super().__init__(fp) + + # local copies of Image attributes + self.im_info = {} + self.im_text = {} + self.im_size = (0, 0) + self.im_mode = None + self.im_tile = None + self.im_palette = None + self.im_custom_mimetype = None + self.im_n_frames = None + self._seq_num = None + self.rewind_state = None + + self.text_memory = 0 + + def check_text_memory(self, chunklen): + self.text_memory += chunklen + if self.text_memory > MAX_TEXT_MEMORY: + raise ValueError( + "Too much memory used in text chunks: %s>MAX_TEXT_MEMORY" + % self.text_memory + ) + + def save_rewind(self): + self.rewind_state = { + "info": self.im_info.copy(), + "tile": self.im_tile, + "seq_num": self._seq_num, + } + + def rewind(self): + self.im_info = self.rewind_state["info"] + self.im_tile = self.rewind_state["tile"] + self._seq_num = self.rewind_state["seq_num"] + + def chunk_iCCP(self, pos, length): + + # ICC profile + s = ImageFile._safe_read(self.fp, length) + # according to PNG spec, the iCCP chunk contains: + # Profile name 1-79 bytes (character string) + # Null separator 1 byte (null character) + # Compression method 1 byte (0) + # Compressed profile n bytes (zlib with deflate compression) + i = s.find(b"\0") + logger.debug("iCCP profile name %r", s[:i]) + logger.debug("Compression method %s", i8(s[i])) + comp_method = i8(s[i]) + if comp_method != 0: + raise SyntaxError( + "Unknown compression method %s in iCCP chunk" % comp_method + ) + try: + icc_profile = _safe_zlib_decompress(s[i + 2 :]) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + icc_profile = None + else: + raise + except zlib.error: + icc_profile = None # FIXME + self.im_info["icc_profile"] = icc_profile + return s + + def chunk_IHDR(self, pos, length): + + # image header + s = ImageFile._safe_read(self.fp, length) + self.im_size = i32(s), i32(s[4:]) + try: + self.im_mode, self.im_rawmode = _MODES[(i8(s[8]), i8(s[9]))] + except Exception: + pass + if i8(s[12]): + self.im_info["interlace"] = 1 + if i8(s[11]): + raise SyntaxError("unknown filter category") + return s + + def chunk_IDAT(self, pos, length): + + # image data + if "bbox" in self.im_info: + tile = [("zip", self.im_info["bbox"], pos, self.im_rawmode)] + else: + if self.im_n_frames is not None: + self.im_info["default_image"] = True + tile = [("zip", (0, 0) + self.im_size, pos, self.im_rawmode)] + self.im_tile = tile + self.im_idat = length + raise EOFError + + def chunk_IEND(self, pos, length): + + # end of PNG image + raise EOFError + + def chunk_PLTE(self, pos, length): + + # palette + s = ImageFile._safe_read(self.fp, length) + if self.im_mode == "P": + self.im_palette = "RGB", s + return s + + def chunk_tRNS(self, pos, length): + + # transparency + s = ImageFile._safe_read(self.fp, length) + if self.im_mode == "P": + if _simple_palette.match(s): + # tRNS contains only one full-transparent entry, + # other entries are full opaque + i = s.find(b"\0") + if i >= 0: + self.im_info["transparency"] = i + else: + # otherwise, we have a byte string with one alpha value + # for each palette entry + self.im_info["transparency"] = s + elif self.im_mode in ("1", "L", "I"): + self.im_info["transparency"] = i16(s) + elif self.im_mode == "RGB": + self.im_info["transparency"] = i16(s), i16(s[2:]), i16(s[4:]) + return s + + def chunk_gAMA(self, pos, length): + # gamma setting + s = ImageFile._safe_read(self.fp, length) + self.im_info["gamma"] = i32(s) / 100000.0 + return s + + def chunk_cHRM(self, pos, length): + # chromaticity, 8 unsigned ints, actual value is scaled by 100,000 + # WP x,y, Red x,y, Green x,y Blue x,y + + s = ImageFile._safe_read(self.fp, length) + raw_vals = struct.unpack(">%dI" % (len(s) // 4), s) + self.im_info["chromaticity"] = tuple(elt / 100000.0 for elt in raw_vals) + return s + + def chunk_sRGB(self, pos, length): + # srgb rendering intent, 1 byte + # 0 perceptual + # 1 relative colorimetric + # 2 saturation + # 3 absolute colorimetric + + s = ImageFile._safe_read(self.fp, length) + self.im_info["srgb"] = i8(s) + return s + + def chunk_pHYs(self, pos, length): + + # pixels per unit + s = ImageFile._safe_read(self.fp, length) + px, py = i32(s), i32(s[4:]) + unit = i8(s[8]) + if unit == 1: # meter + dpi = int(px * 0.0254 + 0.5), int(py * 0.0254 + 0.5) + self.im_info["dpi"] = dpi + elif unit == 0: + self.im_info["aspect"] = px, py + return s + + def chunk_tEXt(self, pos, length): + + # text + s = ImageFile._safe_read(self.fp, length) + try: + k, v = s.split(b"\0", 1) + except ValueError: + # fallback for broken tEXt tags + k = s + v = b"" + if k: + k = k.decode("latin-1", "strict") + v = v.decode("latin-1", "replace") + + self.im_info[k] = self.im_text[k] = v + self.check_text_memory(len(v)) + + return s + + def chunk_zTXt(self, pos, length): + + # compressed text + s = ImageFile._safe_read(self.fp, length) + try: + k, v = s.split(b"\0", 1) + except ValueError: + k = s + v = b"" + if v: + comp_method = i8(v[0]) + else: + comp_method = 0 + if comp_method != 0: + raise SyntaxError( + "Unknown compression method %s in zTXt chunk" % comp_method + ) + try: + v = _safe_zlib_decompress(v[1:]) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + v = b"" + else: + raise + except zlib.error: + v = b"" + + if k: + k = k.decode("latin-1", "strict") + v = v.decode("latin-1", "replace") + + self.im_info[k] = self.im_text[k] = v + self.check_text_memory(len(v)) + + return s + + def chunk_iTXt(self, pos, length): + + # international text + r = s = ImageFile._safe_read(self.fp, length) + try: + k, r = r.split(b"\0", 1) + except ValueError: + return s + if len(r) < 2: + return s + cf, cm, r = i8(r[0]), i8(r[1]), r[2:] + try: + lang, tk, v = r.split(b"\0", 2) + except ValueError: + return s + if cf != 0: + if cm == 0: + try: + v = _safe_zlib_decompress(v) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + else: + raise + except zlib.error: + return s + else: + return s + try: + k = k.decode("latin-1", "strict") + lang = lang.decode("utf-8", "strict") + tk = tk.decode("utf-8", "strict") + v = v.decode("utf-8", "strict") + except UnicodeError: + return s + + self.im_info[k] = self.im_text[k] = iTXt(v, lang, tk) + self.check_text_memory(len(v)) + + return s + + def chunk_eXIf(self, pos, length): + s = ImageFile._safe_read(self.fp, length) + self.im_info["exif"] = b"Exif\x00\x00" + s + return s + + # APNG chunks + def chunk_acTL(self, pos, length): + s = ImageFile._safe_read(self.fp, length) + if self.im_n_frames is not None: + self.im_n_frames = None + warnings.warn("Invalid APNG, will use default PNG image if possible") + return s + n_frames = i32(s) + if n_frames == 0 or n_frames > 0x80000000: + warnings.warn("Invalid APNG, will use default PNG image if possible") + return s + self.im_n_frames = n_frames + self.im_info["loop"] = i32(s[4:]) + self.im_custom_mimetype = "image/apng" + return s + + def chunk_fcTL(self, pos, length): + s = ImageFile._safe_read(self.fp, length) + seq = i32(s) + if (self._seq_num is None and seq != 0) or ( + self._seq_num is not None and self._seq_num != seq - 1 + ): + raise SyntaxError("APNG contains frame sequence errors") + self._seq_num = seq + width, height = i32(s[4:]), i32(s[8:]) + px, py = i32(s[12:]), i32(s[16:]) + im_w, im_h = self.im_size + if px + width > im_w or py + height > im_h: + raise SyntaxError("APNG contains invalid frames") + self.im_info["bbox"] = (px, py, px + width, py + height) + delay_num, delay_den = i16(s[20:]), i16(s[22:]) + if delay_den == 0: + delay_den = 100 + self.im_info["duration"] = float(delay_num) / float(delay_den) * 1000 + self.im_info["disposal"] = i8(s[24]) + self.im_info["blend"] = i8(s[25]) + return s + + def chunk_fdAT(self, pos, length): + s = ImageFile._safe_read(self.fp, 4) + seq = i32(s) + if self._seq_num != seq - 1: + raise SyntaxError("APNG contains frame sequence errors") + self._seq_num = seq + return self.chunk_IDAT(pos + 4, length - 4) + + +# -------------------------------------------------------------------- +# PNG reader + + +def _accept(prefix): + return prefix[:8] == _MAGIC + + +## +# Image plugin for PNG images. + + +class PngImageFile(ImageFile.ImageFile): + + format = "PNG" + format_description = "Portable network graphics" + + def _open(self): + + if self.fp.read(8) != _MAGIC: + raise SyntaxError("not a PNG file") + self.__fp = self.fp + self.__frame = 0 + + # + # Parse headers up to the first IDAT or fDAT chunk + + self.png = PngStream(self.fp) + + while True: + + # + # get next chunk + + cid, pos, length = self.png.read() + + try: + s = self.png.call(cid, pos, length) + except EOFError: + break + except AttributeError: + logger.debug("%r %s %s (unknown)", cid, pos, length) + s = ImageFile._safe_read(self.fp, length) + + self.png.crc(cid, s) + + # + # Copy relevant attributes from the PngStream. An alternative + # would be to let the PngStream class modify these attributes + # directly, but that introduces circular references which are + # difficult to break if things go wrong in the decoder... + # (believe me, I've tried ;-) + + self.mode = self.png.im_mode + self._size = self.png.im_size + self.info = self.png.im_info + self._text = None + self.tile = self.png.im_tile + self.custom_mimetype = self.png.im_custom_mimetype + self.n_frames = self.png.im_n_frames or 1 + self.default_image = self.info.get("default_image", False) + + if self.png.im_palette: + rawmode, data = self.png.im_palette + self.palette = ImagePalette.raw(rawmode, data) + + if cid == b"fdAT": + self.__prepare_idat = length - 4 + else: + self.__prepare_idat = length # used by load_prepare() + + if self.png.im_n_frames is not None: + self._close_exclusive_fp_after_loading = False + self.png.save_rewind() + self.__rewind_idat = self.__prepare_idat + self.__rewind = self.__fp.tell() + if self.default_image: + # IDAT chunk contains default image and not first animation frame + self.n_frames += 1 + self._seek(0) + self.is_animated = self.n_frames > 1 + + @property + def text(self): + # experimental + if self._text is None: + # iTxt, tEXt and zTXt chunks may appear at the end of the file + # So load the file to ensure that they are read + if self.is_animated: + frame = self.__frame + # for APNG, seek to the final frame before loading + self.seek(self.n_frames - 1) + self.load() + if self.is_animated: + self.seek(frame) + return self._text + + def verify(self): + """Verify PNG file""" + + if self.fp is None: + raise RuntimeError("verify must be called directly after open") + + # back up to beginning of IDAT block + self.fp.seek(self.tile[0][2] - 8) + + self.png.verify() + self.png.close() + + if self._exclusive_fp: + self.fp.close() + self.fp = None + + def seek(self, frame): + if not self._seek_check(frame): + return + if frame < self.__frame: + self._seek(0, True) + + last_frame = self.__frame + for f in range(self.__frame + 1, frame + 1): + try: + self._seek(f) + except EOFError: + self.seek(last_frame) + raise EOFError("no more images in APNG file") + + def _seek(self, frame, rewind=False): + if frame == 0: + if rewind: + self.__fp.seek(self.__rewind) + self.png.rewind() + self.__prepare_idat = self.__rewind_idat + self.im = None + if self.pyaccess: + self.pyaccess = None + self.info = self.png.im_info + self.tile = self.png.im_tile + self.fp = self.__fp + self._prev_im = None + self.dispose = None + self.default_image = self.info.get("default_image", False) + self.dispose_op = self.info.get("disposal") + self.blend_op = self.info.get("blend") + self.dispose_extent = self.info.get("bbox") + self.__frame = 0 + return + else: + if frame != self.__frame + 1: + raise ValueError("cannot seek to frame %d" % frame) + + # ensure previous frame was loaded + self.load() + + self.fp = self.__fp + + # advance to the next frame + if self.__prepare_idat: + ImageFile._safe_read(self.fp, self.__prepare_idat) + self.__prepare_idat = 0 + frame_start = False + while True: + self.fp.read(4) # CRC + + try: + cid, pos, length = self.png.read() + except (struct.error, SyntaxError): + break + + if cid == b"IEND": + raise EOFError("No more images in APNG file") + if cid == b"fcTL": + if frame_start: + # there must be at least one fdAT chunk between fcTL chunks + raise SyntaxError("APNG missing frame data") + frame_start = True + + try: + self.png.call(cid, pos, length) + except UnicodeDecodeError: + break + except EOFError: + if cid == b"fdAT": + length -= 4 + if frame_start: + self.__prepare_idat = length + break + ImageFile._safe_read(self.fp, length) + except AttributeError: + logger.debug("%r %s %s (unknown)", cid, pos, length) + ImageFile._safe_read(self.fp, length) + + self.__frame = frame + self.tile = self.png.im_tile + self.dispose_op = self.info.get("disposal") + self.blend_op = self.info.get("blend") + self.dispose_extent = self.info.get("bbox") + + if not self.tile: + raise EOFError + + def tell(self): + return self.__frame + + def load_prepare(self): + """internal: prepare to read PNG file""" + + if self.info.get("interlace"): + self.decoderconfig = self.decoderconfig + (1,) + + self.__idat = self.__prepare_idat # used by load_read() + ImageFile.ImageFile.load_prepare(self) + + def load_read(self, read_bytes): + """internal: read more image data""" + + while self.__idat == 0: + # end of chunk, skip forward to next one + + self.fp.read(4) # CRC + + cid, pos, length = self.png.read() + + if cid not in [b"IDAT", b"DDAT", b"fdAT"]: + self.png.push(cid, pos, length) + return b"" + + if cid == b"fdAT": + try: + self.png.call(cid, pos, length) + except EOFError: + pass + self.__idat = length - 4 # sequence_num has already been read + else: + self.__idat = length # empty chunks are allowed + + # read more data from this chunk + if read_bytes <= 0: + read_bytes = self.__idat + else: + read_bytes = min(read_bytes, self.__idat) + + self.__idat = self.__idat - read_bytes + + return self.fp.read(read_bytes) + + def load_end(self): + """internal: finished reading image data""" + while True: + self.fp.read(4) # CRC + + try: + cid, pos, length = self.png.read() + except (struct.error, SyntaxError): + break + + if cid == b"IEND": + break + elif cid == b"fcTL" and self.is_animated: + # start of the next frame, stop reading + self.__prepare_idat = 0 + self.png.push(cid, pos, length) + break + + try: + self.png.call(cid, pos, length) + except UnicodeDecodeError: + break + except EOFError: + if cid == b"fdAT": + length -= 4 + ImageFile._safe_read(self.fp, length) + except AttributeError: + logger.debug("%r %s %s (unknown)", cid, pos, length) + ImageFile._safe_read(self.fp, length) + self._text = self.png.im_text + if not self.is_animated: + self.png.close() + self.png = None + else: + # setup frame disposal (actual disposal done when needed in _seek()) + if self._prev_im is None and self.dispose_op == APNG_DISPOSE_OP_PREVIOUS: + self.dispose_op = APNG_DISPOSE_OP_BACKGROUND + + if self.dispose_op == APNG_DISPOSE_OP_PREVIOUS: + dispose = self._prev_im.copy() + dispose = self._crop(dispose, self.dispose_extent) + elif self.dispose_op == APNG_DISPOSE_OP_BACKGROUND: + dispose = Image.core.fill("RGBA", self.size, (0, 0, 0, 0)) + dispose = self._crop(dispose, self.dispose_extent) + else: + dispose = None + + if self._prev_im and self.blend_op == APNG_BLEND_OP_OVER: + updated = self._crop(self.im, self.dispose_extent) + self._prev_im.paste( + updated, self.dispose_extent, updated.convert("RGBA") + ) + self.im = self._prev_im + if self.pyaccess: + self.pyaccess = None + self._prev_im = self.im.copy() + + if dispose: + self._prev_im.paste(dispose, self.dispose_extent) + + def _getexif(self): + if "exif" not in self.info: + self.load() + if "exif" not in self.info and "Raw profile type exif" not in self.info: + return None + return dict(self.getexif()) + + def getexif(self): + if "exif" not in self.info: + self.load() + + if self._exif is None: + self._exif = Image.Exif() + + exif_info = self.info.get("exif") + if exif_info is None and "Raw profile type exif" in self.info: + exif_info = bytes.fromhex( + "".join(self.info["Raw profile type exif"].split("\n")[3:]) + ) + self._exif.load(exif_info) + return self._exif + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +# -------------------------------------------------------------------- +# PNG writer + +_OUTMODES = { + # supported PIL modes, and corresponding rawmodes/bits/color combinations + "1": ("1", b"\x01\x00"), + "L;1": ("L;1", b"\x01\x00"), + "L;2": ("L;2", b"\x02\x00"), + "L;4": ("L;4", b"\x04\x00"), + "L": ("L", b"\x08\x00"), + "LA": ("LA", b"\x08\x04"), + "I": ("I;16B", b"\x10\x00"), + "I;16": ("I;16B", b"\x10\x00"), + "P;1": ("P;1", b"\x01\x03"), + "P;2": ("P;2", b"\x02\x03"), + "P;4": ("P;4", b"\x04\x03"), + "P": ("P", b"\x08\x03"), + "RGB": ("RGB", b"\x08\x02"), + "RGBA": ("RGBA", b"\x08\x06"), +} + + +def putchunk(fp, cid, *data): + """Write a PNG chunk (including CRC field)""" + + data = b"".join(data) + + fp.write(o32(len(data)) + cid) + fp.write(data) + crc = _crc32(data, _crc32(cid)) + fp.write(o32(crc)) + + +class _idat: + # wrap output from the encoder in IDAT chunks + + def __init__(self, fp, chunk): + self.fp = fp + self.chunk = chunk + + def write(self, data): + self.chunk(self.fp, b"IDAT", data) + + +class _fdat: + # wrap encoder output in fdAT chunks + + def __init__(self, fp, chunk, seq_num): + self.fp = fp + self.chunk = chunk + self.seq_num = seq_num + + def write(self, data): + self.chunk(self.fp, b"fdAT", o32(self.seq_num), data) + self.seq_num += 1 + + +def _write_multiple_frames(im, fp, chunk, rawmode): + default_image = im.encoderinfo.get("default_image", im.info.get("default_image")) + duration = im.encoderinfo.get("duration", im.info.get("duration", 0)) + loop = im.encoderinfo.get("loop", im.info.get("loop", 0)) + disposal = im.encoderinfo.get("disposal", im.info.get("disposal")) + blend = im.encoderinfo.get("blend", im.info.get("blend")) + + if default_image: + chain = itertools.chain(im.encoderinfo.get("append_images", [])) + else: + chain = itertools.chain([im], im.encoderinfo.get("append_images", [])) + + im_frames = [] + frame_count = 0 + for im_seq in chain: + for im_frame in ImageSequence.Iterator(im_seq): + im_frame = im_frame.copy() + if im_frame.mode != im.mode: + if im.mode == "P": + im_frame = im_frame.convert(im.mode, palette=im.palette) + else: + im_frame = im_frame.convert(im.mode) + encoderinfo = im.encoderinfo.copy() + if isinstance(duration, (list, tuple)): + encoderinfo["duration"] = duration[frame_count] + if isinstance(disposal, (list, tuple)): + encoderinfo["disposal"] = disposal[frame_count] + if isinstance(blend, (list, tuple)): + encoderinfo["blend"] = blend[frame_count] + frame_count += 1 + + if im_frames: + previous = im_frames[-1] + prev_disposal = previous["encoderinfo"].get("disposal") + prev_blend = previous["encoderinfo"].get("blend") + if prev_disposal == APNG_DISPOSE_OP_PREVIOUS and len(im_frames) < 2: + prev_disposal == APNG_DISPOSE_OP_BACKGROUND + + if prev_disposal == APNG_DISPOSE_OP_BACKGROUND: + base_im = previous["im"] + dispose = Image.core.fill("RGBA", im.size, (0, 0, 0, 0)) + bbox = previous["bbox"] + if bbox: + dispose = dispose.crop(bbox) + else: + bbox = (0, 0) + im.size + base_im.paste(dispose, bbox) + elif prev_disposal == APNG_DISPOSE_OP_PREVIOUS: + base_im = im_frames[-2]["im"] + else: + base_im = previous["im"] + delta = ImageChops.subtract_modulo( + im_frame.convert("RGB"), base_im.convert("RGB") + ) + bbox = delta.getbbox() + if ( + not bbox + and prev_disposal == encoderinfo.get("disposal") + and prev_blend == encoderinfo.get("blend") + ): + duration = encoderinfo.get("duration", 0) + if duration: + if "duration" in previous["encoderinfo"]: + previous["encoderinfo"]["duration"] += duration + else: + previous["encoderinfo"]["duration"] = duration + continue + else: + bbox = None + im_frames.append({"im": im_frame, "bbox": bbox, "encoderinfo": encoderinfo}) + + # animation control + chunk( + fp, b"acTL", o32(len(im_frames)), o32(loop), # 0: num_frames # 4: num_plays + ) + + # default image IDAT (if it exists) + if default_image: + ImageFile._save(im, _idat(fp, chunk), [("zip", (0, 0) + im.size, 0, rawmode)]) + + seq_num = 0 + for frame, frame_data in enumerate(im_frames): + im_frame = frame_data["im"] + if not frame_data["bbox"]: + bbox = (0, 0) + im_frame.size + else: + bbox = frame_data["bbox"] + im_frame = im_frame.crop(bbox) + size = im_frame.size + duration = int(round(frame_data["encoderinfo"].get("duration", 0))) + disposal = frame_data["encoderinfo"].get("disposal", APNG_DISPOSE_OP_NONE) + blend = frame_data["encoderinfo"].get("blend", APNG_BLEND_OP_SOURCE) + # frame control + chunk( + fp, + b"fcTL", + o32(seq_num), # sequence_number + o32(size[0]), # width + o32(size[1]), # height + o32(bbox[0]), # x_offset + o32(bbox[1]), # y_offset + o16(duration), # delay_numerator + o16(1000), # delay_denominator + o8(disposal), # dispose_op + o8(blend), # blend_op + ) + seq_num += 1 + # frame data + if frame == 0 and not default_image: + # first frame must be in IDAT chunks for backwards compatibility + ImageFile._save( + im_frame, + _idat(fp, chunk), + [("zip", (0, 0) + im_frame.size, 0, rawmode)], + ) + else: + fdat_chunks = _fdat(fp, chunk, seq_num) + ImageFile._save( + im_frame, fdat_chunks, [("zip", (0, 0) + im_frame.size, 0, rawmode)], + ) + seq_num = fdat_chunks.seq_num + + +def _save_all(im, fp, filename): + _save(im, fp, filename, save_all=True) + + +def _save(im, fp, filename, chunk=putchunk, save_all=False): + # save an image to disk (called by the save method) + + mode = im.mode + + if mode == "P": + + # + # attempt to minimize storage requirements for palette images + if "bits" in im.encoderinfo: + # number of bits specified by user + colors = 1 << im.encoderinfo["bits"] + else: + # check palette contents + if im.palette: + colors = max(min(len(im.palette.getdata()[1]) // 3, 256), 2) + else: + colors = 256 + + if colors <= 2: + bits = 1 + elif colors <= 4: + bits = 2 + elif colors <= 16: + bits = 4 + else: + bits = 8 + if bits != 8: + mode = "%s;%d" % (mode, bits) + + # encoder options + im.encoderconfig = ( + im.encoderinfo.get("optimize", False), + im.encoderinfo.get("compress_level", -1), + im.encoderinfo.get("compress_type", -1), + im.encoderinfo.get("dictionary", b""), + ) + + # get the corresponding PNG mode + try: + rawmode, mode = _OUTMODES[mode] + except KeyError: + raise OSError("cannot write mode %s as PNG" % mode) + + # + # write minimal PNG file + + fp.write(_MAGIC) + + chunk( + fp, + b"IHDR", + o32(im.size[0]), # 0: size + o32(im.size[1]), + mode, # 8: depth/type + b"\0", # 10: compression + b"\0", # 11: filter category + b"\0", # 12: interlace flag + ) + + chunks = [b"cHRM", b"gAMA", b"sBIT", b"sRGB", b"tIME"] + + icc = im.encoderinfo.get("icc_profile", im.info.get("icc_profile")) + if icc: + # ICC profile + # according to PNG spec, the iCCP chunk contains: + # Profile name 1-79 bytes (character string) + # Null separator 1 byte (null character) + # Compression method 1 byte (0) + # Compressed profile n bytes (zlib with deflate compression) + name = b"ICC Profile" + data = name + b"\0\0" + zlib.compress(icc) + chunk(fp, b"iCCP", data) + + # You must either have sRGB or iCCP. + # Disallow sRGB chunks when an iCCP-chunk has been emitted. + chunks.remove(b"sRGB") + + info = im.encoderinfo.get("pnginfo") + if info: + chunks_multiple_allowed = [b"sPLT", b"iTXt", b"tEXt", b"zTXt"] + for cid, data in info.chunks: + if cid in chunks: + chunks.remove(cid) + chunk(fp, cid, data) + elif cid in chunks_multiple_allowed: + chunk(fp, cid, data) + + if im.mode == "P": + palette_byte_number = (2 ** bits) * 3 + palette_bytes = im.im.getpalette("RGB")[:palette_byte_number] + while len(palette_bytes) < palette_byte_number: + palette_bytes += b"\0" + chunk(fp, b"PLTE", palette_bytes) + + transparency = im.encoderinfo.get("transparency", im.info.get("transparency", None)) + + if transparency or transparency == 0: + if im.mode == "P": + # limit to actual palette size + alpha_bytes = 2 ** bits + if isinstance(transparency, bytes): + chunk(fp, b"tRNS", transparency[:alpha_bytes]) + else: + transparency = max(0, min(255, transparency)) + alpha = b"\xFF" * transparency + b"\0" + chunk(fp, b"tRNS", alpha[:alpha_bytes]) + elif im.mode in ("1", "L", "I"): + transparency = max(0, min(65535, transparency)) + chunk(fp, b"tRNS", o16(transparency)) + elif im.mode == "RGB": + red, green, blue = transparency + chunk(fp, b"tRNS", o16(red) + o16(green) + o16(blue)) + else: + if "transparency" in im.encoderinfo: + # don't bother with transparency if it's an RGBA + # and it's in the info dict. It's probably just stale. + raise OSError("cannot use transparency for this mode") + else: + if im.mode == "P" and im.im.getpalettemode() == "RGBA": + alpha = im.im.getpalette("RGBA", "A") + alpha_bytes = 2 ** bits + chunk(fp, b"tRNS", alpha[:alpha_bytes]) + + dpi = im.encoderinfo.get("dpi") + if dpi: + chunk( + fp, + b"pHYs", + o32(int(dpi[0] / 0.0254 + 0.5)), + o32(int(dpi[1] / 0.0254 + 0.5)), + b"\x01", + ) + + if info: + chunks = [b"bKGD", b"hIST"] + for cid, data in info.chunks: + if cid in chunks: + chunks.remove(cid) + chunk(fp, cid, data) + + exif = im.encoderinfo.get("exif", im.info.get("exif")) + if exif: + if isinstance(exif, Image.Exif): + exif = exif.tobytes(8) + if exif.startswith(b"Exif\x00\x00"): + exif = exif[6:] + chunk(fp, b"eXIf", exif) + + if save_all: + _write_multiple_frames(im, fp, chunk, rawmode) + else: + ImageFile._save(im, _idat(fp, chunk), [("zip", (0, 0) + im.size, 0, rawmode)]) + + chunk(fp, b"IEND", b"") + + if hasattr(fp, "flush"): + fp.flush() + + +# -------------------------------------------------------------------- +# PNG chunk converter + + +def getchunks(im, **params): + """Return a list of PNG chunks representing this image.""" + + class collector: + data = [] + + def write(self, data): + pass + + def append(self, chunk): + self.data.append(chunk) + + def append(fp, cid, *data): + data = b"".join(data) + crc = o32(_crc32(data, _crc32(cid))) + fp.append((cid, data, crc)) + + fp = collector() + + try: + im.encoderinfo = params + _save(im, fp, None, append) + finally: + del im.encoderinfo + + return fp.data + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(PngImageFile.format, PngImageFile, _accept) +Image.register_save(PngImageFile.format, _save) +Image.register_save_all(PngImageFile.format, _save_all) + +Image.register_extensions(PngImageFile.format, [".png", ".apng"]) + +Image.register_mime(PngImageFile.format, "image/png") diff --git a/venv/Lib/site-packages/PIL/PpmImagePlugin.py b/venv/Lib/site-packages/PIL/PpmImagePlugin.py new file mode 100644 index 0000000..35a77ba --- /dev/null +++ b/venv/Lib/site-packages/PIL/PpmImagePlugin.py @@ -0,0 +1,164 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PPM support for PIL +# +# History: +# 96-03-24 fl Created +# 98-03-06 fl Write RGBA images (as RGB, that is) +# +# Copyright (c) Secret Labs AB 1997-98. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + + +from . import Image, ImageFile + +# +# -------------------------------------------------------------------- + +b_whitespace = b"\x20\x09\x0a\x0b\x0c\x0d" + +MODES = { + # standard + b"P4": "1", + b"P5": "L", + b"P6": "RGB", + # extensions + b"P0CMYK": "CMYK", + # PIL extensions (for test purposes only) + b"PyP": "P", + b"PyRGBA": "RGBA", + b"PyCMYK": "CMYK", +} + + +def _accept(prefix): + return prefix[0:1] == b"P" and prefix[1] in b"0456y" + + +## +# Image plugin for PBM, PGM, and PPM images. + + +class PpmImageFile(ImageFile.ImageFile): + + format = "PPM" + format_description = "Pbmplus image" + + def _token(self, s=b""): + while True: # read until next whitespace + c = self.fp.read(1) + if not c or c in b_whitespace: + break + if c > b"\x79": + raise ValueError("Expected ASCII value, found binary") + s = s + c + if len(s) > 9: + raise ValueError("Expected int, got > 9 digits") + return s + + def _open(self): + + # check magic + s = self.fp.read(1) + if s != b"P": + raise SyntaxError("not a PPM file") + magic_number = self._token(s) + mode = MODES[magic_number] + + self.custom_mimetype = { + b"P4": "image/x-portable-bitmap", + b"P5": "image/x-portable-graymap", + b"P6": "image/x-portable-pixmap", + }.get(magic_number) + + if mode == "1": + self.mode = "1" + rawmode = "1;I" + else: + self.mode = rawmode = mode + + for ix in range(3): + while True: + while True: + s = self.fp.read(1) + if s not in b_whitespace: + break + if s == b"": + raise ValueError("File does not extend beyond magic number") + if s != b"#": + break + s = self.fp.readline() + s = int(self._token(s)) + if ix == 0: + xsize = s + elif ix == 1: + ysize = s + if mode == "1": + break + elif ix == 2: + # maxgrey + if s > 255: + if not mode == "L": + raise ValueError("Too many colors for band: %s" % s) + if s < 2 ** 16: + self.mode = "I" + rawmode = "I;16B" + else: + self.mode = "I" + rawmode = "I;32B" + + self._size = xsize, ysize + self.tile = [("raw", (0, 0, xsize, ysize), self.fp.tell(), (rawmode, 0, 1))] + + +# +# -------------------------------------------------------------------- + + +def _save(im, fp, filename): + if im.mode == "1": + rawmode, head = "1;I", b"P4" + elif im.mode == "L": + rawmode, head = "L", b"P5" + elif im.mode == "I": + if im.getextrema()[1] < 2 ** 16: + rawmode, head = "I;16B", b"P5" + else: + rawmode, head = "I;32B", b"P5" + elif im.mode == "RGB": + rawmode, head = "RGB", b"P6" + elif im.mode == "RGBA": + rawmode, head = "RGB", b"P6" + else: + raise OSError("cannot write mode %s as PPM" % im.mode) + fp.write(head + ("\n%d %d\n" % im.size).encode("ascii")) + if head == b"P6": + fp.write(b"255\n") + if head == b"P5": + if rawmode == "L": + fp.write(b"255\n") + elif rawmode == "I;16B": + fp.write(b"65535\n") + elif rawmode == "I;32B": + fp.write(b"2147483648\n") + ImageFile._save(im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, 0, 1))]) + + # ALTERNATIVE: save via builtin debug function + # im._dump(filename) + + +# +# -------------------------------------------------------------------- + + +Image.register_open(PpmImageFile.format, PpmImageFile, _accept) +Image.register_save(PpmImageFile.format, _save) + +Image.register_extensions(PpmImageFile.format, [".pbm", ".pgm", ".ppm", ".pnm"]) + +Image.register_mime(PpmImageFile.format, "image/x-portable-anymap") diff --git a/venv/Lib/site-packages/PIL/PsdImagePlugin.py b/venv/Lib/site-packages/PIL/PsdImagePlugin.py new file mode 100644 index 0000000..cceb85c --- /dev/null +++ b/venv/Lib/site-packages/PIL/PsdImagePlugin.py @@ -0,0 +1,315 @@ +# +# The Python Imaging Library +# $Id$ +# +# Adobe PSD 2.5/3.0 file handling +# +# History: +# 1995-09-01 fl Created +# 1997-01-03 fl Read most PSD images +# 1997-01-18 fl Fixed P and CMYK support +# 2001-10-21 fl Added seek/tell support (for layers) +# +# Copyright (c) 1997-2001 by Secret Labs AB. +# Copyright (c) 1995-2001 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import io + +from . import Image, ImageFile, ImagePalette +from ._binary import i8, i16be as i16, i32be as i32 + +MODES = { + # (photoshop mode, bits) -> (pil mode, required channels) + (0, 1): ("1", 1), + (0, 8): ("L", 1), + (1, 8): ("L", 1), + (2, 8): ("P", 1), + (3, 8): ("RGB", 3), + (4, 8): ("CMYK", 4), + (7, 8): ("L", 1), # FIXME: multilayer + (8, 8): ("L", 1), # duotone + (9, 8): ("LAB", 3), +} + + +# --------------------------------------------------------------------. +# read PSD images + + +def _accept(prefix): + return prefix[:4] == b"8BPS" + + +## +# Image plugin for Photoshop images. + + +class PsdImageFile(ImageFile.ImageFile): + + format = "PSD" + format_description = "Adobe Photoshop" + _close_exclusive_fp_after_loading = False + + def _open(self): + + read = self.fp.read + + # + # header + + s = read(26) + if s[:4] != b"8BPS" or i16(s[4:]) != 1: + raise SyntaxError("not a PSD file") + + psd_bits = i16(s[22:]) + psd_channels = i16(s[12:]) + psd_mode = i16(s[24:]) + + mode, channels = MODES[(psd_mode, psd_bits)] + + if channels > psd_channels: + raise OSError("not enough channels") + + self.mode = mode + self._size = i32(s[18:]), i32(s[14:]) + + # + # color mode data + + size = i32(read(4)) + if size: + data = read(size) + if mode == "P" and size == 768: + self.palette = ImagePalette.raw("RGB;L", data) + + # + # image resources + + self.resources = [] + + size = i32(read(4)) + if size: + # load resources + end = self.fp.tell() + size + while self.fp.tell() < end: + read(4) # signature + id = i16(read(2)) + name = read(i8(read(1))) + if not (len(name) & 1): + read(1) # padding + data = read(i32(read(4))) + if len(data) & 1: + read(1) # padding + self.resources.append((id, name, data)) + if id == 1039: # ICC profile + self.info["icc_profile"] = data + + # + # layer and mask information + + self.layers = [] + + size = i32(read(4)) + if size: + end = self.fp.tell() + size + size = i32(read(4)) + if size: + self.layers = _layerinfo(self.fp) + self.fp.seek(end) + + # + # image descriptor + + self.tile = _maketile(self.fp, mode, (0, 0) + self.size, channels) + + # keep the file open + self.__fp = self.fp + self.frame = 1 + self._min_frame = 1 + + @property + def n_frames(self): + return len(self.layers) + + @property + def is_animated(self): + return len(self.layers) > 1 + + def seek(self, layer): + if not self._seek_check(layer): + return + + # seek to given layer (1..max) + try: + name, mode, bbox, tile = self.layers[layer - 1] + self.mode = mode + self.tile = tile + self.frame = layer + self.fp = self.__fp + return name, bbox + except IndexError: + raise EOFError("no such layer") + + def tell(self): + # return layer number (0=image, 1..max=layers) + return self.frame + + def load_prepare(self): + # create image memory if necessary + if not self.im or self.im.mode != self.mode or self.im.size != self.size: + self.im = Image.core.fill(self.mode, self.size, 0) + # create palette (optional) + if self.mode == "P": + Image.Image.load(self) + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +def _layerinfo(file): + # read layerinfo block + layers = [] + read = file.read + for i in range(abs(i16(read(2)))): + + # bounding box + y0 = i32(read(4)) + x0 = i32(read(4)) + y1 = i32(read(4)) + x1 = i32(read(4)) + + # image info + info = [] + mode = [] + types = list(range(i16(read(2)))) + if len(types) > 4: + continue + + for i in types: + type = i16(read(2)) + + if type == 65535: + m = "A" + else: + m = "RGBA"[type] + + mode.append(m) + size = i32(read(4)) + info.append((m, size)) + + # figure out the image mode + mode.sort() + if mode == ["R"]: + mode = "L" + elif mode == ["B", "G", "R"]: + mode = "RGB" + elif mode == ["A", "B", "G", "R"]: + mode = "RGBA" + else: + mode = None # unknown + + # skip over blend flags and extra information + read(12) # filler + name = "" + size = i32(read(4)) # length of the extra data field + combined = 0 + if size: + data_end = file.tell() + size + + length = i32(read(4)) + if length: + file.seek(length - 16, io.SEEK_CUR) + combined += length + 4 + + length = i32(read(4)) + if length: + file.seek(length, io.SEEK_CUR) + combined += length + 4 + + length = i8(read(1)) + if length: + # Don't know the proper encoding, + # Latin-1 should be a good guess + name = read(length).decode("latin-1", "replace") + combined += length + 1 + + file.seek(data_end) + layers.append((name, mode, (x0, y0, x1, y1))) + + # get tiles + i = 0 + for name, mode, bbox in layers: + tile = [] + for m in mode: + t = _maketile(file, m, bbox, 1) + if t: + tile.extend(t) + layers[i] = name, mode, bbox, tile + i += 1 + + return layers + + +def _maketile(file, mode, bbox, channels): + + tile = None + read = file.read + + compression = i16(read(2)) + + xsize = bbox[2] - bbox[0] + ysize = bbox[3] - bbox[1] + + offset = file.tell() + + if compression == 0: + # + # raw compression + tile = [] + for channel in range(channels): + layer = mode[channel] + if mode == "CMYK": + layer += ";I" + tile.append(("raw", bbox, offset, layer)) + offset = offset + xsize * ysize + + elif compression == 1: + # + # packbits compression + i = 0 + tile = [] + bytecount = read(channels * ysize * 2) + offset = file.tell() + for channel in range(channels): + layer = mode[channel] + if mode == "CMYK": + layer += ";I" + tile.append(("packbits", bbox, offset, layer)) + for y in range(ysize): + offset = offset + i16(bytecount[i : i + 2]) + i += 2 + + file.seek(offset) + + if offset & 1: + read(1) # padding + + return tile + + +# -------------------------------------------------------------------- +# registry + + +Image.register_open(PsdImageFile.format, PsdImageFile, _accept) + +Image.register_extension(PsdImageFile.format, ".psd") diff --git a/venv/Lib/site-packages/PIL/PyAccess.py b/venv/Lib/site-packages/PIL/PyAccess.py new file mode 100644 index 0000000..359a949 --- /dev/null +++ b/venv/Lib/site-packages/PIL/PyAccess.py @@ -0,0 +1,346 @@ +# +# The Python Imaging Library +# Pillow fork +# +# Python implementation of the PixelAccess Object +# +# Copyright (c) 1997-2009 by Secret Labs AB. All rights reserved. +# Copyright (c) 1995-2009 by Fredrik Lundh. +# Copyright (c) 2013 Eric Soroos +# +# See the README file for information on usage and redistribution +# + +# Notes: +# +# * Implements the pixel access object following Access. +# * Does not implement the line functions, as they don't appear to be used +# * Taking only the tuple form, which is used from python. +# * Fill.c uses the integer form, but it's still going to use the old +# Access.c implementation. +# + +import logging +import sys + +from cffi import FFI + +logger = logging.getLogger(__name__) + + +defs = """ +struct Pixel_RGBA { + unsigned char r,g,b,a; +}; +struct Pixel_I16 { + unsigned char l,r; +}; +""" +ffi = FFI() +ffi.cdef(defs) + + +class PyAccess: + def __init__(self, img, readonly=False): + vals = dict(img.im.unsafe_ptrs) + self.readonly = readonly + self.image8 = ffi.cast("unsigned char **", vals["image8"]) + self.image32 = ffi.cast("int **", vals["image32"]) + self.image = ffi.cast("unsigned char **", vals["image"]) + self.xsize, self.ysize = img.im.size + + # Keep pointer to im object to prevent dereferencing. + self._im = img.im + if self._im.mode == "P": + self._palette = img.palette + + # Debugging is polluting test traces, only useful here + # when hacking on PyAccess + # logger.debug("%s", vals) + self._post_init() + + def _post_init(self): + pass + + def __setitem__(self, xy, color): + """ + Modifies the pixel at x,y. The color is given as a single + numerical value for single band images, and a tuple for + multi-band images + + :param xy: The pixel coordinate, given as (x, y). See + :ref:`coordinate-system`. + :param color: The pixel value. + """ + if self.readonly: + raise ValueError("Attempt to putpixel a read only image") + (x, y) = xy + if x < 0: + x = self.xsize + x + if y < 0: + y = self.ysize + y + (x, y) = self.check_xy((x, y)) + + if ( + self._im.mode == "P" + and isinstance(color, (list, tuple)) + and len(color) in [3, 4] + ): + # RGB or RGBA value for a P image + color = self._palette.getcolor(color) + + return self.set_pixel(x, y, color) + + def __getitem__(self, xy): + """ + Returns the pixel at x,y. The pixel is returned as a single + value for single band images or a tuple for multiple band + images + + :param xy: The pixel coordinate, given as (x, y). See + :ref:`coordinate-system`. + :returns: a pixel value for single band images, a tuple of + pixel values for multiband images. + """ + (x, y) = xy + if x < 0: + x = self.xsize + x + if y < 0: + y = self.ysize + y + (x, y) = self.check_xy((x, y)) + return self.get_pixel(x, y) + + putpixel = __setitem__ + getpixel = __getitem__ + + def check_xy(self, xy): + (x, y) = xy + if not (0 <= x < self.xsize and 0 <= y < self.ysize): + raise ValueError("pixel location out of range") + return xy + + +class _PyAccess32_2(PyAccess): + """ PA, LA, stored in first and last bytes of a 32 bit word """ + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("struct Pixel_RGBA **", self.image32) + + def get_pixel(self, x, y): + pixel = self.pixels[y][x] + return (pixel.r, pixel.a) + + def set_pixel(self, x, y, color): + pixel = self.pixels[y][x] + # tuple + pixel.r = min(color[0], 255) + pixel.a = min(color[1], 255) + + +class _PyAccess32_3(PyAccess): + """ RGB and friends, stored in the first three bytes of a 32 bit word """ + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("struct Pixel_RGBA **", self.image32) + + def get_pixel(self, x, y): + pixel = self.pixels[y][x] + return (pixel.r, pixel.g, pixel.b) + + def set_pixel(self, x, y, color): + pixel = self.pixels[y][x] + # tuple + pixel.r = min(color[0], 255) + pixel.g = min(color[1], 255) + pixel.b = min(color[2], 255) + pixel.a = 255 + + +class _PyAccess32_4(PyAccess): + """ RGBA etc, all 4 bytes of a 32 bit word """ + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("struct Pixel_RGBA **", self.image32) + + def get_pixel(self, x, y): + pixel = self.pixels[y][x] + return (pixel.r, pixel.g, pixel.b, pixel.a) + + def set_pixel(self, x, y, color): + pixel = self.pixels[y][x] + # tuple + pixel.r = min(color[0], 255) + pixel.g = min(color[1], 255) + pixel.b = min(color[2], 255) + pixel.a = min(color[3], 255) + + +class _PyAccess8(PyAccess): + """ 1, L, P, 8 bit images stored as uint8 """ + + def _post_init(self, *args, **kwargs): + self.pixels = self.image8 + + def get_pixel(self, x, y): + return self.pixels[y][x] + + def set_pixel(self, x, y, color): + try: + # integer + self.pixels[y][x] = min(color, 255) + except TypeError: + # tuple + self.pixels[y][x] = min(color[0], 255) + + +class _PyAccessI16_N(PyAccess): + """ I;16 access, native bitendian without conversion """ + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("unsigned short **", self.image) + + def get_pixel(self, x, y): + return self.pixels[y][x] + + def set_pixel(self, x, y, color): + try: + # integer + self.pixels[y][x] = min(color, 65535) + except TypeError: + # tuple + self.pixels[y][x] = min(color[0], 65535) + + +class _PyAccessI16_L(PyAccess): + """ I;16L access, with conversion """ + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("struct Pixel_I16 **", self.image) + + def get_pixel(self, x, y): + pixel = self.pixels[y][x] + return pixel.l + pixel.r * 256 + + def set_pixel(self, x, y, color): + pixel = self.pixels[y][x] + try: + color = min(color, 65535) + except TypeError: + color = min(color[0], 65535) + + pixel.l = color & 0xFF # noqa: E741 + pixel.r = color >> 8 + + +class _PyAccessI16_B(PyAccess): + """ I;16B access, with conversion """ + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("struct Pixel_I16 **", self.image) + + def get_pixel(self, x, y): + pixel = self.pixels[y][x] + return pixel.l * 256 + pixel.r + + def set_pixel(self, x, y, color): + pixel = self.pixels[y][x] + try: + color = min(color, 65535) + except Exception: + color = min(color[0], 65535) + + pixel.l = color >> 8 # noqa: E741 + pixel.r = color & 0xFF + + +class _PyAccessI32_N(PyAccess): + """ Signed Int32 access, native endian """ + + def _post_init(self, *args, **kwargs): + self.pixels = self.image32 + + def get_pixel(self, x, y): + return self.pixels[y][x] + + def set_pixel(self, x, y, color): + self.pixels[y][x] = color + + +class _PyAccessI32_Swap(PyAccess): + """ I;32L/B access, with byteswapping conversion """ + + def _post_init(self, *args, **kwargs): + self.pixels = self.image32 + + def reverse(self, i): + orig = ffi.new("int *", i) + chars = ffi.cast("unsigned char *", orig) + chars[0], chars[1], chars[2], chars[3] = chars[3], chars[2], chars[1], chars[0] + return ffi.cast("int *", chars)[0] + + def get_pixel(self, x, y): + return self.reverse(self.pixels[y][x]) + + def set_pixel(self, x, y, color): + self.pixels[y][x] = self.reverse(color) + + +class _PyAccessF(PyAccess): + """ 32 bit float access """ + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("float **", self.image32) + + def get_pixel(self, x, y): + return self.pixels[y][x] + + def set_pixel(self, x, y, color): + try: + # not a tuple + self.pixels[y][x] = color + except TypeError: + # tuple + self.pixels[y][x] = color[0] + + +mode_map = { + "1": _PyAccess8, + "L": _PyAccess8, + "P": _PyAccess8, + "LA": _PyAccess32_2, + "La": _PyAccess32_2, + "PA": _PyAccess32_2, + "RGB": _PyAccess32_3, + "LAB": _PyAccess32_3, + "HSV": _PyAccess32_3, + "YCbCr": _PyAccess32_3, + "RGBA": _PyAccess32_4, + "RGBa": _PyAccess32_4, + "RGBX": _PyAccess32_4, + "CMYK": _PyAccess32_4, + "F": _PyAccessF, + "I": _PyAccessI32_N, +} + +if sys.byteorder == "little": + mode_map["I;16"] = _PyAccessI16_N + mode_map["I;16L"] = _PyAccessI16_N + mode_map["I;16B"] = _PyAccessI16_B + + mode_map["I;32L"] = _PyAccessI32_N + mode_map["I;32B"] = _PyAccessI32_Swap +else: + mode_map["I;16"] = _PyAccessI16_L + mode_map["I;16L"] = _PyAccessI16_L + mode_map["I;16B"] = _PyAccessI16_N + + mode_map["I;32L"] = _PyAccessI32_Swap + mode_map["I;32B"] = _PyAccessI32_N + + +def new(img, readonly=False): + access_type = mode_map.get(img.mode, None) + if not access_type: + logger.debug("PyAccess Not Implemented: %s", img.mode) + return None + return access_type(img, readonly) diff --git a/venv/Lib/site-packages/PIL/SgiImagePlugin.py b/venv/Lib/site-packages/PIL/SgiImagePlugin.py new file mode 100644 index 0000000..ddd3de3 --- /dev/null +++ b/venv/Lib/site-packages/PIL/SgiImagePlugin.py @@ -0,0 +1,231 @@ +# +# The Python Imaging Library. +# $Id$ +# +# SGI image file handling +# +# See "The SGI Image File Format (Draft version 0.97)", Paul Haeberli. +# +# +# +# History: +# 2017-22-07 mb Add RLE decompression +# 2016-16-10 mb Add save method without compression +# 1995-09-10 fl Created +# +# Copyright (c) 2016 by Mickael Bonfill. +# Copyright (c) 2008 by Karsten Hiddemann. +# Copyright (c) 1997 by Secret Labs AB. +# Copyright (c) 1995 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + + +import os +import struct + +from . import Image, ImageFile +from ._binary import i8, i16be as i16, o8 + + +def _accept(prefix): + return len(prefix) >= 2 and i16(prefix) == 474 + + +MODES = { + (1, 1, 1): "L", + (1, 2, 1): "L", + (2, 1, 1): "L;16B", + (2, 2, 1): "L;16B", + (1, 3, 3): "RGB", + (2, 3, 3): "RGB;16B", + (1, 3, 4): "RGBA", + (2, 3, 4): "RGBA;16B", +} + + +## +# Image plugin for SGI images. +class SgiImageFile(ImageFile.ImageFile): + + format = "SGI" + format_description = "SGI Image File Format" + + def _open(self): + + # HEAD + headlen = 512 + s = self.fp.read(headlen) + + # magic number : 474 + if i16(s) != 474: + raise ValueError("Not an SGI image file") + + # compression : verbatim or RLE + compression = i8(s[2]) + + # bpc : 1 or 2 bytes (8bits or 16bits) + bpc = i8(s[3]) + + # dimension : 1, 2 or 3 (depending on xsize, ysize and zsize) + dimension = i16(s[4:]) + + # xsize : width + xsize = i16(s[6:]) + + # ysize : height + ysize = i16(s[8:]) + + # zsize : channels count + zsize = i16(s[10:]) + + # layout + layout = bpc, dimension, zsize + + # determine mode from bits/zsize + rawmode = "" + try: + rawmode = MODES[layout] + except KeyError: + pass + + if rawmode == "": + raise ValueError("Unsupported SGI image mode") + + self._size = xsize, ysize + self.mode = rawmode.split(";")[0] + if self.mode == "RGB": + self.custom_mimetype = "image/rgb" + + # orientation -1 : scanlines begins at the bottom-left corner + orientation = -1 + + # decoder info + if compression == 0: + pagesize = xsize * ysize * bpc + if bpc == 2: + self.tile = [ + ("SGI16", (0, 0) + self.size, headlen, (self.mode, 0, orientation)) + ] + else: + self.tile = [] + offset = headlen + for layer in self.mode: + self.tile.append( + ("raw", (0, 0) + self.size, offset, (layer, 0, orientation)) + ) + offset += pagesize + elif compression == 1: + self.tile = [ + ("sgi_rle", (0, 0) + self.size, headlen, (rawmode, orientation, bpc)) + ] + + +def _save(im, fp, filename): + if im.mode != "RGB" and im.mode != "RGBA" and im.mode != "L": + raise ValueError("Unsupported SGI image mode") + + # Get the keyword arguments + info = im.encoderinfo + + # Byte-per-pixel precision, 1 = 8bits per pixel + bpc = info.get("bpc", 1) + + if bpc not in (1, 2): + raise ValueError("Unsupported number of bytes per pixel") + + # Flip the image, since the origin of SGI file is the bottom-left corner + orientation = -1 + # Define the file as SGI File Format + magicNumber = 474 + # Run-Length Encoding Compression - Unsupported at this time + rle = 0 + + # Number of dimensions (x,y,z) + dim = 3 + # X Dimension = width / Y Dimension = height + x, y = im.size + if im.mode == "L" and y == 1: + dim = 1 + elif im.mode == "L": + dim = 2 + # Z Dimension: Number of channels + z = len(im.mode) + + if dim == 1 or dim == 2: + z = 1 + + # assert we've got the right number of bands. + if len(im.getbands()) != z: + raise ValueError( + "incorrect number of bands in SGI write: {} vs {}".format( + z, len(im.getbands()) + ) + ) + + # Minimum Byte value + pinmin = 0 + # Maximum Byte value (255 = 8bits per pixel) + pinmax = 255 + # Image name (79 characters max, truncated below in write) + imgName = os.path.splitext(os.path.basename(filename))[0] + imgName = imgName.encode("ascii", "ignore") + # Standard representation of pixel in the file + colormap = 0 + fp.write(struct.pack(">h", magicNumber)) + fp.write(o8(rle)) + fp.write(o8(bpc)) + fp.write(struct.pack(">H", dim)) + fp.write(struct.pack(">H", x)) + fp.write(struct.pack(">H", y)) + fp.write(struct.pack(">H", z)) + fp.write(struct.pack(">l", pinmin)) + fp.write(struct.pack(">l", pinmax)) + fp.write(struct.pack("4s", b"")) # dummy + fp.write(struct.pack("79s", imgName)) # truncates to 79 chars + fp.write(struct.pack("s", b"")) # force null byte after imgname + fp.write(struct.pack(">l", colormap)) + fp.write(struct.pack("404s", b"")) # dummy + + rawmode = "L" + if bpc == 2: + rawmode = "L;16B" + + for channel in im.split(): + fp.write(channel.tobytes("raw", rawmode, 0, orientation)) + + fp.close() + + +class SGI16Decoder(ImageFile.PyDecoder): + _pulls_fd = True + + def decode(self, buffer): + rawmode, stride, orientation = self.args + pagesize = self.state.xsize * self.state.ysize + zsize = len(self.mode) + self.fd.seek(512) + + for band in range(zsize): + channel = Image.new("L", (self.state.xsize, self.state.ysize)) + channel.frombytes( + self.fd.read(2 * pagesize), "raw", "L;16B", stride, orientation + ) + self.im.putband(channel.im, band) + + return -1, 0 + + +# +# registry + + +Image.register_decoder("SGI16", SGI16Decoder) +Image.register_open(SgiImageFile.format, SgiImageFile, _accept) +Image.register_save(SgiImageFile.format, _save) +Image.register_mime(SgiImageFile.format, "image/sgi") + +Image.register_extensions(SgiImageFile.format, [".bw", ".rgb", ".rgba", ".sgi"]) + +# End of file diff --git a/venv/Lib/site-packages/PIL/SpiderImagePlugin.py b/venv/Lib/site-packages/PIL/SpiderImagePlugin.py new file mode 100644 index 0000000..cbd31cf --- /dev/null +++ b/venv/Lib/site-packages/PIL/SpiderImagePlugin.py @@ -0,0 +1,324 @@ +# +# The Python Imaging Library. +# +# SPIDER image file handling +# +# History: +# 2004-08-02 Created BB +# 2006-03-02 added save method +# 2006-03-13 added support for stack images +# +# Copyright (c) 2004 by Health Research Inc. (HRI) RENSSELAER, NY 12144. +# Copyright (c) 2004 by William Baxter. +# Copyright (c) 2004 by Secret Labs AB. +# Copyright (c) 2004 by Fredrik Lundh. +# + +## +# Image plugin for the Spider image format. This format is is used +# by the SPIDER software, in processing image data from electron +# microscopy and tomography. +## + +# +# SpiderImagePlugin.py +# +# The Spider image format is used by SPIDER software, in processing +# image data from electron microscopy and tomography. +# +# Spider home page: +# https://spider.wadsworth.org/spider_doc/spider/docs/spider.html +# +# Details about the Spider image format: +# https://spider.wadsworth.org/spider_doc/spider/docs/image_doc.html +# +import os +import struct +import sys + +from PIL import Image, ImageFile + + +def isInt(f): + try: + i = int(f) + if f - i == 0: + return 1 + else: + return 0 + except (ValueError, OverflowError): + return 0 + + +iforms = [1, 3, -11, -12, -21, -22] + + +# There is no magic number to identify Spider files, so just check a +# series of header locations to see if they have reasonable values. +# Returns no. of bytes in the header, if it is a valid Spider header, +# otherwise returns 0 + + +def isSpiderHeader(t): + h = (99,) + t # add 1 value so can use spider header index start=1 + # header values 1,2,5,12,13,22,23 should be integers + for i in [1, 2, 5, 12, 13, 22, 23]: + if not isInt(h[i]): + return 0 + # check iform + iform = int(h[5]) + if iform not in iforms: + return 0 + # check other header values + labrec = int(h[13]) # no. records in file header + labbyt = int(h[22]) # total no. of bytes in header + lenbyt = int(h[23]) # record length in bytes + if labbyt != (labrec * lenbyt): + return 0 + # looks like a valid header + return labbyt + + +def isSpiderImage(filename): + with open(filename, "rb") as fp: + f = fp.read(92) # read 23 * 4 bytes + t = struct.unpack(">23f", f) # try big-endian first + hdrlen = isSpiderHeader(t) + if hdrlen == 0: + t = struct.unpack("<23f", f) # little-endian + hdrlen = isSpiderHeader(t) + return hdrlen + + +class SpiderImageFile(ImageFile.ImageFile): + + format = "SPIDER" + format_description = "Spider 2D image" + _close_exclusive_fp_after_loading = False + + def _open(self): + # check header + n = 27 * 4 # read 27 float values + f = self.fp.read(n) + + try: + self.bigendian = 1 + t = struct.unpack(">27f", f) # try big-endian first + hdrlen = isSpiderHeader(t) + if hdrlen == 0: + self.bigendian = 0 + t = struct.unpack("<27f", f) # little-endian + hdrlen = isSpiderHeader(t) + if hdrlen == 0: + raise SyntaxError("not a valid Spider file") + except struct.error: + raise SyntaxError("not a valid Spider file") + + h = (99,) + t # add 1 value : spider header index starts at 1 + iform = int(h[5]) + if iform != 1: + raise SyntaxError("not a Spider 2D image") + + self._size = int(h[12]), int(h[2]) # size in pixels (width, height) + self.istack = int(h[24]) + self.imgnumber = int(h[27]) + + if self.istack == 0 and self.imgnumber == 0: + # stk=0, img=0: a regular 2D image + offset = hdrlen + self._nimages = 1 + elif self.istack > 0 and self.imgnumber == 0: + # stk>0, img=0: Opening the stack for the first time + self.imgbytes = int(h[12]) * int(h[2]) * 4 + self.hdrlen = hdrlen + self._nimages = int(h[26]) + # Point to the first image in the stack + offset = hdrlen * 2 + self.imgnumber = 1 + elif self.istack == 0 and self.imgnumber > 0: + # stk=0, img>0: an image within the stack + offset = hdrlen + self.stkoffset + self.istack = 2 # So Image knows it's still a stack + else: + raise SyntaxError("inconsistent stack header values") + + if self.bigendian: + self.rawmode = "F;32BF" + else: + self.rawmode = "F;32F" + self.mode = "F" + + self.tile = [("raw", (0, 0) + self.size, offset, (self.rawmode, 0, 1))] + self.__fp = self.fp # FIXME: hack + + @property + def n_frames(self): + return self._nimages + + @property + def is_animated(self): + return self._nimages > 1 + + # 1st image index is zero (although SPIDER imgnumber starts at 1) + def tell(self): + if self.imgnumber < 1: + return 0 + else: + return self.imgnumber - 1 + + def seek(self, frame): + if self.istack == 0: + raise EOFError("attempt to seek in a non-stack file") + if not self._seek_check(frame): + return + self.stkoffset = self.hdrlen + frame * (self.hdrlen + self.imgbytes) + self.fp = self.__fp + self.fp.seek(self.stkoffset) + self._open() + + # returns a byte image after rescaling to 0..255 + def convert2byte(self, depth=255): + (minimum, maximum) = self.getextrema() + m = 1 + if maximum != minimum: + m = depth / (maximum - minimum) + b = -m * minimum + return self.point(lambda i, m=m, b=b: i * m + b).convert("L") + + # returns a ImageTk.PhotoImage object, after rescaling to 0..255 + def tkPhotoImage(self): + from PIL import ImageTk + + return ImageTk.PhotoImage(self.convert2byte(), palette=256) + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +# -------------------------------------------------------------------- +# Image series + +# given a list of filenames, return a list of images +def loadImageSeries(filelist=None): + """create a list of :py:class:`~PIL.Image.Image` objects for use in a montage""" + if filelist is None or len(filelist) < 1: + return + + imglist = [] + for img in filelist: + if not os.path.exists(img): + print("unable to find %s" % img) + continue + try: + with Image.open(img) as im: + im = im.convert2byte() + except Exception: + if not isSpiderImage(img): + print(img + " is not a Spider image file") + continue + im.info["filename"] = img + imglist.append(im) + return imglist + + +# -------------------------------------------------------------------- +# For saving images in Spider format + + +def makeSpiderHeader(im): + nsam, nrow = im.size + lenbyt = nsam * 4 # There are labrec records in the header + labrec = int(1024 / lenbyt) + if 1024 % lenbyt != 0: + labrec += 1 + labbyt = labrec * lenbyt + hdr = [] + nvalues = int(labbyt / 4) + for i in range(nvalues): + hdr.append(0.0) + + if len(hdr) < 23: + return [] + + # NB these are Fortran indices + hdr[1] = 1.0 # nslice (=1 for an image) + hdr[2] = float(nrow) # number of rows per slice + hdr[5] = 1.0 # iform for 2D image + hdr[12] = float(nsam) # number of pixels per line + hdr[13] = float(labrec) # number of records in file header + hdr[22] = float(labbyt) # total number of bytes in header + hdr[23] = float(lenbyt) # record length in bytes + + # adjust for Fortran indexing + hdr = hdr[1:] + hdr.append(0.0) + # pack binary data into a string + hdrstr = [] + for v in hdr: + hdrstr.append(struct.pack("f", v)) + return hdrstr + + +def _save(im, fp, filename): + if im.mode[0] != "F": + im = im.convert("F") + + hdr = makeSpiderHeader(im) + if len(hdr) < 256: + raise OSError("Error creating Spider header") + + # write the SPIDER header + fp.writelines(hdr) + + rawmode = "F;32NF" # 32-bit native floating point + ImageFile._save(im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, 0, 1))]) + + +def _save_spider(im, fp, filename): + # get the filename extension and register it with Image + ext = os.path.splitext(filename)[1] + Image.register_extension(SpiderImageFile.format, ext) + _save(im, fp, filename) + + +# -------------------------------------------------------------------- + + +Image.register_open(SpiderImageFile.format, SpiderImageFile) +Image.register_save(SpiderImageFile.format, _save_spider) + +if __name__ == "__main__": + + if len(sys.argv) < 2: + print("Syntax: python SpiderImagePlugin.py [infile] [outfile]") + sys.exit() + + filename = sys.argv[1] + if not isSpiderImage(filename): + print("input image must be in Spider format") + sys.exit() + + with Image.open(filename) as im: + print("image: " + str(im)) + print("format: " + str(im.format)) + print("size: " + str(im.size)) + print("mode: " + str(im.mode)) + print("max, min: ", end=" ") + print(im.getextrema()) + + if len(sys.argv) > 2: + outfile = sys.argv[2] + + # perform some image operation + im = im.transpose(Image.FLIP_LEFT_RIGHT) + print( + "saving a flipped version of %s as %s " + % (os.path.basename(filename), outfile) + ) + im.save(outfile, SpiderImageFile.format) diff --git a/venv/Lib/site-packages/PIL/SunImagePlugin.py b/venv/Lib/site-packages/PIL/SunImagePlugin.py new file mode 100644 index 0000000..fd7ca8a --- /dev/null +++ b/venv/Lib/site-packages/PIL/SunImagePlugin.py @@ -0,0 +1,136 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Sun image file handling +# +# History: +# 1995-09-10 fl Created +# 1996-05-28 fl Fixed 32-bit alignment +# 1998-12-29 fl Import ImagePalette module +# 2001-12-18 fl Fixed palette loading (from Jean-Claude Rimbault) +# +# Copyright (c) 1997-2001 by Secret Labs AB +# Copyright (c) 1995-1996 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + + +from . import Image, ImageFile, ImagePalette +from ._binary import i32be as i32 + + +def _accept(prefix): + return len(prefix) >= 4 and i32(prefix) == 0x59A66A95 + + +## +# Image plugin for Sun raster files. + + +class SunImageFile(ImageFile.ImageFile): + + format = "SUN" + format_description = "Sun Raster File" + + def _open(self): + + # The Sun Raster file header is 32 bytes in length + # and has the following format: + + # typedef struct _SunRaster + # { + # DWORD MagicNumber; /* Magic (identification) number */ + # DWORD Width; /* Width of image in pixels */ + # DWORD Height; /* Height of image in pixels */ + # DWORD Depth; /* Number of bits per pixel */ + # DWORD Length; /* Size of image data in bytes */ + # DWORD Type; /* Type of raster file */ + # DWORD ColorMapType; /* Type of color map */ + # DWORD ColorMapLength; /* Size of the color map in bytes */ + # } SUNRASTER; + + # HEAD + s = self.fp.read(32) + if i32(s) != 0x59A66A95: + raise SyntaxError("not an SUN raster file") + + offset = 32 + + self._size = i32(s[4:8]), i32(s[8:12]) + + depth = i32(s[12:16]) + # data_length = i32(s[16:20]) # unreliable, ignore. + file_type = i32(s[20:24]) + palette_type = i32(s[24:28]) # 0: None, 1: RGB, 2: Raw/arbitrary + palette_length = i32(s[28:32]) + + if depth == 1: + self.mode, rawmode = "1", "1;I" + elif depth == 4: + self.mode, rawmode = "L", "L;4" + elif depth == 8: + self.mode = rawmode = "L" + elif depth == 24: + if file_type == 3: + self.mode, rawmode = "RGB", "RGB" + else: + self.mode, rawmode = "RGB", "BGR" + elif depth == 32: + if file_type == 3: + self.mode, rawmode = "RGB", "RGBX" + else: + self.mode, rawmode = "RGB", "BGRX" + else: + raise SyntaxError("Unsupported Mode/Bit Depth") + + if palette_length: + if palette_length > 1024: + raise SyntaxError("Unsupported Color Palette Length") + + if palette_type != 1: + raise SyntaxError("Unsupported Palette Type") + + offset = offset + palette_length + self.palette = ImagePalette.raw("RGB;L", self.fp.read(palette_length)) + if self.mode == "L": + self.mode = "P" + rawmode = rawmode.replace("L", "P") + + # 16 bit boundaries on stride + stride = ((self.size[0] * depth + 15) // 16) * 2 + + # file type: Type is the version (or flavor) of the bitmap + # file. The following values are typically found in the Type + # field: + # 0000h Old + # 0001h Standard + # 0002h Byte-encoded + # 0003h RGB format + # 0004h TIFF format + # 0005h IFF format + # FFFFh Experimental + + # Old and standard are the same, except for the length tag. + # byte-encoded is run-length-encoded + # RGB looks similar to standard, but RGB byte order + # TIFF and IFF mean that they were converted from T/IFF + # Experimental means that it's something else. + # (https://www.fileformat.info/format/sunraster/egff.htm) + + if file_type in (0, 1, 3, 4, 5): + self.tile = [("raw", (0, 0) + self.size, offset, (rawmode, stride))] + elif file_type == 2: + self.tile = [("sun_rle", (0, 0) + self.size, offset, rawmode)] + else: + raise SyntaxError("Unsupported Sun Raster file type") + + +# +# registry + + +Image.register_open(SunImageFile.format, SunImageFile, _accept) + +Image.register_extension(SunImageFile.format, ".ras") diff --git a/venv/Lib/site-packages/PIL/TarIO.py b/venv/Lib/site-packages/PIL/TarIO.py new file mode 100644 index 0000000..ede6464 --- /dev/null +++ b/venv/Lib/site-packages/PIL/TarIO.py @@ -0,0 +1,67 @@ +# +# The Python Imaging Library. +# $Id$ +# +# read files from within a tar file +# +# History: +# 95-06-18 fl Created +# 96-05-28 fl Open files in binary mode +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1995-96. +# +# See the README file for information on usage and redistribution. +# + +import io + +from . import ContainerIO + +## +# A file object that provides read access to a given member of a TAR +# file. + + +class TarIO(ContainerIO.ContainerIO): + def __init__(self, tarfile, file): + """ + Create file object. + + :param tarfile: Name of TAR file. + :param file: Name of member file. + """ + self.fh = open(tarfile, "rb") + + while True: + + s = self.fh.read(512) + if len(s) != 512: + raise OSError("unexpected end of tar file") + + name = s[:100].decode("utf-8") + i = name.find("\0") + if i == 0: + raise OSError("cannot find subfile") + if i > 0: + name = name[:i] + + size = int(s[124:135], 8) + + if file == name: + break + + self.fh.seek((size + 511) & (~511), io.SEEK_CUR) + + # Open region + super().__init__(self.fh, self.fh.tell(), size) + + # Context manager support + def __enter__(self): + return self + + def __exit__(self, *args): + self.close() + + def close(self): + self.fh.close() diff --git a/venv/Lib/site-packages/PIL/TgaImagePlugin.py b/venv/Lib/site-packages/PIL/TgaImagePlugin.py new file mode 100644 index 0000000..fd71e54 --- /dev/null +++ b/venv/Lib/site-packages/PIL/TgaImagePlugin.py @@ -0,0 +1,246 @@ +# +# The Python Imaging Library. +# $Id$ +# +# TGA file handling +# +# History: +# 95-09-01 fl created (reads 24-bit files only) +# 97-01-04 fl support more TGA versions, including compressed images +# 98-07-04 fl fixed orientation and alpha layer bugs +# 98-09-11 fl fixed orientation for runlength decoder +# +# Copyright (c) Secret Labs AB 1997-98. +# Copyright (c) Fredrik Lundh 1995-97. +# +# See the README file for information on usage and redistribution. +# + + +import warnings + +from . import Image, ImageFile, ImagePalette +from ._binary import i8, i16le as i16, o8, o16le as o16 + +# +# -------------------------------------------------------------------- +# Read RGA file + + +MODES = { + # map imagetype/depth to rawmode + (1, 8): "P", + (3, 1): "1", + (3, 8): "L", + (3, 16): "LA", + (2, 16): "BGR;5", + (2, 24): "BGR", + (2, 32): "BGRA", +} + + +## +# Image plugin for Targa files. + + +class TgaImageFile(ImageFile.ImageFile): + + format = "TGA" + format_description = "Targa" + + def _open(self): + + # process header + s = self.fp.read(18) + + id_len = i8(s[0]) + + colormaptype = i8(s[1]) + imagetype = i8(s[2]) + + depth = i8(s[16]) + + flags = i8(s[17]) + + self._size = i16(s[12:]), i16(s[14:]) + + # validate header fields + if ( + colormaptype not in (0, 1) + or self.size[0] <= 0 + or self.size[1] <= 0 + or depth not in (1, 8, 16, 24, 32) + ): + raise SyntaxError("not a TGA file") + + # image mode + if imagetype in (3, 11): + self.mode = "L" + if depth == 1: + self.mode = "1" # ??? + elif depth == 16: + self.mode = "LA" + elif imagetype in (1, 9): + self.mode = "P" + elif imagetype in (2, 10): + self.mode = "RGB" + if depth == 32: + self.mode = "RGBA" + else: + raise SyntaxError("unknown TGA mode") + + # orientation + orientation = flags & 0x30 + if orientation == 0x20: + orientation = 1 + elif not orientation: + orientation = -1 + else: + raise SyntaxError("unknown TGA orientation") + + self.info["orientation"] = orientation + + if imagetype & 8: + self.info["compression"] = "tga_rle" + + if id_len: + self.info["id_section"] = self.fp.read(id_len) + + if colormaptype: + # read palette + start, size, mapdepth = i16(s[3:]), i16(s[5:]), i16(s[7:]) + if mapdepth == 16: + self.palette = ImagePalette.raw( + "BGR;16", b"\0" * 2 * start + self.fp.read(2 * size) + ) + elif mapdepth == 24: + self.palette = ImagePalette.raw( + "BGR", b"\0" * 3 * start + self.fp.read(3 * size) + ) + elif mapdepth == 32: + self.palette = ImagePalette.raw( + "BGRA", b"\0" * 4 * start + self.fp.read(4 * size) + ) + + # setup tile descriptor + try: + rawmode = MODES[(imagetype & 7, depth)] + if imagetype & 8: + # compressed + self.tile = [ + ( + "tga_rle", + (0, 0) + self.size, + self.fp.tell(), + (rawmode, orientation, depth), + ) + ] + else: + self.tile = [ + ( + "raw", + (0, 0) + self.size, + self.fp.tell(), + (rawmode, 0, orientation), + ) + ] + except KeyError: + pass # cannot decode + + +# +# -------------------------------------------------------------------- +# Write TGA file + + +SAVE = { + "1": ("1", 1, 0, 3), + "L": ("L", 8, 0, 3), + "LA": ("LA", 16, 0, 3), + "P": ("P", 8, 1, 1), + "RGB": ("BGR", 24, 0, 2), + "RGBA": ("BGRA", 32, 0, 2), +} + + +def _save(im, fp, filename): + + try: + rawmode, bits, colormaptype, imagetype = SAVE[im.mode] + except KeyError: + raise OSError("cannot write mode %s as TGA" % im.mode) + + if "rle" in im.encoderinfo: + rle = im.encoderinfo["rle"] + else: + compression = im.encoderinfo.get("compression", im.info.get("compression")) + rle = compression == "tga_rle" + if rle: + imagetype += 8 + + id_section = im.encoderinfo.get("id_section", im.info.get("id_section", "")) + id_len = len(id_section) + if id_len > 255: + id_len = 255 + id_section = id_section[:255] + warnings.warn("id_section has been trimmed to 255 characters") + + if colormaptype: + colormapfirst, colormaplength, colormapentry = 0, 256, 24 + else: + colormapfirst, colormaplength, colormapentry = 0, 0, 0 + + if im.mode in ("LA", "RGBA"): + flags = 8 + else: + flags = 0 + + orientation = im.encoderinfo.get("orientation", im.info.get("orientation", -1)) + if orientation > 0: + flags = flags | 0x20 + + fp.write( + o8(id_len) + + o8(colormaptype) + + o8(imagetype) + + o16(colormapfirst) + + o16(colormaplength) + + o8(colormapentry) + + o16(0) + + o16(0) + + o16(im.size[0]) + + o16(im.size[1]) + + o8(bits) + + o8(flags) + ) + + if id_section: + fp.write(id_section) + + if colormaptype: + fp.write(im.im.getpalette("RGB", "BGR")) + + if rle: + ImageFile._save( + im, fp, [("tga_rle", (0, 0) + im.size, 0, (rawmode, orientation))] + ) + else: + ImageFile._save( + im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, 0, orientation))] + ) + + # write targa version 2 footer + fp.write(b"\000" * 8 + b"TRUEVISION-XFILE." + b"\000") + + +# +# -------------------------------------------------------------------- +# Registry + + +Image.register_open(TgaImageFile.format, TgaImageFile) +Image.register_save(TgaImageFile.format, _save) + +Image.register_extensions(TgaImageFile.format, [".tga", ".icb", ".vda", ".vst"]) + +Image.register_mime(TgaImageFile.format, "image/x-tga") diff --git a/venv/Lib/site-packages/PIL/TiffImagePlugin.py b/venv/Lib/site-packages/PIL/TiffImagePlugin.py new file mode 100644 index 0000000..74fb695 --- /dev/null +++ b/venv/Lib/site-packages/PIL/TiffImagePlugin.py @@ -0,0 +1,1916 @@ +# +# The Python Imaging Library. +# $Id$ +# +# TIFF file handling +# +# TIFF is a flexible, if somewhat aged, image file format originally +# defined by Aldus. Although TIFF supports a wide variety of pixel +# layouts and compression methods, the name doesn't really stand for +# "thousands of incompatible file formats," it just feels that way. +# +# To read TIFF data from a stream, the stream must be seekable. For +# progressive decoding, make sure to use TIFF files where the tag +# directory is placed first in the file. +# +# History: +# 1995-09-01 fl Created +# 1996-05-04 fl Handle JPEGTABLES tag +# 1996-05-18 fl Fixed COLORMAP support +# 1997-01-05 fl Fixed PREDICTOR support +# 1997-08-27 fl Added support for rational tags (from Perry Stoll) +# 1998-01-10 fl Fixed seek/tell (from Jan Blom) +# 1998-07-15 fl Use private names for internal variables +# 1999-06-13 fl Rewritten for PIL 1.0 (1.0) +# 2000-10-11 fl Additional fixes for Python 2.0 (1.1) +# 2001-04-17 fl Fixed rewind support (seek to frame 0) (1.2) +# 2001-05-12 fl Added write support for more tags (from Greg Couch) (1.3) +# 2001-12-18 fl Added workaround for broken Matrox library +# 2002-01-18 fl Don't mess up if photometric tag is missing (D. Alan Stewart) +# 2003-05-19 fl Check FILLORDER tag +# 2003-09-26 fl Added RGBa support +# 2004-02-24 fl Added DPI support; fixed rational write support +# 2005-02-07 fl Added workaround for broken Corel Draw 10 files +# 2006-01-09 fl Added support for float/double tags (from Russell Nelson) +# +# Copyright (c) 1997-2006 by Secret Labs AB. All rights reserved. +# Copyright (c) 1995-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +import io +import itertools +import os +import struct +import warnings +from collections.abc import MutableMapping +from fractions import Fraction +from numbers import Number, Rational + +from . import Image, ImageFile, ImagePalette, TiffTags +from ._binary import i8, o8 +from .TiffTags import TYPES + +DEBUG = False # Needs to be merged with the new logging approach. + +# Set these to true to force use of libtiff for reading or writing. +READ_LIBTIFF = False +WRITE_LIBTIFF = False +IFD_LEGACY_API = True + +II = b"II" # little-endian (Intel style) +MM = b"MM" # big-endian (Motorola style) + +# +# -------------------------------------------------------------------- +# Read TIFF files + +# a few tag names, just to make the code below a bit more readable +IMAGEWIDTH = 256 +IMAGELENGTH = 257 +BITSPERSAMPLE = 258 +COMPRESSION = 259 +PHOTOMETRIC_INTERPRETATION = 262 +FILLORDER = 266 +IMAGEDESCRIPTION = 270 +STRIPOFFSETS = 273 +SAMPLESPERPIXEL = 277 +ROWSPERSTRIP = 278 +STRIPBYTECOUNTS = 279 +X_RESOLUTION = 282 +Y_RESOLUTION = 283 +PLANAR_CONFIGURATION = 284 +RESOLUTION_UNIT = 296 +TRANSFERFUNCTION = 301 +SOFTWARE = 305 +DATE_TIME = 306 +ARTIST = 315 +PREDICTOR = 317 +COLORMAP = 320 +TILEOFFSETS = 324 +EXTRASAMPLES = 338 +SAMPLEFORMAT = 339 +JPEGTABLES = 347 +REFERENCEBLACKWHITE = 532 +COPYRIGHT = 33432 +IPTC_NAA_CHUNK = 33723 # newsphoto properties +PHOTOSHOP_CHUNK = 34377 # photoshop properties +ICCPROFILE = 34675 +EXIFIFD = 34665 +XMP = 700 +JPEGQUALITY = 65537 # pseudo-tag by libtiff + +# https://github.com/imagej/ImageJA/blob/master/src/main/java/ij/io/TiffDecoder.java +IMAGEJ_META_DATA_BYTE_COUNTS = 50838 +IMAGEJ_META_DATA = 50839 + +COMPRESSION_INFO = { + # Compression => pil compression name + 1: "raw", + 2: "tiff_ccitt", + 3: "group3", + 4: "group4", + 5: "tiff_lzw", + 6: "tiff_jpeg", # obsolete + 7: "jpeg", + 8: "tiff_adobe_deflate", + 32771: "tiff_raw_16", # 16-bit padding + 32773: "packbits", + 32809: "tiff_thunderscan", + 32946: "tiff_deflate", + 34676: "tiff_sgilog", + 34677: "tiff_sgilog24", + 34925: "lzma", + 50000: "zstd", + 50001: "webp", +} + +COMPRESSION_INFO_REV = {v: k for k, v in COMPRESSION_INFO.items()} + +OPEN_INFO = { + # (ByteOrder, PhotoInterpretation, SampleFormat, FillOrder, BitsPerSample, + # ExtraSamples) => mode, rawmode + (II, 0, (1,), 1, (1,), ()): ("1", "1;I"), + (MM, 0, (1,), 1, (1,), ()): ("1", "1;I"), + (II, 0, (1,), 2, (1,), ()): ("1", "1;IR"), + (MM, 0, (1,), 2, (1,), ()): ("1", "1;IR"), + (II, 1, (1,), 1, (1,), ()): ("1", "1"), + (MM, 1, (1,), 1, (1,), ()): ("1", "1"), + (II, 1, (1,), 2, (1,), ()): ("1", "1;R"), + (MM, 1, (1,), 2, (1,), ()): ("1", "1;R"), + (II, 0, (1,), 1, (2,), ()): ("L", "L;2I"), + (MM, 0, (1,), 1, (2,), ()): ("L", "L;2I"), + (II, 0, (1,), 2, (2,), ()): ("L", "L;2IR"), + (MM, 0, (1,), 2, (2,), ()): ("L", "L;2IR"), + (II, 1, (1,), 1, (2,), ()): ("L", "L;2"), + (MM, 1, (1,), 1, (2,), ()): ("L", "L;2"), + (II, 1, (1,), 2, (2,), ()): ("L", "L;2R"), + (MM, 1, (1,), 2, (2,), ()): ("L", "L;2R"), + (II, 0, (1,), 1, (4,), ()): ("L", "L;4I"), + (MM, 0, (1,), 1, (4,), ()): ("L", "L;4I"), + (II, 0, (1,), 2, (4,), ()): ("L", "L;4IR"), + (MM, 0, (1,), 2, (4,), ()): ("L", "L;4IR"), + (II, 1, (1,), 1, (4,), ()): ("L", "L;4"), + (MM, 1, (1,), 1, (4,), ()): ("L", "L;4"), + (II, 1, (1,), 2, (4,), ()): ("L", "L;4R"), + (MM, 1, (1,), 2, (4,), ()): ("L", "L;4R"), + (II, 0, (1,), 1, (8,), ()): ("L", "L;I"), + (MM, 0, (1,), 1, (8,), ()): ("L", "L;I"), + (II, 0, (1,), 2, (8,), ()): ("L", "L;IR"), + (MM, 0, (1,), 2, (8,), ()): ("L", "L;IR"), + (II, 1, (1,), 1, (8,), ()): ("L", "L"), + (MM, 1, (1,), 1, (8,), ()): ("L", "L"), + (II, 1, (1,), 2, (8,), ()): ("L", "L;R"), + (MM, 1, (1,), 2, (8,), ()): ("L", "L;R"), + (II, 1, (1,), 1, (12,), ()): ("I;16", "I;12"), + (II, 1, (1,), 1, (16,), ()): ("I;16", "I;16"), + (MM, 1, (1,), 1, (16,), ()): ("I;16B", "I;16B"), + (II, 1, (2,), 1, (16,), ()): ("I", "I;16S"), + (MM, 1, (2,), 1, (16,), ()): ("I", "I;16BS"), + (II, 0, (3,), 1, (32,), ()): ("F", "F;32F"), + (MM, 0, (3,), 1, (32,), ()): ("F", "F;32BF"), + (II, 1, (1,), 1, (32,), ()): ("I", "I;32N"), + (II, 1, (2,), 1, (32,), ()): ("I", "I;32S"), + (MM, 1, (2,), 1, (32,), ()): ("I", "I;32BS"), + (II, 1, (3,), 1, (32,), ()): ("F", "F;32F"), + (MM, 1, (3,), 1, (32,), ()): ("F", "F;32BF"), + (II, 1, (1,), 1, (8, 8), (2,)): ("LA", "LA"), + (MM, 1, (1,), 1, (8, 8), (2,)): ("LA", "LA"), + (II, 2, (1,), 1, (8, 8, 8), ()): ("RGB", "RGB"), + (MM, 2, (1,), 1, (8, 8, 8), ()): ("RGB", "RGB"), + (II, 2, (1,), 2, (8, 8, 8), ()): ("RGB", "RGB;R"), + (MM, 2, (1,), 2, (8, 8, 8), ()): ("RGB", "RGB;R"), + (II, 2, (1,), 1, (8, 8, 8, 8), ()): ("RGBA", "RGBA"), # missing ExtraSamples + (MM, 2, (1,), 1, (8, 8, 8, 8), ()): ("RGBA", "RGBA"), # missing ExtraSamples + (II, 2, (1,), 1, (8, 8, 8, 8), (0,)): ("RGBX", "RGBX"), + (MM, 2, (1,), 1, (8, 8, 8, 8), (0,)): ("RGBX", "RGBX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8), (0, 0)): ("RGBX", "RGBXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8), (0, 0)): ("RGBX", "RGBXX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0, 0)): ("RGBX", "RGBXXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0, 0)): ("RGBX", "RGBXXX"), + (II, 2, (1,), 1, (8, 8, 8, 8), (1,)): ("RGBA", "RGBa"), + (MM, 2, (1,), 1, (8, 8, 8, 8), (1,)): ("RGBA", "RGBa"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8), (1, 0)): ("RGBA", "RGBaX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8), (1, 0)): ("RGBA", "RGBaX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (1, 0, 0)): ("RGBA", "RGBaXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (1, 0, 0)): ("RGBA", "RGBaXX"), + (II, 2, (1,), 1, (8, 8, 8, 8), (2,)): ("RGBA", "RGBA"), + (MM, 2, (1,), 1, (8, 8, 8, 8), (2,)): ("RGBA", "RGBA"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8), (2, 0)): ("RGBA", "RGBAX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8), (2, 0)): ("RGBA", "RGBAX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (2, 0, 0)): ("RGBA", "RGBAXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (2, 0, 0)): ("RGBA", "RGBAXX"), + (II, 2, (1,), 1, (8, 8, 8, 8), (999,)): ("RGBA", "RGBA"), # Corel Draw 10 + (MM, 2, (1,), 1, (8, 8, 8, 8), (999,)): ("RGBA", "RGBA"), # Corel Draw 10 + (II, 2, (1,), 1, (16, 16, 16), ()): ("RGB", "RGB;16L"), + (MM, 2, (1,), 1, (16, 16, 16), ()): ("RGB", "RGB;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), ()): ("RGBA", "RGBA;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), ()): ("RGBA", "RGBA;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), (0,)): ("RGBX", "RGBX;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), (0,)): ("RGBX", "RGBX;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), (1,)): ("RGBA", "RGBa;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), (1,)): ("RGBA", "RGBa;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), (2,)): ("RGBA", "RGBA;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), (2,)): ("RGBA", "RGBA;16B"), + (II, 3, (1,), 1, (1,), ()): ("P", "P;1"), + (MM, 3, (1,), 1, (1,), ()): ("P", "P;1"), + (II, 3, (1,), 2, (1,), ()): ("P", "P;1R"), + (MM, 3, (1,), 2, (1,), ()): ("P", "P;1R"), + (II, 3, (1,), 1, (2,), ()): ("P", "P;2"), + (MM, 3, (1,), 1, (2,), ()): ("P", "P;2"), + (II, 3, (1,), 2, (2,), ()): ("P", "P;2R"), + (MM, 3, (1,), 2, (2,), ()): ("P", "P;2R"), + (II, 3, (1,), 1, (4,), ()): ("P", "P;4"), + (MM, 3, (1,), 1, (4,), ()): ("P", "P;4"), + (II, 3, (1,), 2, (4,), ()): ("P", "P;4R"), + (MM, 3, (1,), 2, (4,), ()): ("P", "P;4R"), + (II, 3, (1,), 1, (8,), ()): ("P", "P"), + (MM, 3, (1,), 1, (8,), ()): ("P", "P"), + (II, 3, (1,), 1, (8, 8), (2,)): ("PA", "PA"), + (MM, 3, (1,), 1, (8, 8), (2,)): ("PA", "PA"), + (II, 3, (1,), 2, (8,), ()): ("P", "P;R"), + (MM, 3, (1,), 2, (8,), ()): ("P", "P;R"), + (II, 5, (1,), 1, (8, 8, 8, 8), ()): ("CMYK", "CMYK"), + (MM, 5, (1,), 1, (8, 8, 8, 8), ()): ("CMYK", "CMYK"), + (II, 5, (1,), 1, (8, 8, 8, 8, 8), (0,)): ("CMYK", "CMYKX"), + (MM, 5, (1,), 1, (8, 8, 8, 8, 8), (0,)): ("CMYK", "CMYKX"), + (II, 5, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0)): ("CMYK", "CMYKXX"), + (MM, 5, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0)): ("CMYK", "CMYKXX"), + (II, 5, (1,), 1, (16, 16, 16, 16), ()): ("CMYK", "CMYK;16L"), + # JPEG compressed images handled by LibTiff and auto-converted to RGBX + # Minimal Baseline TIFF requires YCbCr images to have 3 SamplesPerPixel + (II, 6, (1,), 1, (8, 8, 8), ()): ("RGB", "RGBX"), + (MM, 6, (1,), 1, (8, 8, 8), ()): ("RGB", "RGBX"), + (II, 8, (1,), 1, (8, 8, 8), ()): ("LAB", "LAB"), + (MM, 8, (1,), 1, (8, 8, 8), ()): ("LAB", "LAB"), +} + +PREFIXES = [ + b"MM\x00\x2A", # Valid TIFF header with big-endian byte order + b"II\x2A\x00", # Valid TIFF header with little-endian byte order + b"MM\x2A\x00", # Invalid TIFF header, assume big-endian + b"II\x00\x2A", # Invalid TIFF header, assume little-endian +] + + +def _accept(prefix): + return prefix[:4] in PREFIXES + + +def _limit_rational(val, max_val): + inv = abs(val) > 1 + n_d = IFDRational(1 / val if inv else val).limit_rational(max_val) + return n_d[::-1] if inv else n_d + + +def _limit_signed_rational(val, max_val, min_val): + frac = Fraction(val) + n_d = frac.numerator, frac.denominator + + if min(n_d) < min_val: + n_d = _limit_rational(val, abs(min_val)) + + if max(n_d) > max_val: + val = Fraction(*n_d) + n_d = _limit_rational(val, max_val) + + return n_d + + +## +# Wrapper for TIFF IFDs. + +_load_dispatch = {} +_write_dispatch = {} + + +class IFDRational(Rational): + """ Implements a rational class where 0/0 is a legal value to match + the in the wild use of exif rationals. + + e.g., DigitalZoomRatio - 0.00/0.00 indicates that no digital zoom was used + """ + + """ If the denominator is 0, store this as a float('nan'), otherwise store + as a fractions.Fraction(). Delegate as appropriate + + """ + + __slots__ = ("_numerator", "_denominator", "_val") + + def __init__(self, value, denominator=1): + """ + :param value: either an integer numerator, a + float/rational/other number, or an IFDRational + :param denominator: Optional integer denominator + """ + if isinstance(value, IFDRational): + self._numerator = value.numerator + self._denominator = value.denominator + self._val = value._val + return + + if isinstance(value, Fraction): + self._numerator = value.numerator + self._denominator = value.denominator + else: + self._numerator = value + self._denominator = denominator + + if denominator == 0: + self._val = float("nan") + elif denominator == 1: + self._val = Fraction(value) + else: + self._val = Fraction(value, denominator) + + @property + def numerator(a): + return a._numerator + + @property + def denominator(a): + return a._denominator + + def limit_rational(self, max_denominator): + """ + + :param max_denominator: Integer, the maximum denominator value + :returns: Tuple of (numerator, denominator) + """ + + if self.denominator == 0: + return (self.numerator, self.denominator) + + f = self._val.limit_denominator(max_denominator) + return (f.numerator, f.denominator) + + def __repr__(self): + return str(float(self._val)) + + def __hash__(self): + return self._val.__hash__() + + def __eq__(self, other): + return self._val == other + + def _delegate(op): + def delegate(self, *args): + return getattr(self._val, op)(*args) + + return delegate + + """ a = ['add','radd', 'sub', 'rsub', 'mul', 'rmul', + 'truediv', 'rtruediv', 'floordiv', 'rfloordiv', + 'mod','rmod', 'pow','rpow', 'pos', 'neg', + 'abs', 'trunc', 'lt', 'gt', 'le', 'ge', 'bool', + 'ceil', 'floor', 'round'] + print("\n".join("__%s__ = _delegate('__%s__')" % (s,s) for s in a)) + """ + + __add__ = _delegate("__add__") + __radd__ = _delegate("__radd__") + __sub__ = _delegate("__sub__") + __rsub__ = _delegate("__rsub__") + __mul__ = _delegate("__mul__") + __rmul__ = _delegate("__rmul__") + __truediv__ = _delegate("__truediv__") + __rtruediv__ = _delegate("__rtruediv__") + __floordiv__ = _delegate("__floordiv__") + __rfloordiv__ = _delegate("__rfloordiv__") + __mod__ = _delegate("__mod__") + __rmod__ = _delegate("__rmod__") + __pow__ = _delegate("__pow__") + __rpow__ = _delegate("__rpow__") + __pos__ = _delegate("__pos__") + __neg__ = _delegate("__neg__") + __abs__ = _delegate("__abs__") + __trunc__ = _delegate("__trunc__") + __lt__ = _delegate("__lt__") + __gt__ = _delegate("__gt__") + __le__ = _delegate("__le__") + __ge__ = _delegate("__ge__") + __bool__ = _delegate("__bool__") + __ceil__ = _delegate("__ceil__") + __floor__ = _delegate("__floor__") + __round__ = _delegate("__round__") + + +class ImageFileDirectory_v2(MutableMapping): + """This class represents a TIFF tag directory. To speed things up, we + don't decode tags unless they're asked for. + + Exposes a dictionary interface of the tags in the directory:: + + ifd = ImageFileDirectory_v2() + ifd[key] = 'Some Data' + ifd.tagtype[key] = TiffTags.ASCII + print(ifd[key]) + 'Some Data' + + Individual values are returned as the strings or numbers, sequences are + returned as tuples of the values. + + The tiff metadata type of each item is stored in a dictionary of + tag types in + `~PIL.TiffImagePlugin.ImageFileDirectory_v2.tagtype`. The types + are read from a tiff file, guessed from the type added, or added + manually. + + Data Structures: + + * self.tagtype = {} + + * Key: numerical tiff tag number + * Value: integer corresponding to the data type from + ~PIL.TiffTags.TYPES` + + .. versionadded:: 3.0.0 + """ + + """ + Documentation: + + 'internal' data structures: + * self._tags_v2 = {} Key: numerical tiff tag number + Value: decoded data, as tuple for multiple values + * self._tagdata = {} Key: numerical tiff tag number + Value: undecoded byte string from file + * self._tags_v1 = {} Key: numerical tiff tag number + Value: decoded data in the v1 format + + Tags will be found in the private attributes self._tagdata, and in + self._tags_v2 once decoded. + + Self.legacy_api is a value for internal use, and shouldn't be + changed from outside code. In cooperation with the + ImageFileDirectory_v1 class, if legacy_api is true, then decoded + tags will be populated into both _tags_v1 and _tags_v2. _Tags_v2 + will be used if this IFD is used in the TIFF save routine. Tags + should be read from tags_v1 if legacy_api == true. + + """ + + def __init__(self, ifh=b"II\052\0\0\0\0\0", prefix=None): + """Initialize an ImageFileDirectory. + + To construct an ImageFileDirectory from a real file, pass the 8-byte + magic header to the constructor. To only set the endianness, pass it + as the 'prefix' keyword argument. + + :param ifh: One of the accepted magic headers (cf. PREFIXES); also sets + endianness. + :param prefix: Override the endianness of the file. + """ + if ifh[:4] not in PREFIXES: + raise SyntaxError("not a TIFF file (header %r not valid)" % ifh) + self._prefix = prefix if prefix is not None else ifh[:2] + if self._prefix == MM: + self._endian = ">" + elif self._prefix == II: + self._endian = "<" + else: + raise SyntaxError("not a TIFF IFD") + self.reset() + (self.next,) = self._unpack("L", ifh[4:]) + self._legacy_api = False + + prefix = property(lambda self: self._prefix) + offset = property(lambda self: self._offset) + legacy_api = property(lambda self: self._legacy_api) + + @legacy_api.setter + def legacy_api(self, value): + raise Exception("Not allowing setting of legacy api") + + def reset(self): + self._tags_v1 = {} # will remain empty if legacy_api is false + self._tags_v2 = {} # main tag storage + self._tagdata = {} + self.tagtype = {} # added 2008-06-05 by Florian Hoech + self._next = None + self._offset = None + + def __str__(self): + return str(dict(self)) + + def named(self): + """ + :returns: dict of name|key: value + + Returns the complete tag dictionary, with named tags where possible. + """ + return {TiffTags.lookup(code).name: value for code, value in self.items()} + + def __len__(self): + return len(set(self._tagdata) | set(self._tags_v2)) + + def __getitem__(self, tag): + if tag not in self._tags_v2: # unpack on the fly + data = self._tagdata[tag] + typ = self.tagtype[tag] + size, handler = self._load_dispatch[typ] + self[tag] = handler(self, data, self.legacy_api) # check type + val = self._tags_v2[tag] + if self.legacy_api and not isinstance(val, (tuple, bytes)): + val = (val,) + return val + + def __contains__(self, tag): + return tag in self._tags_v2 or tag in self._tagdata + + def __setitem__(self, tag, value): + self._setitem(tag, value, self.legacy_api) + + def _setitem(self, tag, value, legacy_api): + basetypes = (Number, bytes, str) + + info = TiffTags.lookup(tag) + values = [value] if isinstance(value, basetypes) else value + + if tag not in self.tagtype: + if info.type: + self.tagtype[tag] = info.type + else: + self.tagtype[tag] = TiffTags.UNDEFINED + if all(isinstance(v, IFDRational) for v in values): + self.tagtype[tag] = ( + TiffTags.RATIONAL + if all(v >= 0 for v in values) + else TiffTags.SIGNED_RATIONAL + ) + elif all(isinstance(v, int) for v in values): + if all(0 <= v < 2 ** 16 for v in values): + self.tagtype[tag] = TiffTags.SHORT + elif all(-(2 ** 15) < v < 2 ** 15 for v in values): + self.tagtype[tag] = TiffTags.SIGNED_SHORT + else: + self.tagtype[tag] = ( + TiffTags.LONG + if all(v >= 0 for v in values) + else TiffTags.SIGNED_LONG + ) + elif all(isinstance(v, float) for v in values): + self.tagtype[tag] = TiffTags.DOUBLE + else: + if all(isinstance(v, str) for v in values): + self.tagtype[tag] = TiffTags.ASCII + + if self.tagtype[tag] == TiffTags.UNDEFINED: + values = [ + value.encode("ascii", "replace") if isinstance(value, str) else value + ] + elif self.tagtype[tag] == TiffTags.RATIONAL: + values = [float(v) if isinstance(v, int) else v for v in values] + + values = tuple(info.cvt_enum(value) for value in values) + + dest = self._tags_v1 if legacy_api else self._tags_v2 + + # Three branches: + # Spec'd length == 1, Actual length 1, store as element + # Spec'd length == 1, Actual > 1, Warn and truncate. Formerly barfed. + # No Spec, Actual length 1, Formerly (<4.2) returned a 1 element tuple. + # Don't mess with the legacy api, since it's frozen. + if (info.length == 1) or ( + info.length is None and len(values) == 1 and not legacy_api + ): + # Don't mess with the legacy api, since it's frozen. + if legacy_api and self.tagtype[tag] in [ + TiffTags.RATIONAL, + TiffTags.SIGNED_RATIONAL, + ]: # rationals + values = (values,) + try: + (dest[tag],) = values + except ValueError: + # We've got a builtin tag with 1 expected entry + warnings.warn( + "Metadata Warning, tag %s had too many entries: %s, expected 1" + % (tag, len(values)) + ) + dest[tag] = values[0] + + else: + # Spec'd length > 1 or undefined + # Unspec'd, and length > 1 + dest[tag] = values + + def __delitem__(self, tag): + self._tags_v2.pop(tag, None) + self._tags_v1.pop(tag, None) + self._tagdata.pop(tag, None) + + def __iter__(self): + return iter(set(self._tagdata) | set(self._tags_v2)) + + def _unpack(self, fmt, data): + return struct.unpack(self._endian + fmt, data) + + def _pack(self, fmt, *values): + return struct.pack(self._endian + fmt, *values) + + def _register_loader(idx, size): + def decorator(func): + from .TiffTags import TYPES + + if func.__name__.startswith("load_"): + TYPES[idx] = func.__name__[5:].replace("_", " ") + _load_dispatch[idx] = size, func # noqa: F821 + return func + + return decorator + + def _register_writer(idx): + def decorator(func): + _write_dispatch[idx] = func # noqa: F821 + return func + + return decorator + + def _register_basic(idx_fmt_name): + from .TiffTags import TYPES + + idx, fmt, name = idx_fmt_name + TYPES[idx] = name + size = struct.calcsize("=" + fmt) + _load_dispatch[idx] = ( # noqa: F821 + size, + lambda self, data, legacy_api=True: ( + self._unpack("{}{}".format(len(data) // size, fmt), data) + ), + ) + _write_dispatch[idx] = lambda self, *values: ( # noqa: F821 + b"".join(self._pack(fmt, value) for value in values) + ) + + list( + map( + _register_basic, + [ + (TiffTags.SHORT, "H", "short"), + (TiffTags.LONG, "L", "long"), + (TiffTags.SIGNED_BYTE, "b", "signed byte"), + (TiffTags.SIGNED_SHORT, "h", "signed short"), + (TiffTags.SIGNED_LONG, "l", "signed long"), + (TiffTags.FLOAT, "f", "float"), + (TiffTags.DOUBLE, "d", "double"), + ], + ) + ) + + @_register_loader(1, 1) # Basic type, except for the legacy API. + def load_byte(self, data, legacy_api=True): + return data + + @_register_writer(1) # Basic type, except for the legacy API. + def write_byte(self, data): + return data + + @_register_loader(2, 1) + def load_string(self, data, legacy_api=True): + if data.endswith(b"\0"): + data = data[:-1] + return data.decode("latin-1", "replace") + + @_register_writer(2) + def write_string(self, value): + # remerge of https://github.com/python-pillow/Pillow/pull/1416 + return b"" + value.encode("ascii", "replace") + b"\0" + + @_register_loader(5, 8) + def load_rational(self, data, legacy_api=True): + vals = self._unpack("{}L".format(len(data) // 4), data) + + def combine(a, b): + return (a, b) if legacy_api else IFDRational(a, b) + + return tuple(combine(num, denom) for num, denom in zip(vals[::2], vals[1::2])) + + @_register_writer(5) + def write_rational(self, *values): + return b"".join( + self._pack("2L", *_limit_rational(frac, 2 ** 32 - 1)) for frac in values + ) + + @_register_loader(7, 1) + def load_undefined(self, data, legacy_api=True): + return data + + @_register_writer(7) + def write_undefined(self, value): + return value + + @_register_loader(10, 8) + def load_signed_rational(self, data, legacy_api=True): + vals = self._unpack("{}l".format(len(data) // 4), data) + + def combine(a, b): + return (a, b) if legacy_api else IFDRational(a, b) + + return tuple(combine(num, denom) for num, denom in zip(vals[::2], vals[1::2])) + + @_register_writer(10) + def write_signed_rational(self, *values): + return b"".join( + self._pack("2l", *_limit_signed_rational(frac, 2 ** 31 - 1, -(2 ** 31))) + for frac in values + ) + + def _ensure_read(self, fp, size): + ret = fp.read(size) + if len(ret) != size: + raise OSError( + "Corrupt EXIF data. " + + "Expecting to read %d bytes but only got %d. " % (size, len(ret)) + ) + return ret + + def load(self, fp): + + self.reset() + self._offset = fp.tell() + + try: + for i in range(self._unpack("H", self._ensure_read(fp, 2))[0]): + tag, typ, count, data = self._unpack("HHL4s", self._ensure_read(fp, 12)) + if DEBUG: + tagname = TiffTags.lookup(tag).name + typname = TYPES.get(typ, "unknown") + print( + "tag: %s (%d) - type: %s (%d)" % (tagname, tag, typname, typ), + end=" ", + ) + + try: + unit_size, handler = self._load_dispatch[typ] + except KeyError: + if DEBUG: + print("- unsupported type", typ) + continue # ignore unsupported type + size = count * unit_size + if size > 4: + here = fp.tell() + (offset,) = self._unpack("L", data) + if DEBUG: + print( + "Tag Location: {} - Data Location: {}".format(here, offset), + end=" ", + ) + fp.seek(offset) + data = ImageFile._safe_read(fp, size) + fp.seek(here) + else: + data = data[:size] + + if len(data) != size: + warnings.warn( + "Possibly corrupt EXIF data. " + "Expecting to read %d bytes but only got %d." + " Skipping tag %s" % (size, len(data), tag) + ) + continue + + if not data: + continue + + self._tagdata[tag] = data + self.tagtype[tag] = typ + + if DEBUG: + if size > 32: + print("- value: " % size) + else: + print("- value:", self[tag]) + + (self.next,) = self._unpack("L", self._ensure_read(fp, 4)) + except OSError as msg: + warnings.warn(str(msg)) + return + + def tobytes(self, offset=0): + # FIXME What about tagdata? + result = self._pack("H", len(self._tags_v2)) + + entries = [] + offset = offset + len(result) + len(self._tags_v2) * 12 + 4 + stripoffsets = None + + # pass 1: convert tags to binary format + # always write tags in ascending order + for tag, value in sorted(self._tags_v2.items()): + if tag == STRIPOFFSETS: + stripoffsets = len(entries) + typ = self.tagtype.get(tag) + if DEBUG: + print("Tag {}, Type: {}, Value: {}".format(tag, typ, value)) + values = value if isinstance(value, tuple) else (value,) + data = self._write_dispatch[typ](self, *values) + if DEBUG: + tagname = TiffTags.lookup(tag).name + typname = TYPES.get(typ, "unknown") + print( + "save: %s (%d) - type: %s (%d)" % (tagname, tag, typname, typ), + end=" ", + ) + if len(data) >= 16: + print("- value: " % len(data)) + else: + print("- value:", values) + + # count is sum of lengths for string and arbitrary data + if typ in [TiffTags.BYTE, TiffTags.ASCII, TiffTags.UNDEFINED]: + count = len(data) + else: + count = len(values) + # figure out if data fits into the entry + if len(data) <= 4: + entries.append((tag, typ, count, data.ljust(4, b"\0"), b"")) + else: + entries.append((tag, typ, count, self._pack("L", offset), data)) + offset += (len(data) + 1) // 2 * 2 # pad to word + + # update strip offset data to point beyond auxiliary data + if stripoffsets is not None: + tag, typ, count, value, data = entries[stripoffsets] + if data: + raise NotImplementedError("multistrip support not yet implemented") + value = self._pack("L", self._unpack("L", value)[0] + offset) + entries[stripoffsets] = tag, typ, count, value, data + + # pass 2: write entries to file + for tag, typ, count, value, data in entries: + if DEBUG: + print(tag, typ, count, repr(value), repr(data)) + result += self._pack("HHL4s", tag, typ, count, value) + + # -- overwrite here for multi-page -- + result += b"\0\0\0\0" # end of entries + + # pass 3: write auxiliary data to file + for tag, typ, count, value, data in entries: + result += data + if len(data) & 1: + result += b"\0" + + return result + + def save(self, fp): + + if fp.tell() == 0: # skip TIFF header on subsequent pages + # tiff header -- PIL always starts the first IFD at offset 8 + fp.write(self._prefix + self._pack("HL", 42, 8)) + + offset = fp.tell() + result = self.tobytes(offset) + fp.write(result) + return offset + len(result) + + +ImageFileDirectory_v2._load_dispatch = _load_dispatch +ImageFileDirectory_v2._write_dispatch = _write_dispatch +for idx, name in TYPES.items(): + name = name.replace(" ", "_") + setattr(ImageFileDirectory_v2, "load_" + name, _load_dispatch[idx][1]) + setattr(ImageFileDirectory_v2, "write_" + name, _write_dispatch[idx]) +del _load_dispatch, _write_dispatch, idx, name + + +# Legacy ImageFileDirectory support. +class ImageFileDirectory_v1(ImageFileDirectory_v2): + """This class represents the **legacy** interface to a TIFF tag directory. + + Exposes a dictionary interface of the tags in the directory:: + + ifd = ImageFileDirectory_v1() + ifd[key] = 'Some Data' + ifd.tagtype[key] = TiffTags.ASCII + print(ifd[key]) + ('Some Data',) + + Also contains a dictionary of tag types as read from the tiff image file, + `~PIL.TiffImagePlugin.ImageFileDirectory_v1.tagtype`. + + Values are returned as a tuple. + + .. deprecated:: 3.0.0 + """ + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self._legacy_api = True + + tags = property(lambda self: self._tags_v1) + tagdata = property(lambda self: self._tagdata) + + @classmethod + def from_v2(cls, original): + """ Returns an + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1` + instance with the same data as is contained in the original + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2` + instance. + + :returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1` + + """ + + ifd = cls(prefix=original.prefix) + ifd._tagdata = original._tagdata + ifd.tagtype = original.tagtype + ifd.next = original.next # an indicator for multipage tiffs + return ifd + + def to_v2(self): + """ Returns an + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2` + instance with the same data as is contained in the original + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1` + instance. + + :returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2` + + """ + + ifd = ImageFileDirectory_v2(prefix=self.prefix) + ifd._tagdata = dict(self._tagdata) + ifd.tagtype = dict(self.tagtype) + ifd._tags_v2 = dict(self._tags_v2) + return ifd + + def __contains__(self, tag): + return tag in self._tags_v1 or tag in self._tagdata + + def __len__(self): + return len(set(self._tagdata) | set(self._tags_v1)) + + def __iter__(self): + return iter(set(self._tagdata) | set(self._tags_v1)) + + def __setitem__(self, tag, value): + for legacy_api in (False, True): + self._setitem(tag, value, legacy_api) + + def __getitem__(self, tag): + if tag not in self._tags_v1: # unpack on the fly + data = self._tagdata[tag] + typ = self.tagtype[tag] + size, handler = self._load_dispatch[typ] + for legacy in (False, True): + self._setitem(tag, handler(self, data, legacy), legacy) + val = self._tags_v1[tag] + if not isinstance(val, (tuple, bytes)): + val = (val,) + return val + + +# undone -- switch this pointer when IFD_LEGACY_API == False +ImageFileDirectory = ImageFileDirectory_v1 + + +## +# Image plugin for TIFF files. + + +class TiffImageFile(ImageFile.ImageFile): + + format = "TIFF" + format_description = "Adobe TIFF" + _close_exclusive_fp_after_loading = False + + def _open(self): + """Open the first image in a TIFF file""" + + # Header + ifh = self.fp.read(8) + + # image file directory (tag dictionary) + self.tag_v2 = ImageFileDirectory_v2(ifh) + + # legacy tag/ifd entries will be filled in later + self.tag = self.ifd = None + + # setup frame pointers + self.__first = self.__next = self.tag_v2.next + self.__frame = -1 + self.__fp = self.fp + self._frame_pos = [] + self._n_frames = None + + if DEBUG: + print("*** TiffImageFile._open ***") + print("- __first:", self.__first) + print("- ifh: ", ifh) + + # and load the first frame + self._seek(0) + + @property + def n_frames(self): + if self._n_frames is None: + current = self.tell() + self._seek(len(self._frame_pos)) + while self._n_frames is None: + self._seek(self.tell() + 1) + self.seek(current) + return self._n_frames + + @property + def is_animated(self): + return self._is_animated + + def seek(self, frame): + """Select a given frame as current image""" + if not self._seek_check(frame): + return + self._seek(frame) + # Create a new core image object on second and + # subsequent frames in the image. Image may be + # different size/mode. + Image._decompression_bomb_check(self.size) + self.im = Image.core.new(self.mode, self.size) + + def _seek(self, frame): + self.fp = self.__fp + while len(self._frame_pos) <= frame: + if not self.__next: + raise EOFError("no more images in TIFF file") + if DEBUG: + print( + "Seeking to frame %s, on frame %s, __next %s, location: %s" + % (frame, self.__frame, self.__next, self.fp.tell()) + ) + # reset buffered io handle in case fp + # was passed to libtiff, invalidating the buffer + self.fp.tell() + self.fp.seek(self.__next) + self._frame_pos.append(self.__next) + if DEBUG: + print("Loading tags, location: %s" % self.fp.tell()) + self.tag_v2.load(self.fp) + self.__next = self.tag_v2.next + if self.__next == 0: + self._n_frames = frame + 1 + if len(self._frame_pos) == 1: + self._is_animated = self.__next != 0 + self.__frame += 1 + self.fp.seek(self._frame_pos[frame]) + self.tag_v2.load(self.fp) + # fill the legacy tag/ifd entries + self.tag = self.ifd = ImageFileDirectory_v1.from_v2(self.tag_v2) + self.__frame = frame + self._setup() + + def tell(self): + """Return the current frame number""" + return self.__frame + + def load(self): + if self.use_load_libtiff: + return self._load_libtiff() + return super().load() + + def load_end(self): + if self._tile_orientation: + method = { + 2: Image.FLIP_LEFT_RIGHT, + 3: Image.ROTATE_180, + 4: Image.FLIP_TOP_BOTTOM, + 5: Image.TRANSPOSE, + 6: Image.ROTATE_270, + 7: Image.TRANSVERSE, + 8: Image.ROTATE_90, + }.get(self._tile_orientation) + if method is not None: + self.im = self.im.transpose(method) + self._size = self.im.size + + # allow closing if we're on the first frame, there's no next + # This is the ImageFile.load path only, libtiff specific below. + if not self._is_animated: + self._close_exclusive_fp_after_loading = True + + def _load_libtiff(self): + """ Overload method triggered when we detect a compressed tiff + Calls out to libtiff """ + + pixel = Image.Image.load(self) + + if self.tile is None: + raise OSError("cannot load this image") + if not self.tile: + return pixel + + self.load_prepare() + + if not len(self.tile) == 1: + raise OSError("Not exactly one tile") + + # (self._compression, (extents tuple), + # 0, (rawmode, self._compression, fp)) + extents = self.tile[0][1] + args = list(self.tile[0][3]) + + # To be nice on memory footprint, if there's a + # file descriptor, use that instead of reading + # into a string in python. + # libtiff closes the file descriptor, so pass in a dup. + try: + fp = hasattr(self.fp, "fileno") and os.dup(self.fp.fileno()) + # flush the file descriptor, prevents error on pypy 2.4+ + # should also eliminate the need for fp.tell + # in _seek + if hasattr(self.fp, "flush"): + self.fp.flush() + except OSError: + # io.BytesIO have a fileno, but returns an IOError if + # it doesn't use a file descriptor. + fp = False + + if fp: + args[2] = fp + + decoder = Image._getdecoder( + self.mode, "libtiff", tuple(args), self.decoderconfig + ) + try: + decoder.setimage(self.im, extents) + except ValueError: + raise OSError("Couldn't set the image") + + close_self_fp = self._exclusive_fp and not self._is_animated + if hasattr(self.fp, "getvalue"): + # We've got a stringio like thing passed in. Yay for all in memory. + # The decoder needs the entire file in one shot, so there's not + # a lot we can do here other than give it the entire file. + # unless we could do something like get the address of the + # underlying string for stringio. + # + # Rearranging for supporting byteio items, since they have a fileno + # that returns an IOError if there's no underlying fp. Easier to + # deal with here by reordering. + if DEBUG: + print("have getvalue. just sending in a string from getvalue") + n, err = decoder.decode(self.fp.getvalue()) + elif fp: + # we've got a actual file on disk, pass in the fp. + if DEBUG: + print("have fileno, calling fileno version of the decoder.") + if not close_self_fp: + self.fp.seek(0) + # 4 bytes, otherwise the trace might error out + n, err = decoder.decode(b"fpfp") + else: + # we have something else. + if DEBUG: + print("don't have fileno or getvalue. just reading") + self.fp.seek(0) + # UNDONE -- so much for that buffer size thing. + n, err = decoder.decode(self.fp.read()) + + self.tile = [] + self.readonly = 0 + + self.load_end() + + # libtiff closed the fp in a, we need to close self.fp, if possible + if close_self_fp: + self.fp.close() + self.fp = None # might be shared + + if err < 0: + raise OSError(err) + + return Image.Image.load(self) + + def _setup(self): + """Setup this image object based on current tags""" + + if 0xBC01 in self.tag_v2: + raise OSError("Windows Media Photo files not yet supported") + + # extract relevant tags + self._compression = COMPRESSION_INFO[self.tag_v2.get(COMPRESSION, 1)] + self._planar_configuration = self.tag_v2.get(PLANAR_CONFIGURATION, 1) + + # photometric is a required tag, but not everyone is reading + # the specification + photo = self.tag_v2.get(PHOTOMETRIC_INTERPRETATION, 0) + + # old style jpeg compression images most certainly are YCbCr + if self._compression == "tiff_jpeg": + photo = 6 + + fillorder = self.tag_v2.get(FILLORDER, 1) + + if DEBUG: + print("*** Summary ***") + print("- compression:", self._compression) + print("- photometric_interpretation:", photo) + print("- planar_configuration:", self._planar_configuration) + print("- fill_order:", fillorder) + print("- YCbCr subsampling:", self.tag.get(530)) + + # size + xsize = int(self.tag_v2.get(IMAGEWIDTH)) + ysize = int(self.tag_v2.get(IMAGELENGTH)) + self._size = xsize, ysize + + if DEBUG: + print("- size:", self.size) + + sampleFormat = self.tag_v2.get(SAMPLEFORMAT, (1,)) + if len(sampleFormat) > 1 and max(sampleFormat) == min(sampleFormat) == 1: + # SAMPLEFORMAT is properly per band, so an RGB image will + # be (1,1,1). But, we don't support per band pixel types, + # and anything more than one band is a uint8. So, just + # take the first element. Revisit this if adding support + # for more exotic images. + sampleFormat = (1,) + + bps_tuple = self.tag_v2.get(BITSPERSAMPLE, (1,)) + extra_tuple = self.tag_v2.get(EXTRASAMPLES, ()) + if photo in (2, 6, 8): # RGB, YCbCr, LAB + bps_count = 3 + elif photo == 5: # CMYK + bps_count = 4 + else: + bps_count = 1 + bps_count += len(extra_tuple) + # Some files have only one value in bps_tuple, + # while should have more. Fix it + if bps_count > len(bps_tuple) and len(bps_tuple) == 1: + bps_tuple = bps_tuple * bps_count + + # mode: check photometric interpretation and bits per pixel + key = ( + self.tag_v2.prefix, + photo, + sampleFormat, + fillorder, + bps_tuple, + extra_tuple, + ) + if DEBUG: + print("format key:", key) + try: + self.mode, rawmode = OPEN_INFO[key] + except KeyError: + if DEBUG: + print("- unsupported format") + raise SyntaxError("unknown pixel mode") + + if DEBUG: + print("- raw mode:", rawmode) + print("- pil mode:", self.mode) + + self.info["compression"] = self._compression + + xres = self.tag_v2.get(X_RESOLUTION, 1) + yres = self.tag_v2.get(Y_RESOLUTION, 1) + + if xres and yres: + resunit = self.tag_v2.get(RESOLUTION_UNIT) + if resunit == 2: # dots per inch + self.info["dpi"] = int(xres + 0.5), int(yres + 0.5) + elif resunit == 3: # dots per centimeter. convert to dpi + self.info["dpi"] = int(xres * 2.54 + 0.5), int(yres * 2.54 + 0.5) + elif resunit is None: # used to default to 1, but now 2) + self.info["dpi"] = int(xres + 0.5), int(yres + 0.5) + # For backward compatibility, + # we also preserve the old behavior + self.info["resolution"] = xres, yres + else: # No absolute unit of measurement + self.info["resolution"] = xres, yres + + # build tile descriptors + x = y = layer = 0 + self.tile = [] + self.use_load_libtiff = READ_LIBTIFF or self._compression != "raw" + if self.use_load_libtiff: + # Decoder expects entire file as one tile. + # There's a buffer size limit in load (64k) + # so large g4 images will fail if we use that + # function. + # + # Setup the one tile for the whole image, then + # use the _load_libtiff function. + + # libtiff handles the fillmode for us, so 1;IR should + # actually be 1;I. Including the R double reverses the + # bits, so stripes of the image are reversed. See + # https://github.com/python-pillow/Pillow/issues/279 + if fillorder == 2: + # Replace fillorder with fillorder=1 + key = key[:3] + (1,) + key[4:] + if DEBUG: + print("format key:", key) + # this should always work, since all the + # fillorder==2 modes have a corresponding + # fillorder=1 mode + self.mode, rawmode = OPEN_INFO[key] + # libtiff always returns the bytes in native order. + # we're expecting image byte order. So, if the rawmode + # contains I;16, we need to convert from native to image + # byte order. + if rawmode == "I;16": + rawmode = "I;16N" + if ";16B" in rawmode: + rawmode = rawmode.replace(";16B", ";16N") + if ";16L" in rawmode: + rawmode = rawmode.replace(";16L", ";16N") + + # Offset in the tile tuple is 0, we go from 0,0 to + # w,h, and we only do this once -- eds + a = (rawmode, self._compression, False, self.tag_v2.offset) + self.tile.append(("libtiff", (0, 0, xsize, ysize), 0, a)) + + elif STRIPOFFSETS in self.tag_v2 or TILEOFFSETS in self.tag_v2: + # striped image + if STRIPOFFSETS in self.tag_v2: + offsets = self.tag_v2[STRIPOFFSETS] + h = self.tag_v2.get(ROWSPERSTRIP, ysize) + w = self.size[0] + else: + # tiled image + offsets = self.tag_v2[TILEOFFSETS] + w = self.tag_v2.get(322) + h = self.tag_v2.get(323) + + for offset in offsets: + if x + w > xsize: + stride = w * sum(bps_tuple) / 8 # bytes per line + else: + stride = 0 + + tile_rawmode = rawmode + if self._planar_configuration == 2: + # each band on it's own layer + tile_rawmode = rawmode[layer] + # adjust stride width accordingly + stride /= bps_count + + a = (tile_rawmode, int(stride), 1) + self.tile.append( + ( + self._compression, + (x, y, min(x + w, xsize), min(y + h, ysize)), + offset, + a, + ) + ) + x = x + w + if x >= self.size[0]: + x, y = 0, y + h + if y >= self.size[1]: + x = y = 0 + layer += 1 + else: + if DEBUG: + print("- unsupported data organization") + raise SyntaxError("unknown data organization") + + # Fix up info. + if ICCPROFILE in self.tag_v2: + self.info["icc_profile"] = self.tag_v2[ICCPROFILE] + + # fixup palette descriptor + + if self.mode in ["P", "PA"]: + palette = [o8(b // 256) for b in self.tag_v2[COLORMAP]] + self.palette = ImagePalette.raw("RGB;L", b"".join(palette)) + + self._tile_orientation = self.tag_v2.get(0x0112) + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +# +# -------------------------------------------------------------------- +# Write TIFF files + +# little endian is default except for image modes with +# explicit big endian byte-order + +SAVE_INFO = { + # mode => rawmode, byteorder, photometrics, + # sampleformat, bitspersample, extra + "1": ("1", II, 1, 1, (1,), None), + "L": ("L", II, 1, 1, (8,), None), + "LA": ("LA", II, 1, 1, (8, 8), 2), + "P": ("P", II, 3, 1, (8,), None), + "PA": ("PA", II, 3, 1, (8, 8), 2), + "I": ("I;32S", II, 1, 2, (32,), None), + "I;16": ("I;16", II, 1, 1, (16,), None), + "I;16S": ("I;16S", II, 1, 2, (16,), None), + "F": ("F;32F", II, 1, 3, (32,), None), + "RGB": ("RGB", II, 2, 1, (8, 8, 8), None), + "RGBX": ("RGBX", II, 2, 1, (8, 8, 8, 8), 0), + "RGBA": ("RGBA", II, 2, 1, (8, 8, 8, 8), 2), + "CMYK": ("CMYK", II, 5, 1, (8, 8, 8, 8), None), + "YCbCr": ("YCbCr", II, 6, 1, (8, 8, 8), None), + "LAB": ("LAB", II, 8, 1, (8, 8, 8), None), + "I;32BS": ("I;32BS", MM, 1, 2, (32,), None), + "I;16B": ("I;16B", MM, 1, 1, (16,), None), + "I;16BS": ("I;16BS", MM, 1, 2, (16,), None), + "F;32BF": ("F;32BF", MM, 1, 3, (32,), None), +} + + +def _save(im, fp, filename): + + try: + rawmode, prefix, photo, format, bits, extra = SAVE_INFO[im.mode] + except KeyError: + raise OSError("cannot write mode %s as TIFF" % im.mode) + + ifd = ImageFileDirectory_v2(prefix=prefix) + + compression = im.encoderinfo.get("compression", im.info.get("compression")) + if compression is None: + compression = "raw" + + libtiff = WRITE_LIBTIFF or compression != "raw" + + # required for color libtiff images + ifd[PLANAR_CONFIGURATION] = getattr(im, "_planar_configuration", 1) + + ifd[IMAGEWIDTH] = im.size[0] + ifd[IMAGELENGTH] = im.size[1] + + # write any arbitrary tags passed in as an ImageFileDirectory + info = im.encoderinfo.get("tiffinfo", {}) + if DEBUG: + print("Tiffinfo Keys: %s" % list(info)) + if isinstance(info, ImageFileDirectory_v1): + info = info.to_v2() + for key in info: + ifd[key] = info.get(key) + try: + ifd.tagtype[key] = info.tagtype[key] + except Exception: + pass # might not be an IFD. Might not have populated type + + # additions written by Greg Couch, gregc@cgl.ucsf.edu + # inspired by image-sig posting from Kevin Cazabon, kcazabon@home.com + if hasattr(im, "tag_v2"): + # preserve tags from original TIFF image file + for key in ( + RESOLUTION_UNIT, + X_RESOLUTION, + Y_RESOLUTION, + IPTC_NAA_CHUNK, + PHOTOSHOP_CHUNK, + XMP, + ): + if key in im.tag_v2: + ifd[key] = im.tag_v2[key] + ifd.tagtype[key] = im.tag_v2.tagtype[key] + + # preserve ICC profile (should also work when saving other formats + # which support profiles as TIFF) -- 2008-06-06 Florian Hoech + if "icc_profile" in im.info: + ifd[ICCPROFILE] = im.info["icc_profile"] + + for key, name in [ + (IMAGEDESCRIPTION, "description"), + (X_RESOLUTION, "resolution"), + (Y_RESOLUTION, "resolution"), + (X_RESOLUTION, "x_resolution"), + (Y_RESOLUTION, "y_resolution"), + (RESOLUTION_UNIT, "resolution_unit"), + (SOFTWARE, "software"), + (DATE_TIME, "date_time"), + (ARTIST, "artist"), + (COPYRIGHT, "copyright"), + ]: + if name in im.encoderinfo: + ifd[key] = im.encoderinfo[name] + + dpi = im.encoderinfo.get("dpi") + if dpi: + ifd[RESOLUTION_UNIT] = 2 + ifd[X_RESOLUTION] = int(dpi[0] + 0.5) + ifd[Y_RESOLUTION] = int(dpi[1] + 0.5) + + if bits != (1,): + ifd[BITSPERSAMPLE] = bits + if len(bits) != 1: + ifd[SAMPLESPERPIXEL] = len(bits) + if extra is not None: + ifd[EXTRASAMPLES] = extra + if format != 1: + ifd[SAMPLEFORMAT] = format + + ifd[PHOTOMETRIC_INTERPRETATION] = photo + + if im.mode in ["P", "PA"]: + lut = im.im.getpalette("RGB", "RGB;L") + ifd[COLORMAP] = tuple(i8(v) * 256 for v in lut) + # data orientation + stride = len(bits) * ((im.size[0] * bits[0] + 7) // 8) + ifd[ROWSPERSTRIP] = im.size[1] + ifd[STRIPBYTECOUNTS] = stride * im.size[1] + ifd[STRIPOFFSETS] = 0 # this is adjusted by IFD writer + # no compression by default: + ifd[COMPRESSION] = COMPRESSION_INFO_REV.get(compression, 1) + + if libtiff: + if "quality" in im.encoderinfo: + quality = im.encoderinfo["quality"] + if not isinstance(quality, int) or quality < 0 or quality > 100: + raise ValueError("Invalid quality setting") + if compression != "jpeg": + raise ValueError( + "quality setting only supported for 'jpeg' compression" + ) + ifd[JPEGQUALITY] = quality + + if DEBUG: + print("Saving using libtiff encoder") + print("Items: %s" % sorted(ifd.items())) + _fp = 0 + if hasattr(fp, "fileno"): + try: + fp.seek(0) + _fp = os.dup(fp.fileno()) + except io.UnsupportedOperation: + pass + + # optional types for non core tags + types = {} + # SAMPLEFORMAT is determined by the image format and should not be copied + # from legacy_ifd. + # STRIPOFFSETS and STRIPBYTECOUNTS are added by the library + # based on the data in the strip. + # The other tags expect arrays with a certain length (fixed or depending on + # BITSPERSAMPLE, etc), passing arrays with a different length will result in + # segfaults. Block these tags until we add extra validation. + blocklist = [ + COLORMAP, + REFERENCEBLACKWHITE, + SAMPLEFORMAT, + STRIPBYTECOUNTS, + STRIPOFFSETS, + TRANSFERFUNCTION, + ] + + atts = {} + # bits per sample is a single short in the tiff directory, not a list. + atts[BITSPERSAMPLE] = bits[0] + # Merge the ones that we have with (optional) more bits from + # the original file, e.g x,y resolution so that we can + # save(load('')) == original file. + legacy_ifd = {} + if hasattr(im, "tag"): + legacy_ifd = im.tag.to_v2() + for tag, value in itertools.chain( + ifd.items(), getattr(im, "tag_v2", {}).items(), legacy_ifd.items() + ): + # Libtiff can only process certain core items without adding + # them to the custom dictionary. + # Custom items are supported for int, float, unicode, string and byte + # values. Other types and tuples require a tagtype. + if tag not in TiffTags.LIBTIFF_CORE: + if ( + TiffTags.lookup(tag).type == TiffTags.UNDEFINED + or not Image.core.libtiff_support_custom_tags + ): + continue + + if tag in ifd.tagtype: + types[tag] = ifd.tagtype[tag] + elif not (isinstance(value, (int, float, str, bytes))): + continue + if tag not in atts and tag not in blocklist: + if isinstance(value, str): + atts[tag] = value.encode("ascii", "replace") + b"\0" + elif isinstance(value, IFDRational): + atts[tag] = float(value) + else: + atts[tag] = value + + if DEBUG: + print("Converted items: %s" % sorted(atts.items())) + + # libtiff always expects the bytes in native order. + # we're storing image byte order. So, if the rawmode + # contains I;16, we need to convert from native to image + # byte order. + if im.mode in ("I;16B", "I;16"): + rawmode = "I;16N" + + # Pass tags as sorted list so that the tags are set in a fixed order. + # This is required by libtiff for some tags. For example, the JPEGQUALITY + # pseudo tag requires that the COMPRESS tag was already set. + tags = list(atts.items()) + tags.sort() + a = (rawmode, compression, _fp, filename, tags, types) + e = Image._getencoder(im.mode, "libtiff", a, im.encoderconfig) + e.setimage(im.im, (0, 0) + im.size) + while True: + # undone, change to self.decodermaxblock: + l, s, d = e.encode(16 * 1024) + if not _fp: + fp.write(d) + if s: + break + if s < 0: + raise OSError("encoder error %d when writing image file" % s) + + else: + offset = ifd.save(fp) + + ImageFile._save( + im, fp, [("raw", (0, 0) + im.size, offset, (rawmode, stride, 1))] + ) + + # -- helper for multi-page save -- + if "_debug_multipage" in im.encoderinfo: + # just to access o32 and o16 (using correct byte order) + im._debug_multipage = ifd + + +class AppendingTiffWriter: + fieldSizes = [ + 0, # None + 1, # byte + 1, # ascii + 2, # short + 4, # long + 8, # rational + 1, # sbyte + 1, # undefined + 2, # sshort + 4, # slong + 8, # srational + 4, # float + 8, # double + ] + + # StripOffsets = 273 + # FreeOffsets = 288 + # TileOffsets = 324 + # JPEGQTables = 519 + # JPEGDCTables = 520 + # JPEGACTables = 521 + Tags = {273, 288, 324, 519, 520, 521} + + def __init__(self, fn, new=False): + if hasattr(fn, "read"): + self.f = fn + self.close_fp = False + else: + self.name = fn + self.close_fp = True + try: + self.f = open(fn, "w+b" if new else "r+b") + except OSError: + self.f = open(fn, "w+b") + self.beginning = self.f.tell() + self.setup() + + def setup(self): + # Reset everything. + self.f.seek(self.beginning, os.SEEK_SET) + + self.whereToWriteNewIFDOffset = None + self.offsetOfNewPage = 0 + + self.IIMM = IIMM = self.f.read(4) + if not IIMM: + # empty file - first page + self.isFirst = True + return + + self.isFirst = False + if IIMM == b"II\x2a\x00": + self.setEndian("<") + elif IIMM == b"MM\x00\x2a": + self.setEndian(">") + else: + raise RuntimeError("Invalid TIFF file header") + + self.skipIFDs() + self.goToEnd() + + def finalize(self): + if self.isFirst: + return + + # fix offsets + self.f.seek(self.offsetOfNewPage) + + IIMM = self.f.read(4) + if not IIMM: + # raise RuntimeError("nothing written into new page") + # Make it easy to finish a frame without committing to a new one. + return + + if IIMM != self.IIMM: + raise RuntimeError("IIMM of new page doesn't match IIMM of first page") + + IFDoffset = self.readLong() + IFDoffset += self.offsetOfNewPage + self.f.seek(self.whereToWriteNewIFDOffset) + self.writeLong(IFDoffset) + self.f.seek(IFDoffset) + self.fixIFD() + + def newFrame(self): + # Call this to finish a frame. + self.finalize() + self.setup() + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + if self.close_fp: + self.close() + return False + + def tell(self): + return self.f.tell() - self.offsetOfNewPage + + def seek(self, offset, whence=io.SEEK_SET): + if whence == os.SEEK_SET: + offset += self.offsetOfNewPage + + self.f.seek(offset, whence) + return self.tell() + + def goToEnd(self): + self.f.seek(0, os.SEEK_END) + pos = self.f.tell() + + # pad to 16 byte boundary + padBytes = 16 - pos % 16 + if 0 < padBytes < 16: + self.f.write(bytes(padBytes)) + self.offsetOfNewPage = self.f.tell() + + def setEndian(self, endian): + self.endian = endian + self.longFmt = self.endian + "L" + self.shortFmt = self.endian + "H" + self.tagFormat = self.endian + "HHL" + + def skipIFDs(self): + while True: + IFDoffset = self.readLong() + if IFDoffset == 0: + self.whereToWriteNewIFDOffset = self.f.tell() - 4 + break + + self.f.seek(IFDoffset) + numTags = self.readShort() + self.f.seek(numTags * 12, os.SEEK_CUR) + + def write(self, data): + return self.f.write(data) + + def readShort(self): + (value,) = struct.unpack(self.shortFmt, self.f.read(2)) + return value + + def readLong(self): + (value,) = struct.unpack(self.longFmt, self.f.read(4)) + return value + + def rewriteLastShortToLong(self, value): + self.f.seek(-2, os.SEEK_CUR) + bytesWritten = self.f.write(struct.pack(self.longFmt, value)) + if bytesWritten is not None and bytesWritten != 4: + raise RuntimeError("wrote only %u bytes but wanted 4" % bytesWritten) + + def rewriteLastShort(self, value): + self.f.seek(-2, os.SEEK_CUR) + bytesWritten = self.f.write(struct.pack(self.shortFmt, value)) + if bytesWritten is not None and bytesWritten != 2: + raise RuntimeError("wrote only %u bytes but wanted 2" % bytesWritten) + + def rewriteLastLong(self, value): + self.f.seek(-4, os.SEEK_CUR) + bytesWritten = self.f.write(struct.pack(self.longFmt, value)) + if bytesWritten is not None and bytesWritten != 4: + raise RuntimeError("wrote only %u bytes but wanted 4" % bytesWritten) + + def writeShort(self, value): + bytesWritten = self.f.write(struct.pack(self.shortFmt, value)) + if bytesWritten is not None and bytesWritten != 2: + raise RuntimeError("wrote only %u bytes but wanted 2" % bytesWritten) + + def writeLong(self, value): + bytesWritten = self.f.write(struct.pack(self.longFmt, value)) + if bytesWritten is not None and bytesWritten != 4: + raise RuntimeError("wrote only %u bytes but wanted 4" % bytesWritten) + + def close(self): + self.finalize() + self.f.close() + + def fixIFD(self): + numTags = self.readShort() + + for i in range(numTags): + tag, fieldType, count = struct.unpack(self.tagFormat, self.f.read(8)) + + fieldSize = self.fieldSizes[fieldType] + totalSize = fieldSize * count + isLocal = totalSize <= 4 + if not isLocal: + offset = self.readLong() + offset += self.offsetOfNewPage + self.rewriteLastLong(offset) + + if tag in self.Tags: + curPos = self.f.tell() + + if isLocal: + self.fixOffsets( + count, isShort=(fieldSize == 2), isLong=(fieldSize == 4) + ) + self.f.seek(curPos + 4) + else: + self.f.seek(offset) + self.fixOffsets( + count, isShort=(fieldSize == 2), isLong=(fieldSize == 4) + ) + self.f.seek(curPos) + + offset = curPos = None + + elif isLocal: + # skip the locally stored value that is not an offset + self.f.seek(4, os.SEEK_CUR) + + def fixOffsets(self, count, isShort=False, isLong=False): + if not isShort and not isLong: + raise RuntimeError("offset is neither short nor long") + + for i in range(count): + offset = self.readShort() if isShort else self.readLong() + offset += self.offsetOfNewPage + if isShort and offset >= 65536: + # offset is now too large - we must convert shorts to longs + if count != 1: + raise RuntimeError("not implemented") # XXX TODO + + # simple case - the offset is just one and therefore it is + # local (not referenced with another offset) + self.rewriteLastShortToLong(offset) + self.f.seek(-10, os.SEEK_CUR) + self.writeShort(TiffTags.LONG) # rewrite the type to LONG + self.f.seek(8, os.SEEK_CUR) + elif isShort: + self.rewriteLastShort(offset) + else: + self.rewriteLastLong(offset) + + +def _save_all(im, fp, filename): + encoderinfo = im.encoderinfo.copy() + encoderconfig = im.encoderconfig + append_images = list(encoderinfo.get("append_images", [])) + if not hasattr(im, "n_frames") and not append_images: + return _save(im, fp, filename) + + cur_idx = im.tell() + try: + with AppendingTiffWriter(fp) as tf: + for ims in [im] + append_images: + ims.encoderinfo = encoderinfo + ims.encoderconfig = encoderconfig + if not hasattr(ims, "n_frames"): + nfr = 1 + else: + nfr = ims.n_frames + + for idx in range(nfr): + ims.seek(idx) + ims.load() + _save(ims, tf, filename) + tf.newFrame() + finally: + im.seek(cur_idx) + + +# +# -------------------------------------------------------------------- +# Register + +Image.register_open(TiffImageFile.format, TiffImageFile, _accept) +Image.register_save(TiffImageFile.format, _save) +Image.register_save_all(TiffImageFile.format, _save_all) + +Image.register_extensions(TiffImageFile.format, [".tif", ".tiff"]) + +Image.register_mime(TiffImageFile.format, "image/tiff") diff --git a/venv/Lib/site-packages/PIL/TiffTags.py b/venv/Lib/site-packages/PIL/TiffTags.py new file mode 100644 index 0000000..6cc9ff7 --- /dev/null +++ b/venv/Lib/site-packages/PIL/TiffTags.py @@ -0,0 +1,499 @@ +# +# The Python Imaging Library. +# $Id$ +# +# TIFF tags +# +# This module provides clear-text names for various well-known +# TIFF tags. the TIFF codec works just fine without it. +# +# Copyright (c) Secret Labs AB 1999. +# +# See the README file for information on usage and redistribution. +# + +## +# This module provides constants and clear-text names for various +# well-known TIFF tags. +## + +from collections import namedtuple + + +class TagInfo(namedtuple("_TagInfo", "value name type length enum")): + __slots__ = [] + + def __new__(cls, value=None, name="unknown", type=None, length=None, enum=None): + return super().__new__(cls, value, name, type, length, enum or {}) + + def cvt_enum(self, value): + # Using get will call hash(value), which can be expensive + # for some types (e.g. Fraction). Since self.enum is rarely + # used, it's usually better to test it first. + return self.enum.get(value, value) if self.enum else value + + +def lookup(tag): + """ + :param tag: Integer tag number + :returns: Taginfo namedtuple, From the TAGS_V2 info if possible, + otherwise just populating the value and name from TAGS. + If the tag is not recognized, "unknown" is returned for the name + + """ + + return TAGS_V2.get(tag, TagInfo(tag, TAGS.get(tag, "unknown"))) + + +## +# Map tag numbers to tag info. +# +# id: (Name, Type, Length, enum_values) +# +# The length here differs from the length in the tiff spec. For +# numbers, the tiff spec is for the number of fields returned. We +# agree here. For string-like types, the tiff spec uses the length of +# field in bytes. In Pillow, we are using the number of expected +# fields, in general 1 for string-like types. + + +BYTE = 1 +ASCII = 2 +SHORT = 3 +LONG = 4 +RATIONAL = 5 +SIGNED_BYTE = 6 +UNDEFINED = 7 +SIGNED_SHORT = 8 +SIGNED_LONG = 9 +SIGNED_RATIONAL = 10 +FLOAT = 11 +DOUBLE = 12 + +TAGS_V2 = { + 254: ("NewSubfileType", LONG, 1), + 255: ("SubfileType", SHORT, 1), + 256: ("ImageWidth", LONG, 1), + 257: ("ImageLength", LONG, 1), + 258: ("BitsPerSample", SHORT, 0), + 259: ( + "Compression", + SHORT, + 1, + { + "Uncompressed": 1, + "CCITT 1d": 2, + "Group 3 Fax": 3, + "Group 4 Fax": 4, + "LZW": 5, + "JPEG": 6, + "PackBits": 32773, + }, + ), + 262: ( + "PhotometricInterpretation", + SHORT, + 1, + { + "WhiteIsZero": 0, + "BlackIsZero": 1, + "RGB": 2, + "RGB Palette": 3, + "Transparency Mask": 4, + "CMYK": 5, + "YCbCr": 6, + "CieLAB": 8, + "CFA": 32803, # TIFF/EP, Adobe DNG + "LinearRaw": 32892, # Adobe DNG + }, + ), + 263: ("Threshholding", SHORT, 1), + 264: ("CellWidth", SHORT, 1), + 265: ("CellLength", SHORT, 1), + 266: ("FillOrder", SHORT, 1), + 269: ("DocumentName", ASCII, 1), + 270: ("ImageDescription", ASCII, 1), + 271: ("Make", ASCII, 1), + 272: ("Model", ASCII, 1), + 273: ("StripOffsets", LONG, 0), + 274: ("Orientation", SHORT, 1), + 277: ("SamplesPerPixel", SHORT, 1), + 278: ("RowsPerStrip", LONG, 1), + 279: ("StripByteCounts", LONG, 0), + 280: ("MinSampleValue", SHORT, 0), + 281: ("MaxSampleValue", SHORT, 0), + 282: ("XResolution", RATIONAL, 1), + 283: ("YResolution", RATIONAL, 1), + 284: ("PlanarConfiguration", SHORT, 1, {"Contiguous": 1, "Separate": 2}), + 285: ("PageName", ASCII, 1), + 286: ("XPosition", RATIONAL, 1), + 287: ("YPosition", RATIONAL, 1), + 288: ("FreeOffsets", LONG, 1), + 289: ("FreeByteCounts", LONG, 1), + 290: ("GrayResponseUnit", SHORT, 1), + 291: ("GrayResponseCurve", SHORT, 0), + 292: ("T4Options", LONG, 1), + 293: ("T6Options", LONG, 1), + 296: ("ResolutionUnit", SHORT, 1, {"none": 1, "inch": 2, "cm": 3}), + 297: ("PageNumber", SHORT, 2), + 301: ("TransferFunction", SHORT, 0), + 305: ("Software", ASCII, 1), + 306: ("DateTime", ASCII, 1), + 315: ("Artist", ASCII, 1), + 316: ("HostComputer", ASCII, 1), + 317: ("Predictor", SHORT, 1, {"none": 1, "Horizontal Differencing": 2}), + 318: ("WhitePoint", RATIONAL, 2), + 319: ("PrimaryChromaticities", RATIONAL, 6), + 320: ("ColorMap", SHORT, 0), + 321: ("HalftoneHints", SHORT, 2), + 322: ("TileWidth", LONG, 1), + 323: ("TileLength", LONG, 1), + 324: ("TileOffsets", LONG, 0), + 325: ("TileByteCounts", LONG, 0), + 332: ("InkSet", SHORT, 1), + 333: ("InkNames", ASCII, 1), + 334: ("NumberOfInks", SHORT, 1), + 336: ("DotRange", SHORT, 0), + 337: ("TargetPrinter", ASCII, 1), + 338: ("ExtraSamples", SHORT, 0), + 339: ("SampleFormat", SHORT, 0), + 340: ("SMinSampleValue", DOUBLE, 0), + 341: ("SMaxSampleValue", DOUBLE, 0), + 342: ("TransferRange", SHORT, 6), + 347: ("JPEGTables", UNDEFINED, 1), + # obsolete JPEG tags + 512: ("JPEGProc", SHORT, 1), + 513: ("JPEGInterchangeFormat", LONG, 1), + 514: ("JPEGInterchangeFormatLength", LONG, 1), + 515: ("JPEGRestartInterval", SHORT, 1), + 517: ("JPEGLosslessPredictors", SHORT, 0), + 518: ("JPEGPointTransforms", SHORT, 0), + 519: ("JPEGQTables", LONG, 0), + 520: ("JPEGDCTables", LONG, 0), + 521: ("JPEGACTables", LONG, 0), + 529: ("YCbCrCoefficients", RATIONAL, 3), + 530: ("YCbCrSubSampling", SHORT, 2), + 531: ("YCbCrPositioning", SHORT, 1), + 532: ("ReferenceBlackWhite", RATIONAL, 6), + 700: ("XMP", BYTE, 0), + 33432: ("Copyright", ASCII, 1), + 33723: ("IptcNaaInfo", UNDEFINED, 0), + 34377: ("PhotoshopInfo", BYTE, 0), + # FIXME add more tags here + 34665: ("ExifIFD", LONG, 1), + 34675: ("ICCProfile", UNDEFINED, 1), + 34853: ("GPSInfoIFD", LONG, 1), + # MPInfo + 45056: ("MPFVersion", UNDEFINED, 1), + 45057: ("NumberOfImages", LONG, 1), + 45058: ("MPEntry", UNDEFINED, 1), + 45059: ("ImageUIDList", UNDEFINED, 0), # UNDONE, check + 45060: ("TotalFrames", LONG, 1), + 45313: ("MPIndividualNum", LONG, 1), + 45569: ("PanOrientation", LONG, 1), + 45570: ("PanOverlap_H", RATIONAL, 1), + 45571: ("PanOverlap_V", RATIONAL, 1), + 45572: ("BaseViewpointNum", LONG, 1), + 45573: ("ConvergenceAngle", SIGNED_RATIONAL, 1), + 45574: ("BaselineLength", RATIONAL, 1), + 45575: ("VerticalDivergence", SIGNED_RATIONAL, 1), + 45576: ("AxisDistance_X", SIGNED_RATIONAL, 1), + 45577: ("AxisDistance_Y", SIGNED_RATIONAL, 1), + 45578: ("AxisDistance_Z", SIGNED_RATIONAL, 1), + 45579: ("YawAngle", SIGNED_RATIONAL, 1), + 45580: ("PitchAngle", SIGNED_RATIONAL, 1), + 45581: ("RollAngle", SIGNED_RATIONAL, 1), + 50741: ("MakerNoteSafety", SHORT, 1, {"Unsafe": 0, "Safe": 1}), + 50780: ("BestQualityScale", RATIONAL, 1), + 50838: ("ImageJMetaDataByteCounts", LONG, 0), # Can be more than one + 50839: ("ImageJMetaData", UNDEFINED, 1), # see Issue #2006 +} + +# Legacy Tags structure +# these tags aren't included above, but were in the previous versions +TAGS = { + 347: "JPEGTables", + 700: "XMP", + # Additional Exif Info + 32932: "Wang Annotation", + 33434: "ExposureTime", + 33437: "FNumber", + 33445: "MD FileTag", + 33446: "MD ScalePixel", + 33447: "MD ColorTable", + 33448: "MD LabName", + 33449: "MD SampleInfo", + 33450: "MD PrepDate", + 33451: "MD PrepTime", + 33452: "MD FileUnits", + 33550: "ModelPixelScaleTag", + 33723: "IptcNaaInfo", + 33918: "INGR Packet Data Tag", + 33919: "INGR Flag Registers", + 33920: "IrasB Transformation Matrix", + 33922: "ModelTiepointTag", + 34264: "ModelTransformationTag", + 34377: "PhotoshopInfo", + 34735: "GeoKeyDirectoryTag", + 34736: "GeoDoubleParamsTag", + 34737: "GeoAsciiParamsTag", + 34850: "ExposureProgram", + 34852: "SpectralSensitivity", + 34855: "ISOSpeedRatings", + 34856: "OECF", + 34864: "SensitivityType", + 34865: "StandardOutputSensitivity", + 34866: "RecommendedExposureIndex", + 34867: "ISOSpeed", + 34868: "ISOSpeedLatitudeyyy", + 34869: "ISOSpeedLatitudezzz", + 34908: "HylaFAX FaxRecvParams", + 34909: "HylaFAX FaxSubAddress", + 34910: "HylaFAX FaxRecvTime", + 36864: "ExifVersion", + 36867: "DateTimeOriginal", + 36868: "DateTImeDigitized", + 37121: "ComponentsConfiguration", + 37122: "CompressedBitsPerPixel", + 37724: "ImageSourceData", + 37377: "ShutterSpeedValue", + 37378: "ApertureValue", + 37379: "BrightnessValue", + 37380: "ExposureBiasValue", + 37381: "MaxApertureValue", + 37382: "SubjectDistance", + 37383: "MeteringMode", + 37384: "LightSource", + 37385: "Flash", + 37386: "FocalLength", + 37396: "SubjectArea", + 37500: "MakerNote", + 37510: "UserComment", + 37520: "SubSec", + 37521: "SubSecTimeOriginal", + 37522: "SubsecTimeDigitized", + 40960: "FlashPixVersion", + 40961: "ColorSpace", + 40962: "PixelXDimension", + 40963: "PixelYDimension", + 40964: "RelatedSoundFile", + 40965: "InteroperabilityIFD", + 41483: "FlashEnergy", + 41484: "SpatialFrequencyResponse", + 41486: "FocalPlaneXResolution", + 41487: "FocalPlaneYResolution", + 41488: "FocalPlaneResolutionUnit", + 41492: "SubjectLocation", + 41493: "ExposureIndex", + 41495: "SensingMethod", + 41728: "FileSource", + 41729: "SceneType", + 41730: "CFAPattern", + 41985: "CustomRendered", + 41986: "ExposureMode", + 41987: "WhiteBalance", + 41988: "DigitalZoomRatio", + 41989: "FocalLengthIn35mmFilm", + 41990: "SceneCaptureType", + 41991: "GainControl", + 41992: "Contrast", + 41993: "Saturation", + 41994: "Sharpness", + 41995: "DeviceSettingDescription", + 41996: "SubjectDistanceRange", + 42016: "ImageUniqueID", + 42032: "CameraOwnerName", + 42033: "BodySerialNumber", + 42034: "LensSpecification", + 42035: "LensMake", + 42036: "LensModel", + 42037: "LensSerialNumber", + 42112: "GDAL_METADATA", + 42113: "GDAL_NODATA", + 42240: "Gamma", + 50215: "Oce Scanjob Description", + 50216: "Oce Application Selector", + 50217: "Oce Identification Number", + 50218: "Oce ImageLogic Characteristics", + # Adobe DNG + 50706: "DNGVersion", + 50707: "DNGBackwardVersion", + 50708: "UniqueCameraModel", + 50709: "LocalizedCameraModel", + 50710: "CFAPlaneColor", + 50711: "CFALayout", + 50712: "LinearizationTable", + 50713: "BlackLevelRepeatDim", + 50714: "BlackLevel", + 50715: "BlackLevelDeltaH", + 50716: "BlackLevelDeltaV", + 50717: "WhiteLevel", + 50718: "DefaultScale", + 50719: "DefaultCropOrigin", + 50720: "DefaultCropSize", + 50721: "ColorMatrix1", + 50722: "ColorMatrix2", + 50723: "CameraCalibration1", + 50724: "CameraCalibration2", + 50725: "ReductionMatrix1", + 50726: "ReductionMatrix2", + 50727: "AnalogBalance", + 50728: "AsShotNeutral", + 50729: "AsShotWhiteXY", + 50730: "BaselineExposure", + 50731: "BaselineNoise", + 50732: "BaselineSharpness", + 50733: "BayerGreenSplit", + 50734: "LinearResponseLimit", + 50735: "CameraSerialNumber", + 50736: "LensInfo", + 50737: "ChromaBlurRadius", + 50738: "AntiAliasStrength", + 50740: "DNGPrivateData", + 50778: "CalibrationIlluminant1", + 50779: "CalibrationIlluminant2", + 50784: "Alias Layer Metadata", +} + + +def _populate(): + for k, v in TAGS_V2.items(): + # Populate legacy structure. + TAGS[k] = v[0] + if len(v) == 4: + for sk, sv in v[3].items(): + TAGS[(k, sv)] = sk + + TAGS_V2[k] = TagInfo(k, *v) + + +_populate() +## +# Map type numbers to type names -- defined in ImageFileDirectory. + +TYPES = {} + +# was: +# TYPES = { +# 1: "byte", +# 2: "ascii", +# 3: "short", +# 4: "long", +# 5: "rational", +# 6: "signed byte", +# 7: "undefined", +# 8: "signed short", +# 9: "signed long", +# 10: "signed rational", +# 11: "float", +# 12: "double", +# } + +# +# These tags are handled by default in libtiff, without +# adding to the custom dictionary. From tif_dir.c, searching for +# case TIFFTAG in the _TIFFVSetField function: +# Line: item. +# 148: case TIFFTAG_SUBFILETYPE: +# 151: case TIFFTAG_IMAGEWIDTH: +# 154: case TIFFTAG_IMAGELENGTH: +# 157: case TIFFTAG_BITSPERSAMPLE: +# 181: case TIFFTAG_COMPRESSION: +# 202: case TIFFTAG_PHOTOMETRIC: +# 205: case TIFFTAG_THRESHHOLDING: +# 208: case TIFFTAG_FILLORDER: +# 214: case TIFFTAG_ORIENTATION: +# 221: case TIFFTAG_SAMPLESPERPIXEL: +# 228: case TIFFTAG_ROWSPERSTRIP: +# 238: case TIFFTAG_MINSAMPLEVALUE: +# 241: case TIFFTAG_MAXSAMPLEVALUE: +# 244: case TIFFTAG_SMINSAMPLEVALUE: +# 247: case TIFFTAG_SMAXSAMPLEVALUE: +# 250: case TIFFTAG_XRESOLUTION: +# 256: case TIFFTAG_YRESOLUTION: +# 262: case TIFFTAG_PLANARCONFIG: +# 268: case TIFFTAG_XPOSITION: +# 271: case TIFFTAG_YPOSITION: +# 274: case TIFFTAG_RESOLUTIONUNIT: +# 280: case TIFFTAG_PAGENUMBER: +# 284: case TIFFTAG_HALFTONEHINTS: +# 288: case TIFFTAG_COLORMAP: +# 294: case TIFFTAG_EXTRASAMPLES: +# 298: case TIFFTAG_MATTEING: +# 305: case TIFFTAG_TILEWIDTH: +# 316: case TIFFTAG_TILELENGTH: +# 327: case TIFFTAG_TILEDEPTH: +# 333: case TIFFTAG_DATATYPE: +# 344: case TIFFTAG_SAMPLEFORMAT: +# 361: case TIFFTAG_IMAGEDEPTH: +# 364: case TIFFTAG_SUBIFD: +# 376: case TIFFTAG_YCBCRPOSITIONING: +# 379: case TIFFTAG_YCBCRSUBSAMPLING: +# 383: case TIFFTAG_TRANSFERFUNCTION: +# 389: case TIFFTAG_REFERENCEBLACKWHITE: +# 393: case TIFFTAG_INKNAMES: + +# Following pseudo-tags are also handled by default in libtiff: +# TIFFTAG_JPEGQUALITY 65537 + +# some of these are not in our TAGS_V2 dict and were included from tiff.h + +# This list also exists in encode.c +LIBTIFF_CORE = { + 255, + 256, + 257, + 258, + 259, + 262, + 263, + 266, + 274, + 277, + 278, + 280, + 281, + 340, + 341, + 282, + 283, + 284, + 286, + 287, + 296, + 297, + 321, + 320, + 338, + 32995, + 322, + 323, + 32998, + 32996, + 339, + 32997, + 330, + 531, + 530, + 301, + 532, + 333, + # as above + 269, # this has been in our tests forever, and works + 65537, +} + +LIBTIFF_CORE.remove(320) # Array of short, crashes +LIBTIFF_CORE.remove(301) # Array of short, crashes +LIBTIFF_CORE.remove(532) # Array of long, crashes + +LIBTIFF_CORE.remove(255) # We don't have support for subfiletypes +LIBTIFF_CORE.remove(322) # We don't have support for writing tiled images with libtiff +LIBTIFF_CORE.remove(323) # Tiled images +LIBTIFF_CORE.remove(333) # Ink Names either + +# Note to advanced users: There may be combinations of these +# parameters and values that when added properly, will work and +# produce valid tiff images that may work in your application. +# It is safe to add and remove tags from this set from Pillow's point +# of view so long as you test against libtiff. diff --git a/venv/Lib/site-packages/PIL/WalImageFile.py b/venv/Lib/site-packages/PIL/WalImageFile.py new file mode 100644 index 0000000..d5a5c8e --- /dev/null +++ b/venv/Lib/site-packages/PIL/WalImageFile.py @@ -0,0 +1,123 @@ +# +# The Python Imaging Library. +# $Id$ +# +# WAL file handling +# +# History: +# 2003-04-23 fl created +# +# Copyright (c) 2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +# NOTE: This format cannot be automatically recognized, so the reader +# is not registered for use with Image.open(). To open a WAL file, use +# the WalImageFile.open() function instead. + +# This reader is based on the specification available from: +# https://www.flipcode.com/archives/Quake_2_BSP_File_Format.shtml +# and has been tested with a few sample files found using google. + +import builtins + +from . import Image +from ._binary import i32le as i32 + + +def open(filename): + """ + Load texture from a Quake2 WAL texture file. + + By default, a Quake2 standard palette is attached to the texture. + To override the palette, use the putpalette method. + + :param filename: WAL file name, or an opened file handle. + :returns: An image instance. + """ + # FIXME: modify to return a WalImageFile instance instead of + # plain Image object ? + + def imopen(fp): + # read header fields + header = fp.read(32 + 24 + 32 + 12) + size = i32(header, 32), i32(header, 36) + offset = i32(header, 40) + + # load pixel data + fp.seek(offset) + + Image._decompression_bomb_check(size) + im = Image.frombytes("P", size, fp.read(size[0] * size[1])) + im.putpalette(quake2palette) + + im.format = "WAL" + im.format_description = "Quake2 Texture" + + # strings are null-terminated + im.info["name"] = header[:32].split(b"\0", 1)[0] + next_name = header[56 : 56 + 32].split(b"\0", 1)[0] + if next_name: + im.info["next_name"] = next_name + + return im + + if hasattr(filename, "read"): + return imopen(filename) + else: + with builtins.open(filename, "rb") as fp: + return imopen(fp) + + +quake2palette = ( + # default palette taken from piffo 0.93 by Hans Häggström + b"\x01\x01\x01\x0b\x0b\x0b\x12\x12\x12\x17\x17\x17\x1b\x1b\x1b\x1e" + b"\x1e\x1e\x22\x22\x22\x26\x26\x26\x29\x29\x29\x2c\x2c\x2c\x2f\x2f" + b"\x2f\x32\x32\x32\x35\x35\x35\x37\x37\x37\x3a\x3a\x3a\x3c\x3c\x3c" + b"\x24\x1e\x13\x22\x1c\x12\x20\x1b\x12\x1f\x1a\x10\x1d\x19\x10\x1b" + b"\x17\x0f\x1a\x16\x0f\x18\x14\x0d\x17\x13\x0d\x16\x12\x0d\x14\x10" + b"\x0b\x13\x0f\x0b\x10\x0d\x0a\x0f\x0b\x0a\x0d\x0b\x07\x0b\x0a\x07" + b"\x23\x23\x26\x22\x22\x25\x22\x20\x23\x21\x1f\x22\x20\x1e\x20\x1f" + b"\x1d\x1e\x1d\x1b\x1c\x1b\x1a\x1a\x1a\x19\x19\x18\x17\x17\x17\x16" + b"\x16\x14\x14\x14\x13\x13\x13\x10\x10\x10\x0f\x0f\x0f\x0d\x0d\x0d" + b"\x2d\x28\x20\x29\x24\x1c\x27\x22\x1a\x25\x1f\x17\x38\x2e\x1e\x31" + b"\x29\x1a\x2c\x25\x17\x26\x20\x14\x3c\x30\x14\x37\x2c\x13\x33\x28" + b"\x12\x2d\x24\x10\x28\x1f\x0f\x22\x1a\x0b\x1b\x14\x0a\x13\x0f\x07" + b"\x31\x1a\x16\x30\x17\x13\x2e\x16\x10\x2c\x14\x0d\x2a\x12\x0b\x27" + b"\x0f\x0a\x25\x0f\x07\x21\x0d\x01\x1e\x0b\x01\x1c\x0b\x01\x1a\x0b" + b"\x01\x18\x0a\x01\x16\x0a\x01\x13\x0a\x01\x10\x07\x01\x0d\x07\x01" + b"\x29\x23\x1e\x27\x21\x1c\x26\x20\x1b\x25\x1f\x1a\x23\x1d\x19\x21" + b"\x1c\x18\x20\x1b\x17\x1e\x19\x16\x1c\x18\x14\x1b\x17\x13\x19\x14" + b"\x10\x17\x13\x0f\x14\x10\x0d\x12\x0f\x0b\x0f\x0b\x0a\x0b\x0a\x07" + b"\x26\x1a\x0f\x23\x19\x0f\x20\x17\x0f\x1c\x16\x0f\x19\x13\x0d\x14" + b"\x10\x0b\x10\x0d\x0a\x0b\x0a\x07\x33\x22\x1f\x35\x29\x26\x37\x2f" + b"\x2d\x39\x35\x34\x37\x39\x3a\x33\x37\x39\x30\x34\x36\x2b\x31\x34" + b"\x27\x2e\x31\x22\x2b\x2f\x1d\x28\x2c\x17\x25\x2a\x0f\x20\x26\x0d" + b"\x1e\x25\x0b\x1c\x22\x0a\x1b\x20\x07\x19\x1e\x07\x17\x1b\x07\x14" + b"\x18\x01\x12\x16\x01\x0f\x12\x01\x0b\x0d\x01\x07\x0a\x01\x01\x01" + b"\x2c\x21\x21\x2a\x1f\x1f\x29\x1d\x1d\x27\x1c\x1c\x26\x1a\x1a\x24" + b"\x18\x18\x22\x17\x17\x21\x16\x16\x1e\x13\x13\x1b\x12\x12\x18\x10" + b"\x10\x16\x0d\x0d\x12\x0b\x0b\x0d\x0a\x0a\x0a\x07\x07\x01\x01\x01" + b"\x2e\x30\x29\x2d\x2e\x27\x2b\x2c\x26\x2a\x2a\x24\x28\x29\x23\x27" + b"\x27\x21\x26\x26\x1f\x24\x24\x1d\x22\x22\x1c\x1f\x1f\x1a\x1c\x1c" + b"\x18\x19\x19\x16\x17\x17\x13\x13\x13\x10\x0f\x0f\x0d\x0b\x0b\x0a" + b"\x30\x1e\x1b\x2d\x1c\x19\x2c\x1a\x17\x2a\x19\x14\x28\x17\x13\x26" + b"\x16\x10\x24\x13\x0f\x21\x12\x0d\x1f\x10\x0b\x1c\x0f\x0a\x19\x0d" + b"\x0a\x16\x0b\x07\x12\x0a\x07\x0f\x07\x01\x0a\x01\x01\x01\x01\x01" + b"\x28\x29\x38\x26\x27\x36\x25\x26\x34\x24\x24\x31\x22\x22\x2f\x20" + b"\x21\x2d\x1e\x1f\x2a\x1d\x1d\x27\x1b\x1b\x25\x19\x19\x21\x17\x17" + b"\x1e\x14\x14\x1b\x13\x12\x17\x10\x0f\x13\x0d\x0b\x0f\x0a\x07\x07" + b"\x2f\x32\x29\x2d\x30\x26\x2b\x2e\x24\x29\x2c\x21\x27\x2a\x1e\x25" + b"\x28\x1c\x23\x26\x1a\x21\x25\x18\x1e\x22\x14\x1b\x1f\x10\x19\x1c" + b"\x0d\x17\x1a\x0a\x13\x17\x07\x10\x13\x01\x0d\x0f\x01\x0a\x0b\x01" + b"\x01\x3f\x01\x13\x3c\x0b\x1b\x39\x10\x20\x35\x14\x23\x31\x17\x23" + b"\x2d\x18\x23\x29\x18\x3f\x3f\x3f\x3f\x3f\x39\x3f\x3f\x31\x3f\x3f" + b"\x2a\x3f\x3f\x20\x3f\x3f\x14\x3f\x3c\x12\x3f\x39\x0f\x3f\x35\x0b" + b"\x3f\x32\x07\x3f\x2d\x01\x3d\x2a\x01\x3b\x26\x01\x39\x21\x01\x37" + b"\x1d\x01\x34\x1a\x01\x32\x16\x01\x2f\x12\x01\x2d\x0f\x01\x2a\x0b" + b"\x01\x27\x07\x01\x23\x01\x01\x1d\x01\x01\x17\x01\x01\x10\x01\x01" + b"\x3d\x01\x01\x19\x19\x3f\x3f\x01\x01\x01\x01\x3f\x16\x16\x13\x10" + b"\x10\x0f\x0d\x0d\x0b\x3c\x2e\x2a\x36\x27\x20\x30\x21\x18\x29\x1b" + b"\x10\x3c\x39\x37\x37\x32\x2f\x31\x2c\x28\x2b\x26\x21\x30\x22\x20" +) diff --git a/venv/Lib/site-packages/PIL/WebPImagePlugin.py b/venv/Lib/site-packages/PIL/WebPImagePlugin.py new file mode 100644 index 0000000..eda6855 --- /dev/null +++ b/venv/Lib/site-packages/PIL/WebPImagePlugin.py @@ -0,0 +1,360 @@ +from io import BytesIO + +from . import Image, ImageFile + +try: + from . import _webp + + SUPPORTED = True +except ImportError: + SUPPORTED = False + + +_VALID_WEBP_MODES = {"RGBX": True, "RGBA": True, "RGB": True} + +_VALID_WEBP_LEGACY_MODES = {"RGB": True, "RGBA": True} + +_VP8_MODES_BY_IDENTIFIER = { + b"VP8 ": "RGB", + b"VP8X": "RGBA", + b"VP8L": "RGBA", # lossless +} + + +def _accept(prefix): + is_riff_file_format = prefix[:4] == b"RIFF" + is_webp_file = prefix[8:12] == b"WEBP" + is_valid_vp8_mode = prefix[12:16] in _VP8_MODES_BY_IDENTIFIER + + if is_riff_file_format and is_webp_file and is_valid_vp8_mode: + if not SUPPORTED: + return ( + "image file could not be identified because WEBP support not installed" + ) + return True + + +class WebPImageFile(ImageFile.ImageFile): + + format = "WEBP" + format_description = "WebP image" + + def _open(self): + if not _webp.HAVE_WEBPANIM: + # Legacy mode + data, width, height, self.mode, icc_profile, exif = _webp.WebPDecode( + self.fp.read() + ) + if icc_profile: + self.info["icc_profile"] = icc_profile + if exif: + self.info["exif"] = exif + self._size = width, height + self.fp = BytesIO(data) + self.tile = [("raw", (0, 0) + self.size, 0, self.mode)] + self._n_frames = 1 + return + + # Use the newer AnimDecoder API to parse the (possibly) animated file, + # and access muxed chunks like ICC/EXIF/XMP. + self._decoder = _webp.WebPAnimDecoder(self.fp.read()) + + # Get info from decoder + width, height, loop_count, bgcolor, frame_count, mode = self._decoder.get_info() + self._size = width, height + self.info["loop"] = loop_count + bg_a, bg_r, bg_g, bg_b = ( + (bgcolor >> 24) & 0xFF, + (bgcolor >> 16) & 0xFF, + (bgcolor >> 8) & 0xFF, + bgcolor & 0xFF, + ) + self.info["background"] = (bg_r, bg_g, bg_b, bg_a) + self._n_frames = frame_count + self.mode = "RGB" if mode == "RGBX" else mode + self.rawmode = mode + self.tile = [] + + # Attempt to read ICC / EXIF / XMP chunks from file + icc_profile = self._decoder.get_chunk("ICCP") + exif = self._decoder.get_chunk("EXIF") + xmp = self._decoder.get_chunk("XMP ") + if icc_profile: + self.info["icc_profile"] = icc_profile + if exif: + self.info["exif"] = exif + if xmp: + self.info["xmp"] = xmp + + # Initialize seek state + self._reset(reset=False) + self.seek(0) + + def _getexif(self): + if "exif" not in self.info: + return None + return dict(self.getexif()) + + @property + def n_frames(self): + return self._n_frames + + @property + def is_animated(self): + return self._n_frames > 1 + + def seek(self, frame): + if not _webp.HAVE_WEBPANIM: + return super().seek(frame) + + # Perform some simple checks first + if frame >= self._n_frames: + raise EOFError("attempted to seek beyond end of sequence") + if frame < 0: + raise EOFError("negative frame index is not valid") + + # Set logical frame to requested position + self.__logical_frame = frame + + def _reset(self, reset=True): + if reset: + self._decoder.reset() + self.__physical_frame = 0 + self.__loaded = -1 + self.__timestamp = 0 + + def _get_next(self): + # Get next frame + ret = self._decoder.get_next() + self.__physical_frame += 1 + + # Check if an error occurred + if ret is None: + self._reset() # Reset just to be safe + self.seek(0) + raise EOFError("failed to decode next frame in WebP file") + + # Compute duration + data, timestamp = ret + duration = timestamp - self.__timestamp + self.__timestamp = timestamp + + # libwebp gives frame end, adjust to start of frame + timestamp -= duration + return data, timestamp, duration + + def _seek(self, frame): + if self.__physical_frame == frame: + return # Nothing to do + if frame < self.__physical_frame: + self._reset() # Rewind to beginning + while self.__physical_frame < frame: + self._get_next() # Advance to the requested frame + + def load(self): + if _webp.HAVE_WEBPANIM: + if self.__loaded != self.__logical_frame: + self._seek(self.__logical_frame) + + # We need to load the image data for this frame + data, timestamp, duration = self._get_next() + self.info["timestamp"] = timestamp + self.info["duration"] = duration + self.__loaded = self.__logical_frame + + # Set tile + if self.fp and self._exclusive_fp: + self.fp.close() + self.fp = BytesIO(data) + self.tile = [("raw", (0, 0) + self.size, 0, self.rawmode)] + + return super().load() + + def tell(self): + if not _webp.HAVE_WEBPANIM: + return super().tell() + + return self.__logical_frame + + +def _save_all(im, fp, filename): + encoderinfo = im.encoderinfo.copy() + append_images = list(encoderinfo.get("append_images", [])) + + # If total frame count is 1, then save using the legacy API, which + # will preserve non-alpha modes + total = 0 + for ims in [im] + append_images: + total += getattr(ims, "n_frames", 1) + if total == 1: + _save(im, fp, filename) + return + + background = (0, 0, 0, 0) + if "background" in encoderinfo: + background = encoderinfo["background"] + elif "background" in im.info: + background = im.info["background"] + if isinstance(background, int): + # GifImagePlugin stores a global color table index in + # info["background"]. So it must be converted to an RGBA value + palette = im.getpalette() + if palette: + r, g, b = palette[background * 3 : (background + 1) * 3] + background = (r, g, b, 0) + + duration = im.encoderinfo.get("duration", 0) + loop = im.encoderinfo.get("loop", 0) + minimize_size = im.encoderinfo.get("minimize_size", False) + kmin = im.encoderinfo.get("kmin", None) + kmax = im.encoderinfo.get("kmax", None) + allow_mixed = im.encoderinfo.get("allow_mixed", False) + verbose = False + lossless = im.encoderinfo.get("lossless", False) + quality = im.encoderinfo.get("quality", 80) + method = im.encoderinfo.get("method", 0) + icc_profile = im.encoderinfo.get("icc_profile", "") + exif = im.encoderinfo.get("exif", "") + if isinstance(exif, Image.Exif): + exif = exif.tobytes() + xmp = im.encoderinfo.get("xmp", "") + if allow_mixed: + lossless = False + + # Sensible keyframe defaults are from gif2webp.c script + if kmin is None: + kmin = 9 if lossless else 3 + if kmax is None: + kmax = 17 if lossless else 5 + + # Validate background color + if ( + not isinstance(background, (list, tuple)) + or len(background) != 4 + or not all(v >= 0 and v < 256 for v in background) + ): + raise OSError( + "Background color is not an RGBA tuple clamped to (0-255): %s" + % str(background) + ) + + # Convert to packed uint + bg_r, bg_g, bg_b, bg_a = background + background = (bg_a << 24) | (bg_r << 16) | (bg_g << 8) | (bg_b << 0) + + # Setup the WebP animation encoder + enc = _webp.WebPAnimEncoder( + im.size[0], + im.size[1], + background, + loop, + minimize_size, + kmin, + kmax, + allow_mixed, + verbose, + ) + + # Add each frame + frame_idx = 0 + timestamp = 0 + cur_idx = im.tell() + try: + for ims in [im] + append_images: + # Get # of frames in this image + nfr = getattr(ims, "n_frames", 1) + + for idx in range(nfr): + ims.seek(idx) + ims.load() + + # Make sure image mode is supported + frame = ims + rawmode = ims.mode + if ims.mode not in _VALID_WEBP_MODES: + alpha = ( + "A" in ims.mode + or "a" in ims.mode + or (ims.mode == "P" and "A" in ims.im.getpalettemode()) + ) + rawmode = "RGBA" if alpha else "RGB" + frame = ims.convert(rawmode) + + if rawmode == "RGB": + # For faster conversion, use RGBX + rawmode = "RGBX" + + # Append the frame to the animation encoder + enc.add( + frame.tobytes("raw", rawmode), + timestamp, + frame.size[0], + frame.size[1], + rawmode, + lossless, + quality, + method, + ) + + # Update timestamp and frame index + if isinstance(duration, (list, tuple)): + timestamp += duration[frame_idx] + else: + timestamp += duration + frame_idx += 1 + + finally: + im.seek(cur_idx) + + # Force encoder to flush frames + enc.add(None, timestamp, 0, 0, "", lossless, quality, 0) + + # Get the final output from the encoder + data = enc.assemble(icc_profile, exif, xmp) + if data is None: + raise OSError("cannot write file as WebP (encoder returned None)") + + fp.write(data) + + +def _save(im, fp, filename): + lossless = im.encoderinfo.get("lossless", False) + quality = im.encoderinfo.get("quality", 80) + icc_profile = im.encoderinfo.get("icc_profile", "") + exif = im.encoderinfo.get("exif", "") + if isinstance(exif, Image.Exif): + exif = exif.tobytes() + xmp = im.encoderinfo.get("xmp", "") + + if im.mode not in _VALID_WEBP_LEGACY_MODES: + alpha = ( + "A" in im.mode + or "a" in im.mode + or (im.mode == "P" and "A" in im.im.getpalettemode()) + ) + im = im.convert("RGBA" if alpha else "RGB") + + data = _webp.WebPEncode( + im.tobytes(), + im.size[0], + im.size[1], + lossless, + float(quality), + im.mode, + icc_profile, + exif, + xmp, + ) + if data is None: + raise OSError("cannot write file as WebP (encoder returned None)") + + fp.write(data) + + +Image.register_open(WebPImageFile.format, WebPImageFile, _accept) +if SUPPORTED: + Image.register_save(WebPImageFile.format, _save) + if _webp.HAVE_WEBPANIM: + Image.register_save_all(WebPImageFile.format, _save_all) + Image.register_extension(WebPImageFile.format, ".webp") + Image.register_mime(WebPImageFile.format, "image/webp") diff --git a/venv/Lib/site-packages/PIL/WmfImagePlugin.py b/venv/Lib/site-packages/PIL/WmfImagePlugin.py new file mode 100644 index 0000000..024222c --- /dev/null +++ b/venv/Lib/site-packages/PIL/WmfImagePlugin.py @@ -0,0 +1,175 @@ +# +# The Python Imaging Library +# $Id$ +# +# WMF stub codec +# +# history: +# 1996-12-14 fl Created +# 2004-02-22 fl Turned into a stub driver +# 2004-02-23 fl Added EMF support +# +# Copyright (c) Secret Labs AB 1997-2004. All rights reserved. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# +# WMF/EMF reference documentation: +# https://winprotocoldoc.blob.core.windows.net/productionwindowsarchives/MS-WMF/[MS-WMF].pdf +# http://wvware.sourceforge.net/caolan/index.html +# http://wvware.sourceforge.net/caolan/ora-wmf.html + +from . import Image, ImageFile +from ._binary import i16le as word, i32le as dword, si16le as short, si32le as _long + +_handler = None + + +def register_handler(handler): + """ + Install application-specific WMF image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +if hasattr(Image.core, "drawwmf"): + # install default handler (windows only) + + class WmfHandler: + def open(self, im): + im.mode = "RGB" + self.bbox = im.info["wmf_bbox"] + + def load(self, im): + im.fp.seek(0) # rewind + return Image.frombytes( + "RGB", + im.size, + Image.core.drawwmf(im.fp.read(), im.size, self.bbox), + "raw", + "BGR", + (im.size[0] * 3 + 3) & -4, + -1, + ) + + register_handler(WmfHandler()) + +# +# -------------------------------------------------------------------- +# Read WMF file + + +def _accept(prefix): + return ( + prefix[:6] == b"\xd7\xcd\xc6\x9a\x00\x00" or prefix[:4] == b"\x01\x00\x00\x00" + ) + + +## +# Image plugin for Windows metafiles. + + +class WmfStubImageFile(ImageFile.StubImageFile): + + format = "WMF" + format_description = "Windows Metafile" + + def _open(self): + self._inch = None + + # check placable header + s = self.fp.read(80) + + if s[:6] == b"\xd7\xcd\xc6\x9a\x00\x00": + + # placeable windows metafile + + # get units per inch + self._inch = word(s, 14) + + # get bounding box + x0 = short(s, 6) + y0 = short(s, 8) + x1 = short(s, 10) + y1 = short(s, 12) + + # normalize size to 72 dots per inch + self.info["dpi"] = 72 + size = ( + (x1 - x0) * self.info["dpi"] // self._inch, + (y1 - y0) * self.info["dpi"] // self._inch, + ) + + self.info["wmf_bbox"] = x0, y0, x1, y1 + + # sanity check (standard metafile header) + if s[22:26] != b"\x01\x00\t\x00": + raise SyntaxError("Unsupported WMF file format") + + elif dword(s) == 1 and s[40:44] == b" EMF": + # enhanced metafile + + # get bounding box + x0 = _long(s, 8) + y0 = _long(s, 12) + x1 = _long(s, 16) + y1 = _long(s, 20) + + # get frame (in 0.01 millimeter units) + frame = _long(s, 24), _long(s, 28), _long(s, 32), _long(s, 36) + + size = x1 - x0, y1 - y0 + + # calculate dots per inch from bbox and frame + xdpi = int(2540.0 * (x1 - y0) / (frame[2] - frame[0]) + 0.5) + ydpi = int(2540.0 * (y1 - y0) / (frame[3] - frame[1]) + 0.5) + + self.info["wmf_bbox"] = x0, y0, x1, y1 + + if xdpi == ydpi: + self.info["dpi"] = xdpi + else: + self.info["dpi"] = xdpi, ydpi + + else: + raise SyntaxError("Unsupported file format") + + self.mode = "RGB" + self._size = size + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + def load(self, dpi=None): + if dpi is not None and self._inch is not None: + self.info["dpi"] = int(dpi + 0.5) + x0, y0, x1, y1 = self.info["wmf_bbox"] + self._size = ( + (x1 - x0) * self.info["dpi"] // self._inch, + (y1 - y0) * self.info["dpi"] // self._inch, + ) + super().load() + + +def _save(im, fp, filename): + if _handler is None or not hasattr(_handler, "save"): + raise OSError("WMF save handler not installed") + _handler.save(im, fp, filename) + + +# +# -------------------------------------------------------------------- +# Registry stuff + + +Image.register_open(WmfStubImageFile.format, WmfStubImageFile, _accept) +Image.register_save(WmfStubImageFile.format, _save) + +Image.register_extensions(WmfStubImageFile.format, [".wmf", ".emf"]) diff --git a/venv/Lib/site-packages/PIL/XVThumbImagePlugin.py b/venv/Lib/site-packages/PIL/XVThumbImagePlugin.py new file mode 100644 index 0000000..c0d8db0 --- /dev/null +++ b/venv/Lib/site-packages/PIL/XVThumbImagePlugin.py @@ -0,0 +1,78 @@ +# +# The Python Imaging Library. +# $Id$ +# +# XV Thumbnail file handler by Charles E. "Gene" Cash +# (gcash@magicnet.net) +# +# see xvcolor.c and xvbrowse.c in the sources to John Bradley's XV, +# available from ftp://ftp.cis.upenn.edu/pub/xv/ +# +# history: +# 98-08-15 cec created (b/w only) +# 98-12-09 cec added color palette +# 98-12-28 fl added to PIL (with only a few very minor modifications) +# +# To do: +# FIXME: make save work (this requires quantization support) +# + +from . import Image, ImageFile, ImagePalette +from ._binary import i8, o8 + +_MAGIC = b"P7 332" + +# standard color palette for thumbnails (RGB332) +PALETTE = b"" +for r in range(8): + for g in range(8): + for b in range(4): + PALETTE = PALETTE + ( + o8((r * 255) // 7) + o8((g * 255) // 7) + o8((b * 255) // 3) + ) + + +def _accept(prefix): + return prefix[:6] == _MAGIC + + +## +# Image plugin for XV thumbnail images. + + +class XVThumbImageFile(ImageFile.ImageFile): + + format = "XVThumb" + format_description = "XV thumbnail image" + + def _open(self): + + # check magic + if not _accept(self.fp.read(6)): + raise SyntaxError("not an XV thumbnail file") + + # Skip to beginning of next line + self.fp.readline() + + # skip info comments + while True: + s = self.fp.readline() + if not s: + raise SyntaxError("Unexpected EOF reading XV thumbnail file") + if i8(s[0]) != 35: # ie. when not a comment: '#' + break + + # parse header line (already read) + s = s.strip().split() + + self.mode = "P" + self._size = int(s[0]), int(s[1]) + + self.palette = ImagePalette.raw("RGB", PALETTE) + + self.tile = [("raw", (0, 0) + self.size, self.fp.tell(), (self.mode, 0, 1))] + + +# -------------------------------------------------------------------- + +Image.register_open(XVThumbImageFile.format, XVThumbImageFile, _accept) diff --git a/venv/Lib/site-packages/PIL/XbmImagePlugin.py b/venv/Lib/site-packages/PIL/XbmImagePlugin.py new file mode 100644 index 0000000..ead9722 --- /dev/null +++ b/venv/Lib/site-packages/PIL/XbmImagePlugin.py @@ -0,0 +1,94 @@ +# +# The Python Imaging Library. +# $Id$ +# +# XBM File handling +# +# History: +# 1995-09-08 fl Created +# 1996-11-01 fl Added save support +# 1997-07-07 fl Made header parser more tolerant +# 1997-07-22 fl Fixed yet another parser bug +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.4) +# 2001-05-13 fl Added hotspot handling (based on code from Bernhard Herzog) +# 2004-02-24 fl Allow some whitespace before first #define +# +# Copyright (c) 1997-2004 by Secret Labs AB +# Copyright (c) 1996-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import re + +from . import Image, ImageFile + +# XBM header +xbm_head = re.compile( + br"\s*#define[ \t]+.*_width[ \t]+(?P[0-9]+)[\r\n]+" + b"#define[ \t]+.*_height[ \t]+(?P[0-9]+)[\r\n]+" + b"(?P" + b"#define[ \t]+[^_]*_x_hot[ \t]+(?P[0-9]+)[\r\n]+" + b"#define[ \t]+[^_]*_y_hot[ \t]+(?P[0-9]+)[\r\n]+" + b")?" + b"[\\000-\\377]*_bits\\[\\]" +) + + +def _accept(prefix): + return prefix.lstrip()[:7] == b"#define" + + +## +# Image plugin for X11 bitmaps. + + +class XbmImageFile(ImageFile.ImageFile): + + format = "XBM" + format_description = "X11 Bitmap" + + def _open(self): + + m = xbm_head.match(self.fp.read(512)) + + if m: + + xsize = int(m.group("width")) + ysize = int(m.group("height")) + + if m.group("hotspot"): + self.info["hotspot"] = (int(m.group("xhot")), int(m.group("yhot"))) + + self.mode = "1" + self._size = xsize, ysize + + self.tile = [("xbm", (0, 0) + self.size, m.end(), None)] + + +def _save(im, fp, filename): + + if im.mode != "1": + raise OSError("cannot write mode %s as XBM" % im.mode) + + fp.write(("#define im_width %d\n" % im.size[0]).encode("ascii")) + fp.write(("#define im_height %d\n" % im.size[1]).encode("ascii")) + + hotspot = im.encoderinfo.get("hotspot") + if hotspot: + fp.write(("#define im_x_hot %d\n" % hotspot[0]).encode("ascii")) + fp.write(("#define im_y_hot %d\n" % hotspot[1]).encode("ascii")) + + fp.write(b"static char im_bits[] = {\n") + + ImageFile._save(im, fp, [("xbm", (0, 0) + im.size, 0, None)]) + + fp.write(b"};\n") + + +Image.register_open(XbmImageFile.format, XbmImageFile, _accept) +Image.register_save(XbmImageFile.format, _save) + +Image.register_extension(XbmImageFile.format, ".xbm") + +Image.register_mime(XbmImageFile.format, "image/xbm") diff --git a/venv/Lib/site-packages/PIL/XpmImagePlugin.py b/venv/Lib/site-packages/PIL/XpmImagePlugin.py new file mode 100644 index 0000000..d8bd00a --- /dev/null +++ b/venv/Lib/site-packages/PIL/XpmImagePlugin.py @@ -0,0 +1,130 @@ +# +# The Python Imaging Library. +# $Id$ +# +# XPM File handling +# +# History: +# 1996-12-29 fl Created +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.7) +# +# Copyright (c) Secret Labs AB 1997-2001. +# Copyright (c) Fredrik Lundh 1996-2001. +# +# See the README file for information on usage and redistribution. +# + + +import re + +from . import Image, ImageFile, ImagePalette +from ._binary import i8, o8 + +# XPM header +xpm_head = re.compile(b'"([0-9]*) ([0-9]*) ([0-9]*) ([0-9]*)') + + +def _accept(prefix): + return prefix[:9] == b"/* XPM */" + + +## +# Image plugin for X11 pixel maps. + + +class XpmImageFile(ImageFile.ImageFile): + + format = "XPM" + format_description = "X11 Pixel Map" + + def _open(self): + + if not _accept(self.fp.read(9)): + raise SyntaxError("not an XPM file") + + # skip forward to next string + while True: + s = self.fp.readline() + if not s: + raise SyntaxError("broken XPM file") + m = xpm_head.match(s) + if m: + break + + self._size = int(m.group(1)), int(m.group(2)) + + pal = int(m.group(3)) + bpp = int(m.group(4)) + + if pal > 256 or bpp != 1: + raise ValueError("cannot read this XPM file") + + # + # load palette description + + palette = [b"\0\0\0"] * 256 + + for i in range(pal): + + s = self.fp.readline() + if s[-2:] == b"\r\n": + s = s[:-2] + elif s[-1:] in b"\r\n": + s = s[:-1] + + c = i8(s[1]) + s = s[2:-2].split() + + for i in range(0, len(s), 2): + + if s[i] == b"c": + + # process colour key + rgb = s[i + 1] + if rgb == b"None": + self.info["transparency"] = c + elif rgb[0:1] == b"#": + # FIXME: handle colour names (see ImagePalette.py) + rgb = int(rgb[1:], 16) + palette[c] = ( + o8((rgb >> 16) & 255) + o8((rgb >> 8) & 255) + o8(rgb & 255) + ) + else: + # unknown colour + raise ValueError("cannot read this XPM file") + break + + else: + + # missing colour key + raise ValueError("cannot read this XPM file") + + self.mode = "P" + self.palette = ImagePalette.raw("RGB", b"".join(palette)) + + self.tile = [("raw", (0, 0) + self.size, self.fp.tell(), ("P", 0, 1))] + + def load_read(self, bytes): + + # + # load all image data in one chunk + + xsize, ysize = self.size + + s = [None] * ysize + + for i in range(ysize): + s[i] = self.fp.readline()[1 : xsize + 1].ljust(xsize) + + return b"".join(s) + + +# +# Registry + + +Image.register_open(XpmImageFile.format, XpmImageFile, _accept) + +Image.register_extension(XpmImageFile.format, ".xpm") + +Image.register_mime(XpmImageFile.format, "image/xpm") diff --git a/venv/Lib/site-packages/PIL/__init__.py b/venv/Lib/site-packages/PIL/__init__.py new file mode 100644 index 0000000..f9cb157 --- /dev/null +++ b/venv/Lib/site-packages/PIL/__init__.py @@ -0,0 +1,135 @@ +"""Pillow (Fork of the Python Imaging Library) + +Pillow is the friendly PIL fork by Alex Clark and Contributors. + https://github.com/python-pillow/Pillow/ + +Pillow is forked from PIL 1.1.7. + +PIL is the Python Imaging Library by Fredrik Lundh and Contributors. +Copyright (c) 1999 by Secret Labs AB. + +Use PIL.__version__ for this Pillow version. + +;-) +""" + +import sys +import warnings + +from . import _version + +# VERSION was removed in Pillow 6.0.0. +__version__ = _version.__version__ + + +# PILLOW_VERSION is deprecated and will be removed in a future release. +# Use __version__ instead. +def _raise_version_warning(): + warnings.warn( + "PILLOW_VERSION is deprecated and will be removed in a future release. " + "Use __version__ instead.", + DeprecationWarning, + stacklevel=3, + ) + + +if sys.version_info >= (3, 7): + + def __getattr__(name): + if name == "PILLOW_VERSION": + _raise_version_warning() + return __version__ + raise AttributeError("module '{}' has no attribute '{}'".format(__name__, name)) + + +else: + + class _Deprecated_Version(str): + def __str__(self): + _raise_version_warning() + return super().__str__() + + def __getitem__(self, key): + _raise_version_warning() + return super().__getitem__(key) + + def __eq__(self, other): + _raise_version_warning() + return super().__eq__(other) + + def __ne__(self, other): + _raise_version_warning() + return super().__ne__(other) + + def __gt__(self, other): + _raise_version_warning() + return super().__gt__(other) + + def __lt__(self, other): + _raise_version_warning() + return super().__lt__(other) + + def __ge__(self, other): + _raise_version_warning() + return super().__gt__(other) + + def __le__(self, other): + _raise_version_warning() + return super().__lt__(other) + + PILLOW_VERSION = _Deprecated_Version(__version__) + +del _version + + +_plugins = [ + "BlpImagePlugin", + "BmpImagePlugin", + "BufrStubImagePlugin", + "CurImagePlugin", + "DcxImagePlugin", + "DdsImagePlugin", + "EpsImagePlugin", + "FitsStubImagePlugin", + "FliImagePlugin", + "FpxImagePlugin", + "FtexImagePlugin", + "GbrImagePlugin", + "GifImagePlugin", + "GribStubImagePlugin", + "Hdf5StubImagePlugin", + "IcnsImagePlugin", + "IcoImagePlugin", + "ImImagePlugin", + "ImtImagePlugin", + "IptcImagePlugin", + "JpegImagePlugin", + "Jpeg2KImagePlugin", + "McIdasImagePlugin", + "MicImagePlugin", + "MpegImagePlugin", + "MpoImagePlugin", + "MspImagePlugin", + "PalmImagePlugin", + "PcdImagePlugin", + "PcxImagePlugin", + "PdfImagePlugin", + "PixarImagePlugin", + "PngImagePlugin", + "PpmImagePlugin", + "PsdImagePlugin", + "SgiImagePlugin", + "SpiderImagePlugin", + "SunImagePlugin", + "TgaImagePlugin", + "TiffImagePlugin", + "WebPImagePlugin", + "WmfImagePlugin", + "XbmImagePlugin", + "XpmImagePlugin", + "XVThumbImagePlugin", +] + + +class UnidentifiedImageError(IOError): + pass diff --git a/venv/Lib/site-packages/PIL/__main__.py b/venv/Lib/site-packages/PIL/__main__.py new file mode 100644 index 0000000..a05323f --- /dev/null +++ b/venv/Lib/site-packages/PIL/__main__.py @@ -0,0 +1,3 @@ +from .features import pilinfo + +pilinfo() diff --git a/venv/Lib/site-packages/PIL/__pycache__/BdfFontFile.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/BdfFontFile.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8357ab4faaf261451821abe7a4fe84aa293a0fe1 GIT binary patch literal 2354 zcmb7F&2JM&6rY*>@cJu+5JI7p`cjG!qy=$85o!_#utaRjF$7j_-Hm6RELrbvW;b9* zyH(qOxK*vxBdY9U|AneY{(>Io(nC)wRZ?aZ6^-o7{c-fvcl#Tpa7am%6F&EYI;gFT7Mt zl^6NUGh%9Y2tUDRpAkN5)5r8sF?D`&gOulvD7Y*$Y25a`=(gk9Qmgi@ZQInEe&6y; zy&74r(={{oE!WxGw-08T_7hu#c4@M4aALZCt6*yNXvY?1UDBqcRY~h6YgU2aU2mC% zhVTPlM2_!Su9;i+JwFVruFXw#)pp&oB56a?bxBvd7#WTkAOmO>DEt|ugNrd4kugbV zOv5=&Hb_kIRGzc5a2mTzum;&WzcYa{Rp z(Wd^!l#;z)HVMy^jbojyuR!s;%|q#%uhwC4v0tZx}~d;32ZLS_SQ1!<4)$00s*cXagvm2ewUO z@?{~R5&Wn_`V-rO0DdK9Diz0zpqSa>=aL5EB&eqBO>OmN`+f*z+urmaNA_-eIS49N zWVP@4UCV8^?0(P=hTR=Y^shoS?poW9x7}_yuIoQ-H>&sAE4(*tki}s5Cb#4|Vbt~e z!L76^F+!ajoZsTT4tiN!a?x>k3no)VQ(0Mg`2TWBgD+Dt2ky&EoWguC|M!`R)3{s! zRsjkpahQ5#vs!80JpvJt^qN$5?141aYOD21wRWdmkcO}=?m8ZHdl(5PkUF=!KDVXX zb386}D+p|OtB-xh1C_vaBB6jYGusn>e`^@oq0Bw7+;gTSi2Y{!oBv}NRq`>pBp+d^L6hMMR zMob=O4=MP5<*5K=ui`8MQC#S$xDy)yjIRLRpmocI+7TXEh%5z&+x1$jbbayK!Mx{3 zC9CuVE*f51soXC0;2ui#01g_>dSk8Gs;+Gav`j%m;FTcYmV~ZIVPmzvzP?s#rQow# zZ#-&N@7!&L*cSKvZ3j9Lo3~+YCrFq8@pBdLUbg z31l<0^tLk?ouegsFn_FI7pKXUHB8jA`gW%ybDd7#=ld?s3!Tp1zU5AK1b$T(-^SC0 zJ9!!t1_ofX1g{C~d4PRN%T+&PXD#N8SPkHgV`$US#IeDZndWYkH2U!LhD? cm$@{SCc)jpa|jXsW-|=heDWAdK`|Ep0acJKi~s-t literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/BlpImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/BlpImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8ab6df5788ff9949c48d37e87ad2a4c619c459b8 GIT binary patch literal 10459 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/BmpImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/BmpImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0d32a9df08385993f48d859b69fb277ad25f2487 GIT binary patch literal 7119 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 Pm%4`7l;TN>Q33xCb5$}r literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/BufrStubImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/BufrStubImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3208809ece60deef88230bd52b48b11077d6cf59 GIT binary patch literal 1618 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/DcxImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/DcxImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b7e02ad46be2dc23695f012c3f96fb4d53e120d4 GIT binary patch literal 2026 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/EpsImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/EpsImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3ed77d5afb6cf215dce0f13be8760d0833778ca2 GIT binary patch literal 7459 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/ExifTags.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/ExifTags.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0ba5329914454a4bf4c885a43390bd65425c0571 GIT binary patch literal 7479 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 P{i+7~`?@>+KY#xhk&+ir literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/FitsStubImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/FitsStubImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..590e4ae39368de1b6e2832a2b68836725722f3f0 GIT binary patch literal 1606 zcmZuxTW=#Z6t+Frq)EvJ(2A8{BjABZY<@tsLWQ!0NF_u{xo8wI@{XPCG?UC=yU<31 z1a$cy=_7y1FFf$He}N~?aoVU|uyigyz8s%(zT?l@?IwZo>u-Pk@O?;R*jGNqiBA5M=NL5s`>r5)n&w7G8NtBpRX#E3u@ThK$ad zGLpfyM+waL+&sR9yI|JBnb;GpIYWzJ6Vh+LqTsmCY%pB%xwH)@j`Ko}GF-ud66pv? z$G~dB;iYhzt!Ux`AhLDQW& zsJP;+fLCl${Ye4el7({WxD<elxI44wfak-{9@%Z>*Imz@qMwX5SF>>bGP0(0z*Ug29cvdQqP@yRpy zc8Dgdl$_-kZn|X=?6FbGvrJazF`jZhsoDcQ1KJI=9|GwQfk~23K@uit;sN=B2@laC z05>2*5yCqn`v7aPix#V#_-NV%gMs)!E|^nLYH~(4^qTxa4RbnNe@(Bbe&2wTEBZTi z)}RI}K+3C08VVnHRFh2%=UC0uxMrJ1P23Iw4+%!90e7$87?q~Sw*Z;JV=O)HGlfud ztlzY3R$1T3qHytBUr8?P-sEy+_{B4&N@aa5<-+>QQb-%5I$xtGO4#O?m0a~b+)>PI zSk7iz8XMx8RIjHzNOAW^;97Tq5!PfK8V4;eq#=u`PuCCsle>XCv&-GRHo+tsjFkd{ z70y6B1o4_<^)}d^0^QX4f8F4dM^L^vO;>y=)6_Q86e2z^P;aH_kLSF&SqW#QT5@B% zTbT-}GnH4^lIjuqM~8PFfuK}~I@JR90g!9)nEBLa@mtQCAuMp9#2@PjNPi5>0M-|= z?iwm6z=7#U29SraFk}N@sArx*^<(!hpnCfQ^i}|eeEXG1(f7Bz zq2o0-M%n1=i7UD4f#bfHuzacZLA5br2gAP;mg^(H16+RydtC1k+NCj7*e`2;Fw4z4 zK(703OBA+~!uXt5*WwOyN&8;ExO})PlJ@S4KR<3@+>vws0+A9wQr literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/FliImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/FliImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7056d1dc9be6238d02b6561907ea31d48b77b68d GIT binary patch literal 3950 zcmaJ^&2t<_74MIk+1b@<_2IQ-E5=bwVrqeiBo4s@VPZRx<0_YM>?96T3d4ANRvzuA zdPcUSnk|B5?%^Mxq$8KWpTLnb$G&jj!X7DZzQFJGtYk@XFiR*sTL~(_ zOXWOc!Ne`5T;)Au%8SK@*popu=KGUzb)yznDfcX^7RZ02l;y_?;`95n@MjTf* zq;YR|qxIO7ZMTwiVpFxlyHO|3vbf#R7inrbV#f;|=K=I#;^MsRa4_7;@BM)>V+SL%r%%2%cW&s+)$WGid5_dJY@di3> zCEI^ux(34MpWJ+Z?Xxu2>Dq(-Mi#f%t`7zuMp?9Wr{9b^YoEs5!P;P_`6$xeHwRI( z9jzz5^|iZ6r_+D3cK7z3wUtg%2-exc($ZkZl)|Xlj0f2Q&QApZ<9ZsfNyEcWV(=Am7`pk!c(3qp)bY0@>Tg6Qq8I}=xeGD-JCVmLq5qCfn2$Bdw1dbR@PT>+Fr!$M=N)3E?(~?-6%`?y_F+7 zkSmc|tsVXftK@8h?ZXZSe8@AAbJ#%^b{L9WD5ve|k1ZY!G`3HPaG(VLgi)2YNbhD+ zP3-Zf#Timn3)-B8j+z8??HN^7EAVy(35!`vfWpg4IMY*pfg4KPKHV1jn_Q}yI#aU? z3^)mXeRXD;sk%D*jAdmtx5qz(7KhGQ5|1QN@TjnIQXVzm7GHB+16_sg+T-((KCB$y zcWTEuyW{bgLVjCE>b#}+G-vx0xuX^+aC(Q%sLx*7e9UA=O^DeU13i>srrU{FozLze-L2g`_pVnp8B z5F*mI^!nLi)I0K=7QAZYgTU~+BRY9h1t@~>UpQj4LTkR-($>F@ z+>644Tv)>(D zv%X3vdu;dealc;*`-8Z*wA`WCPOo8bxMf5MCt?2vcn&a{!0r(pq0a&wu}it-h~4jF zV%fd4CWm||h7vgnUIHk{SI|r9kBQLWnv~RV^sDF$*M_ef{_vD6`ZX+mj%Ky(F(dEY zy73>(+33Ic5Y3`BFpiERrAf_Z;{HxAi?%<~y06Xo@VLlf*wRrqZuYl&nQ^*^cjJa> zvKu2GUU|njNw3v6u8w+0)@M)c?6+EJoEbkH6iHi?_(tmJiE%diNzatV3#NW*r@hn6 zoW_FbEber^b&-yrBt2!EG>+R1m-J$2f5eSI$eh zpO;$_aV3}Gm`eTxyliF<*yh56A~ATY*4g#z5KmM6)t3lRR5m<)g~sG<`UeDlNPt2? zQ>Zj5nhao#WZd*o(#i}^43G6MfHu6R-=O8o1inY$q#^Z>feX>n3jjrgh+aP6`{9;IXcVfNd}DHE8-;G1Wl3T#HqUu zDNfu)DZ<`G4nlXqp2$}Xv1&E=|1X_L(lD|mH&$E6?mc%x#$!ZHx{f|_OA1DN^(qF) z@yI;~JgrfVhmqL^Z^MAV<5fYqfBSMqwGj0hRm{RY0hg+wYJ(<+`*OB$Guyjtx6#DR~d$6_~WbD`J7~&YTdG zPCSy3q&t%E8%)46h05!SsvW7CgKM^d8cWYs;GCWhN!$b2-^$OFGtb&muVe_RoX;U- zo>Ea6??zw3{*pb#p;PS4SM(l$KGMfo8LyKH0+tR~~DSiiDmeK)T$WZ$>>Toh0jG)?c(bTYN*=Y8=Q`CuxWx3aRciYF69& zecDfI)XN0k1u#yhA1PD$JnC%4Hu1lROXGj^%asE6Hb{dhh5WB#-Ho;%qV%sh9ghg(@; ziI=l(DxsxDMIIcG1VuPF&|M9`irAe$5e_e?R~u6(!eI|}JPdJ6h%&y_p>Z_~H@BkB zc*Se=VdKoq7JZ1feN!g`de8^2jgO1Bo1LvRc^rd_FluG74#|=5r$%1~Q#KPDf1puV zb+)7F*`{w1uQ+6t4`JN%l-vlTAE#F z3EpmDbG0#Tn5N{WB>@V2{Ed2;^dh}eR2j9 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/FontFile.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/FontFile.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5d14955e879c1c7e59a7f06254f31cc3680820eb GIT binary patch literal 2189 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/FtexImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/FtexImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..48849fe8fafc0a3732b6de7f98dcf1ee7f79eb08 GIT binary patch literal 3453 zcmai1&2QVt6(=d`!?c_YHruQhXo`W+bfbkMehBF{St-=642@>qym@cl?|qG*tgTrZK7ac2 z-~aH>x~Bbu7FVA#CXexr6AWClHLi0b&}|*RrN9`K?2@i=la~W?RJO~bie16FVpq9t z*SKk~Jk@xW*M8J^O;k=R?@PADSGe_~X0M9!hq|y%*MucjFChi%8?@%Dygo244ahNG zX^l0vUez>fkG=4NAUbD3ZdKa#B3Pdw&^oF*yj`+oJro#ytIWpzR>#sWj=3HHX7Y`4V@_&~7ZK5Gx%C}#Ir7b;U+^$@1B z!$^+Y1k{~hvtuubPJq(x_V!M0C*2OLF-yr7Lhr#oi%w332isxDPpczL!01|I*E@p@ zFO8FEM50Ko=LP|YgnpBC=Rg*_P+B01YXB7=)`Pcgk@pU}ubb94v@Co`ngG!l*QLwO zuYNC${cynI1gBg%- z%FW6RwT5o2cKQ(oXnsSPdIWdNdN&jluQTgie#YUx1m=;v0ExSaJG0(Uq+N5e-?Ddz z8OG8FyRDHs@V(9X@~x1B-8JFd=gIJTITZe2m|U+%{&?h$9WP451!{2_zw7QSMBbHcu|jc2vFtv)f8rjgrNtnH)OHMi&RlLl*k1( z_Wy%f1?>NVr|@*_PsC>7SBDlke!pQez=cp+U|ZtVlZynULfr^fftLm1tq7V_-WI^L z3U5+40q`QMl(tV}Fb8b`+H)VtOs>gA?mlGjz;g6A=fWSr29*N%&BLEgU!}Xc!c{i- zNF!n8W>6F)!`u$!VPT489Yu*~u{|`69RC=Oj3i1O><;`S3B>(_kozwBO9$;KXfTq; zB8f`Uv_7I0Yex+|t3DyHI>#S%5E@2S?vUSJK?7~lAp7=(si zuGt3qb%`6c$xGZscP{fXui&@BtLVYCZ0!($&*j=C37y>O7E!d=f9`eO?6wY$+YOIy zMIW?pt%7eG-*_F=MEijE!&EypK0xQCPQ6~yN=s;FK`RsARC7$l`3bdW%=DSTE7&bh z4PHGn;$c$xL0`&Qn&oG!Q}a?^rnjfh%DK)dbj~W%Qc^oJ5W zyoQNCDLvZtKi06yN+=Psgqdw(wr7`4ys%+Ng7|vKO42=Vl;p~sN+%}2>V&9F{?dL~ zl&%)LD;u9>l{lfsl~vM^ntW#T$C-&Y3(v|blQVM^agp8FLtmCuX%3`}WM;-foMo$r z$1k7nbsfqrkdXMcnIH(WTgArfqxSLh7cUQ9y*k*>tlv|y%+Hs-Ac8=O%SM%?1%10- zlnK?O?0Q~d^G23c@>Nz=WzJq*s3@698TD69{v5*o{j%Nay@uqt_a-_`#941|Jl@BC z?^%TRO0O$M5Qy$S{WNSOd1 zuY;78P}>zDAMOxsg`UC=VeeuYD|!0l%TIO9d5!>W&2d6JUmPd190#sU1De+z=Z~oy z))kjl`T zm`q_R*Z*RCh3r40x4v;CsaT-2m7niD?X)qe;1$^SzyB|F*@~k=+D(MOfx>qAHRcnO z{w+{rijb~44v##?k*nCt3_ns~mT8iZmh|t9yi3C^8h%CtS)wG_Yf=pSI1y4gOd(_6 rn$xadvJ00}&?xWJ9_0Xk`w;TtFE9WRy>8qzfQ@dJKEGQtZ|eU6bawm| literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/GbrImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/GbrImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..df62c7c557defe8610edb9eb515184a6746a2fd6 GIT binary patch literal 1843 zcmZ`(OK%)S5bo}I?!&QT8AEukECN~-EEG6ImW2{0U>O<9Bm~fC#b|cAcXzz=qGycl z)mVbq+&J(PyhkKX{1^^>;lOGC0vD+2U2hyCX4KVH)m_!~_`0_i7U~4PAAbDv+uwlu z3x&(i0_Hx9;u|2Ga2k_@dNg4kqbRf3NKDTH-r(jr@$7BFEpDF^ZVPt6&J52H^uiU+ zK}|Tq9vhT^Tt}HZWAx!ZA?@0Pg8Md8)=m=ig{tZ4(iENSjIYJYkwwMl4cg zz{wDRolDV+j(;Vx35$P!@o=N_v=FlBe4QPXV%T|*=Z}Ii=s^*}o> zYz^Gb3;P)q0}FdVFW`(ZJ)@`en#?N7*^tN&N`o6`^ck%fH;0aV1hQ4JRcOGo>o&$U zALcdLstj%qX>neeILn{szAf&6?+cLK%9{Fy^J+sTf5$jpA*Xh_0bCuq=W(ApmBSlD zL;eAl&HqLOJ59c@Im@)N$52&%1EF#X=b-;zs9ffY74faq=1VwNMrHOGaCYTt`>qz&bj4v^7Onw71f^}G)=>`6rAXzgiQ9Oii@OTn+~ zX?+ifi?Vd1b-S3rzDvMrzoU2l$0*F=Otv^cYk-DRh`$cj1$G)E7_D88=1!{{@D|*| zC~T#NNmoea6aZvE@#G))6y5dA$J<*EloMu2BGR(mkobZq*2|SCMZi_#$w^uU$Dc@< zNo7W9FH>fcaiJ`~h(N10$Fqvfl&Z(Tc`-!^<~ z@Nw187#>yXy9O9C5L08smsODq#PS?lh%SvMy4SAjA}TY?q)uA z_dTs0nd|+o+-o-!(Wy%VcEHowjnY7#NCdQop?*2Fg|{F@KPpOq3pP}?VT-ps*NNj& hq=>vLrO?r65V)Ju+&+E{tO~^U5^Wl;yL@kn{tL*I#&rMy literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/GdImageFile.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/GdImageFile.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b24bca1f62bec92106dc974e808b00e97bdb80b3 GIT binary patch literal 1732 zcmZ8hUvC>l5Z~Q9+h@malM)&M1(pa^SSprC5dy11ZIcorMM*>`l#_+E@vfbX?~mDA zr?KToK+0F(xqaj--3t#$Nd5{uP-gbrG-9Qlo1LA1JM)`+*l5%Ute=1R^T#i$g#3kv zSIYP1xDrKxX8GJg1Vrpy$-G83dE;H})2}pwb&w z%tsc=a6x~ivNR)I-)S&eE;QT;ic*~V3^Yo%3_dDof6iviNXZf=gLBVTKwh1BYh*#o zYoxF{_h-JW4T<@E=0i4tT)IbW^?6O!FD*d#wUulXmM<{glDsCbgH`?i8gjYs4=89f zB!N<`?CAyoVUERZGX3vMLi9@@(|7h#%LP9bk(L~ax6wM|t%2lyY$)BGBYNg#B(TXG zYd0rQ&9H8bNV1VID(Ou^|H;GcZ!`hz+%w{7lbHr+I@0tEg0m1f&|J$|f0X-137LC< zgM8_5l2~!(@R9p*DghYXOiz`;eu2*2jojBsKQ$hDS_TqUMhl$zs2KVd5^k1qKT}aZ zr&(CFW~?^TC^g~rOLo8C&y)?zRwq)O{Xq<3?4P~OcIR=XOxF26J+W%oc`zDn2`f6g zX-`C*Z&f_%j3&KfVd9TRqBj%+oeVk$I*QV#or9g-&J`54MiaKoz-dGyF~+9V?Mp@Pgky5I;%ZEb`XHJ$=(?ew7!Y}H%326fZD5OKr zEL)fioPH8Qarr>fh6n+{5Sx0CDDY2*Ep=*R7h^snH?L& z`zDP6bO1Luo(^oSn$v3oqD1T@_|i5iAr?8F?(o!bk#H<8%(jysi$q4Mb=4RF)aLuH z7$V|$Y;nGmaC@vXehQ6-D&66_4+7<`xiEuq3_mO92J;2Qfj(8JW_di$EI(3w-K;MH z83hkXvNnH^EZ(4#%!;J>??Bz=J4LYKy}fiCNuI#ufm0lV!mGjFOoJn+ z6y`jAzb6t@TKq;QMgFf#w%7FY+IJ!vD;LDI(yW3HgHsDLxPttfND$`*K_KKlR`3yU zSse(e1prS5u)IdiZ8+~WsmrBV&xt`m6my4O^Gf$fC&EnJXc`2Pc>@Xl8O$0IM2~ZG ZC8~?>LI?K>M1P5+;efbGSF1NZ_zysBuD}2Q literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/GifImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/GifImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fe4383252fd42c9a9a36dae769fb16fc18de2bff GIT binary patch literal 16467 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 Fe*w{bDEj~a literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/GimpGradientFile.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/GimpGradientFile.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4b50c31119ddaed0a0a41971716dcc32f9f69eab GIT binary patch literal 3046 zcmbVOOK%*<5$^7potb^|Av%0H2IDxfSCAPg2oOO~NZA(62#{&Q>qNj{<;7@wxEyiz z!JeT-2{V9`RqoC;C+ZR)zahxK2wOAOB!zxnzzx60T*=wtE}Alv~ZUw}y_dCa=p=Uw58uH{=@+qXHBLRxX5>-Y|2 z+jnI_I?tK!NmqJki?S$7XiKszD`?BIDr;yfp%)gzQdkZvoq}K8W^zW(K4)@vDEu0} z=HxuS=EK_1@@M3g2CFZOU{#x|MJz}zRv#s zi?$$rJk(mC4?xK$U>VQY0atHkEM*5wElA$LHZs1zGPcSZtaptxmRQcEWm@zb%?)Xh z=9%syv?Zu+?{u)Rc}|6IHcy3@n=s7X+HKss|M5;;Xr~)V8Hd^$^pig^RmP-m8z04#Aqt`DASCyshypuUeEB=ck%_wd@HCa5JzA>! zc#5D8!BhAn6+2MoeICkd zkP{Ohu4W*=+J?6(HDSH4FKIQG|u5W5_M!5;8{eC8Wd^q{|R#bY{xS%@J)7f2FDa(}KBVupg?h z74_OG3}8;@XP7oIhr)NkoC|S+G3O0BHD-z8H1*8OO*Qv_m?Oi9IXBOlbA`+SO&@ad z9Z*7P6EdGm=EF0-g=%0)`#JY*0$JVBmGfD;GhzVlbYrwj7i9eWIYv4x$0|8M_?TtZ zGHW`yofmQ^cXKZRaRM6o=7y7TB$AV%#(bXWiD}ORZ&EY zyvP=qv?x)BJg-f4h0z6{>O#JtJ2TZS7+vtGF60Zkvr}Ei=z>pmAz#p)%fv|`t7S8b zESm+*EwUG!v%{+om~>B^OuXRI+Y^XVaYs=-Rg`4YYBu^ebx{tDDBAx7G2i}V`~COo zuJ$^owMQ3J(CdVz4k(JHwxV9DonSBsds5qv`%$kxkD?vMd)h^@Qc;-r?jVT6G!3LY}tW`3{^UThOj=F@{_PvjG*Cye8w$$sVYr&f7oFwtu9!}7N zvVR8=zO~jSG|)rgpkOsXCL|r)3?5c;)L$w?zZZvgV;p82`Gvi>AEY?&#rk#i4rW}6 z|F@;vag?O(es{2u(So$P!=Al+IiBk+oC;CeYOUXn={k^XK$y%Nnanb9C2ShZszpd6 zLf?oI?b#dcphw%>4|=$Gto^d_>$P@2?jNbO1eb}hUe+GY97)#&U2Z(>rNQx*QhlXM zNgAj$c@m}jx{v^?1GP#&p(>A#K^&#pYiw{D)t82 zHp>^<{UdQbImvVu1tB zRtbP6NYzAzpbnT<&@)TD7ze(Noj6Dif$c>PC-Q{tfJyzYJyq!RR(D9 a_PF$H&{UI>OQPc0mN(AI zIp0lhEaop)tDMhpszz*!5%$oz?BBl_<$OB38zzyHTvH^I+v>kG#TZ^VvqEG2>x;jPcDY7CVk4Sjo9XJqEnm21S@ah46skWzxV0GkQ7BymkFyP< zHiO^u{I)P6Sj~DO4j!o_5AxmKbD@*pa?#rq{V44RohXj8ouG4XH8?Szg?#sOV=0ab z)60^4`4Xi^xz=EC^&~V5qck#MxUdvcuwog7iQx#a(ovJliLKnb-)S9f!Qf1qnU-i( zx_rDDt#w?DqK3#|=gMMvc_dLB%smsbbsV7yF*to(tx}_RHMLb!o+Dx(k)Sm|bUo?9nYsrAfuPK%m|+&WQetXJf5WNhP4 z5pS!?rW%HIH?k;gd)6&fyl(k=u6+z_Sz*~<)p*8?-lz2^-MWCc>hS=d=kv_xv)pGc z<4%)t*2MeyiZAfN+3z*{>lRVjRB-itsL!}?L~NbY=B%~3{sFbNuEkE0NrhW<5$`8+ zYxI>l>d|%lT@4)g;QYz>|HIbWHL55Ti3&s82t)L~9h2M)!>w%*kN@b)6zykXzkC~) zmRD0_G`)gzNY(Ux?sEU9O4oMvkEpiw@L7}!oH6Zx_2*dnU)@-LX`I6HY4Sx*ecr5n E0fAFIi2wiq literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/GribStubImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/GribStubImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d52f419803ecd6e12f9788ce5edf6318b1cb2243 GIT binary patch literal 1660 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 MR$rf^8wmY>0q<&LIRF3v literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1840a830afbf85e5355bd2d97374c5c1c05be94d GIT binary patch literal 6756 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/Image.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/Image.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5997efbf649dd82d25506f926da1ac0dcba4adcc GIT binary patch literal 91272 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageChops.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageChops.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..84742e31c73d76b20c6c3049d73d753cecaae7f5 GIT binary patch literal 8083 zcmc&(&2JmW72oBzD9N&A*>3YWc5FwKB}Nj^9*Cx`qM)q+#R=lHH3XsZa%U*6wd8JR zm!c^!X$z#cqP_Q0>r$ZC`~f``MehNMf|ni&w8*We9CGUK&Fn5eq7arzH6*yRyPTb! z_j}*(y){2yH1PT5um1V7KfG)h|Ducdlg7#S@eBTp12?$o8Vz&LG!35O>5q-Q6wmN1 z#x&3IJjM(!@EMF*UgWbFb9|1^W6bkQd;w#DU*=aZ&hSNk6=RVv@oN}o`E`B+;~am3 zzrbJo*xZ}v>-;7DGR`jXSNN;=Z-Fy@6XRumi@%2P3cto@_yw172#u#EH@n8;RM$LB zk?t#CXbWBAsc~um5c9;@_WVvCkTTnH z9V=ipPb#V#BCJ;)jnG`S@yw(1Vg!a|=)saHbJ&BzLLX*u*_+`l-*s#&6tCbirehB0 zLv& z`rp?H2cp-QEtrx7`fO3Zjeim(OycYyB3<)w>eSSzSXqdI0%qH5_?8p_3+sY~ZBJ7d ztTNwu0=1}i^vNoq<4lUMC7S`H1VltgLg+%vX+kp9dbEt|9M(f2nG*H@k`zLjtRQ4w zQ!uZlUZvO&utp2F>(;Sg4ZzQCZQME+LmJkTWwp}As@~3K>D-Kw^MFlWqQe3Xdvl5} z5e-n?oPI$xZjOp;KAQP$JR6Wa8*>E{Y`TiGiP@C7NH%dx9{qo~F*x~Lf%at?P%c++O>}U!Fr4MI z2Gny>$E72Q<>i5hVxt5;4Bpr*X?{%Z(zLM*YzbR4jvYBY<->#-+Lhgy1~Y!~70jTx z_-r1qR)DBNY1ad<7P4ImE12aTdJ@5UV`4GY7AwHg2g-+!L#EiD_S*!Vyb@K4KPRlIC=;?LGNliYQ^T!cT zUcmK#@Wbc7-}{UPTZQ*Hp)rr2N^O>LGCrX1rn>3VbQIKoD|UNZoDaIYRmPoThsVkk zxhjPA0n$taEr{$b9{;VN_G-02gyh7S*Kk63qSa_J7c~ox4$FINqr9&30zI8>t(Vu! zYK4o7`IqC^&7$u0n9OSY@ z$;^;cdl+SKA)fx15iT=aPwWCdh1L%7l%hqdJJ_z{`@_oHj|;z?Q!DkGFt1Kn(ATj$ z6dF#hSla1AQx1^uw_IZL4KVn^)2zG_HPTD4o3KQ7-l0PNb zmy|t=<@Xt|Ul^JD?-2&vng#>@w(A|D(&w_R`)~Ji;l!+slkz^)THc?hdX&IT9#C-* zre;cjM-HUP#|ikXtLZ<$20kAF__b*O{MQ)Zci;ay@kI@J%JAluJbQ8+y2Th>Pv+n~ zwOiKa)|%4Ti|48Bo2tX?Iv#P(lbJ5jQH7C7>3~ z+0BY7EqwlNMM}4Gvg&a(cal}|3*$GdUdT!!pk|l-!$k0AU>8GS+eSm(tzCQ#2RmuDLO^TaG1v%F> zKTIXLPSVCvf`PUL_3W&VuxeawwEz(MRfF9G)b@#N22aA`PSS$Psa7!?;QkX@_6qT3br0bW!`Ipc(yC@#`8y(t}=N0XzM>&eu` zQXVsz%7&7(DoUAZSJbqM=MY_jAupm$5p99hh)UGao1V43c^`rDaJxhW$`A_T>0Uk} zY%d>edQ>(js-{dPAf2IZR)&H(x(h@8A_n===(%~nbfae|9aPOsNu5B|1XC>*NtJv_ zRbxptLrJwNNhKLcl?O?gwxlFXGCJI(1BEV<+^ZxvAjv){C6y$pqk%tdRI0vY;X5i~ l72l;cL$HFwT)HrW??T~<`Yz!(N8jRNaj|eY`4$Vs{{gzo_Iv;U literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageCms.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageCms.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ad7391c3c70bc40a4a68f774c5b2bdd7dcb18aec GIT binary patch literal 31362 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageGrab.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageGrab.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..98efc657d7257061af8404f78b49c3dada9b5f36 GIT binary patch literal 2090 zcmZ8i%WoS+7@ygf*Xw5T7uxafn4qFR@o5 zHYvYEo=xx`YE@1^BicT}fGsS{&BX78!XiFBiU#X}G%VX3NEu`mggt@HxlYibP5P4eyDyy};vW)V2UIlEZepB|l5Qp>@ zJOI1><}1u>K1XUV@DEsdGM__ap!5G;)X%(VfEUe~^;ej#pGT;4w&u2}O!L^doeg?k zjRiCe2Z5jQAq~gctz%)rRoweX=ubCRgiieR-J^&fq(kmLUtMw8Fw0WPJp+zEKan=62GCj%IvX)zXR*(_DNTgU!zAlQ zaVSd3A(I24rA(MXoU%|jY}maq1Ic4F_>FIP{EwrWtHX zY3Mb3)bGrK+gAa3d`(pDN36=k0?#4SHH0T`0m}-oM&`8>9MyI z4T5+`!u{AEg)}5m8A*?rR{>Y{X9hswF^L!iG!k0(K-e;v%;yI}ixSU?l6~n|7J{c~ zx648<3>J+;VGy7Do_2i4(?)k7maxl(&LISoM!f?rtWL^#n*5CDyAblhQ2;11fb&w{A>>KK9sIP_Vnt?U>(5&~o-(ERlxf zC_(VhHP2br&wAsVaOW;R2-l%5T%Ni&WbwLC{H`C!!ghCe_BNlpvTWRIiNYDCQ{R@CJm6?Nr{}jIvnNSCUMX&u%<~vKrs}ua;yTo%?X3*EkS{)+m#_c;{NO$pCC2w9Q556pqFlWs z;j)A!0B_+9<1?ZQCt}e66byn;n2PWM(f46H&@uI@Yf(ozFE2xsR^)@Qxg!>~Q@)vG zahQYy9uoB^w952~H1(D|YX@nPKuAnjvqXu~*$jPKZn`Q#TA{ZjNXE|KI`l;C4M#U% ziroi5Kp7yN;mpVdw2~wO3Ie?@648O#Dz>#I(2d@Mb1h?geSI4oR2jVqGqWVA+^USK n1gnfnN~%K_oKo&7&+N~VlnmqWbGetvQ?^!BoVKy8J0JWDV@@Y| literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageMath.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageMath.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bec890107fbb3bdd9fb2117dd358b24d139e21ee GIT binary patch literal 8103 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 D4#Z^m literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageMode.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageMode.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..19d77d2fae346f234ec9003629e68b71a2b11624 GIT binary patch literal 1265 zcmZWoOK%e~5VpPE&8D>FAru7S5spD35|_i2z=^-Wi5Vvim9XWpXFQ(g=f={~0)g@V!_U{d5h1^jIUNBU)?nG2 zKopT=lPId#C!*L#)}bm;{1fRgMYc&TY9Jr&KN3iU5AO$Um zAO!EO0x}UtX+Sp`gw4dvPWIf9^WG<7|s4M%)3q8n^?4-LV&ERe(y9crdVJBN@zdw4H zY&Ba+b0B*f)2(MGE*2skrnwMTz_yKn5E}V8zJfacN>V@7>{8T%fjcf=0O%bl$Ue3L zQl&lv*ih`_o)UE6NIz}XV9g++&N#)g8T4#0+RLykh80uJ;>gS9DWMkL`ILUZAt&}bVy;gIY(gnX z$%Gx(3%VbC;a|xHc~wo=BuIh@pM;Yr525c7bUpmY0SCb=N~pF&dXEj8k(96AR2W*t~BqIAd}SHW#mgRRHV5 Ni)a}CF%OoP{sPWO8ZH0; literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageMorph.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageMorph.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2f53218400820fd4135aaf0048595163d653eef3 GIT binary patch literal 7352 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageOps.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageOps.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1dcbd6e76cffb93b1c55365e89e43e4107b7a8e3 GIT binary patch literal 14436 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 Z*!XMX z#hf^U)(J5$&SHI2@JFom@^jqJR-SW|Ehjs*91e!dDiEQJ_1!R%*-09C5JXaIX$HJ| zgP<>OCsCrZ`jLq)9W?!w?A^tPWNj{3+Y-EOirVU;t#eVn%qVE21tMsH?IH zmWUBziP&IZ$OfsiS;Jgi+!>@6W1f$np~WBOH2S?nmF+<=97^GbL~-hw#Y@9L1p|MO z2)X3HzadS_*NHz$rP-@7R$Q^*Kaz6EY@>UYl&Dc+dI!xjqno_sm-|PAPa9hT&`=Ry+qg4Cr(hvOgT`dEpg5B54 ztAp4#BR-f5{3yiIr00h*u3eXUN6Oe=y!OVMZ~8$jXeN?zUvKzpYiT%^Yis2>Ivhw) z3KrwhU|lL&+a*<|I1I~)sWmV~f-$$0R7GJwmZCgpeb?`91aT}Q|LV;s@*n!!K{UeI z(+v=l4*R2IWKO0V&3Wq*`jP%}c@PnNtJu8IdO@0tAXFuz{)SJS4MA;j<$~E=Xp%Vm zLizeMb4&T!|qUR3U4er;w$$t#Ksrt1`Vr!Zz7HpQAZ9q_SexRVTKvwk-AjbcMhg({}gy zmYr^zd0VN8eK@L=t_gdee*y!8i8w3I83;4Pjc0dM68EQQGty|yWDcn~tEynfG-gV$ zWv&Y1zRYZ3C#x2~%_=!MGFOC3?`GbIq~*7jN))_>lgg;4$jPabDA0$*f5+4rbUuIY z_R{JHsZ{Ce<789It<{^u;hjJStM`*`5Usv12gB9jE;OnJ*M>oNE9i%DfAv8aMajGTc=!q1m$3X&SL(xnsnX7xT0fA%eYuZ_1ig<2CN_Q@p`z*7&6tSfc|= zwurqFeXpSd(wLg15+CnbkEn+GJ&XF8eZXj>WsQGRVt-lc5+`K1aQ?<@VXK2c`{^ju z!FqJ)AEBaak=&M1dBWOSI9M2tbb*_-HGinWL8#&07IMc+9&};B-w9LUX4Ssb0#JL4q*+11 zsuf6aJokbOi$$dv2_0m}#)t_WMvP6($#6g6+TcPv`@hi0$FajuAwD!O^nH^8$lXqt<1)(rjt}FsI0(l+s3M65;rUF;piN@ zZUx9~z$}}g#o68jM)VPj8#u8x;q!3maKbatwm0rCQ&dMR_Emq~*P~%1U-ttzwl2a; zsU9F*?S9$%S2Gak__ZSLl{5?}2v5UYkpY;fp-3ywsR+qkjxUbltvK0<^EG}tl-;lw zO10!)Q7f(bA*j?>uqSg3v$@x+y(@Q3q{uztCCsY^6-_FPH?(ta=$astxnV5i(__%e zYOqr?-^R9-+#56a^0)5eC=vB7 z0T3Pb_bu$YzGv^AGy4d$M9>K>TE_1t4l1c;) z6K$>DFympyH;-e>Ng*4JV^Tur6jvUQbP8B%@~gnuIn;CbjzwVF*|HTmt~?oR)hR=X zgMsXHGOyD?dNqou-RN{E*DPkLosLMlosK$-ohIh1i_{_~tzMym(i=sIz!7RGqf#bI zpd^Db1>Q1RFfxWl$@z=qgPTyR_Ed~6fL3A zXRsH%ev$XS@${<33)ooE{2pj}Ml{-UOxPEUl|7k%%wk7dpMYixs=3$=ke>esXF(f; zh^#`7zF1_ZR}y`10N+bFg%m~7+IH6?WSaoe27rWYccj%KwjB{R$vHbY2)1M=3S&IQ zI#~2;45sA17okRoS}c)xEMabJFnEP~9zkna|D%;|L$3kcU>OMM3y zv?^JJ29tq$8(qU%?s`ZQhBp|FVav=L-o5}<>MoZ53149*4S;AK?!}CMUVXLK>n(N{ zUtpA&HHf-_hGwt|Si`ElhoolD2Aj|bMJLmuIAxg@5+=;zMM-v!yq_>eI2WQ$+8%T>eT&y0?IO$1Bb+jceD%FY)3Y=m_y8XoIBJdYcQBGnlrZ?!P;SPsa?;b>01=e(>WA1>zv)(M&$EqRj=aBcs0-Y EFT}3v-v9sr literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImagePath.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImagePath.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ca2d1064bcd2323e1841ec70e624b4cd444ef502 GIT binary patch literal 221 zcmZ?b<>g`kf`-QXaRH1B439w^7+?Z29Dul30!XAVq%h_%Y1CEp6aK`dW)e5r1cg{a(+?jEtZ1Bl8jp{0YGvkLlHYr0!;k! zakh#HElw>ejtS4tDoM?baV#isNi0c>@ySn4%!vs}%`J#2s7%gCEXvg_NKDR7OwY_q qj|s@k$;mH|3GnoZ0b2($Rl>iS0l~N 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageShow.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageShow.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fbadfd40fbbe24988997da4f5b2f89b02a442100 GIT binary patch literal 5729 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageStat.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageStat.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b0217adf537d3d67251a097d7d2331bbfa2c0d87 GIT binary patch literal 3707 zcmbVOU31&G6$MC2res-3oHYJOnzE_ujj|i>j5qz5Oq$u6oHRl{_ z*j9_=#%W_fPL_IHW$seGu$lG!W^@7o3C2@AN&|59qoF1xOl;%XVI*)pybtu|F)NX7CVc7k1WBZF&jW5U!!hEB5nz+qo5Cyu~yhm^^LNIP| zhgYpCuks3Bmk$=q?8(fQMYHgbryLaHsb8Woqxe5F0)OKfb7 z*~rq?ki2A#ZFtKfG7j!M7h$U(3hjHHAO>n}PfW1fI;UL{r`h&(%~nO~%%M#alDRl- zU|@j;tUxCG*g%zv>-2TLNsDPgv-uDoViQ!>b?%~6_~3eGVLqt^_nL>cogH4M`*@4y0?oU#3a{o(G&9$If4RE9 z^l?X=c*i2_`?0qNa`~dQ?-3ikAoBEnM!P9>NTnT=_?b~>1cji=N2JP_Ljey8u%W%e z)FM>lLj?Ya19K>YmUXlUC4l~(L4ND}-}s9na}_xhI1)CA4c#EbNzG9PejX+KB;mm< zv_(wBw4Y;9T!mm@5BLM#lpzORiY$QjPqgwoV&iE@M2(+qqzf;$-ojS2x0)wWfJlm> z*YhKZ0dlVT5s4)dMAunO=E=v|E}vjLb+YZ29KOu&=1#ttl%q<9)6T}pzd-}ewgTJrk%io2Yv*l27Y`_l5U!TAmKeGD3>gY;UM7Son+zV1n{`)<(2M$=U0-?K zJ+Bv>_+d;AHr@`!sjn_zsJSyJC=VJXrM-UC(%o(tCq?DUK2nO??fFV*BpO>tnMJ^V z$EQU2w7UIB6OUs`vdkuI*7=~CyU9$*ks&YS^sl31klDThnI|J0Gb8(C9b*UvV6{4O zhW60OFmjgI3cJOA!AADcL&66kVo#yv41Pjr#r+O}B*O4LK()yLdfwrUL9A9tNt5%X z?i!?b`pDG>v*ej0aIp0&{4eFPfrgm8N<6OQ0AbP;Jo#a@i=_shZ?1sn^9-Ji9G?3r zJkq(D9#cdl1JamJ!2}SeU@8ngG%y|Y1$gj(z;#Xu9O%r%T468j3Vk(nIG6gJP4xj5 z&I0FVz-_*M7rFa{Ty}b-@NVYNQOr>)H!-(~hJo$@*uub_dnV4(6pFaQS0vRHc83`# zDp`E-!8$=9ju8epn@wDKp?~a$7rE5<91N*oi!_pK*pd_s&)*v}#=4F#B64mXG8KOB zvRyQu+eOim+jTIp>ra_ozXuIC<>v!rV4Rb;0fQzJyk4d8-7hpv$+D=6$!Cd|zQ zQNrW8voFHEgzsL-hcfXY)qt#zZ$nU;sbr@@l`rCKC=xTSO*X&2#NP{!=wz= ziBB>45;fK?CkqVcR?#t?5=$Cv2W9)m<8=8)quaHOg3wUB1KT>~tl^mifcW zHe*6=GkKCC!bCZtYHVK1Y+ilWlV|Bg=_0}nqhs8mrBKq7{&665(2ZtnoS5ce3-t+! z#}J7PUEb?Q!`N6${QK`%bjg*gmpPiwsPU~@m9EW^==jZMQf@XoUD*$*U1>Ivl*4pH z-5@QNN&J|^I*A7)J|gik2}*nFXC&zQq=@O4AUEI>?uruj4^d1o;bK*BOYRNVb?5QA s?lqK>nFAE=(|iNK+GJ(D_%iJ7itwsmC+^c!{b!`9G2KOYx_0&WKix$ek^lez literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageTk.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageTk.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8a847c404b77399917b4a7c3cf4011470b7f34c4 GIT binary patch literal 7736 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageTransform.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageTransform.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bbf29fe81e890b89cfa3eff20289996b59d53584 GIT binary patch literal 3472 zcmbtXO>Y}T7~b`F(nKUJEfPp*4oJkpjamu_MF=&tDUE2OR!s%6ES&Mq*xqElv&@Ve zJ4#UzJ@Xsj$lu}U3kOb|xO3upXV+^dO-j|SG~YAt_w&x|SIf(b9=>Nk{rUZS7d-DT z8ce?uIyX^F2bJ)IA9(}6>HFT-o+yaob59hdzhC&d*eqhEB+8g6%Ob`lj4Pswan+5> z7}vxC#tUv-!FW+z!1#h2SH;pJufF`Z4@Px=Qr;f$o(wR^zXEzUQOpOZq}TL?*DMHM z6rOv{q9}?IT1X%&Xv?AsYPHG2uI91nDm@73IDOPoxrJg#^JD+mYeP94@OQwvB)H}E z!lYzm)YW8x-#uMH^Y6o38?DDiYSa2w?OS=!+Dww$*xb6O0v@$?^Me4BiVEbOnDV2+~o{T58b~}ti+it&2;y4-oql>dG)8&BdLLarc_)8cZ zd;3)UZXs2mFsTfr?JMC#ulu@;O-}x_s$w{)_M{~>-@#zYb#=xyTMdd>rjN8ILwti` z-bZ!p{p$VZwF*y5Ps_)JeIGU~9hbYs4P8RIc0riTL1ZEA7`m?5$U~)Vu-(2Sn`i9&E(99@6;<~%9syiyFFQKw+BiLBkC`;+dm9> zl&i6u_b#$%ZC9U;s-P#%UOF zi>_AIwLBKg^g)lLPj%8E;L4*^tBm?1DcMFc-XKJ6?EMG~uR9E9b#A)7)L$D3*L;xK zaf5BX%vG6_kRfJ%VpAVEi6~J1&sT2aPQ9w%LLllDs#Z}=s_nK=LA$LfS2Qb|ckXQO zY^5l3p+2iz&|kzZhT>3GTPYPZ&Ad*?Z;h;s?d}xy{GZbyKMQhlsT{$EfkjlCVMogz z#rafchl$J)_jy90uVr9)+@s(Z4nl%;#?ESi(lIh~Jv~j4pFv8UIHtPJVzk~1pCC#p z8?Cclj1gMH$dW(OlZVLLIg}__GQ$VJok&@9q&<`}&dFs0G@uBOWBc3!IM;xjYiGqZ zbJQiGaF{UKdadF1<>XF6jKXzobRE>L*J-nfx&_}1Q!}y@V zfbK!4H5$r4x)Z_$dh9sQ?3+O`7-|iFW}sl(=ox0Bu-CWI7#(#e2|^&0GV35M@D7A` za#D zzT4f}**zbM^bq(ohvF)rNHYOS{=M4mv;1(##SDngaLS1{y?Yq$MKMLm6t5@YMmuy! znNuS%B7tWJox@&N4K=y;T=1QWE7f)BZVr5D7{6Yo9gX4kn0-{Jp{0U4Ch4YW7T zxF4N#`G%SKV{ws<&=X7%&>B4qD QAxp)J%PW^xuB@#72iRVgi~s-t literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageWin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageWin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..efce96c433aa51676f1f66b0e0ac0b957550c597 GIT binary patch literal 8043 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImtImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImtImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..30adfa45d20b25fdcdc32611b44777084d5fd830 GIT binary patch literal 1219 zcmZ8h&1)M+6ra!CwJbTp6p}y>qD>(RMCTAfaho(n;24#-1UB0&i)JLP_tP`u*cK~j z>-+&dl|nDlvHcVJr_7~?LczB}Z$0(R+Ag63@6DU{@q2IHe0<*Pbr6hizx(~o&jCVz zxW&z2AnXC@=fDIKI7cB8M9>@;BqRk5DMk{lnP3|n@-LC#!h45=C+QKrprI$p+Lzu@ zAiWL25dRVl{Y$_?2bUQ5kXSx0lDV{7?esj&rTzd6_g^Oum)|@X4(`8xGl*1Ff;@F` zH-mt%2c$m)CQ*n53W>lW6(nSW3ib|#TyV(e+3vV7|G|fJ{NivKj9&~6t18!1SB4ut zkO%Y>NPh%cfg5y$)>x1Y&U|&pz_u^&_g7j-u)(k)#?T6{$k|`lzI=mMw4r)$f*LBk zjHp`pA^ZcZ$ z-9@G&wk|N>|9U(!+v{#aAv0^3{tZ0Xx(5f**^r2=_{wXz*apu(%}(Q8;1zCgLuLf> z-h!-LbTje;R_xkJ{%7q$?mewqriu--zZ^Mwg{ou0`&B;_NE_lJE;X0>HX zCcZGHH-hyLoaba<0@!MaJ`WPzy=c}iWqp!78I(k(d z8JR_&)%CN)B+-5~P4eha7IjpgPZxJ*QC% zdH~NLh~qLTWE|U097CT@awm7=`1mBruPxrJQqUW_do{;G>ZwX=lUAj2g|&NskKJ=R z4r~CV-TMg$!;G}L;g%&zTBIoGmHSJqKdp+|U5>j>soFx-&>38Z-(xO| X4W3-p{OK;NH2hSMs?R(A?&E&}`0O=8 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/IptcImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/IptcImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ed6e61a99d4bd4036ff30ddc6e268823a9f45307 GIT binary patch literal 4259 zcmZWs+ix6K89(RD+1c6Ii#HqBbqfkBXiB%FE)AqaQ7CbfI(09O8>e-;xZO_n%sR7| zna!Cov8`DIb&yci3LY!e2m2A8_yc(2PXL}qNIdX@`^0mFRDRzXd*h_Ln(y4te3##M znOCb-m*MxTU;pdFr{@^^Hw}(|5}hk};?F@8Q+&wUdCS{e31tn%$ZA_7*_NDPEQf`W z-L^-?wlgZV-BGz+#(Y89s`!OySNyVKdt5oQtX)+lJ(1RD!#^AjYDw9Rt`C6OJs%Rk+6w@BWeLI?jA`^XjFIcVl128|zU& z@dq1=~#m;W)N;}tOmnjbbn)Y`K^uRandyc ztq!-awlLnwc+e!Ch;PPq19ZwX&52v68H&b?veK0@a2^fa}e2>qO#jMYu&3pDb z#M*x!FBVJBUVJ?$uYczfaz1Rj} z+~xCJ16Hg{!{ZaIid#g)ayu2Bnar`Ez_R8d1GVJYiF0Y{eOD-eg2m&qXPMUYg+{;-!> z1Apgn;p|O6ff9)6Ben0&KElO9zF}$y0?yP9f5iZ=X8T<60}e|FvO+ws#2QPilq-u^ zGCfJXo|p(TD$q#T11r9r3Wbrf25j0d4y67lk;>WQALpk_w0~lymU6N7%cP*nv=&~* zOl2VSr>Zcq!UZ#u`cH|Sb4BBMb^xBRT2G4LsB{c*+$K`12Tohn6-@yHkk{lJx!;hM z&G7Ks=pB|ocAp5sUwFenHIHr5?7>inWQ@ZHwBan^?QeQR%=<&t9QxsAa<>_Tj~)0G z_O_f%^v0RgzNaz^I}H%C^4d2HrVwa zH)_GW{U_KLp8;W3g*#k|dFwgun7)g#jb~2O#qQ}x?QPCZ%}ruEcnsFQfOfV&$yIy6 zCWsmP;(%?ysH9B&3{1&kjAvI_YUzt+A4~>d$WSUakx)46%YjV>q+W_xlh}Jg-#s4f z7gKq_;l95;o=N4VIhBgb?4C$vK2Lo(xI-g_TXLXH3MXa^;3l>*Z^AqOcC==|X5c61 z*`x^0tVuB~C<)HLOzrqf1@LrA;mepS4#e-dwo{v^a?;{cfIHTn##+g&HO*R6xyNhJ ziL1&7q#IXN4gh(aDDO0qikYb%z)L62It$N8mQ)8WZtih}DbA9bsu8H)XQ8;wa$REe zb2XDXDegfKu^{gZ$!c0i*poeL6YuKOO_;00^AE{fhdG}0cc_0E#yoEX4>-V+wZ@5yoZv*ai5TM+}}oj_sqNDAdK$k*lq@tp_<)jG}e9`2T_RN zg8<(;rN4{KnN0lQQ2zj3{XHV{H0cI$5XOlYcKu8agE+}-Z#+hD&Rs!{BIWCE(au7L zaGsT~-gtZU=4)$f%Qsds=S_bn_l{@j#^-6DOei^)av!myUN80&-I^{J;W7$2s%;Ow z9i*WW@lmM&^al6?OP@d6qLQlc8ONGEDJIT-DYfCKPAUfpV9SY_Ln(vlL0$^XD!xnE6c7?<`0?s8K%{tH3@ zZc1IcBP~G=caL9WlhVB}*4e!W>$Ey^0PycVpVaqHrNsmOySYg@E$>@2o0j_xfV;7d zEdCC=$!;_1?bN{UY1+#%4(H%Vv&NCm=Z=&+(Cs|)yDKJ~=lH(>r7ocW02;RwZ9;l= z^@4j=HP0&d{DliH08X`qegPz4O(6aWO{rg#$u;FZ05$T|5vXI|A7oB~Qit+DRvZmt z8lV!3GrOkcyp`g+~!>+cBIz5#Yqpig7!K3_j&(WII2}X}$SubJXV?6Oi5GI!=&Y`UV$GeS369?&KrB%wDPABw6ey5YUoeo@h zYe@Y{r*m)18y>CLy-1I|Bx~etNBMDABVHhG7>Ca_bq&lJUQh5(wWp@KOg{XzEf$>>+y_m-;U{sCC7VjZn0VkiSqSqC^{76VQoFkY$nr z^3pkg+D0jZaVq*n%-o`xeMiBK;8F$sXHu1aeC#D)fRgxjURpZWd}H;s>*t!0 z&NmUB7F=`i(%9492!Z}mb1|I8dlV}{2q5O$DY!1=yS1Ne=`hCTrV6@bSx@gEK|Ffk z1QX_^D+tETpl7ZiZo}xC%-$JB-9hud7dLy+R;cp#881hvJ98`O^-g?NWHWEzW9Y<$ zi3BTIX?!SJ-U$_iTykY#x!jd=e z%{x|FmVOUM^*WK;L=0jd67x+_njZK&y+?pJTz`nBHJdU0b2_&Hf~*v2D&!2NP1bBz zrvfce(6PW!yE>Jc=JJep1;^Sos#H7pdgxqz{oR!}v)W>k=-|#);^(RJr}UCir_&vJ zaSS&tzPgk6@$wB5;50d4<}QcI&kNF4QLkd^A%FTK+9Ap8`U6@a5l%>Kge{*?*`Kj) zK9QJHM?{gr6}G5|3Ze|C$&d|h3zVx?&9b?Tr()s`&FW2@MnrytUh+DT4iSoT+`ntLf)^dM5s8@rXZpOn}6@ox17;$yQ=+7lp(%0`B=Y?g?3{)hn(Su pRN5FmPDp8tYeaP}=K=2(8pU+611amM1zb@nI?^dO(i$p+{{x#t&T;?% literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/Jpeg2KImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/Jpeg2KImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6174533184bcc191dae09e88c5f628fd9b865e68 GIT binary patch literal 5869 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⪻lu|G? z;Gw%-`hgPYYs4rzcrdSzr@MvqF?HcY^%ZX_4IP=e*=*KH_AQZrq#r;53Dtt3;_B)>z1=da*E$G_45H$ zu^`U|bsTY+%2A@?2GBW@zt^7(Qfoc1PMg0tOl9s`ni|4}eXAEF+DqR5e&ecf1NI+f ztn{G|+*fP?_8?kS`(ahR8(D!O+Yc;a#;x941E`H3V%rcKl-qKiF^9<%dd9Oi>sPzzm_ z6TY3QEzRI1HVef=n3|pUW*73@wsESBck4jr=U(BX-PslOb?mnwMpErf|H*TjIZ zaYG1sXp&J|?Hrm#{ZS-ycHS@FFBzqThseyRO|E57&~VaZ=H@W;UsUtEh>^*I@lzvh z)kn8rL()WN%h8mUeRy++ z>$U%;-Njjb#g)^6+-Z<3e33dHH;p&gb!1FST>x zGvGe``t0u zmfX$~aHU8ovf_h?M2DPLDtH-H9aeFok9Js z0m)dt2;4U~79MBAc1=x8r+?&Z^go7#5|MHtq5F7%0;JZgdl3y-Q_=%&L>fzAtU~|# zIHC{PAuiIl*)^{=L&OeQxK8I>o{m-I$0)fXax2+&(`=u46K8&J+wzM6-2lIdI1fdS zHC!c^!STx+b=88ob8Re79e-iY< zjsj~xuF`KdQ$gQaze-2e4Eh+T-XY_j-GmjTnGRCHwnnk!^He=sE|hpCp%}hAow*1N@p9(i zQiZ~pXup-Oz1g6uSF*nO>k#k{ZdD#a|AykNZCCLv6ql>Np7@34rAwDCT+mdX!%-?Z z5d_+wSqi}UufYtGOVQcsirBq#?qns_FHh6bt$z(&YmTD+*ixmow73Y14Hk6~XP6>)#P>3O1EMg`Ex zwDw^ZS&90Ah(<2wlL&o_z~m-b1a`DtwxRz%iiC+*D+`tCo0a-wTaghBFlbx|Ae-G0 z*}tA+J`J%3t^%sb->pmR#W~$XvXybN_?9>C%ZG46WdMTacA%VgI0b#|N z$4SYhKxjT}lMqy*QS;E{Vxp~v+bpOJ1P^s|norJ7$|ZUQCnwh%jl(0g>J^#+XS`A^ zmx#))uBLw#ptYMZc?!^;t9gCuR|v>RT1>VcArOy(CzwH2 zpdTZSE+eg-1bk7qvII{NBnjAPi{gNOhp|Tq4ifO@ZSl_4?7T&pqs7i!83OjvdWPT_ z!3hFN0WFTXCH->eTcowtQG#a)P7&-N-~?Oy38>6ykqBES2`JLG_!4P7POy*QFu^zh z4?&Bx+j@cEMF3fsteuTV4<=d2EdcUm0k_DKitG6gE7XxC*Z@TwvSD#1`J_?A^I2JM z!RIhAKZRRz)jS9IX=C}xz+xKr@gBZrK5c%|L|HtCQ5K#9t0>(tPl+A&Q;<2JxO|`+ zE_{t!z{kc1hA6Ln%D`*eVbz_+FIl&pYhAKf)(WjdheLb8TcLCBZ86=}qVvHGdN*~7 zzD%^)yl@#)5eYhu>kJ1Oog{kL#$zt_bTLQ8}>{(Xg6QFp!l{rhw%{C;jy^y>t$ft+fau*ak%#FNv+8&uugES#MEBh@dXx3s1 z{tEXXp+fGY4-QsJCE(K=m$)l&_)r6%ge)yG9#l-95WR4!nNX>wTUloeZN`jtyT0;S;xT>CBP2H*|!F|%^Ak&yb|M1AbdMm>~ugB14prwG}@ zPwBfOC8RYdej=@MA7to61~oeqy~{bfpp|g{eq+qAPsLP$f*je z)T4$LY{YM3Tst_f0G>}+m4w14A8#4rw;YvzyQ}nPI;Ek>fKkC%r7{ja&Zz0C(PodV z-A>Fs-AKb{cuI{md*MM1X}r-3&;5S98U~i1M4k!l`vCMFY4|nui?;~hD`|M&Mm{1a zar?KS9~o$FTYjxE03J34Z`%H~0m$umFN_#?K@6^%BlO7L-sn+}G`2$}w+Hya#x~-E zL6jIEH^ey@6kqEe`0)uP>1%4Pi zG#qTdHMB}!@wXepYdhdMJPaSLsK!3khgU;XW52{>^c#l#0UlvcExL`K#&D6oX2aOQ zk;aa@RxNA{!ISt5>9+0FY^W!Y!lyYqjUiI|2x|`+&5_C(yg3do#O~U)A;c2cOIu^F zA5xm!LR#r=gMP-h#u_77n_;M3v$Bpoh{4{m>NH1!ool;bB{9{Lin^{5tSNlWMD;jw z&%p;EyeFQTs_$-lbG-?<6}~xelgjL`WePR1UOd3cuHg`i%gj2H#xcgmblo20$yzKG zmN4qjyk89{Ec(_4i>~hk8@c0cbxDZBC^!+tVF9>_paX$~t-l9U*aLmmItvmOo^uvF zJUKpu%=*Z>+N@nA1Gn1%{H-24_B{TjJ;skbe?*vO6hAE2JLBWek4Nv1qh}*8xuu$y zd4lafk$H38t7O)-o^AVpU(0OReL5=#W+y5GxqqL=L~z`U1y|#cLR*1Uzzbo1Wmv9$ zq^Z4#uKo5C-v(p6&|!?CmIO=8+%QC7084}r0A?7(C?cphT?uiBqqgHgB5;c~$lTNi zr8lrJ{ds&QB4sLrf{O#Uh9e<3w#1kN$pp?~Uj}&^wXalQY=hAY?BQeP@`s>=KnWb> z>ydJGC4)Lp0l@fX>+c6WWI}6cnBVYOPt$5Yt?`KoMlpE*Om2S_Dv|_ilUyOhd=&>8 zYa;}j+7M*8ka7Hk1St;+2_6u|6AHt22_-sstik2`KpGlfd{qR}v~TaGXp^I zM^Y2yn;3l0{XkP%gocPh1@xYHLWVY^g!^tgq1m@dvlQ9lkl^b_@1t5#(L%KN>x7>A zSQky+=NH$Z7+&C<=mQcP1tJ`1*dNGdqcfK^Tc=T0hKqwDq7kKD9z*fixlc6uwT*KZ zovI(RHt*;9zA1R$fT%M;l{Ux9$`;OhHT^+0-W#UiQ(l4hPh}SC1^4wZC94^AN!hzg z?1}|Ti%?W!aZ&JX=6#po+XNKnbshj)Kp9Mbhd|^m&L4`pKO;h9uz~xR_%0_yk>9{0 zie8fzYz6~1pJ96-kMWsCOTrj_gV?e(%Fyw<57vbGqd#N&^dr7cPjP z``&kIX&}2li_jN=IImv@4BaX$qhW_r8|eeg9uG7u3>rDSUa+OVL0>1nrkN+Ps_9Frjv*|nmUabED7<}^pr9wd#Iyb-tz4F@R)eDob zqh6Yv%56ti`7>`^pS+g8IF*l#)VWb2&rMvPxIYKB5cv|YCa;6&BZmog%e~QmNss{u z6EjOiaTg|ubsdoRkSvgi;anK92O9VN&--{v`B`-e>VXiVT@%A zY6JY7jHNl|j+{;A#P`Tq{Ayk9j#gYdZZ}i_do?*11HVQc$osY>4r}D3Jm=v@97L2?cc-)rz{{o2RIbeZ$k1a zWM<%Ryx~5QO^FFcv_rYR_5PwSa&;Ull#AgTsKr2-X_yk7b7ZWeh9h*}ENHsYLbt{k zT%>z})~f{36R*5TrJJXvvHLeE&ArbT3!=16+1MrC7POA=qZv@64eF<=3v`^eHNI!Z zS8a#*0b1QTgt`JDbTK|xPeIQ)=e>_{eCa!teOj2mUgKbdgvg>IvJ#4M(VW<|BQ`|> z*QA3mk)MIZS+9sMxK0pH>d_>BO&yOWspNWIMo-hiZ)y?0q}oV6>yZy$#KT^Ey>*!x za|H7QUnKY(0kweoU4lO%_&&jR3CLmP01BPT)N{Sso5MZlX>myrPTYkfz2~-fih%b; zZr8Q0GG!k+ij9*ZF}eTTQ;{+71zt$CuK`3KEwv$d!l;>!yD|5U+v6T~cWuhWUaf!R zw2qH>%4WEp_csYQ*W8@yb6j`u!$z;0aO3XF8+mTb>0t_^Ot^jShmAdMIyK5WdD!~@ D%n{r@g#qHWYIX>84m zJTpR;Ps#t-L$3K7`4KsA$ss5H!d{Z+>7GF&NU}wh4>?3#yqc%qkM4f@ecz$<)%3Je zz~_&D`uiXLxm_sygCP4n$HOE1#qTBx1ywjGs1a3EB{ix(P*>EL8dnoQj+#_c7}M%Q z;8CENGc*Cqfo=l&D>)tUSn9`Tj&TzuLl?fAkJK#IxQZy(Qjbw}UCrh2RiLZthWaSg zbNw4wC5v?po|!J2yTo_%QM0H%{=Ntn#8bp!RQy&k`j2j zm7-69DzKsDA~?DYR6!J?Pg7Ju%t_-%9mhNd{n7z0mJx9oj1=KFrS1UT#eFOryo6IP z0~OT@wDX4PS!_Qilup_d0)A*4~q8Sr|eiqGu$FlLG4g*~5 zU@YM77wrsC8CJ6?nt`r_)2H_Mp3CVtoB0haF7=e-Vg$LtQ8g^Ar|2RkCp$Q~wa!o( ze%5oqoz+<;%Z6F{G21xE4@+m37T-H}OUuI;Toe&; z1vSLFU&gp=`ZafDBdj3e0F_~xM`d_rme#&FyaFQH`AnX}IWEemcNf+??;NCy9Ap-< z8_=7W`EC(s*eho7X9qjqKxetibo`z>v&`)CTGq${BC;oBT(AP{u$HWW{OL2hV zx!%dW4SJ{DY1TWl6WZRHp^M+_ow)%nvfi0-VSDG`^yF!P$Zj6JPcB%ewpQ8m{&#xk z7EWwAyVyGiI$FH1-g*D~iGvaK;M>C5Pr82_D-@jP`%k|XZ@RMWC4CX=B=Le~EcBbM zcP!gFNJJ8fq@~4vD@?+;6?V>yT*vuE7-`XoH2h*wmw`CaLMo+I=9TG`S5Ji35P{av z!t=2;?#5d5S~?K1JjTMp?55$hHB4THLUuaszFFP|+7NL^*S$u6Z_jZ=w(Tz}R$B|C zuPZsnFi5>|z98}5$;1l-k;tRAP6L?d_{Rgp-J@9goi_KFl4K*~6z8KneM^sYCC_(p zM7>(^eA(1yr|zpxv$8QbL{A^pT3)kNS#uoc+rfg)=HN4=5MG>eBkPG**CK2P9n?d` zU7B@ban#2XcH!eHIo;NAEO23AyGt^hMi_~DD++xnya2#YIcnj4sB3qJHLkN7>4v)} zT1nE0_qMil;P$-NUPmiWx?$AZBHDUvLe_HZ;86Qv9DCqiAs;YWss$W+a?1~9={Z;PrSGu=|qFZ*bB5sA{oTI;We@uX+J#H&U!ZpbRFlCQGb0X z0~*K)6U-!%SY_NcF0d~;GD>(t&SbQJthEcL{P(GmKVS{%7I|-PU!239Hk|*SW9$_} zo}ll1E?g}9*j&yaCu|v`JoBbx7kAq8+HEkEbfW+lZhDwWBPoKee}sGIJx7u3$F9g$ z?no3^LT}nT%8PV8K^u~`R^Ql;1Gi?EH96G%Y^t*Lf!fs2)+8Eh($naZ=Qe7}CBJjr z;aNjgUZcU}44hrj!zR%)cU-~PM-s_W4}(M^Gt4n~nYN2EnWboZG4{rqK{*k``Q+x& zTr^;F#@}uKUTi)z9(dfab322%9n86|>r`FwRMt_1?7!Tnytv|U0U2&xXV-4}o!5LP zn<9*qtvH*)43yjas(r(-658I;E0nr;_=R{Nk)3DBfrB4w$F$G0)JD^HWmIo@$J%yJeY92G-l=ZyRzKgV-oJlucZ*ek zM$4YT^VIQ@i)8Gg^tRF?X5X8;rj0nxX%RoLoX%0qQhY+OLQ$n~DIQWhp}0ozF~wbq z`xIYNEK%H`5EKt6Zc*H%_>AH!h_&LuWUlEROyv{ubdqLeibaYkiW!P&ig}9L6k8N` zC>~MlQe36L4@ia6>l7bR{EPyBh0`k(qZIfhsc`xM#W)3jd^-J*0{`I@PD>Oc6cvcI ziGwk|YTIG&z~O_BS6A0R7|-6n2h)5)hV;$r_+Zi)$+w>0^-oH4yJB5VM)|rv8S|~~ zo3-M}SgoeQdaZUaX0s^%OCkCkiyHC6H;?xYe--N}KKym~D$%bGzwC6L;B9jFBCN~y z;Y;mz4m3x-L`)CHI|60 ZIO6DNu{b-DAJ>M^?8wdH|1I+T{0lsDwAlav literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/McIdasImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/McIdasImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9a0d9621a37abe6dd3d9837a5f3e6a689136f62f GIT binary patch literal 1337 zcmZ8hUuzpj5Z{0I$FgKAwu37OK`pdI4-KRZd1ymP>@-E-7=u#^hv?-4Q3!hY;m+Lu1`>AphgLuXcYV!W`wnf=Y)%*0X%3}*QfKoUt)5)jEGPw9*WY{mmli4@X#M*{I3k*@UK5$P#@!q0i&D0bm0=fqQv z5|_A>9+QFJfG={`P{08*&Ttlum07dmEG4%UaoneoCXj#W{81aV4+(Wzboj8VNF z$UlQw-UCo1pppbk(tt}A2+5^@x;fH;qqt`CMi{I^;J(@)zIcAT=&lU?NUNxy+^moX zUh$l^LjQqMlM`}5CB39eTCtj*Q{AsPN=c_&Kd6Lc=k#}4)0%{i=FS!!nGx)$S$#)evmkDolAH0z*hyd6Uinw1{yS?PHUa-Ly#2Aj9G8ZpbIGEP`d z7Rm_3Kvd8s0}oazO*FQNp{M#jN)J5S58OOSN>v5ueMCs$)C06ypC7=M!GF5S^_y+jVSh9}>vG@U8vGCM2R!!x literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/MicImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/MicImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c666ef612d5667857a8e387eba75c8ab50fb85c7 GIT binary patch literal 2272 zcma)7UvC>l5Z~SVl;5_oqC*Wi33lBWyDCdOz zp#6m(=Z^)-J$SPn5S(xt5tnerjff7J%Z7$)P{K`a9TV4lK)B5d$AlMz(YKBa*A{GA z5O&`YwlGg%Cwv$2n>!~A&e3hsES|#6q;pC^Hkq>8Lw`@Gg`Ke1)9O}quouPwF5`ov z0dEW5tPWzL-TH+sk(~7DfWeilbLzkf+*U{;(F-G?tc{fi?N*a2JC!hV_#2T$*z)(I z))(DxGa<9?Zqm=ipu3W$_x;@OK1>2X>h6eP+D%8nzAuNLq<%2)!I!=6Rv1Oe58bWy z!|p~H%(=Ooj#R<(gFvMDZS;_VAXJt?2B@At7{Wbxvn>#UxReu@aq1eJxh6MU>kLy{ z6lRznQP%<8;l*PDdXblS889#L3a`Rg<~6NP1Y%#m02jSQ z`W=bc6S4>C@a)5{;e;_QoRItE`@1jcgaTs-rbw=WZY&{V^f$K#OwYj@x3y0C_SBis z6H3YR)m^x+Z)d-Pl>%BpPryQvqn%P-#?>RZePGJp^Gd%8v$YACE^q_Sa{^d6o$;MG z$s2y$02CU?hA$go{KAhy-q?J&re`EZE|FWO|GawjYHTjAwAvDrbj9H~X@p49hKO?+ zimbUPZP@7+HzR>?w>K5*rOE*Aslw*=nv{uD*onu?gK zYuXWke#@4!OnFW@l%m-C29AoWRe;ULr@z%!C*K;bDw=%1r%yUlV*L zu)dY$C1B$tP_uVI5R1_|t8P?c%+G3sjc;7Cc)sImqcu2pZj{r3sf%7G z@qbt^hneTckb+$BjX4LfKy+nb5|`&T1sE(oNQjI2cnTlDHG*8tYRI(_aIX(+Um`Er zS*0+jl+Vv9#h9-Y*lA9!$*ivIywG>1#R);yPO#ESn!Btst^(V#gJ8d*0c)1svWKbm zf_)JTG{&mbj=4Bvmb13Gt~n+bz&*EwDbI2#{Gmk5qzOV*FPbYxDzQSTleE)+msM&OEr9 zFJ>;H$U~bt6Z8!mxO&OPMUGbC%=oj>EwqEV89;=nPuU6dF38b!=w=4w=+jw_W?gI- ze<`rvBTr^M1pG7Q4Y*5#sH`A@zNu;}In@8NgIs9D|AXr#Pw&QBeufcLKoG#JqA@G6 z@y$zkz24nvR+ZylS!DkL7GDcu literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/MpegImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/MpegImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4198d868d8ceee304bd2594a59a82dd0144a2ed5 GIT binary patch literal 1905 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/MspImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/MspImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6c1d46ae2c8bded741a7dd2c1e4774ff19a2b5c0 GIT binary patch literal 3081 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 aCO=aX{$buC*Mhs%*>a`s)oaxrMen~TQ!X3; literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/PcdImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/PcdImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a71745c546173bdfa5b4711cd1949d8102c414fb GIT binary patch literal 1187 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 MZv3c-7#7X{0 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/PdfParser.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/PdfParser.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f71409f7abed87c5703a0f1445e685907bdd6289 GIT binary patch literal 26107 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/PixarImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/PixarImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2ba61b773a18adf583e6aa7a4d2eb279531ead11 GIT binary patch literal 1157 zcmY*Y-D?v;5Z{lx%cV`*7(Ys(Vi0_YV8It3M5G^TDU=Xe#c~9XHM@zI-sR4{D@{TQ z)z*JQTJb@}zi3~4@WuWM;)64nHr0jw?ac1%?96XwS7&CX2#mvbKVA(SLVluhF>DZ) zVWv9(l1LhohX6%hfbd)LP%d;R^~1(`*D`81FY58=D~Zh0Y^wgnMwflnhM47p;~`vYQwH z10Ylv0b3|u4BTIanJxk-;!#OFCaK3I^Q?0sZD~U)j+woD1^Mvo#>URd*07Q1u$iO&CIUFwLByk06Xlmz+>ZPw4?2QDBMd#f(XQMBjscerlc4d2&EA4i->BcG2x zK@v!^QrFmKlX?xyy*R6i>Nv$VWF7p0st2DCJ|mnUd_nkz@ExGW&St^M8FFj**7~a9 zTI|Cv=tR!}1Oyr)mo(Uunrm1)F_uwhc}7b#y&xDD8p@_u@qL?t++B00=Kpm%6;nZu2U0sbdYV{a?|g{6ZZ{?fQOC zM9TNgl<&j4dm+jt-+#L&!t)cS9qUMBrZQfAsnV7Xk}QaOdI6sMC!9Pmj7j77z5_GG zEtgr;V)@?CT1xu5UYj;VBX1fz2U_@b&=Y!~@&D+n2-v~-4R1!PPJlg^N3F5Vy~<=y i^)uB=F_ueKCSe%&(KxBcH{e!^L6vFAaox(TGW!d;vJPwj literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/PngImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/PngImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d4e194c86beeb986ab9a52d89b84b5a1cac4bac8 GIT binary patch literal 28515 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 Hs*C>u?uC1j literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/PyAccess.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/PyAccess.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6dc44dd88547e64d17cd1f43cca661bbb5742dd6 GIT binary patch literal 11070 zcmd5?TWlQHd7j%Ym&=QIlO@@TGqof~tI|v?s;NS&j!4>c6f-Pg*@?X%vL5ZsQbX=7 zXNDGcvow;*c`MK$4}B_7sz4v|8X!P{z7{A@psxiwD9{3Z5(*UPLtpxme&0X4v$N!q zmSQ@{49=PP&zv*o_WhUhpR+PCk=Jnj;F@uWH5k zsTXz7M%Ad9MN`*2?a=ZvPxNBeHH#yj`B*FFyxifaH}XW+wRbevaxkXooHygX_*YZK z^Pax*g8S00@pE0h<(>1+yO-~1^85;()1Y6*a|X|^;yH__eMhTb_oliz`D9L(WKQN_ zPL@DU_p1Afd*w5|c)`{0YlUl1IU^edJu=tU?zKP82cg<4hxVqw?^R3hy|c1x|2S{s z+N%ftcHMLB@M^0T8mqTs)b@QFk02nT&Fqt>tpr3xc&Wf6U85$RMmD z1V2F(Y8`z?-!UHR2WH3UXeBeW4l}OaFb zA}jFQUX61q=~gbBHv3T+iw=a!;8#P`ONdIw{l3 zUxpZwi%$lba*l%xyS^cfE$C_%N%9^?7f8+^A_M~ik*2q2`@c_yA;A=fHNn)MgTS0? zYBJPa{jvUMdPmISvm|8+DR@VU1!N#!$Ep}ldZo0T%nl?S z@bhUn(lNqZI9f3tlgf91TG!gms!#EUvBU8WN*w@!hZFnX~INw0;g=5LJ-)p#j z#rFa`eCXLt^0e)Q_Wpcp!G0ep@^Ub8BBlJd2^YUsa~%9>9;Ej1nG)a?D%k~Ai6Ub)dw zu3vXTZ@%BE>-+O|tFU0-_xcS(@0OHTS^BtN;p=F@C=+w$~;maQ3dnbp#eE-b`j1}+94&c`NRNP z4d+K`w7%zsd#ZjCSmQ|nSe0ahDjJ5@(@<&yyD5y?f=vRJ@JuihBl_%M`V1(IdlW38 zb#X6G>jikN%V&*B(r7zfFc2=4-lZ6?4|lnQ^=+?U zruzR9>c)VGayYfqGEyO%n?t0bt2Yr+3aQ8LFsarGc`CHJQ}artC|@c;+wN8QK3*#Q zXwRv}U(`kXNOX{Tm2cM(6>~i)B$7b7Ayud5KxRYq7l-f<5o7`|_%k^(_m$kNrCWyL zw=zOZ$yT z1HD`5n?H%(XG=MDt1Lx{N?dkeHFoq%)b1u_-i}eBT+=tuh}V!O(p988J!B=E6lLNW z9b_o=HI(=%f6ux!i0Af&!Db~4T9zEh#Ex?urByfaGSDh3q-Bftfj5kfRWgJ&6FMGY zE9RD`zd`Y*RB>ppG~TTFb@dG-sMnbqtDlrSxWZ4Y^yujR0n&bk5YYTYM~tasT}ias zMqxx1kW1ZQL>NaSrIOnymr5~Ha8wlkn5w0ZeHw~CMi73?0r9}TrI=bqNUk$M{bGC7 z#*#=7UQxbRcVYPS;ZGYYW`Xdb@}O0IxA>Pi>w;e`py%rAjE-Q8w(egb3E8~3^R7k(7`1ckvo}~E7T%>s%{~AN(>dUGR*3am@2Gsn{VG@^jk2=U!q(fUJ_xFDg7v; zEH0eFDC(Q6mNP1%<76iJV`Sk{WspgjdiG3mt9_kJvTVbEg{e}l+P8jxIpJ?OD4bWU z`UX_Mt&=!`&|GDyR}h`d3E&2+V#VB$i6Ju#EnSo2D*hFlSi__#+2U_m<#4vR^?7XZ z-qDsmH(Lms!1>W-lbAuWM;Sydu^X2VoiUgElAS+|OKzPBm%M>${+dWI*g}zdvo5tEtXNd=;$dEENu4R3%WgMD-ow+D~;ntpr@7KGK)cG#7-aT z?Pt;fzedI$^3V5MHVpO@{;XSIPa8iC`?z*}K>76Hd_?&W$$y8?t9UL|@p0KsxN|C` z-tXe2brJqM*fX$YxWW|M>yGvVtv+wT{@=~3w{-Y^uohr0d_9`;BdurWs!wT{{5^tzM$--BA|!b`-LbO};CE2NuX?p~p=m0n zmJyPRvve2Xd2Rd2WFFwZEp4=K+V|doBi9jk>bwna4E#gHDNG*UsoRhI@FCYycJwdVZ^ZI`M-B4;zY(PmDOZJT~cRIu4-fRFmc(*=u$mg8b58Z@zp;|5K{+z7~<8 z93q>)Tv+?Rff*k!@Kdl>e}X1HJD~rW9U|)`fIix-vj8<+uK&=hDFHQ8zXVXPx4$Z& zUQbX>5PvZQ&kn3hx%KgdF#N9^i=h}^ABJJ#$V6CWv6Jm`SD(`^P)QgYPw5#?R;E?4 zUyp<0BopM{SPv_emFXZL)`#GnOVdPre+VM2HV&*7T;{PbKQJM}U+IeQH@hO7-?}3F zz>EbqQp~#=40PF?`8MCIuBqNfy@>UvtQYH5O7vK^6aQ+N5zVmYT+03jip0(>tjP_8 zNqx@9r!7YE`udp|A>T$_|HAs%g~SM9>X*P2D_y3*lC~@AfA5&$zd05|nPTN6reN+< zn1T#JPfeF8)LmrnGDQj@&up3h4;y#_Tde%9*g}{=*g_a&2wSY6nZg@swunaG-YtzvC)dpvuGbVg!J zV)G9Fg>6M{4>Bi44+kbPax9{KE?FcvlaCAE$8c`k>GTv+t3_Nx)uHPD1OmydNp_{jCq9$H^a!_PIxQ~H7P8vJi z6)Mh*a8C+uQA53puLA<$Dif|T8nRTrl$x8Dj?c~KupzgVq$TDP?x`f}~;Q7jUx2at&W6SQn?WYX)U=reb;-A-NLXypE)2<4sJ)D7NEz z+gWSv^S%A4O0|LG5wV>AEmpL-xcretKn4vPnDbK?vR6_A-1p0@r5Q1eJ9b}i_k{)i ztEr0n?u)e{77VdY1uXS)xz?H)6!$RaUxhiZ!y|J$Hs`_U*o8`~gp@DFh#iSw53$#u zZ>d^fv)LLhRc8i$FKcIFbgbjwcCVIXnab3{RHVNi>FaVNq-d-!BREB4b2&2M0WX^C z%ZR>n|NF(vN2?E3RnekfTw+J!4~y37_da?z($^yWUX-o+VOaIr7JV=64CD3qvBC$m zMf_M3W7anImBk9&fY0jv1rJBM>PaxTZf L#ytZ6h+zId_at`b literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/SgiImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/SgiImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c2b94fcca5fc7d1e4bf7a6a0526d628adfffb919 GIT binary patch literal 3954 zcmaJ^-H#hr6`wnIW;`B`y@2T zACo)dX4lL}K#If@$`cQW2b%{Z_#5~KkPzZ|UU)!4+BYQL`ci)9de_-}h_U9(J?EZt zKhOD{FDg*o%g}?VC}* zKf1Sl^ZJeLTfImx{bqlRuFd$MD7C{*N5*Lj<0rHXgQ*&5!EQ|K8?V25;c~%$cx^Ll4&Von-o@fN7U;!6qU@7?sf@-lHcpQ{T;4NupBqKYfM?jW-K>TGc$45<{nqirCjj)?3XOHGI;+Qd?4q# zZR@s0y2260uT0I`nlCMQNAvE2FKNEK;N8s1?9A=*9C4F-2Yza26kxHdFVLKQJ`2~AjQK+jr$fT?XeMR+l4!^`x*q8``Y|d3kuiz@Yr-L9UCB3Mv zfFZTQ?8b$qWGIxL(fcIqkL9~cjg+#<$o}BNEAQSa-1p^ymKJt9i6*kJleizHg+(g~ zmOA4k9Sz!pXdu&rSQZxP1XhYI7ETz)aws;IAeH@YP`ZQJ2x(YSR63&pfF?0@ztJR%Rx0}c`u%R!N z2C+G*>Rq)*Skpx`ldB*Gx0ug;=5kP8Kl*u)n#^Z4=9n&XO^?-?#~f~P4^q!;afiW< zIc(iTk2z_a4ChTf#TKI6ZMTQvK(^b3*KT9Y<36?hcKhx)>>u?wT^;8|WBzRmnRHYX z)27t7u)q@=AUsyI3)KXn&V<~?H7#bDTGk;jqlX-8ffkqGi|}?J2C(4;-6E8jw>Y&@ zCM+G7#;%$3j88db$eEd2h_cdNNxcURmo!8sN^N#=PpLGw#~epdwN`s$ekeC z9r_9bh9LQ`MKyPU6ySkJmCPlrf$c0xV_ z#$gqe+!srEHFbB(Q%}=MX3l_vq5>SMWwoi!+1No1x=R_GR@2&a32}>E>F6d&JuBUZ z4Pt%H;S3fWX|H7N3GKP0{Dj1NLQ;85(#-rPB&Z16F3$|$-`RYb_M9zG8{(O)E-INlvuKR& zt92M?)SQEthDQR$$+>9Q0Wir<+B#t!4n@+6=FoaiMX9{h`dQxkECD_I5@v-RCY>lM zoTxV(DLFCUyo2{Wy#2sDpZpgpM!+wAH&HKA%Q}DVd~#HQC`#fRP4yf;>Z{aSkywI| zDjIf21@FmJJx_fUWq}KJhgPF5fJIG~6jmIjcM4a7rQA;ocPC6F#eCt+2P$m6yqF8O}$x+Y^hqw`qISb&S z91wmcbEqVrf*9;sK&Qiff=O_R;&p(j#TqvCpJ6`WssU)Nfj;Gj zUb3vQv!>d@3{NkysJMN!#1b6k6-ol6UmN8W<-jXaU)V<-@ z?zEzuezeIXnyyfm*Hbdb#p1oFZok3>9C zc<9KWlp3mDf@F;RC)GEo9%~=oD66lNrn58dc9B5I9|CgH2+mJVrp^(0nZy=3z50Oo#~j5G`tbjTu7t9c zfpkep)W^-9fj6w1O>?qx@|rg17F!#(`Zf)Cp2&AVf^s_^_xnk^E7WZgKAcLobVmFT z9e>4}P@V2lJ|u~H2IROxLg_Q%n>+U=)+UOjiA^*F1Np`&^*vH2$57;3`mhv@g?}qM z(J)j8x++qXaCN~nkJK8mEh4l@?XW@l=E0HY=`{p(C3{hVTS9Kv4jEJz5-LVCW}J{w zgq>iiv0S_x G=Kla<%B|l3 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/SpiderImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/SpiderImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dc3b7ab69aa1f3fba06d358af79dfeae0cbf1ced GIT binary patch literal 6541 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 N=tv3ZLjI}7{~z@E%fkQw literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/SunImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/SunImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b64bf75c6f028eaccdeeaf889fbede85b407aa19 GIT binary patch literal 1921 zcmY*ZOK&4Z5bo}I+HoEPlNVtbR^ng;frS+Zg3yvIgq2Jbl8snK7Nc2r+nIPgGxSW9 z#F|Jz!kr5jPVoha3qJz!6FBt&4oFDm$dMCOZO4Qeb#>KOHC>OXuC3YGDuL(AuYUjh z*9AiUK;h=GfO!BbZvo+i)0p(BPy5VgeZw~>Vk|cMmTv=ZaPx}z&JN)gx337d1v_S! zhVKe`T@mhaRk*?#!dD>Apv;{igYVn}(x{9mxMdejfQLRIwkVH68h)9hXti=q$> zs;ua(H=l|&+T(*egS8DSUjb5(l3Y?wdsezsP|dR*10Tlj$OL`#-SH2fHJCDDkthQW zgEQ?+icWO)Bav8)e?HlMr*)VMnYTVoj|oQ9*cg~%Ff$Iq3pkw zh3#J0jgoF_FN)*zw6*uB**Z8$#!<&7pxVgJl@o;Rw#W*MFvoZal{KJkWN#kCAHd4j zfe7MLPJG6xZ*byYYcV@{NPT-N8IS-hP-DLVAc!YgB>bY*@NRe?!Ge za!jtFMnif*3szF77wZ|)D-3R2(yu{t!4T&rx4vPkP){wve;rF5R+7Nfn9ZFrc427Q z<&}v%)>n9SB3oKt<#Zz3rNL)k6Oat3!6- zfVRrlR!M2p34eZ>aA%G1^*Xt5A<`Fm7{f384u28tmPyG3 z!L}V?S4w?PnWFaw#=Xr)aF1wnU^F-H%Ox~1fZ*NQ-`SG*O@rypH@0^6Z+H`wPo@GW zo($Fwll&yhQdtP@eVlUf`c_nU58=KXMFcMGz`Jd*oyMv3CKJJHilkc{4OVVj+~^*k zXJTN1zs;tidm{*ljOLNxO>0aBg^tK7BhcWCXr( z(v8Us25ALpCX$zd&G&$i#TudE{riZ2$HZbfe{t}Vc1rl3U{|K1TPopH1 z=Mq~$|2jRQ^=JO96x|3%s}5bh0Ve+96ccBKNOBD5zp_qaQSQ6r%-+Mhlp|h;;<)Z& HXMz0-5H;I< literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/TarIO.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/TarIO.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..91d91ea29f2a8b3d597b130f631a4b3322763139 GIT binary patch literal 1439 zcmZux!EW0|5S?8vMOvm5G%XM$?LkS40tyhHdMJ#bO`;fS(7-Wb2LS}31kGJJlqix} zQm7-)KoYqy&@bqvfOPC{^fUI-Lr?mJ9O}+cl9L);V`pbMZ{OS58Tmn@Q3o7v-v0H| z?>4~Sv{?^<&OMy@Z8Q=ji=hjWODkq0-sKD)ffUj{1!*fj;8Uw>NwyE|+5+*gyI^SB z%xrejqzIx!>Bmn)imZpVa`JD`QP5=)y8I0KOftz&U1YPQIE5~1$QrJ;bfk-G?FcWQvzm0!vrAjLL$14s-Kem%7dk106lHbhL=+A()a52INN>tdY9%iP zp89nUDs8u{$;LI1&3jO64C-@y#8=H1P;5?N<`JSoHRe#(<`%=}#U!sxCiT{8bhHWz z)#^vFYNdw*6&73di{N$^=wQ?;0!{Jl)^0FDRKIm_|5oW4cu#p-aDt!rQxIT=4 z159p=6Lp-SqLM9@NFqk13ckCL_|y}7T=egJ`<{WO%1=HGgCt1{L?AjJAClUl#K_`| zjEg2ZM`Q&5oS(OwMx>ca4DY`*0<)CHigD{a-QUqV)utv@m`Y^?(HSdB3L|o*hK5I} zarbw2e)K!fpBXzJXG$B__oE~#eBX#d#c|sqaNIY}>T!rBR)*z9B=|~(MF@x{3fpzV z_ro~IbKn01-v7|q?mf?y&U-J?L7|4d`&srdD1zRTGz{Y2ff{AK>~;7u(4#w95DtT* zC^_owMRA<|+}nHnq*t})R`yz7!*oB#nYYk@<8jVC<}sIFWp(COe;&WeUB>wr)}*;S zx6UG@2cj1lIVM-u3ai+K z1jT7S!kK$$N|?bMRpn9&pU4j5G*@k2$r%yoqx`Zc7C;?S0lp`imF7iO%g}`+WkirF zt7auRfEoK(lxw<*{tC_ir&)y_V0bOIxlC|*RhK$~Dvcdc_x({S$1(Yy@4p%c@iJ1? zNPkH>U$4bXW7Q5Jwvq3DNE2_-BG4@|REZlnb82drc{g3lwW_aep+CcK1~mOksy=<- U_^3$k-Q}IW`-EtS&*h%;F9`op)&Kwi literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/TgaImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/TgaImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..539f8476d7934dbdea1a0b7f7fc050fcec105e66 GIT binary patch literal 3701 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 aP=^22{lue;Ix1 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 z zjIE4qjO~majLR518J9DzU|h+#ijiep&Dh1bhOwJ*E#o@I^^84?QN|678yPn-Zf5Ld z+`_n(v5&EzagZSx_cPuMR1E!#!ta60!+EEGv*hCe|2d;zJaBv={IKybp7JTQL%mer ziMQ&t(0Tl)>U7vGo!yO;$c|3#5#$a(99awVoAz3y8otwb==NiVA6>(LRMtWt2)`5m z5Lq)IO&-I4_wmjhopEt*GTf^eR|2Ckm;aN{j^W9&?zuZS9H~iLy#V7`ICQ!lT4{&9 z({L-7J_08e^`o_1La81<;u@i$a5|I@Z4C{C-P;g%Z)WTTzVUrl-C{4ftZv>@H!psd z+*mg+tDDzRb;DG5O?7j8Bx%qZ$aA^* z;_OUr3J==F$(ixOqRN^$GE*3zC?bxRuRyN8+Q_9o?$=43GTO0;soC6oyQeUFWNd0& zO`e)HHQ4Rg{E5K71Y|-gPvT}+n{IvFZsXj$7|{WG$b8Or+T8%@o$v=e~^cxp?HLM LkhI!I(xLwb8~ttR literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/WalImageFile.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/WalImageFile.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5e22c351844e3f6e54cc0ce02a365ddc8fdd8457 GIT binary patch literal 2086 zcmZ8hOK;oQ73QU6Q6|HXAX!p;h`ORAN|g1oVn?y6i6%2efdPU{rjsHAL8w8SbgZ#n zL(o$LU;6XbrPCb@u_Fai3O z^740JMZLO1fF4SBzFPS2LPE@*^ylFzVUv}Cy$kzG*zph`Kmq*|b&V2gLj{=+bYyJM zhWY?56LdoZFMCV>gT1DKOB3!l)E}tt;Ci?+=Ud>G#jswk`~WB6Uy{ox#AnfJfqneV zrGF9j@!Jwmw2@fmk_{~e-06nBuLi7D1?NU@esdQ;u$G8o-IiZrwDxlDWxl=m%;i z*xA72+)x`j$ms+bol>Y`U2fKi~a0_(M-)Wt?VFNZ`ZtpF# z-*W*sqCom6;D0T>-r4L#|Jv+qh}L7!%EGe?ukHfK;0_b05@-OV=ygPzEFx_@$-t|> zfBet^Z|?iz=WP$BSyI`%XTnM!l*=l)wvRa%RLr1chiPtgb{2=pgq|&;#}LjxsmO%mm#@DZ zPX8E(Q9OOS`aTISrZ3j(-}#9@eYraI=hHXgVm)17ou2#AqP_M{FZ_42<-6(Y*?hkG z^YrysFQ;$)`F2WwPo`phmF8v((rHa_9$Nqu%_0S{85T~ASUQJt85-EOzv?;jo>4hDna za5x%`sQ>nO)Q*&^oTyn6D zOGUeATBczbx?X@QRaH?GS(Zgn6a<0i`E~<)Rjck8wUYL%WAA%LtERbF8TFJwOMcRj z+EuYp5*&jw6;>9QeM9YOaz_>1rpzOoLl%b&4nf8$i)0pw4B{E&RqT4% zah-egma5gF<5;DVVOa%TS2c}P6w1kQY|l2^mfkY7rmi$J*;U1=ER-d_ByyI(>O8A* zjKnemgGe+8HN0nT{b|iTs8;tKr;E#NyVQi}OtYrzWlggc#grvY6l9(gAf#^JYxmr} zPStCb>rK1Xuqv)mt`%%YF-xLu@tVQP8Y9Yx7ZA%KG)D4>Gmk`ks8sf~O1n_;3S+X4 z#^e3*xH%r<@mLv;r16n3KIF!IX52=fHPLTfbW}!zB04ZoUqxLBwFT7VP@O>)go+4h z2#E-NhLEn0$0U`pszP5uQ*onC^JyLT$_399M@NG}zq{XR?78KhgS~u&VLno7`;SVQ wmOkbP_$kUI|qfEZ@KLp#W;Q#;t literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/WebPImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/WebPImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1fa5f5dc832cab79ac50465c2516a657938e6fdd GIT binary patch literal 7332 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 SH9cD`yVbc*-Khqj7XJqv#rb&v literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/XVThumbImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/XVThumbImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a2601bde7c36a8482f3c24c7c495d6471d1221ed GIT binary patch literal 1432 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/XpmImagePlugin.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/XpmImagePlugin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f509ce4b80df5fcdbdaa66542920d97f1ad58bf1 GIT binary patch literal 2237 zcmZ`)&2JM&6rYb>d;J+>LOy_^v_vhAN(ikg(F(N`Xb}}eZfOfz4A#aoaW>vvZ)P{b zvDOl8=(Xa+**R9Kdgz}smmYe`8L5XJNZ%VL0S;Yh-n_4wdGF2d&0eomiUhu=KmGOi zRf&+lQ8@Z+V6MSPo&pg>(15r^Fu?;FGM9zi<)P(T6m?c$hdDPF=G{Ccl8hZ;?@_lP zaw7kXxW!vUIHK^3h=Syse3!c=$;M?_+N{WuEbehw!^TyVMRAWAY05|?lmxv;8s&Y6 zf~@XSpbf6=+o9K$x?rZS{XpunVVhnc(^NK?X8sk;`d5-gSn%G3hbtF9eYDhA_*6I5s&1VddW8n^mJfLWo zuCt7^3x}EIMMQsvm1Q~wxiWnxXsAX)PSBFY12Pgad9nC;-t zv?Qu&HG_DCy~}TsM=#)1n&kjTQ$6;aszsE9HA~JJJ`b;I3?!AX^3nF_QAWJ-6P`6y49s%n-c^Obaqua z0E*#M)K3?@$TY?}KxsI&rusekTA>h~`-Whr?ORB&@rLsqFT&MIdSW5n@RQ?B67)pB zR|f|N2KJTWKClN08}=oVPJ$b)_9N+*Q{_cT>?s*_c8u}-KKAnd0TPT-)28O%-Man~ zc%r%To-~-*%8&+E^Prz7Fwn-l=`qdLV{Kt{x^!FR9j(R zNQLjQI&0+3z8~p)JbCN1W%jgE83eACLcJRW(8*w3(?rwI<>2V@wK!H6aW(Zd?YLZZ z*IqwU3LbwrzTJ;ybOG4p8z6+$sKXg8Qj0o<=GZw_rB&41MOJ4;TBB7MWmcv&Hp8mC z41Q%=2ir%M172m8qtk3yfAeKoHpg_Zs`z2%n45V^n!o_MNQ;fwhzkPf;?Td=U?l|( zyZ6!J$OaEK=72w%!HY9%dUtGPY>#GEW?v;+=K#lSY-jM6nD^QMPT_;u$f;$R)CWl3 zL9zfu+rj2`lBy4Z2agq_TH8rw;@Sf&uWRq%q%MO+eT?MziJ#Q25cECKMilhGnwZ}z z)TjvcT4ckSxAH%BU2WvG({4vzDBEpaY`5W}w*%zM?e^BT7aUr0fCK=Ou21H+kV!}R zaq9OY^$7-Zn>9c3)Q*AZ1d#boKa2rr>Rt50e~;PHtti>`lT<2m!|Ey+-1@Oj4pJE<5c3;; kp&!aON_iZ(cCJop@p&CKF~4DlP171La>uDZtg$Nl5Bt#^*Z=?k literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/__init__.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..97b7d58cb88a8de1910f7fb7cfb5e20160fee266 GIT binary patch literal 3794 zcmcIn-Ez}b5SC=wQ5?r1355S5p!~RP973V|PKP8Aa7luv0m2v$XJqZMtwff@kqns9 znYLldRo?+F`!an1-SnbYd4*neSB}9aWFRw{Dx>4w)zR*EzO!ewnH?U^DtP_!>)%fv z=M?21QhL`U3ODc$|H1*3iUKNVu3Ax(U#+4+3UoKs(kr^EaD6phNkbYkua!!MtE&Sr zu$C6HV89?+4DY~g1+p;oT7e-xxSpzHd6uWw)ymLg9da-Xc^H8`FbZQZ4trrAOu&9P z00-d^9EKxs6uy9CV8U@Y0Vm;0I0dKS44j1md<9>_H!ulBn1XXK4d>xoxBwU7JGcaw z8mbVAh4-N`g%nr;C@0I0FN3g4rH3 zA(|H)gtKNYv^{8U18U9>I>Ko*BlE0XFsH9vxk7I(b6fDpT(D}PIWvo~9)w6tX`#s2 zGcH2M_ZXu^BNK>VlbFpXIQ!aUA-jP&qbzM8$x1 z0jAX-DHRhAw@F`m`2^!G+*@G}Z~eGjy0=721|A4*TM@ECG(Sh`%o;ZZZ~4#A=6I%M z*4t5Akj>>*$crYepdY>Cg%P))xRJuxh%g&Qmc8ckXWT8MV&l0bJly^;)=7%TZf=Ie zrLS}!{i%pSd^H*Vy*qcciV;LuUGY~VzE+(Hf}2)kRTq5Qa;x`wE2st?yJ?BmWPov! z+^TkotKtHyj5(eYF;)yZ@dOi=6Y?HqY!l02V#>flQFT?*G*t|tT+oD$KN|x$*u*wn z^!uLN)2O_{v%98=u}E3RhmpFh5YcZ_k^V|~r>(2MsR`Ywr8qCs{qlIrhqlYjGe7-& z#%x-l>G`G=bL{3q!gmvqbm$>;0o3zrJ}u2>Pd}yZB$Z;jCBfSJ&~zG8I^P* z4}gJkCXojri}FAs4?zxPBayK(p*)z#SfNnPzEO0gGKA?l8jrJHW^iB+yJth%1`Tl$ z$Z!u1J^I&`x7s_(Z*{4V>av#(+W{Bx0AnF7o#+XY+&xjiI3*(JS>GCdLO$VjoV}+z={bWn6@lHV% z2T<*8LZH=u@! zm)$mYRj9WleSEfE7t2w*CQX`a3rW9ezmRnZCH+<)>ErWG6n^A%-gTsx<^##;$b7^l zL;iM6MseGz_d6KBjUC?BDC2jaesQaDq-1*%z;@ea{7373uLAVR)#8Z<9xlL(oVvriD^2<)Y7giv zixV`Qq~U$j+4to=g%5tmJEZTsp$gIqBh*ZQZ{z7tg`H4j&=@O%KK&w31GSHFuGi2z z9=2%IU*YUXBn8yA|hq3Xt?T_Xqv96|Ic4W{|}K6w@v^6 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/__main__.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/__main__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0bc91e91709c96e9b252c8fb0bdc56e6e691c2d1 GIT binary patch literal 210 zcmZ?b<>g`kf`-QXahgE-F^B^LOhASM5EqL9i4=wu#vF!R#wbQchE&F821bSyreFq5 z=9i2>NlnIE>;;)QnR#jXews|TIMPxROG=AUi;F-;tYj!+0a9S%m$$Q3OlWaxQE^Oo zepX3pc8p^|flFdZVvJ9Ia$-(QNNR3DOhILGMq*K}Zb4#lc4B&FUV2PGW=>9ic}#$( jPfUD#ZenI$e7s&ko>x!7E9w&mb@*X&(2C4Ioa z|6=sd@$p`K@QHuH7oFK!a{|%U7u;rdW^Z?AW`8p~)6IN7$FQBg|MKQ@im|UW>9zzi z8`y(W9Do6LS)G@7T`Osvfd+|lR!Tq;bfihR1u00M^O6p?Ap=?DQg8=yFo0Yd?!qAC zk;}k67=mHsvS7dnj3SqVF&IY~126%TNC#mGrjh1h24;~C!Q4J8+`m98SV4=D4a+`` z2AUqxa#i|uo6{0Dq8j!s?7j*ZMKgy;Il{z+ODLnC@fnp+pZM^<#Lp8 zys*F{ZhvGljjP|DZxzkgfslcD;2(wJ*nHe*Jh4K{-0^M8HD8H(!)&zdLrd1@$rh{T zcr|m+ab5qNxwpMzmMe~D$<{)n6=}}uC>cf8F)p(>{$@2{t*jnGCRCPguqr>}%G!(X z_!Vu_E3HrjWTc}^>&|gEMsY2DKj1}t{4?33<^dNO1z*E`iA8hO)qe2o&W<;6Ez_ha!Nq4VM(iQ z*v0N{+xJ4t@#tVj9v;VUq$Pg9FB*Qe8i)|dm5r$5r#N-wL|c2-@gJ9jTS1c;x-8=U zWl(fyam5vLxY)rZEr*fs3zrXl;bPn*D2La8A}O9O!;%UVE)Qb3P*n7V%awR})Qy+r zrT;HpwtIy}cb1o2u@FOso^4;qT#1-JB6Fh=f&XE5{=5AR4+UE^Gs98nbJ{#OG>gx29aETZ@N!u z=moBH(=(;&-onq|QCVmF_UA(d?(LIpi zD21h|X@|-OswAiaE2#*oj4vs@NqWhW!d3;7Bo|9^ge15mT}qPbnD^*!fK=r*vsU+^ Z>56sArvYsnNo0~4J=bl?oQ`w+{Q$7j-k$&f literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/_tkinter_finder.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/_tkinter_finder.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..00ae9f4e9786df5cae845f7a022e0d2cdd9dbb43 GIT binary patch literal 486 zcmXv}O>fjN5VgJ8Zkq0{5aI{qx`)Dr6GEsT6luk(T9x$6var1IZ0p2HjN=8u3B<4A zFXh646MunIXIna!pY56FdGn4YlZ0S=|MB}{%?SCkeLO~tmjm1_N6>^5O*ONWQ#=Qj zRRbPT0z;rW`pNvV8$(p=6eAvAl1~>Af!#9k3re;ND@n0ejCp*GwJTEZUp zx0mTVQ|mNuDrYR{v}*LmLTXK2n))UUO`7F4eUWA*=2l*L18wpbry{2_+Q%{=Er93G zT<1Eu#$FP>LcR%VWnnhyM^fr0m$DzUUE7cT(>)p{oQ1L<-KtiF;CT{C6p;CPZLlqN zvLGej%ihmVvy(Hqm>>1iLnNBjCcugJjpxHqBAdsb!JD}JreW&tL-JpN5G}bm>#B#n6k5=zZ ff`9J1K7Rcm_-1RTeS#3tn2uQzF*>GG_LSWLoso`R literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/_util.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/_util.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f1488df4bef400289fc2cdc1fcf30ba33e797888 GIT binary patch literal 1101 zcmZuw%Wl&^6rG2ixJg<;d8rkAfERRw!~#{Q&`N+*Rh0lCSyo4`XVOmU*k)!51Z4rV z{0A)grP;7xl`lYI#l23`lG2gx!}GZ3+=rhoE_Mj4PoID8{icNc!jIYF;B0`{Jy4QJ zT99OFX+jkpFxX>X*$R>TC``EGW*v5dA{d5ANQn$(>y#v|GLr47CnLE4JMCvgc4YUI z$nFVCB1vD8xHka|vNK_zV>UtPNeg}IgWb#>=0L7lXhV=q5PJ=jBV*#IV~+Rv34>5{ zCk}i^TU}b0mAUfa{>Uloxpl_iQ;13XKZwE1|2*G(l)kpg*z`>`aOx<1QrBCV%hK&C z&x-Vw8rEq&$`3O$ykBSeQFfrqgLGFHMfE=2eX*U2W2cL?dgNQ$B2$cNF%3dZ5A+=K z05%%tOW@3y_t}g$H<+_&ql!Sq)GVNnF{i4F9)`u#&tT>duyPH;O>hw5gjUNAn)Qv3 z$#*O@)~5;KS!I1t17{yY4fwGap!0^vyDy zUn-7|gwUmSLaf5!S%p5{nMYfj-I;^M(Yk;o1M&qDID>7VVrFi@9nV$aF2i<(I8ZKg z&IobuALP~lkk7B}#38aRv!N2gcZ3*L^0+|1C&b(1teBn{?4-Gk>S7KWuNj8xaIk`a zI9m~oxWS!x!7PG-p&wb_dk6Eas}c&+uacl1J$RV3vG0Z6Z~lm89GZSMkFUb<(fX9$ VV=Pni=K&a7<^k=oPAdwd;4kJ$-d_L! literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/__pycache__/_version.cpython-37.pyc b/venv/Lib/site-packages/PIL/__pycache__/_version.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..31684ce5d774275a893c0899de66039043333cea GIT binary patch literal 183 zcmZ?b<>g`kf`-QXaYjJ;F^B^Lj6jA15EpX*i4=w?h7`tN22G|aR&zZ=JtIF&##`L+ z@nxw+#hLke@$oAeikN`vz{D?aXRDadVxUw^cz#w%YIclcL4iwRNn(soesW??Oh{^O zK}Y!!)Lcnw$J}S65@hHPqj9P4%~2iy6!eQ|+{y z)-`6a6ic%Vvsw1*l$&8WHua_E+APls_-9#>O|uy`%jUke+#I{Y<^i2z3+yWXd3KF0 zvL$w%y~bW=H`vXuGj4&s!5rX<>`nF-{?qJj_746t>=wI?|14W!%dGUJ?#?lNPb>Z4 z8*r{wztPc_beXEOy#v3O->GcfsR!r>orB&LH4?3$BYa+O1|8<}UhyJHQ}m`UjvMW` zmsNll{?l$LCCzRS%FJ*HnQe047sp-yp3H@T5TTC=_oPL{4dR3z10U&k17Ez3rmqRD zmErS3XL?_|s-5V+(*>YQ+CV?f3!|@}=+LOKr&*dXTRFa}YxFX6PkREZKw7KXn|;)2 zb)pv?rya4Q(06Xdwatb#pU3-;qeJ1h_Sd@I2cGcux1xp@?$`WwcfWhwc;@l;dtI;5 zQX1ah3BoXXu@8;y57&+FbdP1e@yu_u>d6jQNDnh;G~L$ohHV)5TY6FFvw$@SF?vXK zN^M1Sn9htZp}Gf97*t?ZCp2t-uh~@y={B&kOT7@pT)z|-MJh%1|(Mriiklna* zSL#hAZ_*G~uX3wl5Q|3C?%scs79=LpTCa5Ai+X(2B{lkNC`){2H6(q+_t6>6!UkE) zxv(y2l+)sJ;X7AxfKvNtI$uEFwGO-fft#lGUQ3$2per+B@KglNCTwgTb`PYDrhf14 z-MiB20mZLj-h@U>0F?6Xp!4s1t`Egt(}W?+L+eCurIm7fGb8_MM9go%y`)|DJ2c=p z2WbV3IfWEyvVe2iPFjtK`z3=HXpmAg7u29MFqQa%!o3T!n9jz?6}W?bg8-xFf8_!W zHUOgtgc>K0yu>D-2kgiAM&@6hG+ZM7_gMe+$@Rw8pZ~5!?v8eW@yX#z#)XjM7Jj+* zak>7uyuPzmt!z)?^5?kiM^7eEvkFz)U90ZxtnHSo8=nAwDb%@HMYOy25v@BBD&1uM zR%QKHJLL~*k9OA|ev4#I%?3$jd+merM~~L3wQtebiss42dMP8b6cy`UCumDsb=yZT z<&@xFC+^k>AT91aZ@UF}GdX@8Vd-fkX-EOwe}3e3gfw3^o}Rlo9s2Xox{Ja0yZOE` z&jrp*`Y9Z z?irMP$vad4+(butMw-tEq+H4$7#poLci;h|v4!znkxIrQeV9qoGnF}iFsQ^qU`$ne z3zxm&-COaycfKKc;Sjl4ARC7M=YF_ZvXewWd5x=};80HqNqWRN@OTH6NsN*KJtU3- z5h$_8vZs^}>;Q9admAY;dFOQg6JXA5PlB8Hl;CfnBeWB30C7)sVVr1Zs4P_99Q7fT zUWI2;-jQklrSLmU=`smMx-_{jF0)jaFvqVkbr{CedLA$T86dR=se~R%5|j}YPltf^ zQN^@uUKHA)K7b)k%`?W7(mj9n`0{=>_M1A)pB991SUl6mYht(T1>E$vu;blV zSq{7Y6v4(ESYoDcp6FlcocNvUTP&}*v~=zH-vB89QXE4j`RVIl8N4ZGPv^vyGkuVH zc^h2KpDvt{REt%OMw z|Jl!;US;4IUPimUuAr|Jbp9NA15ks{DCojD^rnK|R?w^G&^HuxRY9*26dWxk9QCso zIRX6K4$uYct19KCYVW~&|Ahxf+iC`(kKC+kT<41cy2s*K)IpcivE$_Ly{wZwz~30+ zhb6faMjrE-Ln(u%-&hYi9zPxy@bM*dX&PacLRim6s&O_R?v?>a0pMn8A6BZh@-D_{ z8fQ0m%jMc9JLP+TWC)Vms?=&*<&Et<0#S-|Evg|fcn5>tEDfBR%Do;(S$7P~+eDTj zj4CHMMUP%lQLZ6tdm@NBAfp1?wWuz@V2Nn1JlrW)3E(VKOGRl3xa(@ZiweP6-l=}@ zBe$|cU@BDI44}2j<|f9sh-`_f5NCNkKq=`rXeTdpYKTTO<2F&eJyB^m%O6oW5cCvR zPTPke7|~Km*_%Pd;VeIKx;zq5BMM7B6E4up4a;{YYW2*Om6hJY2+)ay6Lb)|!_a3v z1I9^xF(4Zi%M=h}@DsmJW8;U8w4$!xkyh+|?z=X%bxf0KRLLlg5kggw+{V;i#Vap7=NG)AlGQ*(b z$1)WQj!S_NA$4>;@l0l*xQ^HMQKjQ%8~XJ+zlo((a*$Kd0q&-x)>uw4zv&%?f&~pB zEvjAIZ23v8T-~cYtjbg%{5BZ%x)73qVRhYcjmiVp+OBMurF9qu9oHh0yVf3xQ`e@p zzP7dH+7HSb4o~3@+qBrx`tku<>VT=qi!Mtun9Aqcpm%&*97K2L5!@oJX5CinBR=&X~vT zGYy(~ecqVEKM$I`kpt~b)53@#6Q8lD^T*hsWT4c&!YkJM%A#cuxud literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/_binary.py b/venv/Lib/site-packages/PIL/_binary.py new file mode 100644 index 0000000..529b8c9 --- /dev/null +++ b/venv/Lib/site-packages/PIL/_binary.py @@ -0,0 +1,88 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Binary input/output support routines. +# +# Copyright (c) 1997-2003 by Secret Labs AB +# Copyright (c) 1995-2003 by Fredrik Lundh +# Copyright (c) 2012 by Brian Crowell +# +# See the README file for information on usage and redistribution. +# + +from struct import pack, unpack_from + + +def i8(c): + return c if c.__class__ is int else c[0] + + +def o8(i): + return bytes((i & 255,)) + + +# Input, le = little endian, be = big endian +def i16le(c, o=0): + """ + Converts a 2-bytes (16 bits) string to an unsigned integer. + + :param c: string containing bytes to convert + :param o: offset of bytes to convert in string + """ + return unpack_from("H", c, o)[0] + + +def i32be(c, o=0): + return unpack_from(">I", c, o)[0] + + +# Output, le = little endian, be = big endian +def o16le(i): + return pack("H", i) + + +def o32be(i): + return pack(">I", i) diff --git a/venv/Lib/site-packages/PIL/_imaging.cp37-win32.pyd b/venv/Lib/site-packages/PIL/_imaging.cp37-win32.pyd new file mode 100644 index 0000000000000000000000000000000000000000..43e65ad878c9fbbff31b1b41bc3215aef50772b1 GIT binary patch literal 2208768 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

7vyGLL2-cBb z0*-dvi$xmZHlmi3*l`HkRvp}=A@L$UOOH17yl6dhggeh`)^msX)h_LOSBs^(F*;oS zuRyJa$D>~&jt>3jKhP%o{)zJvnF<<+?!1RhX;D?8gQJ;>N_*%6*gfERm17Y& zXi&6CiOASILLmvw=Gj?#z(n9lB6nZaW=W(#VtbX!aZ&{- z54O>*iU{qzKTK1l6 z5FVAXJRfi<$$Y=4qNmTOo993@A=HQhdR`@LRg!6;9=`jnY{YYN^5k5DKGck>RKMnK z(Mhd$iGj0K8WLA5#qb0`C!km4@~|}M&Rsn&FH85KkW$*C0!rp&O`(~0xzuzMGLfbQ zl)mKYH(62zosmflHkm{RWlqhlRj1%kXsSA^6QL&011$Qfw&C~1cM+>AT8Ymka2W-R z5BmZSu0uQ1R{A^7xmH^JKiPPY<^NgctK{PO87rL`Vri_jOsPLEs$r^-a7%WNao?{; zcB_3R_CtjxW=ZVx+!Yno#j$$+mc?fAHx!%6-$?9w{w|M|@wY8@t=eZoAqK6B?VVOr zvDL)3NNK*-w|e#O5&j-M49U8uH?@m5u$`z%gMl5K%JdSkzRwAR9Fj?8)}vx!*e@0XX;Vrr6H3^4AR4R$5QG}o#?egj zz|$Yt_F`ZgRvuj!O%CkXhuW*(8SVW!WI<41+o5RRUm#seEiIG_m3ut9$Y_e$1S{H= z7*_PP)-j+(;&}>h9)rdX;E~-<9)jI>ylTH|^$6g$BIGd)r;=0`OPbegqX#{`>2#&p z>1sn!rT!Cw<3pQCCM0Oj2ZuY@N388hsn}!>mL8BfYiU&2;JEgnc{f=by2xiWEyoHQ z0l4a?361LUeU67W0z~;Aoj(I`oh?C74=22&vAD5qtdGSPLDGq=?DDzJ%OHixjpmpdggh1=8fx_ zH@;`ygrk?{p_bbs!N4}ufUP0^i%Z`@s+QVpULY*w*~W+E1@VOcy1gvDOiy{b5;q2+XRpDK=ey@4IC^ikc5o|kxGN+b&_OopZ%ugY8AQJawFF+A;f z+o&B|Ab6+@8}X#E>ib|^Ds0?;scWg&oi51(KlWeIGkb#Ry*&w|;jaaDylp?1F73n0 zv0v$#!*YbAHEsq4PU@M>42Qs5>K2G$ctr_I7iD^xOu{NmSA{%Haaz#4akRJSUQt`& zU7d01Q<;Qgq}2IGyK-_ZHi#lzc2+8h9KjJa}8CW%h1A+kcji zBV^g<#G@m^azpUlK=5;$uDx7-|9msQ#*nF3EgF$IWZxks+1MG3wcWPRjK{a#f@yv| zwsb|sEyb}G{+7k&^EVW`nZJ=(Eq|BCLi}xu5qpzMMU&nQ-15STz&CmWxAk&4@NOXg zfnLfEl>A&SkLcy;K*=uyB}W4#eMcuso8V}mW>N>Q;os5_e;(>0-MfKndjmVFiYeyb zc%}xP>wn?j5lyeJNq)-<{5v%IXgRn4%)f#3qg{cL(>xe_H_$TjZeZ~*r3ypJP9E*z z(Jy$^BpKfblnn9g6wikFmr-n4pyU`lJSW;i>Mt2+TaJ_JU&;6y&%U!+>AvMn(tTeP zfoCg(f#2}&CH`d)9^rN{O<`3Vx2ejw90-)SWVP%JlpKJfgVY0R`?wTTO#>@=p4Gf=XJqSQ;_SFI~4J|P;yJp~3`7W36h z;Qsrjl*O-5;yS^NO8+fT@=v__2hnn}L2S!!xmQKw9y0US^=i_f`W!;C8k!Pt2x^Bz zGDvTMp!fI@w2?;sy3OR8$Hlc6bAG;B%mf3!cZc|MD!-&uZ=H1m;X@K(n_cOkV*rnXN$sq6;7I&Ay5ftN>(BsjdvOT@YOR-s35 zPbtjos`r65InNzvihDCzMcN3rH@$ zm9#CtG9{(txA+}0jT0I2t5^m~9MV$OVw5ka=7eiey8pvJB$==921<5QQa_IGlO%eWs$ULE7s za-oDVUjPvZHmw@kS)Ngjhx?rw<#^*CVEeudsA;d%_oFP^=YBsBYt=+thJMNoM=OU> zFLurD(ND(U41^2%KJb_xhA+W|3mw}ryRmt*{szZ?=4GoJ{#XtW_3O-fyQ#aMg0Bof%SVuIp6mN*7xc~USRz; zE&|)?kF3C#`0R=bUu^1%iu&T%75ojw3eBel>IVt8==)Wkb&1tne6(9~>{yGh*;LH@ z0PpZv>x(6bq+xsCZvxSGzIeH$XbkD>!Bcd@lP_WX%?_pQI(bTM(xc0ZkyVm1=rQju z&}Tm_!D(CcG=Uor=LE_30fBe1?aZih(|7u!zT`#L-Nk%7_d=p7nAn>GgYn)xIPHEt z@bJabyugSszs^JUl0m!769cOOxSNU}UrdKl)SZkK+Tmx}p^!BeE$kV8tkGUX?3+*! z-7B>9{VKrtZkI4ba?bzkS5^iR>vD2@G6_JCL4k~Le5nymK{~pC@)+Pq)Pc}*#O@qs zKTK+SZhDXRz%#Y!RPGkn}OgO+6v&>&=B%x8=nM#^7s{>N6MUVJ9+Z0f>8LSBlt zWo-FM6Gv`C98{LSpeo$=-WU`zxnAp5k-7izzT;bvb(RYLRMd@=zZGT%SrU1W*;gl) zJm$vHYp@|lD$ocx;g@8VhErP4$%;6gczn-t&b;Q@{hn<6J=F4M^&#uztERCTD=H?) z)K^_F_BsBR#XiH|Q0!Cujl}r)$K1_~OO7xU>HB4#HRp&m(V7!F>XQQG@s6dup4+Qa z-)0xx_`ZK-9#&?%n1u?FFWRTG2^!8JQ8Ao$kA9-pH*K{vpq_#vmPWejr!{u09@66K z%5?flBKijd+vd2u_A~| z4|w2waPCCMbOX3Tq!I*YQ7;qIfe^Xx8}@UGPv3if#@F0h3qrO6>*<%^7(eH4QxwB= zdFSan?YHI>&z6s95`3huID^$7?n**4cfTBX_&!XTj65_(AtADo?@c_aLZ1GB=NS=l ze2tg5Dj_{KE562;6Pp=dJE@g+l%09|@I@jwo69zDzO0B)*uJYRLXC*vfa$BwTBbGn0bh!!2OH1b9u6*%@z+oAv!Esog043V43N zU)eJ^PyJ_s7XMj(;-|fV2RCK*A-kW<>O<827sIWf-m5153b|G=nSmcY8i79 z1-fIn?n1r_$0I(Lc3e06l7n3Lj_0#!x;2;YZgrkuj(3scIZ*mOYm1BqmiWv{>XEz^ z@)fHuMhA4JZI8B!*a-~&3Tpvdo=0@Tk>eMKC$8X2bCKH+~tT}#S zNj)!)F-sdB@eo^{IdhhtpXF4=fQ9V8$^x(;1>lJ@0W88^j}73kC(LK7{&S28 zZb5HI&;!XdfCd}`;}y~Ha2AXPL-X=7FwO?>VuUdYAoKRc2E@+;;^YK}N%PI>>8!^9 z)->H8)qIr|Nj@6Xq-njBd@ULO^xmsZA{ObzsJMo zY3QtH(Qyw8_hCx7IJ#HocKHTu!wCmmcFM9SH z2Cf3g8&inRH1J&~AN_R^y@BtUlX<#}=#WkSG<$~Z_;CR}F$ySO3I@=VrEkh)9eRr$ z1xz3X&lz^?1O$|w1?Y$;Hk4w~kTiWPOlP9TV48s@yRtwqjpne24d_{DI-_VhAA#nL z(T1UOqj>{|1gMr~pc#Uh>p@v{HH{{-QuF4f(7f58IV%Ir*#^y;EHvvuv-X^58VyaO zNwpz^Xg!FY2bwiwp?UM46wSFGistMw(2T%V?OABf0?nlo;6Y3wNIsBThi#Gu)7erPTn3(duUQZ$!-D4MsPi6$&HorUClko*SCczFuVI}Dm% z%|LUdLG$)3G+RM)#m7K%xk0n_{Ls98EHv-gKU2D$Oj)*ShH8Vh^8|cOlP+c<{+b7kRX~!Q-%p}NOhW_F-$){cI2EIe@NM?F>U!vg3#N52nH~I3?JAJ2R z7(%znCztqXE9T4UXW7nSPwY4(h4AO;-2?Rg8G!P%?>(MHLIk&Y7C9Lmkx%?ix^lN$ z*DgM*Bl3-QL_X<=9JgE7nna-}w?0C5?{-1*oDSVQFQdzr&L>3~J3vyeCIPbaKkh5l z%|QI?L%9_9+ko}I@a{*CfKh+G(DmoH&6^b1b_uSsES?Mnw#~~6Y}*;w*3A6Qur6Y8 zeId(Zfo*-f^y1(}T)%1hWKHKE=Ksjds&&}16;zIj< z4JZ*Wo#s9shVj^&0jQaUdF8sfNKq0jCXZs#%nGE75Ig$84ZX`i=mZEAg3!euiqP>a zgldBV(QzQcZ9g|e1)R}=M-D_q2BM1*RjC)(>I+dDUQD&ZPU=O8fr_Wsj6#aI zHSm;ud@?%Z97x0^%(9%z;x0OZE>SBKp9icPQ>@QaOrS$Bxo(vE1vlsm6h~f6 zM{iO&W~9Noezb*x6lDx?1VRcaKoS=F0WSlrG6idf{R;0&dB+H8OvFmx2CV6-TC{G! zq78wX3)ak!2Ns$&bRJ;c;5NNE*TXSB^#ayu7t95;>r$-WoC(&f46tTrf>o0NR(%?* z+EK8KW^pph@hr^(tZdB+DOmOA2UgA5V4+qwOPk!W_hV?*xxf-LMFY^i^I$UDXjX0M ztK7^2ths=-6yPE*STsR2V!>jgK=Vhz>gDOJv`X`0VFp+&X|S3;K3EY2tHlND!_;cw zm`E-DLy$6NP4#>%vwo|BRXtz8n$rYG%K;3q7JMV6S$AY=)>lWtTCg%xvu@7-t2GVQ zijNQ0as{jPJixkrOt9`qfd%8|-3^{gvj(&Kz?DX`R;bNtL%Y5TSlqTC9{_*{>LPAw%%E9N4UmG4Z-5h1VYyEc<=Xx!bi` z&1>yWgyfJLctUkUri%~N0mlsei|XyhX5QFAp|5Bp;;hAmpKMPDW5YF zAw{M(Pn;?Th-Q75Q*~7uBF1(C(RF`Jh|VzO^G$;znr=>q0JWf<#^yz}CIgUZYT}yD zxn2G81^AbodLe$axLKI-ISb7TJgOo0#heB`yZvj(cg)ap6Q`4RIoVOP)zxBm|qQG9q`FMYaPMNSz#bEnBZ`yz!Jl6 z0Hf6{z|l;DRhtGYW<3oX(3|RQ; zfOS1!tpO|y)B^lz0~WoQaTEj-*7DO};R}p{RgwW#eHyG8Da|^6uzU(ueU>RdW87za zb;dKZ#HBx5vs%xI*SRd!dG>oPuAQ1Q1EB5(C_1eL7lLA83M}Ibpcn$yWeS!-@zzYR zuFU`ozf=r5$!{17tPl6qFI2E*pIM>T6&23UCaE?6^DV4c6s@+(+3pC4G$&IZej0>!WTSD&*~jl8`0d+@$Lg>`58`1c>xWVmeVtDn&uE;V4?xJ;3{VkuCqJ@Wt?oxk$2phmQmPeaXuYy5<7 z)fe$#IdNpfceS)}(?YP91bXE+5TzEZ_YzFW?_WyDT74m}TMGjvgZvWAwwUO*{07nn z>nV~T%*FKuylLT2K0Zf@MBouWsnKOisJMl&!4}5P622y3TM`3z%O_iB6cLdo5q|ju z|K$_IEE#Y4ocmmY1{YCB%R!9_lz7M%LenHfEk8sh(0$97Zr3s-#_yI-+@aU`Z4i6Q zxaFpBsBa-YF%`%58_8RsbZ9i;a*z;$@)Zq&p(GS9KO_-&^)q?Z#vhl_sfx$q`WZZK z<&O(fiOc_V9=GrZ{-Jx#H033@yo|>$D6Im9KpYf61n1yi0!SKAgN@=OG`k=PI4Pj= zLj=9$M<~%iWNKI>sex)tlpyY$D8a&qpcGtlGnIv=XFxR#l9xveZTW&ukUeGwuc?C9 zVqUc^Hu?mgE^IX}Y%RQPZOLF*Qb2pKzTQP}At_q;ldVBnI-|N03XvuPAt_B!Fa=c* z{Sv4f)OM#TWqs2BhR>zBKb)$qFh9$vNa$3^0HLYU?88Xhm_k0L=k zYN>DIaci52*_HP9wo)i^7ovhoV6WwOX{cI$&2ySqerP!yTy5G@euP4TOpYq;#ENQT zIw7f`AHZ(;+*pkXGSV10WD@>6!TOdjNwEP5yp>qt#Q+f8-ovc1i7_Uix-!r z>S(z`G0G2hq^VSNLbsEs>oJo^@Cf#FX(194J3t{r@_v(fulmxnUf&B)^8Sdte?;H6 z9O4;B1iLo6>0wsjBi&->BfujW(F`dAB?uZ0$tp;8b!m|XOyxR%qp3x>KMPjSSS-+X z8AQ&7?pDKCHoyv?fVUVB^Od(WUHO{~o{C+UAVHEI17EObv)%{0p5<57Ob`lg-(ntb zc~XB3qT4kIWE$1$c|z~AKz-UIPlLKu@6$T@#{hM+7MTUAspVXt2DcAr76Yy@c5c<( zDmEa+b(@ih!hnQk2D=XHt5FR-r1vhEyS3CTFb}%# zePrJ9yxtgfRSgYx4Vp(EA5`s1wJoB-Xl;I1uc>OI6sek;vH&iqqSN$ zW-*`&z#jstVe~^ZHn`=uA)rfm&H&ftIt8vlFsOUIglq$vf;(c!0Su$8!=^yf{NK`2 zv%o!}??;>ekemL)oBwE|>N=ts(xy}}ZTTJl#Ly|I8%>e4^HIAX@%9<2+p<3!)HTbE z4G3=TGURj#${&KP;qpU}&F>OMN6Fq~fHt;3U=hVUqQCh)f}!p@2?`IusL(@C4|TuiL%6lQpQX*w0nl#{oyi#ou~ zb@DPhYvb5aXa3e+P1K^@+QIYbt5ZE;8a=v!GyJ~b8oHYNuFVvkCM|#Ya@b>ANpSOe ztx|ogV3*M`x}JPjJ#mLAFpc7FEyNKR1d#fvyiB9`guWa_v4)qwH;Uw4g1gbjFD{|@ zKic43-&sA?6qflLg@;V9P?b%6AX>R@?Z8>c58;w!ct4|F5AU`LXBjqg6voAPI^yx* z?T~J{Vre*aX$x-d(Y&gTArJ|=3a>D}rSBLnP)Zs`V`@fWEa7Du#x2UsD2(;I{FA{5 zS)(utALoV<2#u!Je+Z1i*_beU29pc(Z9i%+u?{V=7*px!w%+eG*z6{g^Nc68NoFXE{;pan|0UNEq^|S z-|6;|>Gq5gNqgSKkLdCnWOunsA=m;OM)!aq*yZ*CJ;z5843aqoo_4sIxRvoTjoa3< zaod=}jl$dT#D72VwDG2TYk3+hmy1W%x`Z z*p@;NFoN3Ikf>*96v2W_1Woros(I5h5q$b=1RqHu_>thH?VZstYR%thavO~VIPHmL zL#64X(_L{&H%*WAPYS9in`ooaz7|T8@fm6~w&n?6yi3g>43Rlo^MY+_1U$oH8ax0s z>IV+NF6qooKihLc%M0opN?QHIjmlKN8JXa1*O!NQly0`0w2+V0Y||*VfR{nCFx658 zQB!2r&;<=MEwkk;eDb#l$r-rlAkdw25jQPm69lZxLE##v1ZcL>WYyW!@otMEX!vvy zG~j_lu*>)^SiSt7VXZVM(=(%OS6s(T@MdO$_pH9m0`D;`n9$PFTtS_iUxhcSm)gmEUp?a*Ke_OKac{%?`_bu=`}kC9)cLWhm!?+{FB3&#c_UO}X*k=EjDWN~VneB!2^eX8ypBb9-j- zVZJJU_>x~$Ue7E(09fVenZCwVAO z@=%`S@tl!|`epBoe`Wp3TxUlCVQ53~-98w&k~z!>2PZlI&cpa_FGumP+bq!J>@)Yv z%6s9(s-4=M++O^3Z}2B&QExC%Gw{|6<{P5rgSA{b|~((OB=0yn>1TV~HKw&t??vE!QL^%1+apfNdUQ;+ll4Np}_du8ei*!Owg?KCS!hQm_1ZvRDdWye%vP{+OOi_{w|lyG!8#)NGMcexsa)?knGm z82RYOh`qF|^3C?Eo0F@j3NaTvFg_=D?NsRb?AkKBKX>hnc+<=rH{kMQZH>3%x&?01 zH!QYR)s~Sow{~i7?Tr4~GC@w#1AF)D%a#VhyL7_4`}K}8$z|~^t|k5j&J&umn4BmC zMR*RC4!gN2M+!K0fn8fnT74g~C)rIwYl*M1a(LC;2%<{9Y#)-`OUvT#Cj;w$MzwbB z)XFzkwJnGwV?L)^DrgeYD5mti+@={6B<1D`1wOYf&o7Ss*X9LTWp%6~L-}4(Q`k-R zD{jit_w1ceHf8QiQ-C#hrso$&zsioYX07j)o($B$j3_gy&C~A!XYU$ik9U;g*|m&9 z*oulwTiaY+C~%JR;cL{xE0i~k2#kB(oPuWGnac+vZ@zZOhUl12 z^m1+u<7 z%DKM4{cE`tt_$Zk!{`7Z>!02Sv+>i(jxSIVXIeG*E@$HsU%3fRY2f>TzV4Ur{oy?n z9s53%=FgpJA6T~3r7S}be-TUzLK&hM(oXD)4GJ?8_uIRc+6Pn|c4vW`ui5z=xg>em zmtQ;6p6j!JZrA!b!Di`S2;7M8E)taPlFf@*D4AA`Jd!a2 zV|~e3kmeb&L({}uv6DUh9?H7+cKA9;BS&U^EwD3vc|GbrEWH}4D2 z`F^65%%%s$Y;-*Vb7l_xhT)I zUoST!Yt+sc=>7+3{%b=R62!fP1D5@j?+4;Pkf(gc)rS^+o<{F^jkb;rS~TKJ?Uv?R z=6Un8e4PyQg+^o02c*ejWsZ3cZ$Tr3IS;Les- z78xV5Yc$+l_-_)xV!kG)?KC<==i3{bAl1;Z(4@o~G($1AT}*4H8K7X&ULa|g-9~CG zfHr-x0dg-oLHY6HYEIma=7c~TyM#KMoaAt-!h9(NzF}kHpmsuXL~O&zf@aQKdhl-q zdDJEByBF#L>+h3$HtH`qu`zjlBb{ZTi{+?EeIBs_BU9e% z-h1y$_cTEBUP0qEdsqJ2nNY4Kb4%J}{=}~>m6ilv>M?2i@EnkK%F7+-U97y?Ma zdnwC(oN5T}ui(p=$nc4hiJOvRcx0r1AWSm9z0Z7gHpbz54}>Sn z0R_7PPxck|tj+70>$UfB9qd`^v3CZZJml+{tB3M6O%OwzMFHhWVLMTZK8N!=?45m% ze0)!SeSCANr_qy@L+D+(7+A{Y;;FBVw8K?OiJSI zmGUo_pYf5!a^s8KEj`hr=?$?%ymlJ$n$+aHa-rr|rzTNb7IA(BffQ)(aW&1bou+>k>C^OIfTM&) zK)-lQLVqXp2fAg#Wo2%E?agI1QhTILe-=jc$2)YhlC)Jh>zc1*b~Ve7KWI2J3>Jo9 zu)nrwtG+8<-Y9odbM#@!5q;QFEEv4`y20Swt)!9ZhcFB{KXu=O^s#0lb_<^z49}4`MdH{viu$SX~_`?KbZ;PMz+a< z*eHbGHJD~XDEgxI|MSwTzTEMdcxPcw$EV_V)#r3vo~SCrJ1MlQ{50SBbRWsT*4_gv zU+(&af!E-(xx z+ost$IQym(PSaCu=${$yEXe7&KHeG3=_pevTr0egahhF4Cti|_;bs>nV?_uCsYroF zDAUqBx}@sQsC=fj&MZdz5k&ji@j&YD-{9i`enYZ<%lSCPE7(EJqX&jzoQ!GC8mkis`cGoXJH?`Ed@7-iaZW!b`%Jf%Hkq-Q$= zK8f*i&nJCI(@#Hl`C&RW(HB3;uKE(Yq_vmsi1UF~=0=>)f+&Cry^W$QA$mLP^0~{? z_FH1~=ToXVmuoBdglWG)yNbqZlmyStZ3wQCr10tZlxhE$Y0d(Z({JaVnQ{Ae2+inn z()qC;g~ooMxoSURYCq6glvnli9QH#73w}llK6?Ut;p!Oqd+j=$1E0;28hF38g~0XY z^4BYt23MEZgXKy4<_Xh)Zc?N3jS&tVsV&4l*n`#a{^^xVgYCbRl6FR%zx5i!VHCx# z!=DL$t#^9FvCIog%8gB2#xHNABQ;gbEPvUqE3CHX7J7Da7-BFdke?d}hJu0osvy6` z{1)4xGOMbLn)_>lYTe>HweCH3U4d0wU~?dYOkZ?Ni8z<1YAd3)0FRlDP@R<;lXn&; z?<|Tq2k+JviJx|+f`M=RI6-=PRDP%5F62W-{b8B*&avltEBD)X`t0VyK;6$PhXQqb z`0S-_RwTXWK>1!zv!9RaOxb(t=M(qY%|(?1fmwZ$B**}jZA`CXcsPpbG@_}*}}bfdB1_^#wnr9x|o6Ms4R6S<7PXZKr$X4;q#nt zndjX0Cav&cnf%L%5Ax!O6+UENNkpD!|H_;N@t1SvH##f6!SK4_EyDSbw`XW&P9%OH zr?JVIE6?YZl%EXzkZ*mnU-3veN3s;J%n4L~P<|?YI)sPErDy+w_+U3rQs7u ztikWuGvzhvwr?qcNPEB2u66iV=2%sXDi{qPwj*A)+=dU$H<^F=b;&$b{<3F}yKK!pAUNL+4_S2us28wSfe&A`1r>YI!OHqzU|lgbYt+G3dHLB-x^gN` z)f)n!I8|0`r2AxG{XYYWsAofP<@9E2Zh^Hn==_v4l0wumuzm+A%3o(TYyJPww0=a@ za3bE%r6HW;P6qLcZKF z8Hc<4vnp(+5taVWV0H4B)M`9yQ&SxN09gk65Qhk!b(y#A*Vn)Er^&f6E4gH4Z z@?^zYTKWQ-`s*9*n>}t@U&r7f)z<6cyQWvJmA1a~wurOERJV-L3Z!2UasJ*sXmTDh z7a5&`*ekKWF{UzC7DtkwIGB5B5cpH=E_wAJ4^q?`|010}cy{_!c^w7Do?m3iX>h(J z$*Xr$PPVO;Qj=E?oU?qB@AmtES@{b~ov*l01RsN^C-brCE{{Pfhoy6;HG+IM*S5C7-?{GX>#odb>)=6e^R(t$wtI^Ib? zlnB4IGB48PJmMsiE7+W``{U~(iE7_UFONHUoT&D5%%t36=bW$cWTlq}3!0o|`c`f< zaYSzG7N-**cW&fKd^a@7sl!&7`CH2TtR~~+HMdO1xkR6|q@SE{#_?oj9>npCEGK_M zTTtTSyUVN?8h7wZxgnNK;@=s^U)iO4#F`VV9O(FDq_MT|MsY;xgq;_WXnc18BZ6h7 zwJz{gObNtqB9quh4v!BHSLO!dmGU6W$RKFvh$dageY_$kus&B`IOTiUj&0}I!=4)% z>`vKhbuuw_1Os7L(Cgf2amZgM{Z6GPaR1ZDknQa__c4EEcsOwXf0GB{Bc~2c43Cgt z!{2dF2i0(>lC!clbaNNqaYO_jn=M}@pJL~hhKJ)j4$7m|U$h@S#4o-7=WKmc`CiNm zn^#8WH#WD1zMNw8-*60=8C%M#fnl`aAe%f_()-U5mtj~8?l%jW!@I(&4z_ls^ZkS7 zlc{tAPL;ZDAdBqn?BUW9Bc6K8n*sX-! zb>{p=BreME13exssQU2#a{X<4pFPA8W_Go&v8gog+jPVS;!bY-7di7Ij{mP{?JPD7 zS!)XMi|rgY^$EM$e|G9OR**V2#FW@v&VvlBzZE;ggwXo={FcAGJqhur-mXN6s(281 z>Ls-7WL-_3eA#}z_#b!~_yVYAT~TT7sq0b5@|UeTdcfk+T$K6L7x-X}Jw8ov-PE&5 zxD67lI<|6U(ppz?cEam~)`r80J0r(hBFHe(x;>OqzZLJD(aypnh_$soogl0U3e$Sl zUuVWKb;T+JTvAA=Eo$}iC7VX%;XGpI>a5zEMFg{H$E`DHD#=wr=Pq8^^ZcUH_YE@8 z!UKqJmkZkKr^JL8th~@!n2~5Gl}Ii~G=g$TqW-R79xz9c<6NDQd?b}zE=c|Y$;)5v z@A5*MBxXvwVnJ~Aobr?6s|4-p!uUPD;+)u3_RYRR@ot2on_l^qSd%WH%X*}2I$k5ww1BN?FTXa{dGPH&xtH>esn@aVn$JJ;}(lil@i&HbZ&CgG`1F`jlw2< zHEI-+Ux>6GOxx7E&&ZhI#Jvm3drRkdFYk@;JEf7|`K=qtaCF)G$z-JU(3et`-l%zT z6I_Z~pH08|bgEKgh*JHV_N3Y4FXmgBI;78!f71v0^?22>$JAF(+k2qhDoRi4M03t6@ zg}tJA2kxIC^u(Wl=I&nH%|J~bj(DPu9t<=0pGTy&6SeWL2ggZ`xT9-=IjcWMs~;+V zUCzf0B>q-Z#J*n?C;rRaYU{zg0brM*;je&+A~C3ma4^!uaKu@>kW{-1M1z>D%Mt%4 z(0xFz0P|ch?vS!Ux<4FL^`7U&Plk|OG;j5PN&NjZ5AM@8@m@CScy>fwa~yVtvkYzV z%o*AiG%~hLY?w+?%;YO~jK{O`CGOwKeI&7Ai~Kmx@sw7R__1i>wq&@ESB2)p$W6-va}qwmn@vmA8%C$m1%9AB#d{9{^= z{?XN=wG7GYe!v@VC>WA)LU!s5zYkBW_vT>&{<6Vo&_bMj3FR062&RIH;&Tb7HrT>cPge9&C^+1H*#b+n3?EN zJ*cf;@H0^ZmK-Wtf~)HjjYWx{ES`Wa6OUn66bd zxVApALnYiWQVm4puWSjn|I=+Lw^>$rHz{+?j(?OjaiWzUU2Ub5`)CT%c*4Ou3*y7{ z_&rdCIWR`=STH`Ehj@BFkSFw?IT8C%f__U@?Z5voA|P1;(KVDHrP(3;$Mz!p$H6qP z54|foB}P)!ZB#&>U93$yS1u6w(3lu%h4*i$VfW!gsl_n=5fH7rF3 zHtq6W2Cj#2NjRb^j2kL^o_ZTsp(1j*9`@ z;_bM={<|kgJL^~;GXR{7#TcQu{qn}v>D8$gwD}#k1(_wI_<%R@qb+2yw20`=M<9YP z0mg!r2LkbLaU;v!D|4Hgouqr?e8I6zE?Bqzs21cv(7~DFmYAQ~3!->kiz^nl+;=VmX zQT*#8xzH5oZifcDVQ3kq)rt$NrmdLeufjB!KYiOZ?E1otzwD5RpAVW~ zXk+h$;_}zy$=vp49RnJYH~vEN)y999+fnY$zZe#poDSYecS>iuzW1&R<45kDc&P7R zC!kEPlRS2a6V0=&(_?9JZc34JmhpuXp~uB<)upZ5)0qm=nFI@2qy1f1v*iCJi1CEWW?dbcZr!nCjl<9zSaeTEFOgbf4wQcd4`*Ik$w2q|d zyn9f_GdDT8>UTcllBxe16 zdY|)yztrgn)jzlNQ5DF>ub?K?mJj~c)d4LLQ+HA$JaaoPZ7oYDdMYcCfZP<-n0fJ| zY~9Bee{j6mk371nAyMW9&dNjZ^{r_IIXPmyttEbe{#wEas#p3JIEViug}WvZ=zj?G z)^|$CKn2GZiVPl-yE|{r6oW@;5izW_zom&)5*wtV3}O8D+YyH8S+xRdgGmdpMkKvy z?hZhTIs|Ev+$+Qxk(kU#uNjhN^^XsGz9^`k$uruNE+gC9v-b9!Q8JVy~PfFp!EN zh!t3WBWcZK;Z^a|lU7|CKkbjrYiwO8x$>HvYsn+CcDsYDLS5F{E04WR&Xm++e}CN! zj5#u53Yrm>tihorpQ#*d|1{%_vReG9zie#1M~P^1UO$%2l}tf&e8aA*p=I|uVskyr z7D>E>y-ACD-CAv1!ef(jj}~9x(v)V@ z>XD3gpHRp;7Y-X{oXO^jb@DvsjnAvejo&*XCpIqLcLJli*P6#{^)!ZS1VH65wu^m% zIfKf&qV}T7x~Z!!VKS<+uDCr=Sy!^^LVI3Kc`vbN$FAgRJANa6{`0sH=59$E8h#KF(U>9Ip4e4o(&w^qS`?MW1LnFMxy2`X>Z9PqpMQ%Fau zgm(a##J!LO5UbvMW}Xr9_;~0~6-4nj4~XQxw36l75$Etxq&X3LnkcaBhlLpXrV=s* zvopo-8IXa;e?hQEe;|qE_>qtpeSIYiC_H^kP~%j+c|fJ047tg%w^H_TA76(EvMdF0 z=^o9q)g_MEfA!b`>%JmQMCoJ}e1Y?jDNsI}*XhgYxT3YBUW}A59%l+VW$9fU3jID-Xf zjl_X=e7aOqZ~vb)xHy5|?uIN2l~NN3&>zrLBTW zt+oB{kc9n^P-@U9?X$Ex7lee@q6YEEzPA`BAPuncE5>VP4@TG8pas;45xyki+`~Mv zgwxa!^adhzY9qw{*ZI&BV#MM{Jj~>@*# z_;1HIIpwBc=4z^d5sZg#7>;eR<1+in zf_nER9*BDC16MN5PWUZXGgU2rB!xSe~NFXu*H&>^t!+%=f zr9Lq^e?~SK<4aeGSsoS`*3FhWQSW5wPR}r8VhX-`Pzy7hVtY4f#S znNlGFGrq@jYOudrd!zE|AYNC0wYI=7R5J_f3;dWqW{C5<*Y|e(ncX?U`r7?shU^{E zc!@v0s3PL)sI7|k7F52}{w}T&(~}sfC#aP+E7>*gpO2OIGRZqRmG{_0t6G}+vF9w- zF~8~0>G&$K4)9(@SVJXey{#()YF5VPRCK=8aRZJ>vP)DiQJ0%)zK@{_$ELI%k{^F- zi~NjhJ(%tpqGl2~Yi@3Py2Z~iZ%14F=-AC2AIPl!@t}02P4-{cOOJJ5y6NBNHvKAX z`iy&$xvMT~Et>5%D(63#9|mzLT{=tC=gJD%0%zwwqjwCB;^A)c^_q9|Scvy^#& zO3P2$om%i~W`?z5RdDrX_w^~hc3xt>*UC*;0&s2Rs$lznG&?_dLrX>Z;l5TT9s5WsjJML{d~bmCItMC?{(O)0-N3JV>CWE?w0Qq% z`S*&0D+0IjEPn!@w~HUkjmh4evF5+dDxU$Wn8d1#^1Xk&@~<+bucCBzS28<#FPndS z&{;RaFjxqEBZE-wU)`^7>y{sZ;2L9@kMt*#?@+`rMF_7H!Z8+Oa&b1E z#VI@+DGof99@d7SCQqn2l0nVb`CYv7&&sddd}Mxu$6t_}FGPwwl?37~AYrWfagNUr zS+T)maF5_IP5KT~gfF9rjPZibzcI6{sITfiS!94`*I2XkiKzMy|i%| zOSW#mqbS(ycyj0+S0k#C6-?w@z#ghd>wvyFnjGN`W1W%YYG0)Fus%Gf4}-Ga&^n|~ zcJd^?I~3=;W`XsOQZP0xJR~M#!~NW0BJ4L-Y>a4*oUcoj8_8j>DnvLQzL(G+9=_m$ zJ>mCqph7Ay(lmEyJ(4EUTBc8K)h8;_)|vXGUTdz=k_+_7^-?mOs;otxm>z--!XDb= zz|gu-iT#8mkVzTe$-cafzlwj8@c6H^w&=UlAHeUbmgK61tzG)S(FeUa+(=bC zc6Hh9e;b=tmJz#nl}siB39=Dtefb*nU9*L@=KwnQFF zIBZ<=gov}{08t&~J66zC>CT1*J>5c}5|uUP}LGhf;+!&Ubz?*Kk`f-|2mg z5^JTz{+bDeLfhGtNM&9_i8n>bCdrqggrz;9B$%S4!5Rp zYowOAw?ypqzZ|=YOrI*}>z6ff?52NO(|Fx9M|m7^HuFqmyoui?=WjKIm^ve5(`#w} zM|`fVoXl96D@MD8G32mQPI99x5>6jj|6MrXt;UYI z)3`{s6*~X*pCJfW81*I8oQu24awKrU7jgO-TA&3>-QYI9u)E%&3NfG~&GwJQCAIG= z^9*^0?eQ|0uchyk{ooSOTuWDs4g`s4W}A*xhh}=?!=GC9Iie0s@WK60GenL!p_>Uw zz`$>iXog7Q{xW@fEl(xNOd^zuYz<$q?w2_z?09Z$f-Zy~n@pLBmSm!+CI0?bIzQ9> z`r1z?{$5rf6GS7|d&Pr$U=3Q42>I;#VQaSb%fGfaNIBO1QlGSf2H!Yw^5S0~mc^+K zA~#MPy%GuI+K=vIMxJz3KAY*|=3>@QDtE4q;#+Zi0>0b7tMB&DqrO|qxb1C4L8rM& zV!Vpo_CW-`^XNfUIpS=umfI%1WtIf9DYGQS@_YCACJI9Gg=i*zbtWWPS4b(we?s2+{ULv1dRO1C zJ$%*4UWO$pFR*VeFT$-SD3aP?io+pb>ZmgH!dXnM3&B)Pc@gpRcFm-s6muPu3Y~4Q zpi1*F94sfrrn9lR(CLsz#QBLW8E+?0Zq%f^XY5-&i1ga}>nQ6@@s~Y4)K8hH56k&7?v_0ce>1t}97W!+q~> z#HWZ|$*sL`yo~G%?3(d@sUutn_&tG`ly5)&l$q^e{kyEw{NGx}xV>FT{GKv4&P}O{?LDhICV$7tou2|xa6*N0f>GZ7E%&qAQdr^Uy zHqJZf3p~Z<*yFfSm2>^8{=#1B_3R=BYE`Y>#8mtJxDd*J`Cc&pBxBITO!2{T`eouf zr;0?L{>pvrL*fkfk5oZhVN4hu_tfY z8#-vSlvlaazR`Z^^4G0SC-785!KV*dONM01VXc4FUtupi143$Ta8-TasU^eqdmg^y zGm6bJ~N4%M`O zI~5@D7E@BU3ss8>gzQ2<= zhsh>WpANREFt(2#YI5tdX>qL>RB_1y&_un&t-(q^l8W;)eUa;L5f8O}24ml!VC-@# zIjzI4_s4tX1cKPxV4u>QjQ&e{4>1{$db^%BP~U3nOul`0&~EWti;hHJ6T=yJirqI3 zU!oJ#_!wN@Z}=ShThg~RGEtYB&)y)tg~pjKAfEk%b5pG>D9i9W{@-P#d!&DZX$$Da zhJ&O9H#Q8)w1E7VIj1f&R_2*Zj+(2~B&VhI#DAvwIzGerL8p_wmX;)w0Wy2oocxg_ zh&a2#>h;)hSp`VU?1J`YXHe&K$s!d=mVZT8$s)HAXCqncpUE{-xDUxMJkYi(;xdP} zdQrUJAMaz$VI=6!hx!vl1&00vpzW zUVNt?nmKO3p2reo$Fx#gm@;b(N3+)&Sbj9K{@xyI)(C{#0dka{XO28FgyK8d;lziQ z*+D;CsZ_S#pNt(({%DX&S^ss)gnS(%*`05N%s4~L0^e3z_hZI_3>p3mTQ1gTK%Cx( z2H*iIs**n*v^o%vuC}?AiicMOvi3%NT^E62m0uy60s64gBbUAWHvg782wD5%kDnJ*_*wY;jB!D&gJa*(mu zBV(~$!oJ0qrHT|x`vr2zBRUgp7h4CLwp;!Y>U?^gT`%HWjYMOtgVjNe)cglb3zMp2 zp*8%Z!-*v|qWD-_O2~_R&j{Orbf9=Sfzp{y;M>1a9xkc#!U+^BSts!2bf9=Sfhvd7 zY#&btrstrw#i6&>i^KN)=|J(4zoe3w^Oe3`aEOJX=5eO^o=%TXCD!`&JUIn#BWz#i z<}*c7Vp^FS)OfUC2@NfvbU{Lt@@H*1lBxek(}CjU1Rin%&kft}BG?qZV~cpnpJOmA zU$A}d0an)4QKPF?Wq7`2jB2CZ<0h<_uW>5`JgEXb@s|9y3mH3SKlcwYewc>dBjVEv zz%Up*)V&7Ggu_?#;GwjMr}Np3x7I5`OfjVb%Xifqxk+aiqs^_v1GSBP7aQ_-E~0i zNSOW49+v7Ydx%WiK5PG7o!yS}Qu|>#ENox>m@I89gEFm{Mo`)n6TMmmC7}`}dUry+&z3R;LmC2BW?Q?(rFMTz2qF1`FUiAG-U%C4; zdg6A&dl2VID;rkZBVTbBExT2#4ugiR;kX5_tp@##Q_~CHx$c6uhR)R)&`)FJPm?Jd zH_lX1H++$=swhs(VV)+c)M81lb=MBQp>(V!Yao?+RfDfZo;aswW-Nq~xzG;>5)-C3 zcDZ?5QC93y>`HrD^H8~5n3uS=#M&ZRRKzQ%4hNS7n*U0!^$~mVa_I)n2>>UFtqHop zS0j>CyOY)$G*sv9O{MCiL%Y3!)ML`w_A`j~9i`t(>IEV~eH-n2u-A8%dE_oNcCJc4 zy-5dA#AS)GI4JsZK`*F5!hSVIDG$sqXZ=z2@I+jsaLLMSsDdKk z8~;zFUgV7;mz3+BMCcg*+x&k7n@UGw{pO|86-Cmr5%PA{Gf~$vIzL6B5!vQe0pNh% z+ZDJug-g_5OEs!)NzBVO9V?=ZEbZNT;liH>tkF&Pr|)NC){7J(K8<+#)t=RCvWeaG*6@s!Ax)Aqj+A z`+@|D_{< zdw8GtjS03tfK^D(C)d8=c$IIH(fJ@fiJUZe*FG9&bbS-&%6GMI)ZD@PrgqE=v5!RT z=Oa>2IC)o!>dX&tPHL`{p<1dRM?&3_4rh~C6iucVj`=PpaCeFS+rO6E)tnJ11;$5nE~Z!L(}%QH2) zAi7%Gn*+q0uardgaHRly&-SSj3ko7g>$-&Cl?iFX6X)`TD5%mivNLi;XV5{V4YbtCkyGVo=FC zLq9;+O4Y-3$Oq5n3yNe^n9Z#hMe1eRss&3sjIvJL*xAt-j2vH6#C=&mx~{on2&q^>Ic)ndQXB5=J_4BSE=X<%W^$&9`dutjco+;+1no zoJb_Ict6<<`OFX@LvBbdum(tOG;wKevNCT#N+&ATJ9W~*aeoZ zAZE9+a;>?=Dd>3msD8gOw>Jc{Bf9n~)=snjU8SA3=J;``OG&}YQbHgp! zu>xzse5$`0nl=5dn|EceDLP(lor`(ih`T!0+n<-Zuw1QtNTTPCO+>knX32&?k-HcV_m%_CfTmmLJ@_B}F8@SV zC~4H&=V?hO|G7(!-j^a|D}G_l-NJGiU*B8YGp9rLVMG)c9K?Z|W#!&6nE~@dWvgMppC3nCOEaG)V`8{WOb?I zJ6C=N!&bGhzB#C9A0XI-!4lN^)e%NYE_#p@SP!yLH8@ z`6v6%8g9^yw>V}-#a!#*%MniRmUi1yAEObwr8kmW#Y6t=|AEP~cK7hf_>cL^>8}q@ z2PuNe-b%SLlnx{dw+OPV-Y3a66kzkMv#@Ply{P|n;wvdp@bwhHd7V{fUrK5`B!fzi z(_9UfD-?nQlS-x5%uiO=sPjQ_?mozOvRV&I_M<;xt4MAYFZr`uHJ89rM+!Z* zq(Uz$KvWbEI%s~nbZ2ZFetsOMs_Uz30$foZzKaDNZ+a|C_aEWc&*PB2<)Pg<_KEJ|IUZi zZ$$oPzA<7%juiKx&6yr=#O~L5)+aW}=D~NTCzqZz_xkw0({t4YovvXG-8ZF$5T?jCD&)cQN#}m2G z5Q5ra&*G`x#MNO>>(oOCE3vId!owX@Yy|phk;_0)(#9h5x_&Q2hvbhg^CPS zbaX)bGxzXls`!8$&T2>IEGRIx9Fb0|nu+|hGS3U!c}${-0P(MXpyy>$1kCk$@Zcg~ zX&-K@)=}L~2niTZUoQX4FXQU-@xM1!;)_HB+>gtm`6J1t)>o~ATOfnmKHR)l@?D>o zmzD76wT8{xax+u3f;&Zr|JM9vgCy_SxT}L~r8|cs+pX`2 zNGa@jC0ZbHk*V7&C2?`IMAI(ToV?LWbuCbrFS=M=rRwrWZ&BB$)fI@YS62Zpb6*W2 zk?3~yI0KL94*m3LSgvcoW3KaJfSq`<2>C_R_S9}!CsS8OyEW=-uQ80+GHmpgLJ&;6 zV1>8&)#yGA>>)7Kk{9h)*U!ZDNCCM-2h`*Hctnrs=QsG2Rbm}?jHkHA!a;1^<%U`f zT9NQ=C`hc!M>RLKW;9d$QcV{~Z1l-Z@}IdEaElHRka}dM6y}9+8|@N2qIvpx37>iZ znt^p?DTl6(UJ<9$`Sf^@{=ai8(|wr|2ItX3N*HNVR$UMC^vI5S0ro<2zk>vqbK=6N zwN>^rCJ6*4Jk%$xH(}E-Vz=t#>T9}nb)MN zD^LEboK=J|X|hZ=n8DmS`*(koJoSvdTc$aAg}`b^&L>xMe~GnC${>5O;Qle(MV0&V$po5i?3hSuJ8;yyyZg6&%#pO?+&@b`SP&bX zVk^Qu8A4-!#Qw2L6NGJ$7v&E=uJbp8d2wVhz~CT6>>00*PG09pH3M+}0GGWj=vl6w;fbX|Ps1?rMPkPBxU! zXi6lmD#Lo^?-^0678;56FJwnMa~G&xBKj0a@@D&rJ&iy^mIr9@&=UhhvYxAN z+J48`pE)OXPAAuica&v+raU`#nn*tO=5+SNU`z%lP46-Lvu{LxFbNUwvcB$oTG4ep zVpI;L&fG~EI&E*8#Fg{1zJ&jZVDD06Vec|PAD21xqQ9lmfBq4?rzn?rt#}VvV5g$p z6|WnIy)6wOejO2uUqB>xJ&V}&Q89{I9bieKr>+64jn2B#QoU^J&e^gV9na22S)


@971`L~l>6I`0QvpdPPY?n^B4w%%ksR=t=#6J7hKa;GKAe_@UoYl6mO zo9^$2f(yE~@x%1CHVKv*hK2GeC}@M+bo1$x&r|eMWRk|iLvtE@t*4fm?|Rq&RKf4i zkyv=0`vnfkT=HAO|JU+=HUF>V|17Wjm(6dE*W>oD+3xpYWbatOg6(S0{F$s}$g-C7 z$x0$R>g-TC_jCB+y@y=%XdCU}@5qf?Dwcj!WlWco1rH;)wvPl8(C z+0l|OJIhM0{m6g2g*w`I3zUaJM-dSK8up7b@vL+_S9Px97OOTdVy%lB4=2HkIIjj? za9bw!5{;d^>_%q1+}c^afH=Hkty^r(yUuv{JqFM79M}aFH5SG+EjjVYiEEH!&Rgu6 zcb(uG;$P|u_P2QiGG*R!tVuyD^vqin2N7Gsfc|PB496lT;c^H9V2*h;SY4qCG+AH~ z=hc|E1;BUDLpRqoTQRnT8AaJ8L9HSm_Q1eQDicQyWy-ezVSfgcC{G`}cHJ4zgKY`t zT<_pn&7C2tLvS*OL3WXt@1eUu)Cd5QnMh|53GD^o;Ue|%GNdtnVrT>>lXs>|c)%Jc zW=Amo^Er?wjEZD2JV7a_n0&_DheRq{<@=T=G+f8+>o`QMCrJD)Px1^*XlwzsB1^kb z3uJ)-SdAn@PN0NHeTf9FJ<9xRd31ha@VR3N4^0g5NXQbOCIs9IfKxgvzSb{g920o3 zc{Qa1`-WjIxTu?d&Q5HV1>~6xY&{RQU11H}{C)}dsbICYPARhYJt&9WJS0_E$&3Et z2y;10bV^>M6deRr7_FGkx(I~h5k!ncw4dcSE}ll`?tcQF#CtIRK~C*VOSZ9|N0_{i z$mSZaD6&g`EL)8-4;FEC7t+9bd(wN7ok;qpr&?<4El%#qiW;c}i=#u#a4h#vmOKRC z-nnFE{V|Wtg8hjkL$*Y=*5;WT1sru7OF}&-%2yi!bBixI;+{VcqOHjTpHuPiL=ukoJr*#dd(Sue_VLuRlR=Jl8b+iktYy5@%f>VZL#H#jL z&lL8>V+_##cM>y>@rO_?PPeos>NfZrWe z*mlH=>+&T_0$M91$G4>0KPbmaVQeJBCdn~Ja{R}{9EE+AEFS)VET&s;Hf{f3)Bk?( zc9C|DRi~Ie?@K3F_LB{!>Vemo|0DF#R{v_>Wku;p{a zi8%CMUx#|HJ^5vsMgHRB+v|b)8nLe!QFg&)S@orM$9owiom^1$$#F>#e1*C`+ReOD}Ke`Gp-x zVM)wimi{%B%86ZW8F1s(GgMeA7dNZf23u#K*^`#{SgvW&I|naNPURmIHpZsxM*VIt z?704uu8(<){ZD`hS7gVg>ZYq0BeFKU!0E4cghyLO=Pb-Ow#d;KIjJ@GAY9-I>$-#9 z;O|>=qW*Fy+&%=GAw z<~v)z-|l8bRer-IB=DJKjfLy=#v`-Q&L0D3@!Qr(kvS>T(BtvyB5AA0mb9r;sI2Of zR2L+2|3}&;dU$NNa|0ra7P-CE8W0s~sL3jwjdJ2|n$K*Egzf&1P0qRmTsL&20B1fv zcy=A0kKpNP7tg{Nu(5Ka4juDI-`t>m(?@>NHzV}TEB{92vHPKK=pppjl3u5PH=FY$ zuP>38p6~sh0qv__3~Ip($NXO}+%H9N1rf6uuvEz`yJ9D~R;xZq?P$`=HlbsQrYN!j zK4Zg}Z@2rfJ{u0M$u~B8=w~Z38wq!6O+h>|GhSVawu3~qNB&*+wxk2N>9A=IN=~#h zGbk5O-uOXrX94u@-e2;lk?e|}rK1(r{Ac9qjF}q4Pfu~{{ylbG*>0U%_px&<_|~c+ zfJy*HNY!l7c}4d54@e915;vAq=@y-*TQm_Ns#lo?NDi$9b5SBV(0Z%6x5(Y^s!Bzd zzyx3<(f!f-i)pzt zrQQ2ArKpbf!*U_pXms@wC!MxnTv}26A&F=w42A7GoMdLZJ=N&yCrRTf(DR01hkQ6F z_UPSIt=5LU5(D`I5+f0MiNpi^e}w-Jg|V6@r+}(%=ylw7VxccQCv>RwCV-3^&5_fZ zFE?$V_`>wU5&Ob#NL>TL(2>}=EI?;x+PI#=2#_{*<}=0EUXG!*a^~078xon5>25`v zo^%S6T@D_hfneyR*g;FWnD%82J{`^ff~S(0+A^ zY@MpwaVGVYc?ahG?&@&iZ&=?Gx#zL(!aFukGDjx2Rj>ToKGMq0X>GlqFLO_}*jZ$? zegdYSyZXBDwJ@$)fc<8J(j~no*8=c-Bc6kW{j6HG!0kw6HzM)@lBHrp5&L_Kr7}8V z+sM@e8e7F=(1^lzF7()BRfp-3j9h6dkaeTwl7c!1JhJ(4cJUYPcQX#d-HQGIbGQIb((2$`_?i(-)$hIm+bl49;$; ziaTPi{PI0yR_4C^cLt{SyfYxBOrVId_4VjE>BC&`8x}nh<7#b6j=5hT4eM=Fye1RbGR&SF-bXawooa0L zP(yQs5A<4qp)p7N#@2uE$!bQ$*91s-4GF1q#qr5Kty80iKLd=!E5snUIu|qdLdh4M zdSX~p&EEIpQ;$!{=4{>C47$ckO+)^gfye2tqW|!7Fy8=`MXU;E;vT zgD@vRn*eOEEj@cZ+hq1K7i$D3C^zC#gyr!(F8nJ8ZBRIn!_1|gD)zBGnF6#0BGIXd z3-pAdE&eu6^F_YrH{bXec;FZ&0q!y>zE$p5tJQYy zs?V?be0_Ae6oc3)&%XZwGD3}z3)Urmgnb8Mm2i)9xMwl@@{x1Nc!+WP3JRpODl_%@ z7DEg3#4ARVlm;$_*~j&rzxhQbs#TkN$=QRoXLBRS9V8F*HTRR(&3z}bv!ya}GxTYd3MSUgOe{#HLH;XdaQXB6 zUyBbE?qxGw&|4L+26{X{UOi%-_1suI{+cA|mh8IHNm>_^ z)lV}1w`Tk+oopmF`hS^hK5731xgg7}m@u?n29!dLz4Jb?e|$j|j74reJtKIR&^w6l zGK8=b<3#aFpvs@*L4(|BKvTM~qFFO6f{D;EAurH%SO8^{vHziiE}L;|Bm2BC3}}a4 zzg0=0qupL8%3(K2bYvx2_UgN+sbZjUOO2!A;q~Q>Ypbwq27L<<}eV^nadsbpySRgX(+j+SciDgReN5UqffBd zQrD3%A@)zUNdL(}q2pa)jF2}#wR*PfcsENtHVYX)wF?uSZix`=ZJmlpkA;znyk$*> z2D;9nKcWMoIfqVL$Z789sfkm%Y-oMkr2HAuS2qd4+gkW1wQzVR3YW5)i^s~*`|Ohn z@kHbPy4)ZV(6@?3XT2E{Ze-otgVoePlFRlch)!X7_0O4lj=KJ`w{WSRdv#nmCsyt zEx+8OB3csHVq6GNRRnbm4-Sdiz_}32ShKb&MLCS^mkD9)fGuY1{@%&h=`JASy7_O^ z1=5143RdT~ovTrv{I=BHClggBu0H28it#J&{H{?=gHMn-ES7Mau&)N$BX{LN%{2iY zgw?rfbgq+D%W~zF>qz_G*|Q3zSg&bINAU!-(@|eW=hf{fMHB+D(j~ur3^bW3`TZxk zWyr5knlO(1TIU_zgiNPf==&&;=&9~e#_?z|U((_|-(oEHIb%6dG0T3FAd1LPKC{z&J7@X&yUMDd(6?JwA(L~?I8+>N{`5V2#k+$j4 z`)Z|4!U|44sU~LXpM)RGg#QKZe0+CUmTE5^h@A>JN!Z>hhslw_`PMz6x9GrJB@x;;YTW=$(IDiu2|^@!waU#xMx@h7#ERP5u??U{UTJSiU}U66m4 z^;8f4#@k0k8nly7nO6&0zAV+mc4o2ld-K(-L`hstn&0#%=3;sLCY=pJP<;M~FTQw0 zOzK6eb(1hsp6Aba8!<50mgdVM;jv25HR=zBOlh_*46kq2DQNWzq-k(L z-V;LI-KG44QYLp;*_Nb9l)szN9CGMKiAOgV`GhCoLlQ4|$xyarD(-v!`o zIeQUL>Y~^@m0iqQQlu)_MyChYRnjJ~pGa44zttgiLI2w^hKsNewFT>q4QFGS|Mtfgxx2Z>L|dz&^dV3z(>iWmCb~<%aln2{PlURVm&hWG1R4~B1-vXcOTy8&P3NQw`OQ-QYK`7TbT?LGW=W4o z9+-2oq}SUocgcbd50GBauXNP;UE+wS8m^wnCy}hj2A+Sz<&3;V20LU2vn@i_MyFe zI0nO!OOS1|csWEadsk%eRP*qAG*M;~MYvu0Rc)%XrEVfxrYi^5kIUc=x;~a zK*-?_8FZYiB+{R; zR!a>v+;LmkFH(+Y_A)+yb45O@zRJgzS)AkvfJw(b#gT-9$> zr8rX%$(g6h4|{xxQlF5_ahS+D`xo0~s4?<#tZri$cMDoMTrc)d1V!`Ih9qMDR^yFv zy(qtN`)|%AXXI&fw8XY3_f?jbW~mkF{8a0Z*V3%(*!%2HO+hN?gx3yx<`1E<%0<|) zJ(J8Gf95E%wWN1Q=*sa*Rt~Ys3Rc}C(yZq1u??jjktQWg@sL0JFUVM(g0wMWaBpel zl3JX^iJP;BvX9p_T4A^v)4c`ZsEuZqtZMag_;rGjp*a!bTjYJ?r20xW#_lbFtI5sww9ey>KX$97FD$cJ zv`=T?X4N@a`N+z7dsz|7&<(c}>F_BMUXadZ@`f42x-abHvNsb;?y}@; zvS4O*I%;-oh65bz;5%$0Msmw~=C6DWURlHJR9s=yZaL=(!P%D@AgX4IYklREHW0_BK_hfF2W?O4&03V8-X>P0Btz%S*JCSX+0{qvi3+(}v|)x4#PejVfIOTGdDr zV#^REu9;Jt7i;Ez=gU?sKRW9svPPNh5|IekVvRI|^c)fM<;SXy#<@AKzC~2Dvf~~> zpR4d%;Ld?&Tjp=92hG-g-~u7!T%gaF^xbw&IJ#DH)XM&rb0{Q^!motET?c#Hrh~KI zlZo+&#&B@fiSbdZHlHmqpI7_xnq;i%?7QVGTboY-Y3rrQgQpc%Ux!B9n#F>Kh5nd_ zm9VSlw!Cn3wWP}Cyf?ArMo~*Un_PFf;lYXJHhL-bJi>ina!Q>}xZ4M^QZMjInTw>% z<#eRHXUIZ3kDJ1cGHPnhB-d3EnJNj$Fvlsam1L>4S}?Iz3%u!S zWnvVaR4qRPrPabp!l~9&trnJmRBI-3xWSoL^>VjbGw7O=t98flB&0qwsSQNdD4@p+ zD|71Ymh&MhIDWw*Kqt(fYVl!>f!)LkDG4(Cfg`ZH(NVy5r1yH>m;J{Q$uIx_rS5dd zwOcegOpnY4a2;29?ZYBj8jvDhjd^dxpNYnM&J_4@nF+bu$ORSpmZ&-R9xT-FiG8lj z*?Ylwe!bp)p5&>vQu}~Pzoed@Pt3sBUJiFps~-T2rBq|qvKv_=$^Y8uLz(*gi5T^E zLgUG;kd%LI^iIMDUzh8ou)XZWBxZ|0zG1F&wo4mCb5pL|&;yQt zYX?za=+~HQ0l)gH19iX3d_wLl0LW}CJ|3B~I?#4`F%L$%`T`&~>m!iC#Q|^2MPyRd zp>Mx&l^$O_TOS@Rs|l_SH2*ez!NT=Q|Cb#K3fO*aki%QbTlODt-_~gVjt!DpUC%(7 zPYI)x#k&!TLSsMF!mta|1OA9?4)S*u{k(C_bP#%)W&Ow?YqUCS2weaI#Eav@Cg`uz zAE-oJjHVduYQ8A(b^M52t(U;EQMwql$<0Cu>tN&+>sCtmw# zykVd8b$m&W7=HZqbb1?Ywm-@*2eIGtYgw{|s{KH|vGwQpu%4?RCQ&_l)hOGZvGto0 z?-3O}RHgkEiys)!$*ZygSy>w{i1sg%KEBreiJmoG?p<%gdyg`)NACaho1x@jLHl;}=M>mrv%MJ81J;2uPe7uA70-OX0`wks$5H;LB}avD$k& z`f4~ek$j%ldWIj5acOT`6^|qHY||;mr=Cgo3{UmZZ!XVn+|cXP%1ec_ZcGpK-AK-? zuSp5!z5<3<%U|s-ftO8p9cqguW{+5J-}wRP3e|}a_~Yr%ITlb@N4`xqrm>`$fT^-mJAD6HfSI| z<*s!$LcGRqOJ--H?4M$MWNf_`xt00uB%||I{g`ZYuHeIp?TMf)aPC|5aaBO(6LCA` zT8-D}8yrdts00!wt|@LxmPee4EVY8v%td~6H7x1(Eshj_yU4f-bIW$sd`Xb--^A?~y7 z4Q@q|_oPW>h%SjfSwoh!$;1qN_Jh~=;#d_kcyOt>*F5Yk?u}~mth(?!$OkDK=43 z+WQx5lV)m#yz#9&$pHTJ!f4(S`iT?3K6`$;vT_5W+{G8)aJY-cR14@s&%CWnDX+uF zs~1}pSmZ3n%r{UhVH)>t;WMJsW&ae(uhlOs+`<){ zFE5NP&lLP3K|1D{g8zEhWozmS?%-94>}}bJtFy`Mt)oAr-t0K{k@)+&_$LuV;qq`| zLH3SEaT%wF`nQFS2$k-{DFirh$7G%Xr5bPAueMQz5$idvVrka+`g!(;ZNJp8;Zdn# z`3miuZt`&YX4bz{vD&R-BvIR67qy8Qwx8I6d2%~B1k7L-C|z_@`ySWo<56xrc&WZz z&Sv9GhPM76S_(5+hVh-Ls8`?E~ByO z$t;!>0tI~g#wM(eH$tn$-fAOX@8I7%@c%oP4w>EEQVTyO? zqnJ7IY%(~$Nm6)YXQY`DyPamyaM8DIXQNNREg_$`OwE}b~p%q?AQ~wzpO3c0O&wj8lB%KJoT95!eoFBdA|oNwupVXl+oVJ@n>IP zPGg|$q70t&*Q68N7u&t}i1-WTwLM}ff5aL>wG8V$3Wpkv&W}mqRe_^lr@h#eWm_-C zt^&5s(|o1Hi1~swC9#hLYof7JF%S>d%#KY8*4%>O#(iQ6t{Yuyjm{!h55#)WD(4kr z=)9Wqb{gOMnmlv;W%&ZJ9qM+Japqr^clC>ZbWY*%d#A{=I#$CT(pF&G-;tCJJUGz2 zUnqA8Z*IpM?w88StvyoThKIP>wRTG*p=-~ZY#{hfcJ_gI71t#qPnSdCsd`_NJ}P3( z$)i?!W$vCBog-v?0WWe(Z*!T8X^tsf4NkJY8X@2B3?vm~UT6Z_XHL;odBJ;xAP~Zs zL;O0T+?n)c@qyzNGr7t9y3pqaulbMccuDM(5|@uvz9cj{WOgdzw^pYavp4VVopOJGSgl+=nGb- zmQeVNb?-fEsX*C_BQL%;u9S~DX$^Nj%cS>zmRG9UPfd1yR*IlSS%V)11mrzAegk&> z9>?#v6J|B+F#mzA%a5+HLc7YiD3exG*M=Q1kn!md`ngh}d_Fr$6mExF%w66rY1j-Tij(rigv3_}rWEsgFj}-}Vm( zn#eFbKHxMXIx`cg{a+&8>qcsfu5|?}*J~W8JHvUbcH>wL`ywh88T{R<^XsA`!fGRd znW+hKrSE!*e|@7}=0+C*+}Qn>9|h9qGK!*=t1@evXpMu|P@F+>m^l_EyBX*YpU#9~ zagkmNTQzL^1(~p+m6@)cFO_gGlIhRr%J6L$Ytn3u2#xD=nG zMOS2EHjl;pJ>%JAZU}p0Ga}J&Q6|d5u_$8bNy9G7gcXm43E-uC>RTY*fS(jv@{5|US0A^;Yu%vn9Co|pt>r8|>)a+*&|DR|4&!qc0FS81_065j9fFFX8etEsoc(ECLK zx|L9C3fh^@p6u;<=qk`P4!ZHF09;i{E8{$wI!C{aE>UjzkVj;{Ek(FpbGh3!jrhrW zrcIHWjKSRV3W(+@z7x7B{WfbnF=KQ3z1D@i3{B-!mC4V0TqJE>O&THS@CB;~Z zvo25cN+P$6u_t;@9FbWf5g}6N5n*|KoSTUGcL%cL>+i-sg$Ky*hAkeAFTUG)FEMUdLR#5G#JZo`w5%w5oTGfJt5nt>p!V~P`A_*5UQm`@5{5xzE8yy1(#agsq z{9<}(j5S6#?PKM0{GZJDFCo5cP>%l(GyWkiGz9Qz57|fTo4ciYViEC4xZ`u*)ym@f zm_!k4hlpL1i86Jm^IA8}TMDEIKkj~LDVRLTfam-cy`!UdC^LF;^&x*J-)3d@Q#tS4 zE6b?@`A5iTe&$^Ou;nwa0$e3M|9^cI;H-2FG<6i}M?`F4pssg2fGVv%9AothO zf#M~9))wdRBY{2XK=E<{Wg~D>{xBUVUQVD8B7wXLuq7S%zY%oiRe-C(yL6ug_yo@a zSniVmWo{;Vh4Dd80_3Ml8FH&|qw^-fGN*>w>EN_>&G;pc!z}#EFJ72tr5^n(DF+=}3@rt~a zIrouX02gi>0gK}H(yZ1itkqsCU|l~Fj}2I>nVdW&GPJU6SR?M4&Hj)o+>^)DN?F(+ z@j~!Ht9^j0=x*6*tnJ(6-(B0~-%WDbCb6}@aBsYQK;S;gSh@S-vBU9(BeGgQD4W{6 z8HH~N&RZ{F2*s}!z9Yae++zU@^M~U1&5=@cRps*q%-8^bdC}}inJ=X5#BaIW4*BsG zb!VT1P#Y(ZEbUtfx27SFsu=Y=#|@?DpxRy>Vatd&9GX+>Z>hF=3q$^3!{K=7S!|0N zfXHF}Mo}%dus0ccNj|OGL&4g^M)|?PN{~nZ1UV816QuS?VeeSTCoZYQw(D>*^sJ-+ z(9$5Q!Uim>HH*QiOd<+8Brqpfn>CCEM_P)l{=(-(JaY&Gkznmmv$yyF5djnVO(6<) z{V3@bh6Y&og87 zI)FV#gYU(>bBbHfu{>Pj3LCI0tIq!B>x}ojeA#2r&*pWqxg8cgUfZ9T(IG$*3Gdg* zKuE?tZ;CN)qa+gTXGZX#RXUoOyEWle^cK&6>`;K34A4{=nAkqEuY@BbFQxaGz4HYX zD7H_gRYMOmi)(vKHb(`+UH2|EtIH_Uru7HRV>2B4Xa~n(O`g0$yyY^6g7dSW-U$5C zlyUG&L)=-o@JqjVLFoOMJS_?AlENY!M?k;U^(5#R%s~MBoJ4 zhmHUI6(;ALtp$atuXsRFn1=X7&PM9G2op;HmjrglLEX7hQn!zg!8lwe`*|l%nd+fq z;{&=SK%jKit^?6U8V0o0f|=>++V?pL1zG8cq*G)kO0qW+P?%hMq3rcya7NFMma26V z{rm!l^YQ&0CNLZwQH57ArugGcvZ9LWhYNFnH8yHTnee?Qh3oJ*_ADiiF$=j^3u+uJ z6+p1!?T5g8v=*U?CfEqZ!)1ZqKY8Ly4k8=3?`_oe+v>NkktJtA)QB9ndY{;|-wRuh z25RKhw~QNx;O^uyQ{J&VzGWAL$n~cCxN>(EyaHAd2%MPnRk!e9mGj>6(jgel*t2OF zl>45Q%!TJ6nMkT(0HHVgJ!h$uDWdTZq8c~!@Vr^Cv9Mn* z7Z~OxBNP&{2Vyp4Y+bXQW%$}fL_PM(l9!P4-t>}ZZ?Ml;h?y*LkH}pFs_da524je4 zv;qI{B(3&C!TrYkAsBg5L~Z-Kj=B^rNmpj zkD_x1^C<%4nh!6e3h{Vwjj#FJ93&i29igcO(K#3cZvM0gn;MQW^az`diInMde5g;1 z_uPDda@=!2tr0R1RR{d9dX!6Pen0t;^Lybge&so!sIlcCqNx0l@bX;a(!RDcspfv; zQW@v++_ovn^4zSfp)%_lU!pwkYAmALuDn|0QN;I2`_JbiJW8717&GbMMNgBCfZjGA z4oKqk0D?C2Xm;#3=@dnp!kD?A2$Obdl@|AZSYni(P~IzRx3hTy1Jp+m;QEk`{2&07y= zTawwK*niXeA2j^jXHVKeGv)U_e(gU#NB;9_EL!sLx~RkF6d$MoiN!K?=u)j0Cbr8x zj`hws{wwis+7taobuSwod(AOpcSV@TB)Kk#$DYk#UCgMrzw%$`v{^&;m-wZQ`_PRg z^VqYVA=Rq8*ddXQy>da}?r*#oKOz5rkUv|!*~?bg@9FjI563HJ+HK2q^@{70QpHVH z#TZ!X*;tEnnhV?4rsD{py%DdNF@EvQY;x{-gbO{jn~~>ekJdA+RWk%@0wDAm_A9u# zzcQ<4ct7wwva;4MJ;K(5>Q`Q)wMjY;M1X)|MC{3yqk$Qm6mRz%n-!jy7hYqzHEQ?Y zPTnksRRB5I7;4+Ms@tD&FTqXS)&!~=?K<~6m+z3on`Z8t3j#w`d>Rl8@=O5mip`7k zMxm@DDPnW(*S5;JvG=goGeryZOG5aJjb3p5{8a+7Fwp#at07NzovAL&LVPO9V-0zL z+)Yh)8cKb4ilQZ#!ZYkEmr0K}qTPShj~mw?E0<^|r2E8kzjj6(072k*6xHBOP&$Ey zUY$ymtVRvh0*XJj2vkfsp5Vde#gGce{~mEC)I5_duKuhpWfd z{1B)nU%fuX3kYCMB)(*H&LUVW0p@s0hzLV0wXE((m~^{EZ2=ewP-%e0*=V zeqIig$E&TMNPKe_gHZTxqC;qki!T3^*n`$KA*|rk*!@+qva(UU-F!qF3A_Vhj*p_V z$^=4n)n}hY8yuNIAuR zmrJAPjnQbei(wudGP>522#UDaN+viC_6aLAjHw*2lz69MdKz1XG{zTvxp`2uH9+|S zh^zPo5}ci=$S-_f_dDs$*|96i%^r#PCL66B1Tfcklx(YN1l(SZUp4g5r7TS2dq}KW z6$b#j*hc%!)7)N;?MbtcG2h@L<9pAgw|s|ROe_c^zoiXGE&BOaIAOI{T6s_iOb#fX zy7_>>*%xtzp8}_~AFLB+jN4Jk<=k}`<{qohEiaQ?+r#pJ-7L5gfRUtOgz6)WJY;JB zH#<1%sBi?T&lCdr&Z?bJIFJpe%S5RY+zLUY067D=DxXxW(f-vLk_ydqqw~j%Hmj_p z8rD>DGYHcX&S< zSt?Bm9X2*!Mnp6};UH^mZ8X)J)1iCS<_oBbGk�@iI_BWLAa~yqRgg_aG}QCqR}* zVZuY4BaP03|JVLGY~QUd)&6;s=xpO44c5-!q?f&9w6IURC=B!aFI}_~Ed;lVHcLY3 zBKp)baETm<4zB{)c`|SSr_<7tyXM02T{AS_?V5V&m_Op0*fDV3+BZjx&6g9C<32q@ zcMS)%SJs?PgrkFc%t27CqE=L+Ye$zYbq&PEU|TXosq!JkE^f?#=v36Kv@)w)7{hH@ z=;H0eR;R9Y$Gx+&TTihnXOBayeq1hug3nAp{?6;>{>h#pKnjB`v)bmPq*P=_7fDNe zEJ~M&^AeoVeuX0eIVxFEMDDyGIZJ-*#TwVW{9_S{R}^X9@s?Q@`XC$-z#k3=D5__y zlJ5-A3oh3*Nw#}2ogJ~VKB%U=TI^PKRgP3QT8}|6b&hz3?61sYx6esboiLL*Y-h`H zvV7uTA&uB|I7MuPs7274tgKWCW|KjD3&Hu4bN{3`CqU%BVeXy;4dfB&#d>?uJJS9d z2j(ee<@o*N0m1@_o8;zO-OOt$-B3=o%;j=b+&E#o= zlYYsnlNH=BtF0`OYAdowIaj7_C@vO{C-I1Oy1gBUFD;5Mon;@_)2GwR^f8_rW}yPN zv}jdMQ~*cn?G@K(S5%*1CuL`CzzJRBfM93U+abqYfonD36<4I4z|Z)=qZuE2bpU&8 zJm`T$^*b~|7pDNaN!mv`b9qnVxWo`v@nW;xmlZo7t$r4wHhRl%uc=P=Rx;gNFi1Qu z@Q}7EY+t19`5=Z!`jeTA@Uvot#q{wd7G~curCOEG-c78TEL0j&D&5;4g$R{iDpYFX zj4n#|+euXVn8wZYAA|{cwn*=-p!XW>i@1x2kgC04kHb}-rB1#DJ#Q)w!6r&nfh;kN zqXhIoMI6ciFSJUkQ97P7#xpHxemN&9Fb6WgPe4j!frd+45fCPgyhtrMC~{670pRtO zx-AZur?7YQw9QsfQx4*5V?gMun1(VnjH7Lt0KO#RNO@O(f&`Gd6sObl$z#nI{ zrX`a}nh7EueVF7m_E)!4{xyBRq_=<6GYK%Ha3dMn_bK@(NEWckhsP3AjfwTYa9sU) zkBlt54Bw)3dTqfUC$xa{=yvOreS!huZ3M7F7kY!wPw%-fYZEi`c~+w7ufFqYg@`PA z6W$QJOqR%`06n+{_^BfMYK{cyD@3EeEI+TJQ~g_{Ia`jEf^XbtTS5d%cEKiT_tKk)YBQIGC|YvqH7k z;pTu-H7ztE-D+2gn>CM}dw&kXhEgo*TF+_P4zFR)bi%6HgFSD{31_6)hNW7SGp)Z4 z`gcN$$zFzJ&RTEVMse)_0SU_UP8TR$Q5qRhM4tUFKMA5CDY1hc*0)_G8 z>pkq7*1yU_u8)$M?t+$Kf3YXiRrYfgIun>ned%>WcEvI3bNR9Kdt6lpOUbkw$6^L&=4_l+qWU+K+=y~l~{ zfYAD@#SrX}FtKpKyl^75mkE7ExpYK;Zs__V{WP|>xYySXkOBOg`M9VvWLX_@B}Hc# zTYfE0>5{3^ALnR)d^7A)tkF4#eSdrtTeXQ7QLAxHJWHLlhNlVbsc!S6y%wXJGp)vJ zJjPhQ!C2CwzcOghsuTG&9FQ{o!rP#V#q-L3q$cgGO*NU;Eh@{ju1ketvPYN84Cvv3 zb{757;N8+JV{EJ#Os2CAZ6M7qdjl_TFe;h9F)~Nq_`PHlbm?w7XBDHNSE) zL=gmHJ*oH8Nkj`HvIF0wJMirb-OhmJc(G=LM%sr^H1tR_;kXfGnITI6XV%o z&1u49XPoXixUJJ)xQreo7GlXpITF7U&cwnSr|;FfG#zE^DL%4P2-N6L`oe0LY|Q#dCku`;EdJutK(`~ z;?#6#tfs4Sx(-B_Kor*+p&|RzpOaqWW`*voNz~<_*N%$HRYKOnc2;@h4#ShE^0I$k zYkP^UT696kgcg;9MdsDl#DLp2s=^qTBMdCuTR*{u_Pr=k604dn`$`}bN#4yjgpdj6a8^fCxK zJ?n8shcf)~#6j4iaVJdAMr)01i2`WYXdk~yC<`7@*D;wDNAO|B;^~|iINQsOZMx}a z4oYihErk!bNY4xTa$ZQ!@9Ll~Q|Z3Y`7OtVJf)Ga{SGWRzwm}p03_u>>`}4Fz7qRCo<1Jhzi_czL}~_@Lf`x9GL89@pJkm zv23!#=lJc&XQVyzgMBeUho=54+0=iM%*ZNg*wN=m`$mE^U^5e9!pc2C&ZqNPFm>g~ zw5~=@{ndfQ>Rb^ISIg6Tu(NVzs@5~pT@G)bKG`qC8J(4(fr%&k%^G*yL>zZ&60plg zdx&9^b!v=neH|aU-B2&6;y1Xt7g!^d(rEX%E>=JA2Y%+bU~6&w7>Ba2UWty!y-p}M zLK3{ibuCxdTGw@*x>mWaMe15CE~l=K+L!Q3{$Q%g4l8% zBYy!(tG5@EIRurcLMW;t$50-GYL)xqWnQb?kDZWtyFUx`6P|5CIlTrtl|S$>SiYFA zvAo852XZL&Gm(bW*?;X+X_>sqc2=}AQ-d##tARN=M+JUVM(D9U;BWb8G}nzf!=9av z%6ngO-lDPsFc+~Oo+E=L+|bmB{R12@Fv=S_^1+CGmqf@;wSliUnfK&zjj_U(idhJK zG+XZ6M1*56l{`YZ-196;X8Eapx>}h{HakaYsB)p&ibz4uBPoAjO`r`%omaFOSna(}1}E}m8)6aEGc zon*fBBr708b6+J}gb3i4W>`R>Hx_>fvZK)|!&sQNCT{=J875nF-J~oJuA9G!bNOg=Q`mE_@R>|Q31pX z2ZX^Q%t-)sNwPBHJcN^-s3jK<2=~`Gtl%j z`xEK|u22o+!=+v(>fIBfCMxo{07ZXQ3d~Nl%&4ZgrBa-L zHQd#Zti(xHQJ}I_`$9>01__G~bhF82b*#&SG(ZjQw>Ce@2R4G!`r~)VCrT|9^m4r8 zCD##%cZklJcHMrni_h!{{6BM9pBG`jyGk-`Jv|()X_k&}w143oHLdF0IiUcL5bhCw z#3Mgef1PWftOx-ACHe?D_meeTEwL^13Fl_tS_t8UfPF{y(dQ4Y$!&i9#thoHyS|G& zN%voKU2B%nRR{wKL768289i0L+x?ttU?RagBsYiUWVo=2j!lg|+rrrrV8pUfO#fI3-ocxO3PVDTRlEMw^1Gz0KbpKVzahX|F@^AJ^Ktuaab> zJj@@)6K(Dl+02ikwsh>_&$)Cg8y=fTz)bm!&HCu>5`Us%QN}So{(Q=D@v~yz=<$IE;{V-(iJ(eyy(tM z;`cdU=meG#m8~8;8HOJe96`$YvJe;>{rhyr)qKkvQKRU>{CpxSt(P$7%-a?KC z2#0nCed5@IgIo2@|0Ta~8(Y7}FNTl)rw7=iTBnxstV{EoT(eI}c-1Sr!Ec=?e2+o- zxX1%by~x@*Sm~p*EVxFeSjvz)U4-sz$k$O5O@Y#Z)@;YS%`2iS)lku>e4bw5sm%tS zp7s~MZgl+>i4fw)I%_fOqm!6g@0I{^tHA3E;L;#O~eU(yW-!}V(HoJM;yPC1a@t`T{h+%0@nuDwQLijpx)Za((| zZp<*hyx*en9kxq|L#_-PWVH;$ulL65eDTZf2>G{_eMIJ{gX$iyS<6BSbO*1qR$1s< z?dADO9^U;}CH?AlQpts>6zLK-@`S0cVB?7%hO2s8<=L=6{$6`ZLH4$al<3?%M?Ms% zPt4W&nu4*BmQ_4x{%TWjsO383ea7xS zM}Ih<8SH7vi~3vB)4M_I=eAwAflceyXSL3V&XO3)9~C<>#+XNk%WIhlI}))cQ6XWS zN~#&ik&io$B5@4j5SFU|mJ4JXHR1^Y3O%J|MmV}7Q-PPxM? z=q@J?D@@BQ%DkJLp%L~1^RuTJU3bg&QK08hosGPoj4nlPbf10wuY+1<|E`wCZWCK)<1>+(u2$GllpAz)oEh{c=@D`I=4&9eDW9a{ZA=Q~bT zBys-5bslq^zjK|#j)%|yqA@=zhZs%U^5uD zu|>$N%$|RSSD}rEeZ*?}msd!xu-dmURZtDYPw5#Y-dJG61^Rv+>&0PO=%tF*yjvKL zJ3@!6w|P&i3dREK-_Xp@Y-1P$vRf!69o1X|N@3H4Tb>o~I7CIpPv#88GGFB&CHh7F z)GYgNH|Us;k+d_P3Hj4v3Gt4FI9X)Ef4JHyX?XV+aDoqfBE z4Yjx5(ZgTv(G%pNo6`~b2!@UU5y)4KY$m(O^AKBI@ZIJab&=@uOyVa_UZK7T8yZHsFRg*QjDNcbXzEqpH z4rNOhwvQTJPr>HU_si&cOHdj)-`&pn6(?f}-iMxLy~zqy4s)2F3~A^G<7*y67|WF^ zb|8N48;r*meZ*ReuA0qdgIH6sl`@{7VDM-+)(649mhO*Vz5MvD^DiUg$K} z&nn7l4VBTb=A%xpuz9n8p#w#5*nX2kwEKYP2xi(>M!hmdoPGoLN41_~Ys z%blLu5##i1#_lr=5AS*N!623~h@Y7iFPp^=Sj3f|;ewjQz?QQRMk@Qf=IeCK%q$t6)RuPdd}sU4ty+oEe(+7V>&2xtqAC@TaXq{Y`(Qi+!c{Z`} z*^d1(mG%5ZGGfI34;^@|{daT%#|`tP)@!IO9`^jok|(+ymPVTW+oMxRC+idEpJN~Z3Ckhd|%}RoR$<({e-B)|NrCEYT7T~nrIt>Yn zguX@rur&r}E%;o^4DDZIH?L7&ZS2mS2U2D5`PRv$l+=8be~eB!N68HT zwL>0K*RKg%Uc+Qlt;Y^rT&;fub4TFcVVXzP+NCM@V#^%smH&^u_m7XNIurjBW`Ge! z?jVCkjWw-l8#}4ShAQb$&96xUBq1Rt!D_%($_8q?2pNJ(_>oC~>tQV2RadvVYqz%R zZf&tGTC`{rU^5Y^gdbmxN^7*N-fYq~Acdf*^Lan#-pLO@Yj;2U`hNfT`jX7O=bqo^ zInQ~X=R7}9!^X%^(4|X|Wc!MXuy;yYE&HU_I-Dgi3mNavJ_$q01QA|5d;rj52XYPq zc~+L>>5>DfS~lP<^`%bXf8YZr&+rywoP863bY`O_(S&T%zt#Et!wgS-hOR(9-FQY7 zxDl|!o#?IlCB1X{vtN%^xX_QiCqI7Ar&`(?(q<($q#94RRaDjA>U70xH<5j^_W@Z( z6qBFcx5O-)B0o9RQ&vo`tl#Wpee-G?nojn8OLpt5dy=C5dm1jDl^iBho0DnhaHiSl zkX_Ppv>{koRo~-${U`mEDeDVR?2}NBQ#e*mG+b0!RaNiND5%!DQ)fb(qi;e?Pyie8 z1oX9)$8G~ZG9HNOA)^_#h~2~>W%IO;Q`G~k7-*FHrtl}%=Rgit)h~DI{4{j}1wwL^ zS!~nl0Z|HXcNb7Z)=sQ=2g3is@-Z}^tQJrfrR{Jz!25!rlaRe%5F15iH77NAG~PYd zcUAp^(gcbGyROpR(d(+gDAMj)vQ?bGxpO=6-cP2I6~`oa`D`+>YlZdt6vxR}GJ^e8 zQ@@!(FH5!tK2MD>YVi5^#}lo;iB|t@DE*GNS{HK*O2D>;nX#hV$qkLCiKAFigZ;Kz zemaWQBw6pJa}h_JH!zU(2mLI<<|#E+GSE*yG>fb{G&igHSy9&V)zapbXj3CYmyqk; z_;ptM*Y)~S_@eqP`Y5TgeoYq{v4&7sxrve0v%sFaXgl(&_0k2S^(p?s<3tzTPN9k9un+Kgnjg~54CbF&}so{M4(~q@UB@s|5 zZV0hiyc}ZF4l|ipm@y<8>w^k8(80X`Rj?IpLhr=iNE<0*^2&iv{_Gb-LQ$K84dZ?7 zh-QiwoenHD2JfaSY-?@8xsUhr31;nXP*f!Rkkk6>%Q3tUK)|irQ-hO}r$L1Wo)Ep7mtv zMH>r!WAP19VEy&J^@2|Er%y5V*eLw-okpoBZ4CY?)0Llzf5xDkIj8in80f42izw$X zn4D22P|oxdPNVqFIRoW<>A3#%F;NciA^2F7e+d|ySkNDSA^{+|ke#CF$EE!pE2Uz& zGz&-yYrJSU<>K|vw+MKHy1Uld6wC#-$k{>N>z|j49{E1td_VqK-A_%V5Nbd$-L+L# zrl}jzSF{d(i}cSJVi|eaUHU z9}XjYOqJc}PM@BoNYg%!I&nOe=ny@4lyABR+?V!mIDOj}mMm;+fJG*V`hYR)t;Un1bGPu_7(K~j@t#HCBZ?VK; z`&Ur=Ii@fBZZ9hfe)W+rB?il+2r^-h;*lPeEl6n>=J_EuT*?M@`93LDCw-fZ`yek;4K zSENeyCGsTvXO(q1Me2`AC#dLay1cDyU>CkKQP?L%{+S{&Epr6w%K9s6K73&DuvPz{ zQ|)A`t+Jj%9*Vx$s2NIiDzB`m?{YS251Fd0dvsPO^qHQ_W1E~o=&PJd9I$gYOqQ^J zd5e3Kn6CQmP9@*fm4x`KIbmP+uXUr=6HXb21NFrr%{^x2ttzWNW6Cw1iP9j;&0;)f}@W&bGId``AA&hN7C%Ez(iw=OKgzApXI zGo}IieAl)cHPFzPJuKxt9mQ*~X`Gn`7Vk+mH?3#s9J-AB33~}gmJ20rw5)=nh3^(q zJspTrtVuXpB(>OA^5ysq?8Z$u$ZMUyst8f{S8Fl8tJSz{09)3C#}^xzJ%STAn8t&iJ(V*FZ64eVB*`CW_p) z7+*;^^GIv&nJ5at7-bcu zB)e4G6tKb=@n27RW^EUB~a3%twdQBy$3FN{T&VD!FAM5-)r#2QKJ^WrKXOh2) z*&wew(`zRX2>;ZT#O{B)RW~D^SkT^h;7@&E!C$G%eHUQGg{OmZ{)DsO>tvbg1|*DpGPL| zr+rt~->4BsmGw1-!q&4W(tWx8j>2AALJ zTu67{El9P>I{%DH>$mC;aCX-5Pw4iBg)cT@()hq@{mF=Hg{d;nGL`^F%gn1VD{r)( zBORF#1VeZ-BAmY>P`)p;G7?vbTZpWej} z@d2Np4vX;ENQw3O!;_0_T3;nTG<>7Be*M?%#8tzIHIcQqCN)gw(_;J6&BLF9_&dGD zPLx2V%r&IsXB<+}pXi8YK(G|J)@t9T`=&`jhl+IW!@1EB`+x=h$Zk&+1Yq5em3|q3 zD6$N#QWKtFuR|@7y=$x#O}KG$T7TPZ%fD7*d4zHc;i5$}Cpz3YtNp7!#|^D*&zy^8 z4?ZuUZr_xH4$bkKwM|q}aJ7HMn{YsUBm3f;&fXN4xo zEF$B#o=vrTYAgSQCnm17-I&09izYEwrl(83zWBBpYoTE@d0$q%l zN@*dNifLg-;lvGZgVE1cKYj#8+fafn@^7_&Ja{{K7YcWQjNUOS;WxR5=A_GRHs#Wm1Gr;d%LaW^}L>xf8 zjsiuBv)74#uE#!tTNpL^s5Hlrce{}yHY};K?$Gb?#+f8lS+_ZFqWgsXFK-Bf_hj*w z)0n&JB2|puQhdgfRo0jIB>HT@#@rRXP#My-@KCJ?)vV_yiwArmVlmv^-EcvD?r@h@ z(pyTQAFUtU3V##l0BFG{%PvG%xcg#fbPUafzFrM`YuSZW)-R#-;Ysdx*NgTJ^eFFg zB#C|_4(MyGf7BVY&M!e+x5yi&vZC);Ypssrf1IHzf0Z-N$n)XBmg*7H>{ z(tox;(Umyms%kc@))bVCMBK9zkE4l8fE^-*iiLJU8{kcMTBuY09F{*v&awflywD@nMP5ZFFEFNSEo)iWQf3lzw{J@5G6u2fvVqP<}Blz1jzaflPUvYh# za~auYnVJLjMw>dhAJWc2&#SP~bt3AG+Ff9;eF|%CBXYMre|n(yvQ=3B4+}ZWw{N$W z=*h>#+tV$4m*X&g5$XyNujy-@_&vVL;4|hpT=ae4{ zqG+8sirzr*485_yth~i4BVE%QDIY>_)IcCwFsca^lW_}o*Z!*IbD#7%`jwjA%x)Vn zerkaBkL8Tt%(w9L`1GAg7yG`yo|l+T5^zG7SbijL}F1= zvFbHrtl90|^^bDI)W)ZGQJs0c>R1%Bl|mLeLTKhg%PZs8#;13ahd2vdpkBoCOz)J} zVs|Z<7uIyUO38JYC}-^fsO38RsDS?|yEXy^z{ZI_Be z1A0oiOwDgk97>}=poR%sKy#zkLr+nSJw@EZjF!&p{V(&w{_>G!A1y#1+1=HmR1Hra zyGw#$6YtV_=N*($Q=5Gf`7JIv*q82)TK_M~`Zr7&Gog4x8(w%iGLepWl9>S!I`48P zjT)WZ-({JcN7;zZ##~+zOItS4x+|8U?rr(CWDRBDbii&h{w-|T99MI46IIJBeL*U) z!K%SK28`BvTjPu51}lDnUNFvKwfQ zto0;Ssmo+yYmF8~3i56BWm#cx*EJRKSH#gZ{G#-I?ewjjlOmySMc6|_@@-weq-n6E zC5x=l+$$m;Sgr|>u-^D9YJyth@|oDF0Ph<7*9rJvG7SFc56TY6 zb6eBwv9g%z%NjDXq!dJtlqIf-BA%se20JFk}0ETvlLM=e}yY=bCr7J0%~ zIKc?wMQLD`Z`wtf^uH18k_vW_TgHVRX+tmg-Dl&w0=M;Pr^)O@ldy#1s$Q27czZ>M z81`91?`c4kw^w?hG~)~f=#vwC7^coWs$CG__NXq?@N`J3J>)QQ_!Hw*bnt>U5La1$ zXXlsj#n5uP55rvF2nt~S1w?Zbifz1Wc@`T$&JOGL({z!b&T@HXw0u@1Np;?3{wm9* ztM|yIw$WmcPP__pAqL?@J2vhurLg9omZg|8CR!H?0|6;7%Vpz+DhGc~FmIXY1>V<8 z#B+1YB#K$5x&BpC%tFJb(|x3i7F(=vqJ0@S!4+EuZ8B)JF@K3#F%%tywNI+5Z(9P* z!&A)FwR}8khVJ4x61I*%%R(Al@2P$`VpsEQw~vfPqMSV8ve zAS5#n4vxWXDuW-hbziYF(5!ZmY_65Xb>OckO?Gf}9W$ckYh3i{!xR{0bH<$`l}&r` zInGo2FipTR@ZMy%1gy{1Cuz2xFM%)asaPXq;ccBDI_eqaRJJ=bXt+VW-a4-#g&C|l-pG#v5R-A5D8nZ>k$!^SCl##P2#khAf8EQtw z14gdvtpB1>>yMqlnDxg`mqT%F5!~wFGFgAk5V*~(k6eEU2%)4B>mM4*DNb3}x=_!A z0Kmb_@bCh?^ zmm2p5aBqAaw`wxUL}G8FKA-x8dNC)bVSb{r{HS}r$k6H4divvp25DFfsR{g<7oxpp z&bo)UMeG*fob)x6f< zA_@SarRs1Bwib$Yo6gGhmu%k)MQa?V=ZL%#VNE8G?yN6{BdmxW8XZvq)aDOi@)E@8 z704MTQMU;Etf=Px?BghWevS2G{Vp`)ZkrSzfxnAwg%5bs&32|5Yn}aIw`>nt;7iWG z#4V8XJ{+c<_eg&x{CoC6;2QTkCu*Z>4OW$p!8` zQLk1VKx-FYlTAmB+85L-s#6p<8{~LzIzi!aM#cfWW;eQwTEdIBuW}J`+_-v|YB!2v zd1}xZysInt(uxDdRWFKL1ys|Ujxs+IQrl2hN>$vbbT!Ojw+7J5#7MvkQ>M;S?yUq2 z>@dAsjcwI(l^30{73rGKdI=$rux-K_>`FYNujR3}^CnVMG1tR`x9_t>s>~nt&qO$l z+$(s@h?v3&v*WJO}Rc48WdS&}$4KP$2;mtf*Qp?Vq6zeu+j zP-M`(VugON+}LL#Bi+cD3|S)_w7-alavZQv<=HpS&7XY!45!MAZyp}Yefj(uNtTp( z7`BM_^nAS4k9_e0d?ImvICyO371Am>45pZ$G0ll0HQC+_H1)gC&HUz3yoC=Mt@mne zgrQ^+dc7X`X1_ZU^16dzaiOolksSn37|p9-#~d?ZIXM!-Ya1U#`m;cJKI|pTF!lhC zXaEkK5OdBw0##*c+S)779w_spm>_=WcHqOdyVr~xJ^*3-(LF$V21;Gwb=I=*7Mr%R{i>iL@LG^O5 z+h~sR9(mur;_HNbQSaiLr2P*V1V80ulc|cjS)iMedGx06Fq`>X(8ZfxhCFd0e;|<} z)1RlOy`AM)&?O4cJ5^o3SUCXhO#{K*jhEw9|3HA)4@c4gY%qxTb+90c2^n zJvwJd;=81=A8hZVI7%8o_Nop==eZ+&Ze~N=9sd>ukjMs#+K^gFD?B-%nz~W?%QW01 z@F}x!)11Uq$Sm9>^D#UXc`_CGgzE7Dgo&~JiVB0>D?b(3ZQn0QeR}9OjROV~xv;13 zVPH}&cCd8=G7D2>3fTA)15J4GpE@q`UugdKqx5~$XvNYDi0ikVVd0PuQEztCeYzs*o?IcKHf=3zJvJm1)>@s>hG_fT z*XLWQ>^FVDd6&K@E?R3RoP>O3W&Q+%2hIaBXHQ$4MQ~t{e56;3LutzviqYWd~F!4IG&Nk|{xBLzzSfa#T-4S&4`An5e0&Q=ts|A!jbv{r{;?9dTB{ zUgtPu|AuC$8Jh_wqoc}%{5XZK^Qt5X!cyiN71Cw#?Gjj~2kDIyRVJ0FGLkJ3rDcAF zl}jE~26G2aNvULFB}2$Ns+LdaS~%&_&MrMpmmZWTFIj48(6?%w=~EZSLPyy=NrK!Y zsvo*n4}n+(t%06i!x!6O`(5Ttzwfi(J5@}-?y+Cn)UHT3QTCodpk{`4Vvm%7-wkV+ zrn%}oa{}Hy7;#wC%{=J{R@|12j$zeJ3@ZszWj*!{=CXR9 zo=%p#ODBF?C+naODFEsi93k)tP{Vk6D>pzA#G3~uEa5S`_cYG?;U!JuA0@` zY3U&%XPwT~O{&wx%+m3DtSfcd9RS4sL%++xi~#bnFAuXKqT>Ciom*__@agRR5_D@9 zPY=1;r@aDML~*rW!tz+lr0)apAx&P|>pApRVAmmhH1_9|Syc9V-^4)Ob}D}#s@GhI zHz%L5jrGh7rm*H{$R6bk1nu;&=|E+WU@TW~rqNs>rzhj^*nxO~Vw?~}Vl#-cm4_sp zU7)?TUpX3s=>1zlne2o5(8SgbdW(%ZW+OW$sLp~Zatt%$!; zc5*1?|H4jY0up=oLpO2cZlpaMqs}hIGlT46#6S-*Ew8~YRaFAKvg_IttI4+fw|X5D z3YO&|HrH{mFU%r&V$)u>SDZYpEUBOf~YSnp0I-hN|w#xyH!9 z#=HhpdTHQ|Y_|Mv^`h}3=trRWgX~i}gxpacT^-Y2u|6$>B61RuuNc-5oi&KkO%5qTF8BNd*%A~fe&MVj zhLFwcM(;K)k6@qqMPtFYboYIr?xnBDiRlsqt#V7{7yj7T{8K(D^x->==iS#t+MbIH z8jV%sOEH?CPLZp zJe_uJUetbFC8f-< zdPrQP7I5O8unrG?pj}L0`aFP_iSb%S=x9vZu3ALRO}NvacJjaipz%gOmSLUpAZ3vY z*`j8xk&H6j>n1MTisjO00TzY_87K__Ds-ZHxL2QSz-_Rk$DG+$58w}Q+Fq*$1#ADgOu#0>AUr7+! z1}{9p9t2gRXuIM0naP5Q6v~I=VF1Uwv_oc#X>k>oVtA<5%RF(CE!{1PR$;w!N(L+h zj1cC32CobUMBbP9#8AYXY0&z2J7u_KA^D&WwQvW7#|(uplYGtO!vb=?b*C;c(p89N zd{R_iXqRqa{&swRG_(&r3mn^oI{DYdzi$5Z@b3u!j#k)>{o+r|iO>+@ zL1j-C{FoyPLj7CfJq{S#>h@te4ZVX=#A2^X@-!?28PFD@HbNjN-f`$>C^#dZhP zaoT6jK!NIc0S8f1g(us%Po6PP*x02Xj+h${>xXW0qqx8lO?BHb!9sK#FcL&*m6=V# z+dB)tSj#^MmU&XudX@V@;SrOOD#P#;qXgu^-Fz8=p*+ea`Nu`)L-Y0*nfWJF-hi1u zsPayj`9l)F>^B%Cg8a~XED-y}7#zxqAIkF5-?IKZA`uxI<>D}Uukem0K^5x=EjpxD zridZ*#j36c*D0#*hu zG(-2j4{~=gkuwi2+3tNtG|vP4mkdS;Bs@tvUqa{SoKPhL=A1!Qa>AVBbUthqfad5n zO#ss?o{+GQbbUi9Kx1y0DgD?W#E7|J7S9{nWe*7V#F!b3(fWB(1*ES26PeI<_$r;SLa&f{0MUENS*SEi#cR+Jw7JE`AnmbPNe+?DGQ zGrZ;$o*AOqoT@)%@|T=RvF0r2i3?n_8HIRq`AnOyo$bjf_Za!*p6Jtpoy~jDww2DA z|2TsOaoN8`4uphu7GnNY!(Ec|H_tt~Kb(0^1Nl#k^ev`)W_LxpWMU^Xv5!e8Rczb=9FzH%I^oG7#=bXEf*Dcry1^EJ*IdgwXg!5}MR2#^Z@< z)r3e>nkXT*{doy##-;|o3wv9AB3gp7^FZV@cTvK)CiICp?WWqNow4abNq>6%?f2>v zZvj85<+=fyH4CzMk~7aNnAO+7^9h|ggC{xl%z|8w!Ita#b!s6`a_*T0Gy6&+J9USX z8!sevP^XsgBuAfFP}-NlvsXVa=E<+0Zs$o5npsfKlN^L*!E!b!_u%CM8==%lQ%aK2 zx`Nu|W}2;%mm*7_z{ zkGthMIqvP@%Mc7R^_UB8mnm_kuVA@o!W*qq<@_5x+9XMMdVRM&+CBDYWgtO& zuY}9y4_h!-S}Wzu<-S@-IHToPWTSy|1DS&yM#0+sWFMI*U}YEzSJ@TGB-5;$pRvsj zofzG0iJkl0dtkWP;jQoqvX87B%?^JNlu!R`qOYc}4MqL3;nglPZ@GD&?t?}dURrQAw3&BKTp^f3LYsL&vrf*wYs`Yhx-A*s z7|del9?42M-8?8{w)WqH8;{n3_lL0r^KsU}LE2fz25Dy<8l;_dP>`mFL=dHqJSH3@ zwPfq|P2+ug`Pak0f8t-p=Ck>sZ;|#q|K8@`1N{50d3K&RNSk)gc;DyvcbezN_&t-a zDpccrzvSN+wv6}vn(x1go}EW{3;7Rv0De?-Zdx>&FMxj5_W#69gN29{fLfXRkZ?Y? z)NI%-)O4-NMyed-dj9UARiBJ>pntc?A@KtMvm`z>ixxfSsSwFB#3^PHZR$>djZ$2iw1xDxu zb>R(q$hwofwbn{qVl)?o3m~Rtis{{y;D9<-9Iv%Gph38u0se`tvY0O)<)6(3jkNSr zONa@H)j~*Uj6=G#%mhg{V$R%K+bvf**AH!*p`v$i-)wB#Re`s0>zBPk?h(&qCR&4Z z5sjE3>tzyatuFghRi$+y=Ou*T@bKV`xT`{bqnTy38t&+bxnUnGBW%(Jn>*@pTm*9? zsvQKw8k-wL+6+TxZm{&jpoxF(&>l0-hh)`k>Wt;3fRU0+Tml_zs1te^CJ9+T?8Zbc zZHwJVd5YXQYdx#3gj3S=vc4a2n5E(~nWeSDEH!oF4yGGHCJ;p%!Pl^V!EaXRFwRcl zl-{Mm=tDaMN7n5Wu5aZ~EVP|Oo9#Pdx@1tO=Y)FD;6g5L79gp^?GmFNAPz5cZbpPX zl7U1t7sXi0I%APx?kOTH6(hP;A(#zy5#Nb12?w|x4se2SfcBs=RcJe&I>s_l#b+{6 zdQfGZGA7LdcFIn94Gxg*M>G!=(L7W{^H34ZL)jbVn};#3+G(_+hAs-q)*s#xn!n3> zn_s{}7^pJu$@Q9fYRJds(r7~5pG+jT@Bl0c1`8Fi444IDKpYSE#KT7b!%A!2R9ReL zDZ{~AAC)~G?yj_=XjbYHnNA7t2}@9;N^XQg9&c=Vf@O)PM?Lq8X#xJr3{_GX%gvP4 zF-tP~J{QkTR~6~OiqaLg#&c6uNvf(y3zp=r_$(1P%n}}Ft?=~?+)`&({Tr5BH0;Yn%^J7-*?sW zRAbw6KUEpqO1$`?D@o(QCl3Up-|IRST<$R$!8 zt~f(jc*YPGqUKlEE9x-z(|cfe`zeiaYJD5_WfBW^^WTs6U4Gwq-&_3a=if>GY5pUFsEAr`#-k zSuYY-A&0n@m8<$rxuNBbVluZ;mnq$fv28!cl(;?1?=^f~y7(L9&w zx7!yw`)(#C^1L1?&ZT)-e|=K;Gs+fB-79$4ELyCzFv=`iuC#c{EWh0>s;8s;-rGZ# zVEJ+*>X#`lT5M`TQLw1qh+0A z(u~LhlJ`=zSG|wRL2mA1hb#$(wnmb*IO0eTNQU+T%qL8lWP{xPmg^=s%3Cwt<}9!~7%<{kCqllvF(Be7FNMt8fAlV&K*iQCDy+mBP z+=$#SSR@3jpsB;aLr0C)W=YCN#L=I~v|Lh}2A#=~30Np8dIePbL#O0C2n6+-8Lb7n zM!C-D(HEQuU>=HkFFy2+WHVaQbx9HFNy(-oc2PNRjaH8?DmNO5qCKOF_DUhFJ&U6~3D$IELGREddQ?r}p+ONG4ICN_44P}x z&6MkfPF+c^E zb&w{wY(V8Fkl0a>*lzX4Xe7p>O&Wv4z&dGXV=(k293=J?jl>{qj;i+)NK9Y1U$2oE z_04e)S6J6`>Rr1+nKo4%*9g2SS4-qOYkdE*w?y z$3%YAJPP^gn(J^g>f?q^?mGneeNiL7fdum7ihsap#Qy@3sh3F<7mz3)v($i82ywKFi(>wA!|?eDl<`pQ&@zeOJL1HGCN2D;}) z-iL0yU8Z0n`V$BzEYwMMK|W11TB{`)&p?n<&{Q50i`_=+4Wv3Y6PrX`fJhtsg<{m6 zTz5f^3_*c9Bx7g@I&Vm5#-orJHpys&9IWXfFC?u!k#it(sU$2IUX@uzbGl^rW`NPHIAkntJOnD+w|u_ zwLnYve#V>lOEp>^*XfXokc|)P=Ppe)Zk13-&sq{)H!Om zRstDI(?QQIt#*`2JT2s<;Q&2le+B1P5`^s~Lu_4=ZBvxe=m z40CfmP#Rl*3x6p<5WfY(Pd7SG3c&y zD$9)Jf~px>ZiVj3>RZhPi;222UM7P0r>oWs-(S*{JwIxz3@T@<+)|q*JCq)gS<mUo>v z*^;b=-BS2T{awfkp?Vjv;Gi!u-($ye(|TRg45dUA>~8(e&$F2_w7`SqzN zc1E;UsSjs$J+kW0ElXK8$?800*N)UZJi+!$fSZL(F>tcWiA@B26;45Cs)djnvAUwZ)hq-z4=2N$& z)~ff~|2Q7yirI;~1(zPQ_x|Yxhz6r<~sD%ah>&dYx3;i-v8I#<>4< zz!|r_m}uiL%I$iTuQ{Jak8)(f>5s%it41+iHdVev*IeMo3MC)=k3m&|Ge3k^1Nyq7 zp)z_`3UI?!!9+r|s?O-D()M20;}f<0Otdmt!h)5zMc#86gYD$DVLy~hbavYPGPfx!kGdnhwIs6tb(A)Sr_JcEkM`Qp` z&V!1gaY0RF_TV+1&shdP1;&tQJ&cwV* zf^;;IAbl)x`j|*_y7!adsg+ad+S6nDC7Kw!OVJ)hm#iqVYli5r&Q4(~=m^#Q!q1J0 zi#oEM^?9@m7kSptf6Wz;sL+8%uf`*M_6s>UD|8$8w?}$DnB0l!Z+V7wFPZeYgwlsN zRQZX17xPyR3>^|cCyjhaB3P}>!x`n@V=URm7=x8nQs0wc&B~amBT69#GUImId zp>}$N0t@W)2n82-UoQ5lhqMqdvf2YCXzDPqF5M zqrq(M6#N8uGrXsFKmC>(>ld);-D|p9!3Rp)4k6p(Cr@YH#0S zkcd7n~td6X7xU-8ZZIi9#rfWFmLD=vjhaOUDI9*cCVYf#vMGp za=aPZhfa5BU$A@46ogCb{un&HN+*t2`%ScJtI^Bv7PZnTkq)uRgt0MNS22IiSi)^2 z%6AMHTZ<$e`6cS8VGBM9VLrgRA=E#U)y6?#Df~D7nDlCE?f3JchsHpzhA+4a2_{2~ zY_WpyDD-4O`-AE$e)XilSI%8PmSFV_9Rfxi6O)-LTfR``)ki|0%B>2JFCW04^z(Z4 zjMhzL5^4LTl#IORTd|N`I3aph91G~qr0A?2!H!0E@Pn0w>OE~-y`JpY-zLH2FEQT3 zgq9aU+wz!;wQVlDSU+QAo15i4XGPj_gZo!>!Xn|sI`Sk{1P-Vv(OmbHB|2KryS)#S zCf%@!Y2S)QryIl-F_w3Y>d4J}z=N3dW|-a{?$53z#_>^oa$bk~m3U9|E%EO3Z-?&R zN5h2WvuPQXl z)0e&=bTzyQhqjK=g&O<}aY#@!6AKwrJYCF6_#7^I0o2r#ioK)|orN;(1kZu^nTf}Y z_;NhVS%2yzOP8P~J}`IHpq1CT6JEq6M?r;+|DH?f)H*h_m9eJW!rgcW?~MkW^*lwAcD-f!JpS>QWE&;TJMH zP(5_$zwk@@In0!?VMa+GTT>=4Hxet2>}F`_Q}~%Ty;pYu0)6;D&XomL& zoUA$Q@oEh#?#hJ0<491s46(U?LO372znUP(XqX3$j+I|kl6fk+I zj!hi#RsTL2KlO6*zTWU?JUjypA6%H@yc`{ibO11(g`XPS-o8n`Dx7Zo+XKn4CK*E0 zeM|6Zk>7DprIJvGQn`N3u%)R71r^3ZnbI9=`%lSPlV*nenvp`gAvnilw3f3^P8Rrl z&&rw^BCqoG&eD4a^Hf=^Dq3J`AOvXg>-DNBw0FooO#C}ktroDAWM90&Mw#Z?JAV|Q z$Fl(6a@j%WsXP6yCMxmfOf-ron#D5}2v{};dueQ;y%fqRW*ZsBNCb;#scEWwCR)2^ z=KB|^oD;;mEGcI-8uzO`=IUI!BK6K1TV&gH4%6vpCldR;L=x zU*FhxWuM?-roy^lo5)t&Qrc+wIxP#zF z2r!g`Zz6Y!L1(9)9Kg7mV9S|o7@KL$OL4uiw9uC>ar)>){4t(~o(Ly2V@p zCBsiq9~GGeGlanVJ3i^@O377p5tme8Sm<~}AWfO{TVq&#ds+n1qrfa_Sc$2d5)?J4 z7K-{#->QX?w)E&6!2v8K@=3j4ng3^#8Zs0#R!(w7RSki`rsZI)H{Kemkl~=6X|#M& zy1)^}LR8}-yKRPTmBtBgR~Ed>x8h0gQ;qcxS4trR{r%{bH;e=ibNqC)vF%;V< zW`jrQ0TD;RWL#5Y8PE`{2D4yGV-~gRDRD$e5DHcqDK%EHPWL$StVq8f{vwrX(hzKV zBI`UX`&GjKb37HNF5N4Xg;|@99SRO88q-8K^&O@h@BNs0J}p=gyJq1>_&uTVWxw9{ zveH;;ETc&7X?c4P4baE>!l6y6c6#@7DOYOi2e9{I}t2lqYbTigfYoT(1I?Q zX>2Q)u`JE*k+H44!t%C3=*(RpXI0A-QCC+53nDuw$WxNhvYWrPR`IJ+Y0ufIVksbX^6m@RnFXl};uER^evSC&X z0~>BaffgF;WWy&_bwAeZO#_i#=?YEEQWJtpHTrPQGa!ShBTSlrXMA}Y?cqKG&A}7# zC#8PNyH2F5gKEI~nyy=d@8k{(c+`5$F5a|U{d6bYm>*f~Pf~g5T+|BygeS-ESdPEt z^+57@T0_nUJoX2Ei%(EY2sl$OI}`(>Rm=UW=0@2%o$L>nI2y;{&lNS) zGKrJiUt>*NDAfRzM#~+71m%|S1l&n(0xv;R`Bv;v=vCCEqU#Xuhk>4tt%vMqTZ=<{ ze2Cje*wK6Kb6D&RlOlKeB`V*A8))o8D=s}Z^yK*1V<>4bB{C2OP{XkwK4GoFM1WuB z=K}15a3Uz)o{m7Y0O<*u>UE-H6nJHz7*UNkTK|qGCYmV5%RQ^6>-g27PwFJ?SA4l= zMIUNZwHPa_=D?s`yVEU!OdUxUg{-R4e6nZE>sOB1jr@l|P7O0)c?JAp~8^LVX^+2KiWD@sJ~ zjtmhc9u@_eY~sJ|WJ~LKuC{V}WOuso(YnR(w}Cu;Fl(y>(U!rrFlL(ls3)q)l~$${ zmZ(*ZW_;vs;<{%NUziR0=?d%DKesWe9bnjjl30PCAtl8MeDV`tnPUBrY(*e?f#14* zG0SB7n!EJ+L-@0^_WY95uUMC3K?q*+a}sz0T0}O13g{wzo2J)K2V9b8&&quL4Mg&RQF z)5J*AB6lJ3xkNoF^pDznAAbW+3hfoxEZDqnvI0&^yn(EMj{HZ2Avv2*5}dWn*!B{q zwUcs+lpqS8*jRO;-jtz4Un!NQDKr^zuwJ9h; zS-*OQH7u7k#Dfm!@XVx!;IdM2Ci#QmFL-XD-;him!Cla41o}Z+zu-pn)%&(ZpSZO{(!ksqzaqADb*Y|?)^HysCGuyxlt6aPl8A6T}YC64~c~yWw6kkbI(gk zI&S#J*Z(u#_&BdZJ;#lyt+xO)lG+8iEbliu?-k^d_fp~`!Z`d?>}4ce;31gn z7^TB{Z8|&#W(g9zY*a2@#$+=jn>Jh+Q(3NOY&Po($tGPqqdM={d~G@(B7jHD0?t@S zSHCRCJh!T-2<*+Nb!$iv?dZ8F(9=s-`h_;KW^WTrkt!(4CZA&kGi89Wf?4)YuKfe{ z6k%uhQ#IC-U)Xd;L8_pBgQ=`pmQ-P`OtY@NYJ5`PRl${Mt1<~RvQX#Kgy=gHnX;G6 zg4Dp=G*>}dCHbxM$V?$nu255V`_;-+aGSt!G%wW*J@HJ|CnorItiNa+u?+S|>qe;E z3~iRfWFgfFzYAB`v~M0T6BAd3j(?B?*?YyEiOVQJg#-~b^VF{PPlIT;J^U2QL`}dy zPXP-O8W{O-m3-hzlP|2n=r4Z##Uo#+ZSlD93=v;_mv)JULU(tg*6opL5tlpXE_p$7kq~E(AG7662!scZPI6b~!8X-0^ zu2i(^ItvS-;9$eGsPKwgl$RdTJg>NM8SPRRJEBG6C)7yb;N3>^VlFFr?QPA#c9>7l^xOJBw{QT33s z^53OyRdyJG9QPOKS{yxKS=TvLqHOQMuz{fjIxc<16*@9fY_VMon=#2l^Nfh9s~;be z>-t14JuJ!PJ-e!lB~ugBP?rjCm0^aStcX`{MgR39baqY& zeg%tRO&~ABmqHC+RAc?&XExrEG^6D$GS&25k<*y6QjpCt{ZS*Eqq6Z{GK>9zc`2^q z6pd^izLG_1#HF)WEkb5wRzIFo-DPat2WQ4E(h!Vs$w`3D47DU)Uob=KvH3bl!e_ zkE!c80p}f8FN-soX^N|i4r3lCn;X*rB+$4K3~x6|+vOm5Nv-qdG(BdNHa%wJ74C_+ zSv;a&UNWmu zGO|*^m8tqzDAphKO5HA1a4e(*=B6Ux(JOWQv#iug4kY3N!k_z90TwU5no92O!jr6f zRtj6#M1#L>@lLTAau=-?}o9D_tap56kKCyzJ7l?K-Uc zp||x7A~SL5Emkx9m|1PK8kx{CD zBJH!pU4Q6d6@Dz2ZqucpM2U|Z&C;Bzemt@}gKe1)AO`{D=7&V%F1%G$Z;8ax!I$|8 z#29+QlgGw2tG9qA!JWa16r=gqh=8z#gzCYgm4&}KTad!hi$!X%z;87Fa8O!!6pjN* zE+0|~+G9gZu9To{&89)o#K+pQ`q5w|d`KUj&Bt((Az%HCS}t%10RuS~Vl`DLkM z1*wAPV+CpQGs<4o=ZNwvtT{R-(p^U@iyMvlHBN0;eZ;p5q@_l`_3TgVmTYDyR-7`X zCE=zXB!|@6ZPyyJHEEo#S$pmBW7>b*Y5yns+eqK)yYZpiH@^PKgpX@$i=AUwLZa#G z9dzOURr>mi+^-6K{ds=>2lVwj4t@Q`+4Obyne_F4oRhv@0O*dUuPdDQ1btn?`^TWK zUrqr-{AK!jn`HaT^z~+)?Jv{Ux9WT!kG@tbJ@_jPWC!ND6BN}kiG}>EM<}Y7HsGE$ zj>P##ypE9KQMb4brpuYu_V54IMEQXqIVe{XhDDs1T zY4z}5pva#{mN;}m;9@Zh-@nTLa2sORQg=~QDdJJzMM&=pS+9> ze>Ro=XCV{+*Qs=o?_mJ((S-UFe>I{01cdq%e-)wr!wUpfJ|3Zdm(KfPg!-QHehBpo z1SSenzHw^C2!;MHKX8rg=XT*n5=+@s1Q|Leb#)neq zyArwPTbmNOMkw@?vSmMnLVqGbp%)4@a~6Gm26--S32YKQd=cvPi>;;TLWxM#b|sm~ z@FZxQ^RYDXQIB2XR@sF76Pl2RW_Jkrno*QIw7X5o3&DN{8Be4jYxRL)&OkU0q3O#W zg!Fzw0%MP%?5~oIc@||~FO+@RR-3FxU*)k#=t)n$=EouHw}Nklvd76q^SytOvakEA zDEm9kLD}0XHx<^uK%u~gjiHkhRR2c43Dtj<&ht@Je}b~V@f@`!zRi@{pzM48MOySZ z*Bs}f?4Kvchg0?gcKI-y{9_L-fj(+0wnjLZKL0kcQ5UzB`Sq@%WR4KS(m}Z~MmH(n#C5ZyX0I zP6$Vf{v807A{Lf&vs}wXk>`5X{@PI*JYPN^M8SP`Cr2wm08|pvvf@toTx9TbXSiM( zmGuJ2YUis(WHg*{NX?x&M*XeVOGd7RJE<^d9-2Gz#P=2g+PSmFRM;;0&^#H)X|!Xs zt6IO2-zagaLNK-dK$k){Ir%`Zwj;O9GIaOClf~CT-C*wSv3aP~2POXwfr za-Yc@&@P_e&wfLDr1lyG;=;ltOnrOfd9jebM(w*e&<-0@=F#r=ZMB~7(;HE*D(kn| z`Opvo*S)AGKJBwPAF|vs@ji2(u=|O^?Uj%^w~5Zox>7t82%#tC9FR2 zHthSGT)$kf?h|FRF0L$Y?9Rwp&Ry#fP#I@`9oHDXPj_;?A@TT#d|QFig$o&Vw^_X- zXAas`|4c>^lpJ>KeN$1NM;qga*|ZZ$o3Zh$e2>n{5dBHy?<#L7kcV=@)q*LL19^iu z!;nXGISv}zxQnVjDxx~^+a=xVQL{a+mmJkPvuuw-!E;-lmgc=Am%+1cZhyyxaIUE> zao>0c_mBOm@IpfGAR|TT(PQ3nVP^IVeQs5HAx>hiKBR8BFiV|YHBr6a`vg!Ge9?$J z#xG^$dX9^#sJo215mukz8X!Cvcs1(oP~j6?UU7e1f+=%&0+ZtDOXDN)H3Fp_7Ai0# zO(Eg9aZ723ChNi|b%&=eF|OJxA&i*vyFaHs==%)9O(N{P-PYcF`Eg@```5RAPp*m< zb{ZMGDcepDdyL`_B5f%}G)NyJeaT@Hl?3TNQaE~n$1kG+CHbj-a*a~YUg9PY5tO*;XCe1QS()3v3*QPv;b*XBVjsX9^=X-^lp!t(@h z)hq_Aka#L|SXJ-HbClh>fx{qB+1wys@ihiuH+2@Fd=?6EqI0TU_(BTos);^TN?szabg+?H2S>h`&&}ck(Ed~wztNWeILtS*HIoW3<)^Eu*Je*#p(n zfwPoHd<-GyCQ!|zf+?Ppi9znJr!WvRpOO)p&*_o3o?z+(%?$Tf%}xb>wED>--8Z8a zIU;w;jnH&zi{6xBJ}0wjJ|dIGd>0G_3cyc-MU^X10Dk(hJYt$~63pW>pGqa4%spDW zsF|COq)54u_FAQ$SZg|er9ljERpG^c*NbL!K>9`%Qdo3~bzndjRkVuIo%u)_MYgKS z6crVCa2--#al5+5ELnpmMd=|1R-{Ir6R1p5vt|+lD;CSol-2?r*)L%3RNC2hxik6u z@v+bu99ZKCbhtY29LK%-U76zK5aq^6(K}EDj?TEFZ*ulYj=J&D8S`*{*1?>*8uC;= z*kBdz8{hyYtHS+w$#bi5eV3`y{T4_dP#Uw$xo({+SLJJz;Tk6~cDYM#aG5JIl^(FV zUuHt-!R0GG)hL=Xoq96$M|1-G;-_;1&cX zo4+fFMuWA|0IOOBF+@5_)gyv1(66=YDKPbWaDfje_ByA%?~Ue*hqU5}1h>E0`oWMp zX*l>LN4BO1Q-l~4GSH7{45n9N$26c;_{BCeWC=W73_BLNyO3K=L$hwVYCfO(<Yl%xks78tFv3xZmC$7p?*XE7s! zq(g^?BPZ8`1Y%ofP`tBh9WF`}`fubTbftXXZ?yh`vb|kW0R%3$SGnkrpzN8xwDUm{ z^{_-+NNo@~RN$E{@^`~#{*D?}k8~gX%)E5<9mya%KzR$oiwI14^U}%%x}utTb&sy7 zSyyzAuBh3rh>nE6u(bMwWRydbC@K$VU6_w5(Qs+~3=RVcY3a2ddEg8thLf_qoIC1g6Qg9?|ey%`#uPxy`}r77!c^TZp%fc5Y9OBY2i zv2{0%4)ZS#|FIgkk(H6Ae(c-T13P6R%9pF6^xFBA71j-9jAD;ZQ=p04mTNQekaFTKs9LF}`X!>UP$5D$c4c{+CG^>sJrY_SJeQ z_`4sWiS>E^7<**Qd2iJI9zuo~gK~6R`slu$T`9&fm1$<{a{ZiYwl>HEswS*FNq^7n7&DVAR%FOj?a9BaP^U?|eW4fE84E^a)Z%*&8P4^J>03^!XflBzVfUVt=glKC(+& zf?2MSmN)^ok_Mfg9p{vL?qOcc=uSx*q1C%6AvqtE6XdeEJ+N317P zE>)v4DS7rhnEJ(;u3)Fq^Na5uebC4n;6E+hSq=Ry$Z9lil+X5xMP+Fna#lavE2)Xv zt0kKTG^K$W>Y#xdr#Fm#2`}pu1`)_Kx<@JcW3D0jHkz^?^zt-Q!-ATcidc(+vsFJ4p z#;G@`ZOfCneol#6XxWA5KY`h@RQRM_a(oZC!1&4w*3T!7mtjR)boxT(PX?``tL3jV zGZ=`fyjz8bbGpBVkB=ueOqMSHOuF27$>Rvw=P@fJwfs!Cdv&|9@yjw#t%5)*K6Izo#GjH%6EkGR z|445&?!wJKy5)4HhCRGQB`t|qE;}N}AE-V4R0G9qn28o8W3O|EFMdt@4p00k!EaUZ zrvxL$pSqpD6>+_{;&-IiS~n~aZE=wqe=0HUGHKFv=|f^UWpew<>?y=NU?O>PGx`jE z3I{S6P0OF`Ui+dlgD}LM#zvEFCF&%0@W>iX)zwFSEHi`SoPM?lEcf^n=0Mo)yNBVU z*2-O!JY0vUA~pGYU!>Z2{GM}gz279$e|Hk!TkK4t?Mv)0wk2j=WE#If z!bIz>%I1VmkU3mhVsFuc1>!fU}PKJ$gA33$cK8vG)vh zwEXD^d5gq3a&sw9!>6kdu-1Pbv*}mF10pvSlJ=mJl+Yj6!lyROtCtur=lagpFGl{U zjf=Bi7iIHU=qQXew1X&HBi<}RyxE`dOM(K5Rz5#Kj_4h!QJj{b427!kU)DOeDOUtM zcv`sgzo~OR_bi?BoDrS#s~ny4L3GZC9G!CrclxI_&y8kbcq8w}@jzVXTQ%YYMW{7K zSZ&2@V;4DT|0G8+o{nxx5r-&P5>!L$t!L1n*Z;%b`v68&p85Wh%mF4aat2KSYpUrk z+u}~!MWJdO+J?aJ*I*z7uo~^{wl1=|7Xt%W6C@mh9FGTaYpuPjyWZQq{kgl{)!W(@ zt+kmz3I7U-Pzg$Fpt(AjtPPqq0jK1Cp7)$HnMnc!4b}EXcMUUV&Y$~Uw=Q*`JP882wdbi^dMS@|=KBG8@Wx>?bYFml@Z5Os?_u ze||GGAcja;7ui-cubPBDE_HbTC9t?sI)?21B&;k&TvRA~^kcNC;DCbT&@jb~+EZ8} z`uc39+P=}hQ2dkRj=t2IL%*FF-JQn^i>x_Xc!zPX)G7fLGd-*I)40~p+~bgX(zLnm}XM6solD>$0c3L;43(p$-Sd zapV28h0G&gIDSu{vq_Sn@!pbd7mfw0k9LzZ;*SNNLu2rn3*O5&SG<=uBLcGZIzRi^ zEn9J%-H!dtTsut_jMdP>McvE5<3jmn`EDaSsM*Sr8z7a?RgK_!5W6e z7+cUtB82Cyoi#h}@f-21#uFAJEK3$Oo`eH%RqO^CHLycuRZ8(hIH8ja^}aNQceYnx);( zTxDBB0U8qCKkS(FZ__vV`DXz7yEbd!r|lf(KgPI$Uk+3H2c^E z*yM=Lm#Azznibw<#7_~7phe!AuhSLVrv8IMj_mm9Xh(Q)L~G#FN6LlE*01N#uuW)8IFs%8E^} zcJxf*4G)o0>&zkp;vCY~{kzElQ<<`w?)!3# z_t=PnCM9+8_A|_*U4;Aco*~xVTICV&U$!$A%+5&ak1;>*$?|M(`?0K4VuR8BevAoI`t+IS8I*vGi{drykzyqr*vbA!k zeJ|mt+{nSIarUHNiH6`m9%fBZ5R&%FfPZ?ju`6qOmw2Nw?bYRyB4FRG*^^%8MK!CS z^`gjro?LmTi;~YZaN#VDX1PbFsiRPLJ@L%$w*9SU z*3IQxnc%7$Q)5w&keeM;FDH+fE{|aR?o-l!pm$@gu{GPjRo>fqSYGANm_vE@s&TyJ z7u4FQC6h6)IOHsu<}IdLwf#)*H1*50#-x8c1J@dh7=ZL9^cbAtZ$XLNz~iKOXr5lP z3RYV4?tR1ANNkp!OeQQdQkAdU($h%b#b}4xWe0!H1cF+$5&E#fnk*hG{-&xfU*#A( z_+My(-H}uG4dXQVh|CXe6n@uH)6F^;k8SNasY*^#OXi$ZL`{@zA^1cR61_5D)M{KI zEKOB8@Fe4;R`JLT>*a!2zCO1s-@cJ%fny`Ps_xRq|HWnmkF_s;WQZQRGppT*=TlSA zV;_a)wS#kz4VScM6=Ik+=%HD)x9g_>$T{^Z{@ccX2L!q;n?FbSb8-h~J;}dy`lu;S z65FcPLw7V3l#Q+YVdP}hP1ZhpS%`;Ob!@nL*vLqGWxjCdxwSI(xeeCb7WH+T`g#B$ zEA@4U`r2g8ZBt+OsISrvA@(y-24W#K;s3x4t9SA5V9J?a<{ByP&h|958nB#R6Z-yV zJvvqqugts=O=>bISSLRm-FghIPGY%QrgB7AB0$@@$o{~BHyCU0)bFGtR+1N-U z@NT8 zCi$4KW+(l#56j0k;RkynvGKZn6lS8v3EY#KY_<&ZOPat5#hHSeTQA`SBgZRq?BFiz zhK-6q;w5 zL!i~NU+Uw{L%_fDgAvpv`V`Ft*df{jt)a*%Mz0;Wrmd6F7q*+xv7l8d_Rr6`k?lP{ z53{usoR^OnnZjyOdx@-q9c5d55{l%$^ti0}E=uwYkPCSh+oF5~sMT(iyhh#7( z;%^M`pF~zV^U0<_&HM&n8nC_k)-jPCw)P8Q5HJDlmx>8&x3zVWeb7NSX@(}J0Z^8k zI+NY4{ZjE1=gjF0kxBK#G}yjyxoif=1;#0@;xVNE6r(<$=QE_r>OKIY%Kxj})?8B@ z#L)b5-l98BD3gic^wdDuZ!HgomuuDaPGqCj|DIKJovBJGtfI+g^eL+dIsMO8(KM6v z$6+X0kr{y%tEiuh%m}Xd@1Q(A^=Hh3003dWiX|dRxVV=^Q@Ta0yKgH4>*r!xEzPnf z0I6%$h3msFm#_oErw9}*138N>&dLIdbF_WFwN}L;;w6CDe&?^j4N6SpFQ`H31_EXH zi9}?aQfQ5?lluK9hVZ#|$QPJy+KsmIjZkz+Vs(|{imQ<~6!WrC&Z`P$nKjcmQXd7Q z0L5%WDTkfzCCtoTtE{$qt1=wx2;-YSl6ovE^GIAbRUMFZN%(E+X6ntU{7RUy+Au{* z+sq$He95{w7^Wj}`HpI#y0!NVnQiPkRV0{oUE#R-EmclLORk!ka&Gj%UpObtG?ul0nVp|r&aC?E=w^^-?dT)v zKWFjt2@8f&bBYbxePRY)j z_-=S#eYBa0_7zlZwpLH0_Dc-x;_rv|6;yqnd>*U#!SFt)uAu5c6lm}P^rc6M#>{xwOvyu zli0FNl|)mEiI|UV170dFlX7NpgIT=AJ6Yna zRKpd2|B_m(>{&Z_4XI1@sLYXi9WMn%P~_>f_-oCo2SsZDK4KXqicQp+6ur&nn&Pij zIc83scUiLa&(JyDp*7i>U_bb%e*%N8SWcuW8LYhM9)GvL)~GrF|KJe~Hmb0+>_Kim z8T;52m|X#4vaf@4y`Cky!}I~l6Kyh8 zS)7?pDq5df>Oo9K?tnJc6%Q`IvHa4+|GpK(kRJ&@NesV787n`Zt-etoh#_ALGGw{iGt4jbEM+KMNZBz}9Pnhs6QYNJOUXLWH_-q#fymgS)1JPAoj zD2q3Z9Ise!Rc)MMR&9(_1u5={?Kt)$(mce#|KK9vQ6dDTi3$95C;eNiWYQhz1~>9r znh5bbe(qERS4>7F|DIGEM|qLx_`ORp^?UQoDy-Z#YgNE;jfSuF@1t%syc%FlY+Y_G3|MQl@P2D$&@5{XcZM6J__1tD^=}N3-CEO5xBHWOCjh3xsbJ+_@zNt!ICF0syRKkLaiz+FX zlmi7nlLMZh!#llM1l?v4bhgmA$h!6dMegtgazvE4Q-l z>&jCE4FDj|h-7LKNtX=*fn9XUd_oPoC{7MMG7KmPM~@Tnm+go@B}t@LY4L-mGvb}{ zv}HW)IFcR-C~5cE=rgYP+vNfd;QMAEh=dpH#hhHu(9H67%uKUg?X8HiF5w6=B)eg1G}p)~p5wW2$C)Q>88uu=6CPicu=hF`ZJdcdBP zqZgr9$rxG+$)K9CUG(k)^08<;hut*T0@~rtU_k&8QqU=}7Gk!5H*XMs%H~My`xP3@ zjw{>!xP;bfJ3%ol~*T!y)I?u|owZ}?uhKPifi>DJQG`39>R-r@3 zYWr-P9^tLmNq--j{}|0`%!sI`7!8641~1u9YyEFqN@)m3pDHwC>qR8N5@i0>3<-!w zw8=RdJ#hPG5jJW()#IpFyha<-E!F(E!z${ueGiS4^qp?2fHhZ7jB^ zU)S@idRN4AJJ)j|DzPZW3Qs^l+7iCE7(^_|O_UTnK(kklH>v9vIMNRMqEA}Ck>*B! ztw#Jftp4#xG`RfJDn&PO>@YG+X6RW0$8yiSyL(A{)Ufi7l7z-_^rjEW>;Ij{lqP2I zw~utYS{=-kZc4skMWy-shbQj9y`^0IiEh=qxyRY>$U~!T8rGTMPtVM|qtH#1YqxF+ zSa%1*mxk}wGI7Moam>QJ1fvoc2qdyZ|w}@S*TB z&Dt8q4kJZ6N#1_7GzCD~%rbVKqTmM|yoo@IzUhCnN%1Y{8y@FFeFzV&&^M?{hjlU^uci8-WD!tKRzTR^EB_P-Q6>onMhSj#Y19t1rl@F zWh_nW1oD3ViWGYnOj8mB$>cta|BH6nKz021V`>Tg?}+~f?OJ)^36X3Mqm%<##M~5W z>1LxD-JvGnmofpkz&C7@33!DGKt$~JCV=pnmV%`f>fI;73-yK-WUhhJ=ppW@+HXh*`eATql zCJj&AAdKvtm9O%o$nNF;B)AM)!{SirAPs$^vY-<`RogYxy51Sf3yg4K;(I)}JGLkB zMKu5t=l}u}x07?uV`{_iN#v_vdupIu{nBXrip1}O0_M5Ux-rk5r;)BYPl}zgp{nqu zaI`ySxWLd3LjNNQp&xfZqVf{8(#m~tNGK%bzSylO3HQZwG~JR+qG+w`v1jF^x1gdY z%~()hZ>f!&wC)>6{Old^)|9t9ZVPrf0-6T5u^rZ&B!zj_&4F+{d<8Tnlmr=V>qSOM zR3PY0IZz*MQlGF0%UgO3K>|}^twH4B{pfb{7qT4l^RcC(wIzvvK_eBc z^W1{6j+JFtuOz(LlkR7c*i&|1y{+A^td+HLXKPBAjT1%twxE($wb`@4!fz`wqHP*5 zL{o_8k%yhMrmzK*k+P182BC#mm%pkRHvk?x^^z_2RAml|5)yf3`8{e(1QW^iEJ1xu zY`MZ6na;>0cDRk?cIcoOE8N!pi6ACnG0(pmZI+;ZzWf;_-s(K7NV9{tl2%6UQ&Ta)qD?5Rt&MRxQ_I6+&!jQz=yL}?xukv+Rj5Z>WNwK#L%$li?W z)CLrPRF;3A@h0tE>#&#b@w;q?p%IX5cP~~=6i|YF{qNndv~ba zs?zbioY?Y?)|XQ>B~;V%KNX(|seEtH%`EA&(PhsKNNgAUVQEA`8u(ag=sYLap8O2k z*k30Yk+Dlv$oba{b>5 zqo7i`9|d>S{g?}8pZgK`zC8D1Uh6Wn;Mf9dqMc{UECEx5Mjqf({3tQp_S-jG+VzBi zB?xTJ)#S@T)FILntl)-1bGUy$*H?n@j^eDT20{DCbZ0}ij#=|D_dVWJHV$CrYvl>D zU5V~aCFDYJRF^X^8;(h;M5KNB=#Qpx8lL z^ftq|tbJ57CME5rc!#x10`UZ+U{e%P5%*H@4gi1Gd|D*ken}38Fr0U=vi&bh?s#N( zB~(szRufKkbZ8XvmiY->KOm~_VQR6F_XE3$T9C9StGBm?5`Q(b{RbsQ=51h-&=mZ; zrLPF7S}Q)$bE2c~fG-SMCDcms(Azu)K4#o?I7?jmEN^);4HcPm7)`jGYzckS_vK9$ zU#U7kES>yY@hXVP3@YCL1-jOrI}Nb3`>RtLMZY6fE|38H}LPPd6jeC>2nS{hDVo?%B;wM zY^J+N0I5;_I8-=P;@Z#3CgK#t4GUJIv18{azIb~NbLgG9;_w97pAz3^gGyvSq}K?$ zM7k2N&B3zLH%YDH#FtpbsrF)Rvx++h+_>`%T@rVmqvFoR5_j(P1Gx{m+^X@!l_QL; zfym31RLKH&wdo{}aOsVjTNUhDEb;r72{7N%E}`dJ8k}r_nd&eR=^NDH8yYl;Ztf1^Zu9TF)ePKRzLlrFy2c4@FOwTdNPI9o}!QtFCvZMN($=eFp(SiP33=Z_wF?d z9D22vbVf6Bf|d+tBb7A?PhbD;BB`uv$wyM%WC zFNBL?!-hV=4E)spar_mQcD$27SkGLW8W}5{m2Wuv6#TfV9@454(vr!at0q_Fu*l?k zbFO)BrP42CHN0t0_Peeb)Bb+9OW)P(Z@ZMa^!t7W-gim8c^`!R(sxn&+b`o@l%>V~ zv$R8C^n2m4I&e#2K3AODk; z_wP#N;*VV3UoG$OA{^wB!=Nh2(P`mbl$Zk{@e*mcTXh%t z*hLVg_Dv9kt=*Tr>>^jJCk;%peRw?GVdMsW{;^`?dDd*6HH5BStzWVl>^Yb@WA`6b zAQ-i+p9KNqT^`YG?FMDIACO@O7vodv?&Il|C%t0kIrqzJohr)VobLV2v;_vW9bA;w z3E>@bL$i1sS$t=^?YY>Eiss)YDS9ez2Aq>S189IZ zLB%P-%Ei0Eqq-$=+ImO-w@%{}@qR(vJypoR0G>3^8_Z&g1hC_F^`Hr67Q98S%&^~B zFmigb%eP{9(R-{bdkgBmFE&J(fa&MTRp@stH~W%HE;UXJuejp59L~12wd7a-TKh#8 z1xVcKM2-Lf`t+%!(r5f~w(GAWJG=kuonMswGwF_E)pXG@J87Hqtm@YlepWT=vL5l; zc1bklxkAQa#Z^zT$ng@~iSyW1}fXI@jBS6x=A zAcQoUF%0TG1r^jH&gED88=oO+fxTEn4-)#U0KuZFm!*Dy%E5AS|JU+hA2_$br@Vs^ zMh_GH>FEjzWFJ4sy~W;~K9+sF_&QvuVre}pm*6xlPKIx5$8Z9^BzzAA#-T6`BPq?N zh_{T)fF>*SZe12>{*sp8h3Q8wqEjEODx>{P@785IzXIG{m}fnhEjcUU2eV~H`~+r* zp)@SbnkNqY1OECFTf3A@9jp9sY2v-a$ll6Y@pVIl~ja9Y_PKJPW8<+-U{2TX?qEX(a z*9>EQRgSVsmIuH;cZ02Muyp*>tc~PulcRzApdCx!p89(S8VE~`CJgOYVs??hFa?9Q zOVYQKmNrz3Ms80wsU#6w*KlF*r?z%gW0z#K10EQKtyUJau9e(6BKVk{^3k$5> z=FrZ@KgTmJFU8bRO#-ITnlB4qdPPlByZ8-i#dO_lh3qNR8xZR=qV1YYaSpDX$^R%f zI?>o=?ea6SY5%AZrd3(JWCY1|k@Bv}ZL*V@Y9?Xwqf9KVbhb{B_dLN!xpcw0WVq4R zu4hKoJ+PeYT%AULrPfyBR6%pW&}8ByIfFRfQrlMTuLgi_}@0m5^8_NTJ##C zfGPsAsT4B}lZ&{f(FIJ76CqkSzx&$6EEONhb#DowZu&Gw?CHN3-(?V%21rwLmJliF zC{ZYJ2NR@xDh=?P;3(?~>v|EzQ)HiZ5eAO76+{oO`CGQ4t^Gi-s-lTP(7Q<{U^Va& zQ=LWyKoZx9Y&3VLekn{*!4H{6XG3+F(|#zK_f!SgK~+4J#iX-9_^F#CvBQvuCL2^BP4D)mw4)J#DhNYcM@~YtSrXa(kkqsvvQNndwKW}t77wB3)#pdi*dztO0~k%4R)UL9VxG2;&eVk-R@)b zO-t2%S?K283;krDg@y~_HVayNI~$1rpj8o3Vvd3Df(V>-S8Z8{vn$6AOKS(eDK5I) z06h>dv%X{(;pgn~$Ay}Rm|toRQ(~SiFMHsx#Zy%llH@09-1Z`9>|A_;348(yI?TG5 z^|x~Tb=1De9niKq%)I-#4~$LLOZCp3_D`C1h+hyhvR(FabM6$09W^`uLAYuKq%6IpFKm9^5-t4}H#_{d@iCdOfrfb+!YCo;fw>C;OmF4_&8+ z7KbL**6g(A1oZLsWI@Y+{Ofw? zYJXXhnrnU3A`;a9<{5WTL*%`B4J_Ksk5XZf{-ersKS_JvQ?K)1BbT&faW6@S|E)eA zZ|A7LX&}m?tCS#hz?n0qz?n7K2KSC7qO6blOh6yCBA^tPRn&nnMc?5z^m|Odh5-4r%jhLa)=0$$%Bw9LzOK@A{iW?irLyzY&y1|9aI^uYzts=B%}> z&@c4yZ^~Q9i`DDnllrKlTHcp$+x79syu*Tu{*aC{@0}wWT$TKj4MZ}-zdX6pO?_M5?zadGfv1Cc2 znKMB-m7`-hwSiM8;p=1DB8D8zk~S#fnq;^QK- z<^;mU$$~kWI#=V|cIRA5;5m0J_e7B*pVzssv8}Mzt)J}o)>6XV_tv%j-uj!ItMV^1 z4PfREr3r)vLHY#wZV0;ELc78rIleq1@|*Z939_KZNr+i>SkLDR4c7Akfhcr7LIs6i zaXx;<6u zROl+|Fr`4rAJ;?68tl3L$gbsI_3RrNAINr#x63F)%NWKl^u>j6F8&Mg;Ke@YNQfhF z4~D#0h9f6U;1K(qp)Zy-77Hw@k9LW3!CDx!=7!=&HUDU9WiFeIn2}ad zVbzV;`jj49`Yu{)>}!#|y0KeMjHbo4D29f%(Jbm( z@o~OVAZ!*TsYtKN^;2Gxy<&*vH;c3>EQlz3ga_;LGUG0JEf1e1ONfGn+3 zR_2j_AbgW);5AHOCTsq)A5FzkS%lujb&xD524HYK)5F}R+UubYEeuWN5h^2*@Lq`> ztR}!o@=R&>%3O?y`HK=c6Ua1NgKm)|O?WA(gkK7Cfo~~6LpgUAHToM%s3w;i`|E@- z(RoWt79|?~iVKUAQ>U2aA#(Q^1m$EEc7{r&_>n~ZBt(xlZVY``<3}_<85M!Zs@&ys zar0Tf5mRq_{I^5=1XokNYT*_KtD*=<)#l<5tjsjG=xRIlyGmf6&TqKi>K)B75 z7Q>4iTz)m|&CdN9qd?iLw)TZ@7#C9UX71_p*Ex@8+>1eqb*_9paqrJH-&FN=JD9ZG zhAhiZAR>FOH!EtijiuGwONxgX&B>L2$DGd$zZ_3sY@n;+<>?5&T!`Ue?Xq)~<>c`% zdnH_HF1+fNYug>+iDrN})aDLBuQ^ciL63mj%~y@YH^N)WUX2?!opUAdF2G zu;L^|MU#<6-N3a+4hfU4mIM?M?NQNRQWlZ;O3>Il?8y`Z(&w6jC4dCMdu2~-CbuCL zDxlA)@s!L}@Y`ZM(WWk*^zWlI2mcn2T&43u5kV^m=*C*ki$vR2f&83sjxAqid_C#6 zIuUtc+yKSx&k4^X1D~SEBP>L?n1gNN0czWfN;nkJA~`^z#oi3?@>#s+QIrjD0$y<^ zA&W^U;lEpkw$l!@qSl!Jq|FVyOSme?1Ib=euVRwp$@EN`Kth4FnsOEh{EOCtkkl-P z8;!eiv+Us2Y+3V$2}wa1;PetO6ec9aIQ6{5vftZ6k{?Hk%75`1p!&_6PU0c;64cIh z;j?y~IMNSQ-yqiPA|54fg``wCE*54zN3%%+*@{tPPnT40HU>Inhecv>w&Kg4@~;aa-Vcqt71j&eKFes%OM_su%5)(Jrwmtlt`l|1Num zYY;#nQ@fy#>~{bPMrX_7z?>upX4CO)@eYpUaHJ@}5r6tAaDIsUrrANbyLY0D=xG@} zHJIC%e?s&Nt_>Q6oH(3azx&QTx9rew*`<%t^--7Wp@nSY zukzn*+`reAMI7=jMI>fkeWPT5>Z5K2OIcF)^qOzTiyj#U%h)2zL#>ZMTo5k;IcCEW zq3{z>_z`}x=ZWjp&V3YC!)H79+hB5&J6zVaDyN_dLViI`Dnh($#K?)@-AeKUt|8;Q z{D4DMzP0FvIIVh55+!!dG*Rp!{SK3Wda!MAPw+hfv;_2pW2CAB)54{e2`EkYGzP5?}rew#jF&W6sIFj2 z9r^c6+o502s0rGSYE6CVS4!>U{%>FL+P#DJ}LoN&PffPoNVl1?^;A~i2{LSnl z08nw2$$polImPT?Vxb#`^5>Re?F<$6ruaM@PwMOu0w-a4A_zuJYek+QKiV|&uyDQ$jZL3`3Bz7^ngr!!nE zz}gG1|94i-4nEq$>-VPf`dCMVwTQv%MRYm5p6U{HYquJ?;G83FaKJu`3=n!AM)u_G13|G8{Anguj2pUd-v=PQQK!F?v>TH0nh z30RXA%U=)x{)(7H!VXq2`fypozb{;sfcp#Y7eX=wbPa-;=w=1u%qM;0K?6 z&8C?`b9PChq!7N}Abg)JK{5ngMZngcMr@s2b^in}U)LPGgxp@)kK<;nQOTzcgY`G0U; z7Z+T6fE2=tV{B>WR@h;s+8WPWhsYYlMIIt8@onp%rHxF98I`t+@TA6q{Ewj%yJZp- ze5*Hzi50TV=x4gVD0#g0y>x-9JCE z^NT$!K125sf@Hlww-p>!$yQeJz#uN+GDJ4eLD9e>vn=%D&WmA8Zagw?xD1>n2RW5R z>wJq8!usm%sSKl+FM9rABD$G*OwWH0SG2#K7T6hiU(d@`947p+f*bNHH;X1S@Ag0F zoY(8J+lLU0ar;H;3SJ{)T*8OiWs|Fs4Np1~P~+>Z zyfS}VeC&rbr{0#anctb;>b6{_wg-P#?4qT)G%7 znpK*(^$W6eL?>@%ML`=}^*=qd!2r4X(cmI;IDx|=&FQrY{ysM_zZ_WDg9l@+e?rw_ zwObE9A-@*lFxQ_xP7?IAC)N_e;j8&X2S4B`KV`0eLf&yIfsR$%ttVtS=DnbD#_~!N z2E$YlRLR>^gL(5wXD~}cixQt#zXot-6A%B~l7t$6_m9*Ieuv*m6I0b0__tHn|Eqhw zRjTPvUxFV7JI|a$INY@5IthWnn8J)i2en>*-;{`j(ca^2~RqH|3V|JEl3k;^x z$7*)29&HlO0Dxo75cNT<<73(PyeSd5PXO){IRv7fdV=+`djl~rj{}eTwxw<)se(Uo zPMPA2C87pVvCf&3QinhjAq|Rw(ty_7I`NmhSK{D5Ia8uUo%*BJeS${T_GX6q# z`C6y;o|VLFW~!C)6SUVUPPokVM`W212}Ya%daE{e+&PDC0Q9_V=LJ^<7&Zn5xGhzm zwVsfQ)5t2VDo-}gaX|M;;vxx|^R(8i>FTt~*DUoMJGz#uBTXwtTK6W6R`=^s?OK3DEr)14f-0GadZ_Y{eGlGyN1s3jH1f02OeOM+yfq4%3$IKP&hn{g3K+*xz zp_dxjyI3`&Qbb$#gh#Zj@KKmYbUwKZ*qJ@iD8kCZ5ZB$9(nx|Df+q^eqT_TAurBvGo z`z3g>Bk)Ik1nAu%_tHc@BkG}dL}}uUf5_Y&jz3nkn-!C+BJzIjbNULl#8*xAyQRJa zOP6AvfAilRd_ELGac}rBW{K;d3y^(d--fr1xbGA4sK`GGV_W%G-78loG;Zppf+U7{ zPgu=>dyrne->Irwx!P10CqBi)V2DDI3s<{QafUU<+Kt_oKg&9azw4cU<2Okm!s~Wp z7WoKv?gN~Y>z>0I)=AD$Coo;c5&w!W&;^0Sw&|lmj17C9k)!Ke!OR^(84MIFU%ZWRrh(<>p?+sqAXIYos#oFp&k-)Ni65-nV06!@%r zn3U#Nm9>h3p-^}gT_y1+w$tf*VIuqU4yDZiyChZ&&!lSrqoytQb)OV^(U#2omLjE< z`H7XB%g@Y$bH=BfGjO6VbY+d^+|9A3K>ndJ?BCQf5tNiCthl5kv38Qfhi6>JnAxcT zYaZ2fnstx(jm5h$CHIcmPQ5QiXc6^3P2#tD#7Ta8#7TYw1+=UMJX%^-4HHBL>EiH{ zE6JuJ!Yvg@gcYt|@+9|Pnw9tx4@^5ggr8f7*Kbh!kTaGn``oY)W0hMx%Prs$GAMyf z7pSN1yT=pV1xUO5?)>g$q3&nKLm1?0(2%oaVdBr5u>`i|Gk2FU`h`q|I};}-s<(7z zLaMZ9gaoc)ZZJG1d?Tg>wLWcNetzp1R$3ky_HbQ>TXpa4x$88ad;xbqwfEYAai#ygFh4E>JP zHSuKlWTa|GC7=Zz)7PFACF6c6R!HQCr+p~7YiGztrGqPaM5V#DvigGu0h=93)eoM-y^=^5uI(g|+o z>{rvTs&#&9=;x<~$jOQaA}4fXHp8>D7bPdF%hX<+5jjyIcKX7^qgSQvF-*L_$;Z8f z>uY<9RJJy^ubeqEo}i~#14^p0CU0(XtjNRq%?)Be>Ng$GZwB6PsD9HPF*9$%3?C}~ zDLl{kspg7>DGum5$M3vN{LU}1E=E_V;!Yl@<8;=y?*zbq)o@_qh^R;EB`mScXx2ex zB0Gbrm-QC=wl1U|fsY%P5vHv?k1u=@%hvnGJTorun+zb*P*E!no+@;Q{~M=w#ZBr% zLK6?Gox5%`Yc!OLuy2Rq))~sz>24n^`958f1A(3srX%V8ZhA27Kv2q2dD9=ulcd6# zs3!NsW==aPDXt>%rz}idHX&{5NyZ`K(n7~l*;!H$2%(Y$RydA&M+NyohSn(5DA{b4 z+}t`@A5E~=e8wBe`lw_D;`#$<1NH~9P4n%WCw3Q9?OD0PDr;6iAbVz#59@f7rMgZC zYIf4P+WH2ap1M?SQ4?Du+agfV2~*1z^YfLG&FXx2IiC?o(AKt1EkJDFHNx@ zDG%H>AtwkY+7>yv{L`CBN+tinPlELf5|z~DBtDti1DwXT6jJBZtg^%QWG4%b{MM=# zt23)AVNd>%ybpIJPeP~?*n=*;<}cw@YUYl7E^X#yLjIPC!JH;@ld3UX5tI4O2GiFG z_qAu_OUxb^DV)(E2}sx_-7{s+;Q?j8k*pl)5~+#bJF#j=L2S?Ra<0MM#h2)w*1Ut*I-j<6^G>e{V%td-4xe4^Jff)Fq84M(n~L z1EQl!u|aADT=2Zs%hUVa^c)_h>MKGMw3fL?_MRgF6@= z!+Z#ReUAb=tMqI3oUf(kE1>2}`g<8wGG=$e0;ip@!14I3B&WSVFC>{Nm1-WB(8C_*mFuqP_Bz z%&CigBNA(oX;Z>Q_L?^yXRm>|dp`CWn)<3i#5YsMB56 zyreZtt3KlM1$=}`s*n17*}f5t@i(FBHvPvB%zTJ81@U24E?xdCf>8a?b*0czfSI={ z0^|x+D7#f-zUfpdjgpHK=GCcrF3BPz%pvHLnFRfOIzb;5f^8i@!*eXz%aD6eyq`Nmug`nn>1^pfhGK3|qEXHyqKz}OY4 z-XtDNS%&IO;;WQbw&vW)?c#6xtB?K;4zB+=I2<3Ctji>4UD~XX;YL{=#cx47E^dL} z&gHcgF*L$&7Ye^!sQ9h7`GgqS;J1yb<$>RN%QIkp%krG?za-0ZGK1f`G%#1|taJHo zS^qRJSMl3~^oL+LBL{advi|@8rg3hLw?asb0^vR|VvFWY7^4*u+_@?(+ zXhIv&Sp9klA%pmv!4WUB20et4xdw^8YoHtJWsk}_phvY3Hp^Itq}rqM3vhAfX#CTu zcON7=A@e+NOmrfi;n0a%3%!O-CF6=XOOoW95`o@`oFz%BB}okSlCT~KR!C-HACe(W zq&LYt3~?}gehF63P0E+}knK7&Ij z4hQQ+D4^l+ZtlwT5g30UVtGwXdLLr(DG9N*hgd>A#8T)H%UYmtU1Aw}PQ-FQ?>$gr z=_S7}(2FNx9!7Gc(F?kA{K%!q7)|JK=OWWxK+~w;;=-mmI2{T&*ipxb(XgDSAOE z?ju}0Yes|%YjJ+)1s}pdgc>xBJ@syZM8#)(%CuAywn2>KW=YX)e% z^pcMs+;A82a%^SQe&n>)3QD!3$tmJ;zG#qCHe@H?{*~8?zd3RQI(a`fO}}eVeGY3e z*h(9LfJ{5mF>dr4mBu|=ljTUWaWEcT1$y@RFe1q?Je`4)=tWIfHzeUDj9JNiA)`x- zofKJI0S#5}5)+4CjagbC=V7sQs?C&{W2VfUvS4T3T29q#R4_*ry3?9G{c^?ic#vZ)I1%t}LJ9E&*Zsyfwo6g6;E`=6+M= z&s)I}$K!ALsiM|@yvg$mxb|nii=o_Z16+*W{-QzB=lYV8YyT)xa_k==rMZr~02?&T z79I5EP=ZOSnfn?(y+}!X1+L-4FK01)u&*^=K(G0XBXG`O1ogX27c{yw--Smp(2BnP zWg(gr#h|Y_6odKW5s5F9MlnKC9>pjd$f1~_1E(0}!W=NgOv7gP=lJtWn}8 zD2g0b4=b5w`0x`(k7#k6*NU7JpFwdKq?1nyM@`5hopUpWkX7d(ZhGlQgWzcUsMZgc8Tzew$FFsBtNy zMiB~`GE@P9JUpHH0TX2RGRk2T+Sj_S-%9ZEaCM#7QUp8sNudpsN#mSQFDHP+61mNs zvxF3$Tg^F|IW?flg`kQ5m^U=^b z!y6=od0edc(}ys1L+O_T4r6BOmml07%7}PiDSCE+@)v%%!OYT+ZZOkHh9cOK8O&V8 zei&ddGbLpQB^-U`DCSy*HE<`u;EoJC@0cWa^l<@D5T|CV|M<;$H9wW@**k{$D?rYP zVSazZAjL3sL+Wf&aZFMZMyMDf`3Vxo1Ub%$V~$SE_aNz8Dvs%djL}xupdLw!eew~G zWfI7QZ59U|Bj1=!Jae`dun0jqVVKie?fnEQ-CT!(sJ-VSSor~UsPh=GY!U^^b9(iS zRyuwzH(cp_apRTBoL4qGAxmQU=N7W877ie*F@TWeVAI2ec;y))`WNDry)z9wYh7RO z#Vb`hi%ToMo?xX*D^9f1`GU1Bv3*4=Uc?ewIk$+VROAknR#blVAlvJI67-@hcQ3ww zAzmrThfXrgpgSOY=;fPkyfTAcdV-ZgBB^MlOFT}vQqhYSv4mdEEn=CXmjOg9&j-Ey zk;f|?x3KuC#6oYAXg)#7^vESKODA~gL@sk4Rq@JAPP}qcuXyF?WB-&Eue{9hf&DSX zD>HPr-uCc^V5|szIRVSv>AG8=^h$?_e1*QV2Q0mGfU^aUmDc8ZCi-N*_R0kqY^_aE z)&CGt=w+Fy3~Rl{kYi53asY|ez5Jse++PBT^n@RAdAim#W-2^nR%J+pxjkyV}UYC6ME&%408N>;E6M7@kybXGbd(x@yQhBoHj}G zLVS{Bz4Tg^KDpIBB=c)m!VE@ya-bxWicb!JWHR%U2FYLcC!xP7d&eW2)7m>jp)1JD zi%=%yDoKbrw+N+_>(K?>{~{Q0hs=CkI45YZdPwWPgD} zKkrC9E>rHTm1C)TfV0V+lsFs|HNX)&$9yt`SX$(9G?7R7-b_%D8k!;kkTjJA~M8lMIMPug1iq{C^h`<2_xl%(?lLOSNz@3(7d~chN@N!4gLEnC+D$l?57=HdOC;T1sZLi$*50nmT^fY$DB&1GF_!}7_~vXpjhvAa3kp)>E-HD zq%P&^oyJ*Rt^M}0Le2>GuvtyimkHb>4-r|rC8lyWJXN$F1=cU|0 zIqcMIsG9W_RkQvvr)GWGzr3G(kHb#Qda!5OgSz2B83diW^*;F?q^>dP!NIR!Q>t!@ z3lc!~M4yb0V0vW-Q|wi*JF|Uw@T=EbdOW0=)$1*p#T_KU#9zO}9A)eUzZQ6qU@GZj zPNf~RMI{XrOvS3W!YybYUOk(-V#?UTNm>izeOZ~WXUhz6sY6QGp^j8NhoX*N<r=3<-aa*^!QDk`rQ7B!|~9yoUdZ`7Iu(`vcse-!D@r)ZbnD{v&WolLWNX2x&Y0F?& zfo8Z(lV_?olrsO^|06gN%Fay{vb+A%_fgNDxj^nLxWeRYwCPgo9A-m8E66gKZvuBb_DlT_633LAH+26N(IS>9( zPriJ2(CXP+`jszkq$hJN1}tCHT6|RH%b>4H2EDYLS-v!xxg(WuY0E5R7m6vQJY!e3 zn>0dx2o`tFf=vPAhE1BrpI}-g`{-jo3ied87o0sa#9c^1dP8kfMD-yVHJM6VZ=<FR?dg?Kd8Hz_1@9aOx|O$zB_T&62*E+{_TAsYqr>|N7eb^RJ4C;pm`&i zJn@2j%BarucFa&!&+eF` z=SMKL;AQPw&)&y-;21t&(MW*r%!ZGbFCu;A&kX9-uNHBEV)~_+J}Fk`rJg;LVp91c z1EiSqA%FgO=>@|lMK5PCe0n8{{BEF$BAH9|p;C>LpV-F^T8C4|_2~3*Lib{9=P5tY z6E}|xV!8;*+iCI>Ggrjq?N#ay=^|(JwkhSUZ~SSHJJv3h>iy-597xL-iFHNjkVp+UEe&v6gT%V-B<1K58Ep3#HyL#SBiby9BbFs9 zsc|GpBf)~=W_?}UIjxK`$0XJ20OnJ@Zbr=IT0{jNbwetMt!P59(eIRxbY$HTKB+pL z(A`sR=d;wQ6W6SZ((<=W6}K5#JW%LYjI*aqcXOQb=$-GyPOL+J`07B>!9Qq4eWva(U~TUFRn+&<<~{;ZQ!fgX zUiDbmga7RnI;K@+oohvXzj0HQN#s`4_tE4$$Zd&YpD&6?9(!Drk>X4p&Mn4tHEd$_ zPOXVIAV-Hwsz^35)AQxe7$6Y1<3C6a#D8#RpMi@&ae-dEekpz8bHbUOEQ1W#)$>wS ze}P_3-^ixV!YJuBaC*UikfN6}_zzOp`Dd#v$t0Qe!coq_8@g8U7q6aSQ1U@CLp|r7 zpEKx|X%FRi@zZoklLiJZl4ij5^H~pgr0ynVkZp@ z{`-&4fBgaTMF(9=aKz-mTp4yGy5pqJ^GyIIT(y;`+*Wr zD&Js00ig3`pSNY^@BESJbI=d$Z6Nuhy~3yiuD8#mqEx;8fFj=Kr{4a3d)@|})Ai8L zH$Q{`>PLls{>0*^AE&5(0P)i!XNjLK|63J1UGcSyxM_O8^cw%krCDCQbiUGl-)Fq^ zU%Yr}-M z>42h@S~KrlXf4wgsRo?ak$q|BZZu1lP+)eIxlFT$g9{)HI0YBrdyH3b0j{@hB)lAm zyhAAD#sC23trtnl`6`UusjM55f#4ASCSgsGm zhR_wNl|HIL=REqa9}Vrli<ENW_XrvhtM%Tc z8v^De*bouxHZAftrQwSLtwC!M{Z<*UT5CE`j5@Dt-Cqgzv458pJ{lq~;W}%Cx5CmJ z-kPUYnB{%Rniq6d_!Vm&FYk=g(I?KWUi=(3W`BcK>nlkQWw~@|?R>@SrF+OK4$jDF^Y%QH|w?oUSS;&Wp{o3M=Eky`p-zbf3D- z)@tOWaC^?>k_|7FiQp%$_4#g9od_s2jg3(kTx{&l&beg+iSZjGF@8fZ%Vi&Z`VlN7 zvt<9#MP8Hj=_{-?nsvDu?Xadh4GGLDy4<%|(`kFq(nxAZmo=SKlmy8-qHgp;4_&si^NT+OAh6BlI*^rLOo01e&|JEpmdbnbvxpg;#Boxu&Yi9HSf;)4?kN zuW5C!KF!mebcWOSXkZ_E)&$IlcdUVaR{T-!0=&O_VEsz>G*ScF?M#8FRwg+j+?P zl65ft<`ofmNf}L=Q58GWuC4S6rH9CT! z^Oeh9>U_nh8`&9`>z;E~rqQSyW(OZ-ar<8w<*Xgx!le7t{`A+USgp@tN@h zK5HZkv{o(9|50bLLed0_4&j=t(BI1n$->2t4L$oJS(6`?bt2hI*t--|mPSD$ z#uWugStZPUlw$4$#oo?6ZxrNoWN<0y#uRv?s?aa%pNei&S>HiXIG}1hMb%J|N7Y_? z@3T@7RDFo{-cXU--rJPk&1x>(RT5!*`c?92LPq~b`Ys6_`RKRAD&@;6DWkwyrJO(Z zRdT=_`>c}6gBjQ=rRv#Ses>;LN<2enSgCxLNluZpV|Gqba#A`#-Rh1uOZs6|bD>$* zLHUEeZq5mM)khC&ZquJQLaoE7I$WrJ{4_s`7O_UV&Ai;4yTqIxa73&tKPL#VR(-S` z8ubA^wZbZ?v?f@K>C@9?&0M|6TFs7Wvx5)g>$gglpq;7qAHn@!Z=blcv8ugut#Dz5 z`@(1#W$|IesA9PrJ~m8-&&9LiN3zXgay}Cicbdfw1qi|ozZBt0dSZ)6+VA$3v>SzG z^e<`kXffT7hFQ5AL8Ad|#*wm33KK|4*(TknW=x)xZ91)#Z9?>zW2_T3uf`%CF4#?3 zf(mwpiwZW}Lj`NS#9SQuDer^&meV?dFJOTER5Td>+eo!{=eSbsS(yTWJe&>KB!c$1 z3?vqCWUbpyysGJ}^0otcJLuzbSOrPl?9IdlTdQ8BBVw!-pc}>*|d&dBC-AnDP81tn7XI0 zdGvHo&+xia!~1!!;l1Gw?+tf&2mSBL@J@-!T=6Uu#8`T-7mdZ!6{NKFYIN621hBJS zX`=T#J?nKk(R*RN9KJkA>s56?(U+dNUR{d54){CGNeEj-U%q_m0uaCwFl|79O);Wf z8uC{Ja&ZIJqgZw8COSfv0tSEa0TIO_JvXvZoEnBi0d?5xe%~bknH@xp@lu&USZe0t zfVEl9ir};Ovgl;RZBm+iqkJUk;gD6808Wl@Ewo5~JbLXZ__Q#$TR)bQChoNJzKHf` zmIH8!6Q%h@u~n@v?SK8xJNF-rysg*#gsrvzcNV^{eU9B~P3W;)>%~5D<*7Y+qXVjW zsRGc%nW8{78JJ`%iZkU}m0;8mc?IX$T%2bOj`OU+aj497a5m4;d3FvMoBjDHj(wl8 zi9_XWbAqLJZWY?pYm|W%g3aW%h~-2FiJ2>i!||_Z)vpRlt+IuCcoxFXZ!T z9mL=b`dK$t-JF;+#;R&F;()FmV1cKbu>*GQ&t%m6>VL)AHr6f{p3M-EEA@5B-?PEW zo7g!!q7;8>rL}kkTHosZM~(Vm<4F`Y z%yG3z&GMu@`6p%!HBZ`2cGij3r*HUY_MshIsZ_kSns@c}OF3Z1T5jKLjS=1MOR||! zX{?A)hsd zm+U-5fsq~jq3E#;Yi-JvFsLI-%(BMf6qVs!;|=ZD71!fDOQ^AxwfkRYT;?bl*;+3 zmM5*3J^!D>v0aS4u=Jc3ZaZhJ2K2{kPw>o&VtKS9ji8}B5pGfEkH581(oBp5V24C%Hx za!Gut_sP4aTy}>}>q{+9nwMCI+!!sb`GuKmE81mu|4>qdRi=)IOL zz1R3A5gEcTBN_!KXmei3r1+9gPRPZ|J>5#IJ*SmW9wTGtz?MMlhgO}+(;@j z9&tA2){}2EnEN+9UUb~$Z&mD&0n*f<)A0uRm5Sj`|s<>LVU<%trmP!b!P?3rd zj*t3nXhyUxz2>uuW@@R5)7O8}qnWgny))2E8o-u{NStk{26tB6s*7GyNUvGV3w}7u zO8MAcTW)px4Y$gyZ{-AHs=vgp*dgbVkBa z`FR6Y;GF!tLE~>9Rmy4WLpdRra(o_n^b{*8$`R7?eoAi!dTx}n{+uW$6(1Y4_4wnY z9@+9rk4u#&W!5DH0D0sDp&^1|IS;E2pr+FS)O0(5Dm~6u$Y~PeYgaM8go^Pci1CT9 zMPFABzKRiTNssZh8&xgD`1tX=0=@z;%C#o8*o{lf8G-)HIj7%4{`s@#d};Qaz=e7C z+*pS%T(IZxZmA%{$F`_QVn%bhKK7-nfBv#JI}r6!>7Us>g7kttXZ10!KOB25pzJvj zp<>W^T4$Q228E}6OSjv^?cv#N;~bJ1sNJR;#yN5CG<>Q->-u-{JS zy>j()!YsH+BNyy9aU))^-@>lPL$A4Dzn#Vbf5CoB4+yvl+XegWkIDNXde$Gpemi(3 z`|XG4V84Av@-+#`IhmT*NoL0~6=s{cnrsv|LPx%)is`F#&7?JRiR7a=5jxeZZ>_k= zoMwHbVqSyYMqJv<(>!c7I{KkemEd^NO*+vx{Eh+vDUJwA@a`9U>8z8WzFw2hEPBS? zD4EfjJ;6ICOH*ng2;Mb26*|Su%kNczhIXsCxwpV=S49x=i&fqwfxDV_d(t!SK5crY z+oaV=&s-+ynW~ek|0F@X?zyg0|Jh?3L{Bbmmc+~xJwdybk@9BA$ZY3V)#BY7gkx2- zrz#)@aVW%rM9}V6_FeL{@j3+t;MsTTODbN+x4!YZru2AS|C66qh4Keq0Q?)rHm0qC ztChx7RG~S&-x`yy66aHszj-h>0^>+U6Pj?ckZ~!|xh85(h|aZ%BPPiT_3bqfES&U_P#xx2QGs?JS$IkXr-@}*Z;b?(YXPwnexvK;%;@VyWWIDw0l5=d#Cuauujrg27%w`fz68851K;|M&JBQomaqA6xR(%*lXc*%gG)TC2S7Z7y&qEa z6D5mkVp)GAlv|DPVCN&SQUN&#W_0z=wJ-p2jU>H*T+j>11-*crKs0sMIRUwgJu>MX zkUI^Td|0w2ov-!Cmem6!5%N<8pFVc?rjK4>IEOymFr5053d8ZO-!R+&=tDPB(dz*+ zE7=ibW(}U87gD*OdwR0oC6yHeAeBKLh9hRqKqm1FGEosY$RsTSmrRSmIg~;KPAEl1 z-~?fY&nf~J_9&%y1nxAHat?e<@|6a0eKPo153zjM^5jS#ddUpFK@>f~H-~t<;G29~ zkmY52L-FLa@!6S!qR+ zISV!htOl+zZg@Zn$RBVzt4RV#A@>tS?*I`uBif;nLP@T5k{$*6x?E|gPl!02MRIoVzWqnBlxkkqYp&sx=cU+u|53iK|1@9szlCvC z{kj~qt|Ov05(Erl>>e6IUnqos=0zPS1PA&;&=776w2t&}F9fau;0tL>e~$U^=YTI@ z&D2QWw@(Lr@gIya1&aU_f>+`rAbS8`=m1~TyhI8t**TBY!B1xe)OaP0^xRVT2W`j% zal{C&l;jCC9Fl5BST|D<60n11moQHMuKlfi9Hl;z#w*sud`*BYn)?I52=)cQpvJKe z0EYhKhb1Yq2L!_`JM68zR01g6lXM)6CwTr@a4@8@WhT`l)5P%oL)Jqady2uOR^40j z%^W;E7=|<0KkPW!Z#QXDkXHo=#>8?ErbtH@hNM4T44~B}2L&V6Z0#ihx;U9b;;leo zP>mp97;=PC8W#~m{jSw?$3A6AIc$=miEv{I6eH*3nN7M|KV@|LW1nk)_660q$3}<)bgud?K_ay(jNmw0CS)@RO zA~q=y`8q%JlQH1*FByD)(`N_hZ+bo5-}FM7zbSy4 zry@C!Wv9yzS4zzVe-m&ggKLkS)!(FSWhZ;Ubvt<`aw=aSNa<~vvH&FOJJYZ9ab*TL zS>Gc)GawDMRVCt`#titd4CZtLt;YsfH9&)TaM#E2#_s4%9e)si(gl0j^UwE~0q4i9 zBxz}$TS+{zNRIfM19K~-<#`XtsWG_zoR6rze8Iou#*+SY{Yzg|B;)v(uJ%agf`2LK zK(Aeb!u6uc=2W;aXVbnCz2%GVPu;)t_hQgx5Q&3<<2qvh&_P#E4FeUhPuSu^a5H`4 ztZt?^&g5qLCLSTz&9qTII&P)|ZoO@~x2aTq?&EDbobGMP<&-pU(-6L%v$yGcto8uC zO~}Xd=5P3@_?ylF-r~$dcKuBXBjiK%H#K?wroPUm@1Dcje+d32a5j!Tqs-)9_^S%5 zs|R8CB|+G&a}ah9dVaK(D#K$Csr1N4fZqJbaP;M@vB$v33D7 zvbynvu{{V(KzWDbr~-4Ok}M_gMg&jBjszY=qQbyaVItD1S{Sd7k9b7{y+JgiPx|?^uU<@!AEZFAAID-9`KRt zW?2V;_t^jDyLDOmdg%`hKf4+nxd%p7ORcsqHbziQhAF6$)-h8&B$L)0^^rKAPyaDM zzye_cLJxo{hm1F}^l4N9jbNcmDvi0xd^i7Oq%l_uyc-P#V&m-Kx8&0J8&_B_SMQTb z@o;0#^_h;t>XG6Jv_@OIyqfR^F7dKXw(Vd-wf*8U1|pRvw&=Fc{|oL=ZgY? zj5|}kV89yfMR?zm*K;GhN6*{q>Fd{W@AvzP?R^)}41QegV|l$ocI=V7>YZ#$w(i9_ zBaMC8ZXd6l%14RKJu0!eM}t}F-3!G%y;U>r>HyB*Q{*WMD!p=N8{26S9&~_S{I3ZF z-MV*$6IH}De&<1Px3FwKvh8iEEWHD;&&5Y4e!&}FOwg?Xa{dr!8hV- z2lbk19P<>QgZlc<%PA@<=3x~L9=rJE2bk)vS)H#4u28fCwy|6BjIu6*5lJ(5qZ5pX z28b%Ea3VlQH#?%?V1Mx3AWVi8TbYV?*m~IsN4#-`!&iE9mDbCQ_x!O-B`fZYi&?*% z$(xKDHi;zJq=E2$b4p}5^E@?N9E=>&*F6eeg%dvUgaybmtVqpW{E!iKQ1T+riiS$9 z@}Qu3$D4D8%)CD@R3GhPzI=33RFbHh`ECDznXcxs?zp_}iTi04rrxh+^zyW)%1 zy<`1Vxn@;|(S1c_ffdWId3Qz5!o)*gI>i~RWp8!o-`i`0VHNsD+8&$Y+huzJ-aG_-vILWmFXuW>S~bOlFb{FmeYOZP2J`iEVJO#fBHajC z;YCPDxCwB%9ksiC(S7OLZ(rQq_NU!;5#82i5|)X`Y6O36R9d6bdSlo&DhmNA^Z%ab z&LjcfcKiG9=d-rt-g)l5&vTyhoadbLoO7P@sP_tST-&e8OY->qYr%omzvudEt?0ly zt!;?s=Z7_)x~JOn!|Sw;FZhaIGMdMNhuT(}eSw5Np4CdsvDYkh8(}M6mLgfV5k67e zyY2zknrGauif6n~8d>mK$0SW&m=DbcU)yy16W6K%w;3LD^}EQG=R==q@Wnru75tXu zl-u;l`qVyAzO1<`f1ff3^aHqaweEX`Uc$cOBgTF5aGl}z80vj$EPlyUg+{fnWc7kg zpD8|Nj+>S4RCLIlS~wJU&#bk+KHzdt1Tm1O-o=CR;MxVPF9Mq+8gKTFW|>1~`64J~ znpqPiMXo`j_^>yfn@HbMM=|6T!(avEJr7T<2x_|p37>RcBSY2~7WsgajEXy*luiKG%^q2BT;t8#{KA$PuL)qxP zo$WK6v1v_>)(b!6=a*E&mu4E4@~-btUeC?`zvE_^djAsn?Kveic}EwkZ?4XKbD7@}E;soa)bt7E_}mc73B&6rP-Y8zYmm?+&?7&%RaM zGxg9S;+3fsIkC=WY2jq?Q(VpQcp1+36Iyt{B+lw2S*e1{m~3B#$QrF%`H-BBumvcf zOb?IcNkYfkBCOEbP8YA}?S+g)Hz+b&d}d=_ygVz|*S5rLFX%}{wI*wE@O+A5setEw zfun(lUwrD}>kNjegRMc$re0itReQP1dQ!)Is3^ckTMIiT4+% z_kA=ot;u?gS8O2lEsGq{95XCbyS8ONwBk_QN@ev^{IiHWPQ^z^+2u2!%g}u0YDrU` zwo7tK7WdX0;bV;x`t#a+*HHS<1N^}HwmfLRjymIQ^KlJ70I$^^DTn(Wrx~&%Y28=y zu(+2a6>NFh;&u(C+PtYYPpZwGDo)+FGPT)PXPx{D_G0Gb?V9spzk@?yrUiRFBckBxTYdJU&GGem%K_ui;$J(y7tb;!{S9x}tYU zr54tCuB5s~4?5nx3jneH}XU>?B%IUxgl?EIZ#Tf_Rn!cuXo zhlhjZdD_m$Rq3&^Y++>#22~FBk>WFK%t~LN z(xY{+SNHxvrB~}_UZyt8-{7>qu^dE!Cl7L~m5)=g6J}|t0a1(_5eWI5-aBS=!0miS zgxFiZ5n&1DH6jSsd?QlG@j6C?q>lwg2QL&^xi_CrF;&K$jq3}-IUwwW_U(jGlV`Oc z5cv?+r9*SGNLxAblIo3DRBSn@LxF!`K1q?rw?+~raRXt83a#g?cq2j(kUr#dTiMXED&%0ay z9iZZscNmrHi+lO4eZ9A~$@-6=uqzM0qyH;jc_$CegU?w!IK~6>pg!#6eo*e4wu|6s zX6w#aD(0u<4erJ|ocF1i&-IMAz=dv zP!`YcL8Wm#ATaIjW{l01tM4F7J#~%52-prt-uz1 ztM$zTe-4Yj14yhbXi zJQw%hZr&7MHv6a*Up9-OHqfjp-AD0u>cj47{5VK6va3hkqn~FdteK#Uj*1^cP+d{1H=2S1u?-lt|AhkNa1;87xj%|+VII-7qo@+?UX z3GlzURDULG+QQxX^4+o|*-d!VKTY9Ha;x|U+}-9MB)g4q+7wI#rVt))GHbTOmB^>b zGLmG-AUDlR?gO+5ULyI9_RG2eO#&5%GlQh3$jxbDcG6BK9w_8j_p72oCa$F)OK+Ax zY^au!Z>YZXX^-H3XoEoO+^i^szU+8*GNbU4XSH5)mCA~j=k`0h+ z;UU!N_Z;s(n>yZKBTDdR1N6a3!dy5%>%fQ9SDXM5=$jiJKRtA1@9Ck=cE7W>5p}ie zGfG|k+)ZlC)7f&hG`uY+$mgoGNBX7!oUmMQ&PlMEVfX843Sr%>h(!NTBFTCW zj_`pL!Z95mNFi&B6`~hS0k}Z8NYWi5>@`@kodoBITPVfEq^sr(tX^hGzettllSmcv z@&+M;bJ|Xk%oqpsBB)#x%CVBjc5T-c{93ne;yf<%Bd7c9>GUT3CBQZKtxj$<{Z;q_lHx|Db;NZXExy|EyW=7<$n|PIBir6E;15ijb)h6o8}MhQ(Y{tOVARklybRQL z^0C%aA~>%eJDsp&|E?3vPrFfgM1kow;*3_svPyscp)+B`ftVmzkTvz{Qm_b!axf{wH*eD;ma=p zOAdwqNymXr%xj}4#F#zdM~^@dV;SiNW^K2^k_={T&%*T|gxQ=A!t7juG}}4{g41M; z{xcP`j;u6UlN>XRS>FU^1?>v6YCE2d*_{7Y%(h*BF=j)6K8acAH!(ct67gM3%el~L zF-fu+ zIDak}J{h~@R5;IrDT$$U#B$R%C3SW$VjC7a+|#f1$g%DFm56BesFH4#+)gcHk;f-k zIl4$gAq!ayD94})S=HDK40(oEqjID6^}eH{wu-5^nCn6;=UR_lr)c5

>|kQZ375*SO! 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%0DyifptJw((%G?5 zm}+rQVlV~Sr|GOjkMYiB`dJu#+Uofon4(3U>Ry%Im_N9D*$M(#%lcRC*M|H_XA5^V zWgPtxf2ESxYzZG{w*m*PvP%ImB02OZzX%QORya5Lvq=@0q*fz;)|%^Zv>N&IIj)gE z&k&tF^%oiW!!{fcTw`@U55XgU{K%hXSN^O`%byi#`9szPYqJq>1NMrv{CS@9*eKv2 z$KJ=-md$|f92$VwVhnmzr*W5RT6K`k+L9=8cAko|Sqv0vb2l3o_lOcO#i<>!5`V{? zyPy7EKT-CHxlSx)l{I&5IJ%F9D{ZD_@;DXEXekP}-^%fv9OQPgSxq__#MeWxo zs(wuTTgqlCk>-EsCGp_fW{bgOUsguJ7j3^1IP}flhiKwbBvje47~PX@h8 zg|N9;=s|EO4_9*7=epXWT`_Z0Xws{k?Z zTh?Bg#_zLP{35@EUqskK%a@j6Ek$K*zfNQKNe8Psv^Fbp-w}lNUYZPpVg?ae%}sIQyTW}`JEtq{7m(!CDn)S>*&{qEWV3g% zl^AfSw-k9qnI%NkmTo(OZ`(lUQwVUL$ zUHS+ix&5?V)_!dwv_UkSmcOFko1tGeodkV$&5u2GEqA2>B)$?OLWpfhZ zuO=)0`W^9Cc@E;QGQCGd@~_DVz@Q@l0}_DB9w-6$fMnSDY}dNc2t7vtDoS2{Jqf@P zt`{NwE+lWjs9jA+zwbEGFNy7$mVWcn(r-SbVF)E8Q)0hNI(E`yFV4y_BQBwkLna#3 z=`FpO6jlEv_AvR1xh_W<3Is-oBnG&~x;W{Q$NGNp4x|(kDedOza5oQ(X<-m5Z@E2;#xgdUF=xGE#$|I&Wku_u&&sWOdCZBPT7k4N8dwzDVh@#FRx0GGIQfvzgL zHe^37tzpfDQBJB;B`4<5M9e;F%!?S0%*HiXus`}-`(?!+BykK26C=l8^M9+uI0%IVzFhzzrU z9yaF562y(7TJs^lCxb($Vq_ph+Xq<9?Uk&;4(QY{<;s^tZLhz!RlIPrXVDXhh)Kl z(mRDF>E8@Wv2_hK-U-JTlx8eALyhB5x=S3B5nljQ$cENsE0$xMy{78xmay7y+e^8qnZ8X%C#U?Ius2R?Q@?zF@8qUD$DJxL(w()KJNJ&t#-mN5o^_ zB|l%->QpWi%(tTmuqM}hYmflbLE^2eB)CXL;UOhoBJj^rB~SvJ$vUZ}FGlRruQ}rr zv3+@*?49cPV4^vd2$66*=0Rr6^(1aSv$A_u{!E&PKGF6HED@@X5Bt=P4j_MYcsniW zJO82Hn}r{$a^c4<=D=TQ z;NN28q4v7o{C4*&pZkH=#(v<(Pyrj$-EGYws9?o14RGK+)R z$y`~SoDwJXPvXzt27c`3wj&x@HxC3oBXt-QzT`c6W{Nn|6Y@LwowPBAzRB%!FQg>; zzC$GS)OpbN3{`->XG7l~HP>OXU0EC0`s~34^R)eV^6sCe`x}S8>2ApC{5HshxP#11 zMiV!Cu3On~Wo_;ix;yZln*4XQk@7ukg?!U;kLn%whena z?xP(jc63@%ra>}?v<;tTfvT>ZW-$0?rpQWUZo!66tO=ETqzliH|mq~f5z?jLO z^_t8nR{iDA`X$$-6M7nd)}x2Uj9IFqP2di3hpF+!&CAJv5{Gid@JM5=W@aPal=>=)2 z)JpsgvcMi^@?$pYMaU53%rbW+*80g2dmwQyicHg|Dg;>(3xAqEVQcN{M9CF1-vn4?ztntFmsn+W@mKS)=8M|Cfq1uf@kmkrQqmD;lKIE_IvvyuG|tHh z!VK2G)$=~Rpw3gg)usz62kc0zXFC9|A9T^kBB<5VBXeRBgJcMVVK^x}Oxwei)zM5x zD>W3=8jAkR5QN4HD5Gb!fjlEYxup5*WyC`D_UKeKyKSRJ00hUCco;*&8 zu>51g_O8So#x%o@h>lRGj4lr|@ho|Lt^r>os?L&B`JK*nSZZkk!$zNrjLC0W;6LogqZ z)x}4AAhn|HyY{j$z{@TdCG(1s5vymeL;c1}%-iDZK)?YJy>#n|Yf7nCEc1B~lmkyl z!=IVRhUCjh@CMmipOL-Fl%({U@tsxgA$y%N@mC@^*5u&|ZAX@QWXB`Rm^3)_N`|QuY5jn+B%;)wqtc0* za{bMOW!)jozLSin_6bx4BTs_oRwb>@G*rH45G6_%Q}K?VLQIOLD;dL_qQHXk=euf( z-ft4-9v3Cl7Lj?)MD>)C_?fvb59QwvZM$M2B=yEyPhasn`#|3>d?b|(nceTLMRtER zlcqw)@?lhi-7~sp`nu-_250&qU5~wcWX+8Efz~Op?wNjgCphwF_73~;zNEK&#}&J* z*}J{RXmp_Oh>zX4q4<4%Ps>#^8Ut46_o$rkU10AnpTo%SvTDbdY{ek1Ch<;TOSxL^ zuI#S&bvFhEW6qb6Lv=t@O8Q!>=Q9kvH=9jtlA4~$CM0s#h+EB+8 zS`P?(d0iDyTwo4U8t{elV$s@A+pkHC>l^T0l{YKe6mC1fm(9u=)|?sTVD2bi%qW*1 zVt_AZfII5Mi?08ud=DRL2z7is?N1`_uW!qS(yq+sF3X!4Z3wmfJD>B@9<=X{*t5wk8nmCoW-GVbLEnZqmC!uK(?DhP*$$um z?12{@B$w z%bdm|X?z9Z(UUZPGN<{GG0pEoIMRG~)HJ=Kdx6jN(rzxY^N9%Z6XAm#Fn{rabTnAS z9Ari?D3daeJ;n5;EN%ZN*l0a5tg$i9r%vH_Yd--hr!2T@G)e~8B&5;64oUpwgDkHJDP0U=c0RMcX(xYV}2Il z6G}L!f}t@0FJDpKYc5u9x&8j>!5{JO{hyy6e29N(l8e7WUQ1cLgR^|%07x!0I4dCD z9GqoXR1W>SBRHXg-ItT@`)Ts!4Y1)=U-v#`vz)?OcvHc^gwvH04m>JVTQ?}zfIxmFJrKt zCppdHyz7^^OV13}^P>}0b?&6c+e@7RKG!;1RHyiS>a^Upz39Bkmu-)nPx)3q3QOCD zQkwDVn1cTzDk^`TA?odzFZ9aw%|Q(m6a8%{Xu14R>6+|7O;N-$V?~LX@c|z?BG^Ve zYi7JY?^9$m<3+=DES&!R*fC1emVV=}geVt*!Z6AiqCosXA6~f1)@u8r_{o5^@ke~y zQ1p{Wx@(Ed<-D8j+TxZ=25XgU+_OzII9MCd4>1gS)LrWztTQjwvOO>8ou`)Nq-9P; zrjELRw=TjH#Uz=fQofnjTA~!~V%6?1R>nM@nNC{`g-;%-AFQqL1l4eahM{R(Llx`a z(WCaVNA=?tD0v~itJ3=#yika#7aaZu;0)IJIU!rQXJycY`iZf!mlu+FtHCA+3w)D_ znq;^vREM5C67Tb0P#e6lyCF34ev$-{%)RF?m_{Iq6SMNPY-06jE1RmN5OJ~YCe1=Z zYf0wUdMTaDw>mEa1{W*CI;1YzRBUx#LR)&BXecvd zEa5HSTMLmjU;4GUceuN$v}+N)@KM$?yic8fF8Wnr$oi79y|sRrjI^7#bCsAYBQV(A zP_b#Yr>o|Zm3C7pFksIQM~B*GxbnWCLOun#sn?$p>a0XN*EgtE=QWjO9#hl$!B?6p zc^PdgYJc1|;{gz#HW;tz`bwF~*_#E#O1rjnWp`(TO4|mkXj7zhy4_F+^|V{gC^CfI z4TTIJSae3Wd%4z_3hlaJw2oxhNe0TE7a$lrembx9!-TPFHhW5)#Z|BFc&k%&I;p&L z_z6-8Cw!NYTkuN*mjDWsr^G#v73YTyu!gcBRaiJ z{_bY-EVr$-YdK6kujMBFxq?5|hE@?xtskU-^`HnE^43pxt#9Phypb8aO{2kUQ>s>a zol<6qMlR>EDdN7mi7~JIZ zcFp$81_A06kJYK3Z)X}jhfaOd0P%mbQ>9&Av=YEp;}S2lddeaC;fv|lvRh$EZn7-N zy{0KlOW;z6NnxrICVtLLC6r!FLte2}MbS*G6Kr_1<;wLPz7#!c{fu457Oa*_nP2)h z>}e^mNe0;ZTb}s3*$~jZw$NT1q5Q`O>mn4_aF`!5xG=1E;A?$dOUwLN0k{TJF~_Fp zUnNW1IdZ{1%Cw1783uTt1B{WMK~Z3#4k2JQ&t6^GdgEYiP>I(EYeN_4V_u~%mfUQ) zC|79aNXyz{gO3Noo{oa}1BIRkCl6K|g87yXh+rOAYJXfOKOk$A7qE=kSP;}Id_-GM zitK7%{Dg1q3GBz<7VO7rBCA?1kaxZ3*Fd0ew@$OGgVE~3whP>*NA{W%DRe7Z9(mNB zS!~}>VJ|4M9=<8!T@XyI4tt5gtS+8Up0v~ud^K2Ym`D9={h(bkf*~TxNZtWRrGBZ$>Ol0a;?_%3wOSSq4L_p^GAr56SRk?#9rX$7 zBK3b_IJ2qv$zM)w3MOV=(A^a5t_{Uc_^qD*#+R+F&!H$b9BL_D|9OYlme{o-Ho}=| zXkaY81);a5Lc58T_m&F=Ya=w_8M)MQR_ELNrB6D8v}Zpp(Wx6v zZ|I6Tu?%d*Z=WMdhg#Oq8AYEdCu{r!2edY5_!>eb&(wQ| zCK#rv;4eK)R_C|)x;s?XhP?(g442iZ(DAYI!Row+r`^HfJ5{bBWX`IX0ChW2AP#=g z-vNIvIgG*I?@JG>u%OP59)!Q)k4m+j9q_5V&VYPX8suhY$fs*Q_WQ!SjRaZe2d@Iq zhS#70&WS%3pLhEwg$glwZK>$bo+?4$U4K$c(pqy?B(+^(Z9QZkNdEmvbT4%BE40EG z-fMrs6&#YgcNI&dxZ-ZOonsKPk_Gy5WXs>ar)&{7g8$6mWaw$}Xns7W@d-Kd<*AHx zxtva%-{`FV14tLq(>VDura$K-Uo!nkOP3p2s5w9BlJ3tq>2lv#=`!ctrHeUo!0nYQ zT^z}2ZP+cTA!Xo57tPn~QT?+zwd1JUKWtVL&(5ZgW#r3$68>}s#`)uK_>bOQx=c2& zU4>GbRw%A?arNUUd|;1Fs87a?_bnI%=LfHmF84~hjMG-*T7Mgbael3zeizwdZFofD z=Io|<%Ak%9O3lSo~B>s=)h6KI(`;IZ$7A7}(hq7|v6`KqzRjJ+jJJe+I4 z{6XZ)%M8)EQUoj?w7z8Ii!ltZat88U?ZLrXlPgA=LdGgaw=5;QL#M&5u;*bxbyT3P z60@PANrqs$U-;PfY>R+ULdT{QSoPY8wrT?QM0YvzV<-|M@KaGj1 za2~lBjs3jIO3WOpx?ru}+S(USmT`X4%)hIe}5Unk1(j%yjbI&?Wz#LAboh}NtnH_3vRj|$M zaO%dTwzruo=UP6r>UPQx|0y^yn*)ZIa7FCUwOYRu3Q|wg`NPfZ z|1q7frt|ZH-8Z?NUt5uSS{<*(#labjR_8^~7zB8m6U=I2gF?oq{by(f7M7YrI`S&U z4sZM?kF2Z8_q5=}*EK67ngOSLU9;Gg-}Yjy;)KkKNN$|a@>^FJjKv>hC2AV6NLSFV z!R_!9eA@l&tIV*2Gw#NfepGV|eXp*FGZI4InXxw1F;Dgm1Y>+S-&t2x;AtthwoY+A zZf(6WPgk8?8eQ)4-8<}j?!4|D)KnYa;UjLd?O$gTKHc`Wv^XlFDGe#uxG{|lI|(j2 zK4#BjF&)tn&h~tk^L5_f-AbCi|19@t#dK?|JDEKBkI-4Uy*hV6Hpc&@NjOdg=6m=I z*iXUjsw$1`4^-m85EITU(vc3@0p&tL zT=JUw%WlYB<*#z|u^cgUV7KXj+2)bcfoqs6gzbXF8ehpSYV=Z`ZqStpyYaMU7CQ7H zBuesUv=Iz7m$){yxLZZSWh;7{^+7C-(Kx z-5r;f>}HL6H*pHHd>jqgoxh^{-ooYmC4I<|QBU^o=aB1MaQ2VBbM}+I!oJ#o9FMWe z?%BVcbUPfO<1+s07Oi#r!NnE!?BB+FBaO)yr@pKdkl=)MdigZb54a4qEt51J_Ojo0 zx4+W8?1a`>T3Zv}KLTwvB_4<*SHAD%)T&yB%8fX%9l z#BIlHdqHLQqNDbWKKp&$i;^5@;^&l)gX9L`+|lwwoI2EJHSD%$AML)!XU|S@Chpv$ z-Fe;f3*(Qf1(qb5`KDdxt2b-f+O2?3vge`c!Nh7-m}`W%rsQF;1mf^lwH(#l=?aQ% zACkK1-*S%nrWI#oJ?QZaYkTPS{id?y^ZC>l#KQ^`+P?Gmst?$n;RjUzN9SE1ziYjm zo+F>x{;zK3b=;ma{CJ4#nG<^w3oh9Hh#KIKcHvj+sa?wm6FSjaw5~nnX}R24S9PB$ zNQWhCy=na^Ne45F;ox(Q!RJo?ZvUQX(ctqx(4N6>i`x74AEZ4zLZ0CwwfE3}v^}en z&|}Z`ub6gzPn=nuUsfAE|B*IYp@TVw4(4s^q@gXFrd;oLw_@LzcYVFq!*}E}Xk!j; zGW9h6Bhw)Sem%6KpAiUSjtDdUKsc}C!oliBjVk-JyQ>$*9|(C`rVdoEqVVl{oT~FB zsu5eyAYYJKo$%scIgeSGdrT!*ooio6neN%i#EJ^+ojW+yG&x!F=qLtf{7hc!HKZRR z^n>$Ry)3brMFi{Nd687PRuAe}Js3*W8ROZk^&vId9)&tp^Ar01>PS=a2LGmCYuBuw@=%>gxjD8B5pP=s2O`MbdAPYf8f1JqZkLHCr z`r|~rH`bW^+ez=PKOD`mB%?WE$tG+uyUo#Oa3BOIdX5uD;E#W97kb zb?T6$_=&KNCW^F7%UyOi`VW#5Swc&L)vI*1{bz>W&ox+wTH^na#pG7l{t{JbP>f>) zeo;=ePuLN0&gn*P9p?O^UT=5xs*w+wlZt7A>cxmO!Xj6YC{aVymj zkEXWY&aYivX3d^j{^sE9x4H9l&wT}Txrk8K)}!5vew%n8mX4pQF6AtA?~cZ%=HxwB zF${CzlaL*kyVqXy+wRu4*}lZ*sMOt(7mW8Ursdl1xkv4}uSAcw^=jBw$5{1fwHjG? zD{X8_UP&`*WA@vG=frzxsQtRn4K21$nE8llIdSvincZ#q+oHB!6A#uN7`fQ?#!sYL z0?=|(@-NHO1}kKR%1d!ArbWw#`P2HK0~ywY2qArA*0V>hOy8P!q)IcNqNuQyzA6_bf-xvwwzFD`8DmgFL{m8x7T4KuuP07z1_^?_1-SIF5H&q9^;d?yWxRx8aB;+do2`*V=)byn@j;HR9ye9Q@Ru(>{?uCt-sQU)1D*y#5a16&5W~}D1xi@dBS!2zXF4Z&B=A$0NVaNw{ z#&%_TFfG#y{&srs>2God^tYx5@8I9h`Il>;-{HB#zv`#3|Ej~YKO9V6_|7l`9NeZG zBa)r{YG$w6*&~ci%-!~*w8CDIa}hv`%#qTHM~Oc`obd(?mAxRe{S}(PwXr&!toa+B zpg^=;9*3^gxsJgz`xZkpK8OF{W^U~VLRRxjxW1Hg#-y1^Pl8!xC*IJWRm{xS_Z>}% z*-~?_om|O5Bs25Kro^#+$E~Y&TU$xdc2zGA3A9|&z_fTt0U5`4JFhjhtR?z#G3lHZ zHw2tim>=dIsM{7jwyByzhDO1+vU3|-sc0VSQ znDGb_J$fK9KX1#XyqTT7ttU(N#!rF=t*PoTs}1d3fDrqDgN;x9^%!huR~3P|4}b}o z?R<*_Tcq0#UaJ|kx=+ZP>3(3_j0J>ehbSfargPLu=1Jlg zVISGO`I+tE*^og;F^+;Iv(u=UD^#cjk}54Wc`12I^86*AC5_xIN#3w$>*{xSK$^fM z%ZhTEz%{XCQ85pGrHB0cCI99Y^5?Uq4t`C0G_%{fWoNp1p*)T6*E0CtMMBrEy!7(} zndg1h)hEc-n0_&kdBM>Q`Ll3-Fi7MIarde-LUkPXAW=6L)oLu}h?%a@k z_FuIUHM7j_F-?{4Pady4o?5?CU+E{-*&g_M$&Q03AZZ***5)V;IUD`V=I_F{Ua*H2 z5W$MiqtJ<`kPolG6w#hx9b~xqMRD7mMMZDDuyTv>m2&bQC-*fbFSsca^Mwz9(7R~g zgLNbo`%JVs%w8p;!Mxhyq*sJlRc*0%MPGaHGF-s{GSuL44pgRUddi43?ofzx$i(#W z%~{cd9oxAnyQbHK<=G1#Dq|!1GuGC9*4AFD;VtIC)tmb4GwV-FskQw)ekNa$wGU3y zCuu2SJc4f;|Y^RtwkKEMOIn^bpNT&Wv%lDEFg>fhR`LTDE>_}7m=y~ z7!MwX{MHRa_=s3rkwb4rb)@BUqERVZ6PjD=Rq~3+*WY?TfudpWpuIX`?^UySH|>he z46fNqAK+l+YdE{LPM@U$F}M5lWg2CG3u9`X{(qNI4%q`v@OQW$l-;#*i`fi?$Gc+@ zZwu9;SBDW6C4AHMp#l4p`8+v+Dz=!Ns9v-E9h)0;^2DeOq+ z`{{3gP2XN-54f1hhy%tS9GZ~)%Yl_6g-H<>-{IXP4`NrKQgQglS7e9lEamghp}dIQ zX@AyPOYhHVUx^5u^6yey^S40x9&(5LaR0Jf$prm@lD9Y!xa6Sgp9z#DVtH>K z?5a=ctlXoyxYekrKOD&m$pnT!SZl;vAmP(628J(k@4da|HZ}WrYX9&_{muSo#*Ltz z@@o>wXAfpE;ox|_8e}&wD4tJ~Y|c<8!eBWOSnEBID7-FFx>j-A?tBpUJ3TSmUtuTi zPIoEw{f%#T1&ZaG?+O$sQBb7q=@rXvUA}~^LTP@yRuDVQv->6AX&HOav^TCTG3u|> zL`JeY@M`T9CEC$q`j4ZWb=bt`%?Rct?nrIfG%qjlps%Yw-;CZdYwNtXt%nc9hu7H$ z`(E~Y^{1`3CTcHl6g^JVo@s~%8_t}qJ%?X%=sVA$?}3{9lm`GI#XKM!Mck)d z;(k6&+@L%S-`Uzrw=*aIw9_h#B7UK*w+Cw9@rYT@sXdqffbWb8pD>thj5cZ7ATPH) z$N=IORRjzrH*<~!?0q5o_GfnIBl$^yah$^&OE}mf)@s}{4w+~Oir2f+zrCS5|$ey@-k zB$-28Z30$ySD z7Pr2oh=(0O*mV(EkwD)HHVjQxJHD=h+?aOSL!U~KYO9uM)am)DnDvDr6ygFlXC!V( zc?Y~dN16JgFIsUqcg8Bz;tx0q)e3$@7iiVjn7c`}k}}-Us4aWZo%^j~vg7}p%jcP? zj`Xokd{I!EcBOUJ_YvNcR{5;&rG_bT|4V^=j!aZes{_4-8^<{_bo-HkQiVfWO5byZh+tl53uH`kxh{Gip}HMy?5m-4fs zPqw{?=es4J!6OL^vih9ct2wv!3~Xw&`6ufb79hONK&X*4`!9D-9dzM4m};HURbYzM zmiG#_U#?H765tgm)tOYuIk#8ScTVjYUNW03WluQvNz4ev9HZoIN5Gs;3z!_Grp=J$ zDGasY8K3rD`r%;9T9&=P=;4ZlS?96-_ep!Rs+0S6+Vw$qx9I%5>l?M;!WK^!Tn>%e zfY@?ro&8qdzx(2kshX$NM!hk&))sztkhNTBKf%^ul?ga!GxI+aE)Rp6F9+*bo*l z(~;V;_ClEkYQuN+Y>o?YqM*#nm)m~MyP}fkDD6EZFcci6(<#DsQxTIvZ&PNary)Y5 zl)R0#W~pa6pCSNgvR>-A8xq6UYB?#o#)#9gEJT^}+Vv;*(4M8&&P2%nkFG_hUn?WZMY- z$Gge~YA2KLj@y98Gf+F#!&OjMmaam&x>#2P>kZUS*A;8$1GVqhRYX@G(p8bJuFzGn zu0EzK9GnBSB_8H;_B-o$Z2=(1ejroMV0!dyY6q0u9JLb{FaURzMY z%aQz&z1G(0*28;9oKZ;K9VN>8@o?|R#XKlp<2)$TgZ%Pd?@=CxsmZGmAAfmq$V&sw zdCI%tR%hpvQ@zNo9?7j9GSx|+LUmpo>TY?cG2xqn@m^t7^QRj3@1O!DwLPoC8B43D z5ClTyi60ed`E0vKUg77De-}=uH2Px3!iO5IjXwvqICYh4(6|gVsmUuDVgy3atzP9B z-r3C|GY{_|AKk+zy(jDe>*0Y!#qS_srR6B|o=Etf(oG`txOv7gzTmu`d^dF7#WxSC zXf|e=Mc&whkLfbn*(3N?U)1efbUhSkghjkNX2y3!WU0JJ$Ex@yEwQ%BR{WTvzN%V( zg66AHr@gFTMi|-}-i7q8jHmUjUs6x0RZ)!>lhLnCBgQMr!ZCs{C&@+M36nd7YD!`f zv7hZDqEh<-m)7cxoq9;dyq^RX~w zR7{3YJ`?Zt(Rh&2Ds9`0M{FS!kKKwlth$IXcg;K<8<=?}^=TvCl5#x>#bf1FP8b=jx?yBF^3BMrqZ~ENiZl|cNJzCbSF5&^Khn3yAnD|wG2w1c>PjDZU#rtswvazREJ_G<$0MF!xxCYAX=pi0!q@;Bu-U(a3qwBPzdjV?aD>go>%3BSIM z8|yKPXvDt6P3&sBt=Eh7{U^Oq?C^VfJv_6ngnQQpyt|`&t+-U}NIutt82e9H@!x_8 zd*AwBuo#c`?1uQB6EkUw3RdwYkFb_w6@TQL3hSibS7PdHmvmWaRelnK{uD<0UC)A} z;L41@hbJCRF>^~)#yGm|j58-V#C+fkFdgC$hI@JsAJ-os+|8foFN`s#psMehmDZne zgx%Xz>)?zF+PN#{`#l@0xyBbC@aHsG?~C`6U)AbqmaGD;oJL$`ZMA+VYA88qZS`9Z zAB?}e&fbg5h^^d^B^UXDOKZFQvFP!(pQ;Wz0j;e;u{L~GetZU%=OJVnqO%ARfjlBA zAa{Qu`2s2Al1W-$XXyV~)@Z*2n5a-DaFy<6Sa zA9@nZ>zbEp-K!pg4>3a_(_b+Hcf1dqp0;*n8NpsuWVfSGcfiZVe6f^_ew(j#VRx8S ztcwwv!wVVuLADnPZlB-biBj=I;bo>14o?h1z(T)kkEJxX{W~$lDLA7+7irFz$&K~c zRA{J=)3(QR1`bA-Gxm~yJFXCQIAd?LAI{ik#m@-+dne?K4>+80t>Fx;m{FXOgfm{? zqrU)YhNwTok+7m+u}hkF3};lvI6>>oLG${|)12-CckJYe`5nb2VwLA7Ib8B*uwDo4 z+*R`#UwjY(cUm6JCvMX;c7E+*)WRbtt)A*MkDO|+S()W;jvT$tPz`ic2hTi=Hwm`c z8-Hz`SNRCTIex}q3|ip)f_;W>5T9wjsT1Eo9fqnP1Tjs&NzaNeLzE%XVO5^ck1Xdn zDm9}&;_VR+`w`w?u}OSJt%$Wb37Lt3*w<%xXSA*;%rXnYx04bK@F;%aRFFLHGD35t zF2pWuPRg=N-g~o4IKwV-Uxi>7QtrF#5{m!1kqd>bo5pYp)~i;gN~PR#IixttAw_BX z8p$vbe=Jkt%+0$YVfzWNm+2o1U;pp(M;QJHXEaAHe}o}p-~X5SgA|G9#UF)d;SVJ! zHlozpaD%vm**udi=%+Zt97TqHcw%jMa{|tA_(SnBO=JkHK(QbsSy>Mwwwj3|eKz^It3X%*5KF4G-a-zcAjd%Q z1(WZR6?AP+Da2)%R%SvHJxS|j@@*8^RYC7bR)ppL#;au}izfdWz~XCP215M(X0#PF z@$eJY!>>y?sueu>*W&dtje<bIcT>U_-Ug)&f9LU1uxO7hVPYNdw=a4@jhD;bf! z3VQz!d+!1#Rdwb2cXb`00;Q*rQcF{Y&ZK6hO?P4|our{!?RPitM(A#h0^VG&gXkm% zyTQb!Q43;MA4^Fli81fonarKc&5UNo5J@uH4MGDd@`wg?5+9i)h3x~-@P_(-fBT%O zu5KEEjG6!a{QsBFr>XPUXYaMwUVH7e*IIim1lBT*NcmXqO8o~2o-PSq>veD}9e%Ov za>^rKVIMV&6S*71&I*}c5V`XNEeTn(u=5$2TX8kTHx(;21n&gbMN9z!ClCZt;tiZx zr0vDdz#$e~2?PqUHwP)V!nL`|d|#?uKJSzR8$3$IYALgKx~!jJqkZSKXnN`4)ERbVNu}&j+z&_9<_Om6*^|IG@zn ztIp3u)*$V>^dBXN7u$c6(<18TvRrsY>{Wb z%s>Ghn}E8>5DV~SiNzHrAeIP4vh)HDn(S4Jz`+76svJuc!IZll5m)p2Bx0!=WJn^n zqCtrv>dKq$e5PcCjueYTq9UF$1XPz`w2?E}4u0$s3^NXyyG6TA$r9J{f8){AUt9Fc z^i>_*s2=utayRdfF(bM$+^(4}B02H>ar6Ed??oynzR#HV$9XUG4SUbKtXyxe`jksc zP2kUD=+Ia*a@4RLg ze?$^}$!PazmSl@yk7+$notgIQ%@za^y<% z+V@JLAG+^7L82eS&XQzc#tSLFZ+X4*TFI`GgC$H4JSdnR?fy(o{$ys%7&Fq;m^a4E zjVFa>!y7=VxF?v`I>;dUm>fk6vohv{HAC!G-HfUmnaiCSysd-?>awdpL&xxEg;B;s zQzK89#_<@wsq~l;|1nL8QeVmv`4{-p8a;39HX`Dh6j5tNS>^|t41mRaN>t0&Mswx&wL!0T#2h13fPMeWdpA%-fs zb(l4jIEt)#Ls$N2R@~5lvkK=!<%(_e+x3cL%!8V!VFkd8IblE7#s23s@a2AdHp_v| z^(XA%?5qSu%PCBvM#YG28T+*dV+6neGb);;Ni`r||Me`ClGms^mJG*KjQ18jLz4*4 zLXBrXw9QyY?T6AD6L1Z|b%lcAd_8XHdGb#TofTt7F;O7#uGyZt!JfL6P^BQZ zs^m4`X!fro`XI=P*|TnmHA~G{O5>tXx%{$6STzPpb&n{suZYrODPPCr4T`d8gQ6m>KpS7$1ZF}4*N z+vapY5P(Pze?0{3j7_jt{yi@#gdNfyjgL?j#bSeVQ~^VZ@(}9jli8~I-1QSYIN?G# zMlqOuzl-neMs0Ktt#tbus?lo>sCgk;PJu?)hB}y-V9uEQ)DH2){|>k-M!-K%7GbSN-JLs6{t zu+rIsZ%S?w!cGrP+I-;GQm+|y+GI~%Z%^Ipd@@|}5&$>(`)M;2C%0T3VuNABP3YhB z-GS#<^-3`2%?x`gBxFxz)67RR@IwE5q=Z-T8nNLbdsZiG9TqB9>>#B|ub0s88}=$i za&ie0L?~RSR4`>`;oDRqrl$O1Id##n8A%+4yp}YLw#jYeP}k;fB*XawT@Cq#-W&fG)-m%_28( zyOg%y0YY`RLc9*x>13qu6nE; z7yojIJk(fI6+c2gFz}W@4x(CZoH?{ zT|)12I|ui|_3uf%ena+%S6%FStb23C_hQb>U>m>loSE8!G&?iHi>+qZrh=G@9Inqs zpbGFnHpG=1U?k4R6nl8mi;D?Zj|^F4PI^*+C@>wP^*hkIxU|12xMy^Puq2`HnjdQ% zPvq4O4r!iM^_?Oe8VqmH z^L_S$b=>sr3{s|`cNs)Mkyy(8%m#8S9cUAVvXLw{XS(Q$1vg|MPa%=n<3Y=&+OTkL9KPn<3 zvP2M09vtK+#`!haPZOA!L93PMPiiePrcDoMKSjkXLw&o^KW#1{eh!)+U17A_Z?D-@ zg4fXw`=N~gu>UwBdli1IpuH}B=(bVGI|5{QWek=ENrlC)WGeDZ@xSwadfPO7qx%u(B00ijc0$sv=6@5l zLPkL5C@xE@Gy9Co(qQ1FLEjkyta)BEG)CS>?}jgLf!!L9r#ar|;usnYqtJ~w?$+EL z{}x}Xy`}>X(kvmg*=v?F*+!;@<-vjuD}IEGzDzvlrR3!J{J_%D$@zg~y``;h9+Se8 zXOJ_M&1EADxqzk07V#l2W=MbBBqfJ9Q<+Jv7Soam%|_DmKLqAY-fF~~l{=&~TyFL~ zl?;jYKW3A}uQ{G>ulzD4-1Os``TxSWV10RE7 zqW8zSLPSFS*0`jvzZwrV38n3$IM^8uB*WvhQp=u$oLTH#2{fxrcyI8hxe<*6?cG-~ zH<)SVNIFlz8YbmDg@NF4Vs8DOM^!{QVZB;AAas?KRz;sW>b z9a~7rO?a}hedGk`lj$}{83Y&cMnX|pTeHzQInSo&6O~-F`J}Tay_ZsAOFFQ<*lKY; zqFIx9mf z{+L&7tBu%G+AgYe8n>2~98MPPv-jb5%~$thAZw zm`?MhI)SL$!enA8OP29})D2>gtjIj4>R6WOI*p~%MJCaenPi$`WlXV;9NkA?f%5f~ z3^|vZ>G(@<+LF=#bItz)#qNtC&%*9Auf%Bg4wcR5R`U&5mo7yHt74~CoFdNwj*)qz zicSMJP*ln9mr?KS$JGh|`w8icD=(X;r_%QyaiNnv^18wKBqnmbna#I=ef9iS%^?VC zh7__qD}@kZs;9N>E^NY?EA4x_M$zQuCQPHcXNDH;8x{F{ig$c*oxULU3AO8r-y8I+ z^#;OF#}F7ExlUtg@r5DE-?_~959rYEdCQ`SKiCibVKMy7EzN#~($DcC@0k+Vul!e@ zvGks+rT50w&_AJAR{dCXT&c621#L<@W}l_lIrzD8muY|GhV=0ud0}~C<^vtS4oB?k zVmE;A>*;oQGE(T$PlEY*iH(IIx11zo@u%&C&Z8Si;TD`$Nu|qlWW{V?ZTU)p&%$~2 zE0Qo!+50TVsryPn4d2RqTb8lz!gIJ{$-mN8n5B-#qVfR%q?MwQ{%jX$kKNuatb1mY ziu-#yMUrjnVk8Ix3jA&}(gu=2&`1~#r@B7f>&hR!k{7aa$0lyJAb0e2Bh~o+*iSQ# zb-~ErqPsfHYN#F?EV-29gm~^Rrk}GnU?Co5>4#NLgL5dpg`!NI4*+ zND1>c<*(;#1*3AEMyKR($qS$+Tp~dsZS+y8;AM^_=fo3nGg=V7D{ksfhMUv)6x_)3 zYlLQv!R8dWsV_)u5OTsGXL1%fOd=!T)(HtUphUBt9Mz!1uwQ4VW~TEtYk?L&ZYmp{ zCt2&7xolz`?TlS5?=`b>-0ZwbA#L8Ou=wfFroHAipD}_=kh^%J%zqio%4-^r;HD~3 zZ9m@eDeF9=`wu7Uk0yP%W6S_be7D(-cKk$y%)rz!gtCl^Gc_|dS5vIAie2UmY1?tM zqKF_ekWq|;g?HbePBQ2z%k9q76u`&4zywT)4=ioW`X5=}rkjYGoHzTB*00X59(96W zb;iVfO9RQuuj;7oKzwKW7~rT(T3@Y=|7wZ+zi@Fh75n$NelC%Y?}I%VR-{F~juP{X zO05#gE90+1Bv_HY=zStVys>Uykez^R)jRF`A2|ZRz?;X*xh*zKnUe*Ed$o^lHur{q zz3#GbPx6|tb>V6_@45TMd9TyD5OdcPvmGKnqKS}W>Qp40N&7v0wOex@mp8Si-Qsi2 z$5g#YvYBD+kNm-Hz}wf!--M1Ud~&K(wn!bp2(^goxypjH6=1`p9lqG%YP~7{N&2lZ zgY58i_E4;1OaDssFyy6)^{|<&d@}FH1?C9EmG+w2quzNFcfF3yYaUVE%`U9EgCo*@XcNq*A!lA@lZ@{XPM=Uq0MN?MrTDJv7s4Lj=i3m7n=Dlo`!kHUZwn-^xqXASPb*z z-8pkfEC@184pL<8)SMg&NTf*=O?(0ZC2y8&l*Ah?IRI8dso)hSTOY6|pMnS0oQwya z#;4{$#>s|5_GY#Iu4{ylXHZg+kCJN!5t4X4HYl$Yfx%Ldcc~{`8rvp&F^?SWF<2GC3|=OR(yYUfZcKAwwq1u;v7gd_8RLSeb#*> zt^G%zpzy8>>m_$U1(b;pzZZpS*uMKF&^fqAb@#X(6(?)+vue}uqZ8q2;hi==`_x$w zmb$qRs6r(hvojN%OL8nN*;ulVYbmF3i~WCXmI{KCF^JQishEuIRp3Gdj@1Z;gO^LE=DfBzg8Wm3pB?M5D|_q22pO}{tnq6!YqhRst=847)f&wj zLHG@Q*K%eNJ;g7LhAlZx+OEd=25Ez@$ z2Yoz8`c53mhyI<)2O#~4-g-8S{-@>WpS6HvEzZYVTe9<}gBZc=wKZ`rz=dD)hIj6~ z`Sa{|*>$7Lq(RpzOK9?>b?NSih`2Gp)R4!Tyo~BZns~~gmgu~j|5|+|hd`W6k#%qk z>>4t@7#4uP%U$@uSP7jHJWmT>2`A@z5r`-#$A)JALH{8>jF@mh7=p3K^!>h&?M4$D zYs9qh-IT1bzhL|^U1vA$ zdteNO0o$+$jJ68;mFnP+p+Q&6dm1!27xfcFK*Pq(SjTOt&dC@)UpC2Lj~54GQqo(l|Sue6%* z9R!eyrT^Xe)oMysIo8*pBrxi-7agyqfjst73=L7cVK1e5?8Q)1M0E6~OGnU91RAPX z@(+fF05|h-qXGQGN3(pSE?Mer?4$Cz$GvaBWh0-WNS;tzMEY>Uj0d)OOPTpeyj}@- zb#q%-Y*2~9IASJONu^XdI#AW>8I<)l)nMuPrksuxgiW4K&DGqNm52{kmN;*czmD+mah!7|ZWWe_LPu8i@PQZUpnr8RD2?YGmRGIF2a0$QbP(BibF)@Qts zJ6xSZOM$cvwIFq-(Kgg(wGFIr`#BE}D#HGa$wpV(5CvJ@k-s$_qBMX)mJ$HR7y=$y< zZ-C!|_@)m3q~7(!mVWto6{WKFR}=4>M74A!q&G#x|h+n6W_^ou5WsxubG5^*N%cp2M7kn0P~)mdC!xZ`D! zBG1o8KM+ixU1Fv=)&DDOPR;M{=%psADa`m6E^v3OgQwpW?}cED$dT=%(wOQq&U9sP z9hLsAu4@CHI=i?1{MM{~r_9xvI2);Y-vU=@;)ag#_`{;X{oW08or@&*wzMu5eT780 z5d24^UNpqbgORgawWUMRVv3Sl*OiDHf)D#5 zp~a=fZU%8q+fQ&Rm6h~`uOLxRX6v)rYc!#~4zpPBSV$*wl1@}G4o z?uQjfuIG?z+OZV+IN)qb*8Q+z;LYUc->HW~u+u%}@7zgc9MUpG-5!hd=chpJuP&m> zOn-GuKS^TaZ%sRFNSPF!gsOIAjhcl?+&0mIozZTz(M1*+p{KH{O0)|nX9W_63YRoz z^`n*V$KravGdk1$sFfjTZbPuulc_)FYvi$c)RKL+BJ7;)SZkBkgDLAu+Hzis_bvUI z=C`BRq~T=nYn-`Uwc~Sj1pZ(fYfaiQ@Nteaa=PL|M0R^kGe41%?KM0=hKJg!E-2~4 z?>bV2?<~eM9z;quRdYTk*%C_}rdJ=PtB@KtcBcllQ4@#hy;4q1ASi2B3{h=B{M%1-(~{VXObDR138>)HeBh&r69I48&w9g1q27@)DZy{p2)AW zEj2S-(qHl{FN>+ONldDwAA&^!Gf#E&>w4~4>Pq^7tB5F`uu~(S)`ja}m&xjP2!r6% zg|8DIt3C>OVEB$4P1b!t*JbXteYC&!sJK*r-NoiNaX8rdZ;Vbki!`I7E>pS!03!YM z*hMH=um1~1B(wS<)K)L4qq4s~OM41ezBPGCdhCbkA|}tR=>o1?Qe4#`W6;O5%2A9o zG~cPcA6pfPam<$Yzv9gnV+~`U42OvrYmP!iRI-R^!Xpn1&i4vzQ3QVBtVewy(@_jH z<%j{=3EsTVC5Czy8OVyfGSQp1iyjOO)Q95x3_XYlOcH2O!ajTEbMbB9Kg{skGoDY) z49wNQS0?8hDkyGFPi73gu~!sncdr8lJh!;i*`*D8fV_A}7BUlR^YJpjbXQ7`7zxR^ zEK5!gC)s+cTH_=g?XP#aOTF1|D@~as^jdvWtZZ!}!$#c|_17C)Z-2enRV7J+%>X8A zqx_U6iMfujlx);psK4IqfBNgA06#xQw`HMW>n{2?4 z-ElFa5>?^r#z!c2;gsvBCah{Geeq~t17g}2gQ`Y&{+WhA<0wW4@Z}|&wA7@UgKOUr zBStDN*~D%zDrECPc}coNPD7F@br4PAs6(DSVUbr0zo#YdBrjtP=s;e4Ykw7|jDC$% zpdM%L%-T}>Y`PJYcP|29{nxKj8emgL_LydRj( zcj~?^t>>72>uY=j-}<(p_Vo9~^ohRg987sX4EQ^`&IpkZh*IWg&WNmI_b-b0INXgy?v!XV7D=JysSeg;hrK&yYS7q7gvd~6XWx3N;S=!9mvj_c{CS_1pHs;io#cvo@ z5mwY?VVCJZ@*yqQ2SK=5Z?#O8-$hQk*0!wP(b$}#t5c<`*$7+&s#-I*VF2(nkBuwF zI)7c@%qKQt$8Q!B$w`8NK<{n8L21oqlCL>gU*P3A$*>Hx1!TtBnzF8nZ@lfS?YpPq zemD@x)CLA7rL3j#b+=7O1v^-23Vy2p(hpt)Eo@308b^SxT2g_K1%uh}OnMG{o_6jc z<0R7T(!X%^iAbnFT@99;XEFsSNYf=lN-cW{Dh*Ys*Xa17_T52EG!rY&mDw*0HRj1pTMAnK zlJ&TE(q0OrZ|Z%9sweH?!$|&zHyzezW)hK1edlX@aMKQbnfv7Mq=WGT9itb@A(q|J zLbgi_s;*rx{veUza{gN6Ow@k8C46kc`mb}Z+-Ldq5waM@ zxLqH=23C4${ia@l;dYQ}ZrW@>SvRSV@33z%#aLU+@^8+01(_+)lca53kic-&bh-Sd z?0de6@66ht%MtptPYkUTpIiH=`Nq)GY5GsM->~+PGij*3eC-dV9Jd^{EQss&V4;&$8ahNQRK@RzWJ~t|v{m_#w zi>*1HYp0yfU|ERv9cK~9bgMcCrhuLt=(-Pp%{~l(XL4nth=+RwF#*X@ zb^$a>#7M2t1^c>d4lB-JcMajFs|&kp(C}3IDOS{7bF7*q(_F=Ob@r*s`uK-C|6zBD zM)+%I0&sil+SO-N{x3*fE9HRe9)Bm_4!X|=C-r(mtFt$Z%cK`4hd68@?d2Fk825I` zA4TCB5NC);mo)BMW8#}Qzs8u<#xLl6e)r9kW*?(tb`j@kZ6sp)ue6yejZd!=vL8A> z-SDi`G+}4YZn;&T#s?kSyblKc>e1T)yXWj&TEAIdTEC4ar1cZfG#0ib~~iLDuAwEf=`o?1j$nQZ`A_C1{|@+btOK}&OFGsj=S2>z1gIZ#ze8`iBg(!~c2EW!LM-YO~);Kn) zhJUYuwed*jjuujeOSfn8kfYjT?Yjl3dOAn%#&FQ6N@_ohB3~&;eb(QNlD6(EK7t17 zw~%}{XiQnOIc@kA|3G0dQ`0?~+(g^>CgKK4T^?1~MCs2b-pNoD82_jYQ&5V%eVFfJ z1*p=dN56LqolN?^dn-TP)z}>YN@(G?g8n+|v$SJKD{(y2ap9t3$_~;Os-kR}MPc3y z{KukRes+K2a3*u(>YZaFA!}SDbQynN;xD@ZvEzMh(u37B&p9~6IgcKxNEf? zGjRew9N77$(^RzcckW$NkcGFYbmyzytu<~RaY>KpVJ!DBU>+XT!{VKt6;Z??I3*rxvu08SHXs0bqQt))K_X=nRD;*d|lwF+qFYDbnx}dwkm*_7};EyQx zo2ks<1q-zyxQ1ZAh^^RE%v#~>Lp`%QzGqoe%DUq6Ns}h|mtC>AnBymTCk5I|Q{`*= ze&=s(nVbHnSNCO7*5iFI`*m6~ma;z3oPLmJi6=OIZLrIK5+1Unt@YmX&(ehP53u&f ze`TjGfkfL~(5UWQ(kCMGl=hDdtPhK>~b1p@-JkDCaqx^L`;4?r`o-+;mo&MqOR{0Y#ODU~KommIddv|%%&}unn4;k-p`q|vOAX?xdFGJ}^b1w-g zK9o`->2G9T!uW?$%Gpds$ftn+LIs!YV0>NdlWt9W0B2^7R%U92&!=I zqE17IyCQbE+{F?biw%$XyBv)L^JcH+@9nVcAI7?wsm}B4As>l-S(iVLt=7*zGV7rf zVz@X4B;I$cJ$_~EPF|&7MOt@P&Sp#uW-FX{;`a5LnvF`e3K z4#b~cI>EU)V!kTo^{u=r9SA#%*!~meSfKKO&gB<7w*{TsgUH2oakrOzIWN{;a)9-c zwiJ}9k}tm;TggWy$DO7q+M7zAD$G{|9XD21?##)6E(jDNCy)YVW=M5@tw?sYad>Xh z4*lcq{fp8yU8K_L=xaOQ0FwfK4-_JU>pa{wwsGChT`4o2{xbOB3J!Oj_{q*RS66c- zE9?!xc|H8S8DDbLXC7w|KX{e-KW-mYaZ$v@v%2t>$+uI`4?fMNdf6VYcBaBmcoZTe z3I(~~6ZtqyWzEgqUQghu-0jqI=5s2%-5Kk%ooNBz?0_>ZIDU4}nHKWR4ms1p<7bDR zX%Qb;-KIsy&yG6NihQ$+oN2M~vtzYXSw;Of#GkkCzMSQX?wCVyJkxQ4I_>bAdzD712<=I;Nk2cW-3n2+zY@9uF+G`k%0_94`azR%|?M6Kkj2{_fk@ipk8LcSUl zPvP+#Gp~;LY9dZ`bbL(|)v1ptebuq?HL?6ESistxhO!eDOO!jS!JnUvhNlD z9K!y$rSD*MT2yr&2DjqO(lYcoGG-^9h)PAVerRNCcg>`4+Mi=XEioF4IV{(Qh;?JU zQ%B}?qe7enF@i_Htc67$I-f0LOSm5ox2fgqHxiRcBTESEV!L4-0pU%2 z!F73y4tkCkvP&Bd{0N7&z7MmevBVYUmN-jGNscYf4r)28_3L5jkR{GM%3t6z)}~Z& z6TaFH`lAgNuuk zbBp_HOKGlvvoU0nOHPj^371z(rr+8yfA}uehMJSLWrODN+H#bc=-SA%xPH(b)YZMY zWSjdx@p>^LGaEnl5pAfNVZ4*Ci_Lg6_@$!IG$~ppDD$OhlB8_Hn zNU+oYE^cHD`0iRLe^#>`9Kcewqy;!_ zR(@dU5gt5YPSS!7wdi4PPDoVX;bA?@$qD6O%2>GhG#-A?SGPAXe%@ZltMQ0#LfkL` z8jtEG!VOcP@tAIkxQQ7FLD_C$#WMg@x|v93S=1q+{U&lMXO@N2I}h-BPl7`h8P*^L zLtS~Ey4YHVu_8(u6<5C3{O5Fz=6^pLaZa~L9a9-UNVgjgs@{^foGO>U+V^b505!NF z;go!U0SF0YkMM@YA>!1OrK~&6j$}#sob{ zJrrT!UC5!A_`#*0VErH#=bfS<=V`1_80~;!LrEVAERra;!|T&Gn2%%?{;>II*>e~G zy>-C8=Md|64o-KV&H24ow65o`2+ir6p3PqofUe4g&TPn78A>*gHmW6MUE(e=(}z_n z)5IrI<&SGe#>b`2=?E2OopUw_5$Zp$iu@a!(??hXFd;Q1o`?(t`X!C>kC!3#`P##k z^2}&rxt|B%CyjtaXfxMCVY}A<(&U`lFObw;S9~IuD3c>zjuNJX=a(Ct3lqXSD{_5`XoDMGvd0*nas zCjedgf?H2hUl1LlFPQdJ-r7tiWi7FuzTlD(US;(K6Ha`WUF{D(>DHLto|sBcqAyS= zSm_JYZFLcpl;ip*aZJe3mAv`NlEvv)4p9tAJ-tg8Po}rK_p$UQE}*TjXpH5+Sl(S} zj4(iO5FNTednoTDbXgNJx0S1;&biE!S5koEqOe#>#?TXu%XE}ycH;NP3sdP%PH^pP z(>;a*UN7afi2@Md3xe?u`NGvlBnIPvWbJqOpW$N0>IP#Ex3ZKM4;3#uCU$ z8CiTyaKGfZBnD4fLR4O6RVVp*E@e%{h&I;Q>Y33d$b!~4%!1aY>A5X&cpQ7KT4L?D zpEbu=&};}0q~`mrv3MyNSQ{2TJW5VDdXOqt|1L6bL;2?qE?N=5BTl(oe&dWz`rR%h zKai;pNQuUYi4^WKNZg730G+7~z~nD#mKkwQOJ+xIO^xKne*N6!m|U=h!Ka=*l~Z8s zEgiyS046wCaUu@-hv8tZ*pI;hR>XB#E8>&sahiO>fk8L>*RW8aGex^~Y$}RjGgYY* z^@KLyAQgI87#hJbJS!)bO=kBv&r1ZpwVo5y&B+eS^KeQ3_?dkfqf5r9@I;X1NJmbK z6@&nGdSid}gA}pMGs1q|Q0yDLGxLg^T>$q(2v4VuLfZBy8Un_iCHL~6 z*qpjD5hVoph=VjCZ;<8@m5z1c?=>{6jbLry>+bxRBNHgznTd?g{(?LiSiH6A1!?_> zm+eI5sxsuCg7%IfI+(|#&dZ(3PXBD{zKmT=2-i!_TEq@z=|_z$_~kxGweP@wO!pTx zI2$>yOdTc+Ozum**tG2V?Bl*Sb^hCp48xng+s65i2(EiRD>lVG${lD=Vgu~Nl?Cme zn2WVzp|$j*at02yI-iik2L2hVTQW-nnWa`+dcsS5{c#o?tdFnN#ur*kUVyT_EWA1K z?gh|ZuRB|i2`4sTHA#LvCxbvfcO33tFd1LH zk^BqxBDjI^eD3(vQ<=|N#=RiDleg?%U1kx&%eQqd=WLwU`Yw3;=T9V7mvOt0~ zryt=wq3vvZuw@k`4hw;aL7}Cso8hy^!z+>}>PH!`vUNJ$P z{t^DzI1n}l{KTeO`g4ryrC;+VlXCjz|8wW7Nid6MJCZ7`;;2xOeeZdYq*;F(P|P|D z5ZSw?=^lgrly2gob6)0drx!mmf1=m7{UDDkx@(E^%2D3C{hM$<%zu-**56&5so^ai z3;#xKm;toSiYW49ro7u}C`NLe6`~8($yuTJtf-y(uBHTyzv#58@!WX;wGgK{Uw5H_ zA~76_8W)PhiBOOMwkA_6D0X%Jgle-;DBf}wicB`aXuKi1e4=Cq|FMz{2p~k9wNr00 zJ4&!QyB<>645RrN#r`5`31a~Vry9s*IOf5`t7H7@`VRWZaoS}=GE6X~Y{Y4Vyd!K1 z+#Kx1&RdB?Bx}7C#HU(w@tu0+7xb)0?ux~FD|p3qzFve>NDKm!Y!gx5RK6exad?Dq#qrSD`I+?=6GZ~&-M~;czeg%?=I9+9k zb*1rs``*9NAk2z5{SO{E56PU1&3%Wjo{Gnbkd_R>tVd5ZuXf1Z#7IrmUHbm?%bD*;?71lBL0(r%- z{m}@gf`xsD{9uS~{WRpbX++GilH8zwm0$iFe%|l(0;z$3Em#~ZwnbD)dVXr z=1I4ccIrMJf*mXj{%uYp=Q)L&NHz^FTQ-?EUF-;v{Ys|I+$=~ogyBWHp(7F}9n!pL z^c1*Of~a$L;?R{HA4(j9j>;&v(NBQ>!k&gOvzNFX6el8}alfVkj+Itm=ZbIZcpplq z>SRN3pccG$oO^jMRV_a!zT3WcfU9nQ?aYA>;KXsEsdpET?%dqlJuX)*O=KWJ!If+c zC(rhv;$#DGtx_fo!R71tfYTbj>u@i{mPEf~*sLj1(jo$V*I zp-<$O<7{${INK)?e6g_PHR5(}Nxb6szwq`yf+{qcBD}6({Lu3A=wcRgRz)MYiyumY zFACWAZiKWvV%UA9xi$k;f_KS$qxob%&BULhHrWfaU58Z_Fw_AiNo4YZNY^Ln49*b^ zF>>@)evNX*v8D8Dt9EovV!oj zH+Nl>pFb^F;mk-CB!h`6K8*KuzR?h066x$$gnRnOmqBS3f-RHYXm!da-yG>$RI6@1^pp>2Bh38b_hIg*dyL zxSW6+%uru|0KzJ?Xd(*Li~|BHvU zf3e%XdU&zheui&p@Ok9XNaxQ+XwYphOHak3qY69}AtMd}xnyMG3!C=NFJa*gjv*aK zO;3=aia=PdV_fzp8RR@#OR2t(*>eJXy*7|hq4-qL48!D&Z)6tC-@JznSG?>c{6|Q zpIGB+*lL@wHT&#q1_QV%odo2M6X%Rwv74AHOp6uwmfl zVZH78)Uckq{)~B@jk%pIRcBrO1zn}XGNfjkQ?y!>I>YVjuT5VcHS>aD!x_pAKySG+ z6B_#UBl;?5HI31sGf?YwiD9cT)Cs;KVZF=m~3jF;CRXU)Aes2yQqMgcYj7p7l&^}vA0Fi z-+muMhZf#Mr2Oxa^X>=~bX>uPH(np=xFoThyNjFf%3U@FkKB15i-aC8xHJ+P_~7HK z%lNtQ@sNHdJihu8eu9se>1WjA4}TQ*{hdUwydSSjFAlbjEA5dpr}S6NbB#`dlbShX zZ_w-)QW(=c<&n?<{*LoEiZ=7*f3|0-&vTx}*$YuG6{inFP{D6=K=2tO?_U!9>e4Ya zHb2V_iPY{xg|zhCoIZ<3b@v^e%EM*v#J8_FPes1!SoaZX4JsLL-8VJ9z3Zp(C!KZn z%nk7uuu{!@#yJ#!tMfsX{PwkgY20hEh=;5%m?bA4yr<^0kp6jbhRLC${iM-Y!t%_5 zn+o3VuAdh;dz_~yM}M-MjPIdJH@j z(JOBA;Nfz~;VIF{-u+ZAml$|@tjRs$E4r;K8oI-iPXW*Qf~Utie-NG?Ym9+M_Ep)V zbr3v=;jl=&y;812T_JelW#%g2w^tT(wST>@IZr`%jEeBq5VzOXS73a z4Ra==WK+quIT!&u5HWS2C&$`v<{Kpdv{x!+E`|z13!4+Q6tdv|W#a$msA7z7#tEos zGSc{cI)RB59L4nH*06n_2?Yt~o(ia?qF*RxMmAB9LUV_mv_x_3K1)p=D8IkIxivju zt+9I+akLhxnxKFr`FW9o3e%#bc5*mY0vDQgcGF)hD_u9J{+{SW2=G}A_*mUHc;h|A z8}DgTqEi^}eJjrCv8MC{-SG}inHJyI^`xnDBR)6KUo8G>Rcp_D)_IM={s+@8?Xm7l z9%UO5c7okK)PZa1PAHAhi`#;?I9sQ2*s|oJn*PGuDc=LN& zJo*6h8~i#!=Jx|;eg_{o0l%dNzoq&3EmCLYzb{_u;@7dhleE5ALmxEgW#G4H2!5jm zzpv%t_piVZ${Kr>*|8z{rz|sLvIv%bn`vp{ueS-Cy&9&;jgamKxm}IuaSOEj8EDtf zJ=xKrTu~kS?5_H30?A(kYLw0O5Zn@{;$d)m^%@ViD-7v+xTQ(@WP0Ho!eKnq)xp=5 zt6{UjFR+-v-0#%P7Gr-8_&d&T;_&NH6382YOL6&^I#)Bu3Yk=-lx)Fny(F}iY{Xoe zkyrQQbpKxIMIeKSOUEGS-j~6%r|GBvN^c<>3*6%#&MhyTkBXla4wI;wcqYAs!;oIO z1NX=d&ld2^J=-xXxxrxOghgdq$6rThx~NK5uj)#rckklrDP#MRBdGJ~3T#IUM$qdd z8_GD;$Kla1$AD*ApJN9eIHiDuUKyXWc?UEu;Upf^ODl4zJVWd=qWg&ccM^Xu(2 zwf>Ux5(WiLb)4hWTd1n8_aF3Lm+Xo!DC=wnpJ7*Zf|NX{JZa0S2ha_K#l^bHN*0v) z8h}1@`vmDu2x4KB0w&18z&CYpX;WtY`V!hhIx`zS?L2};EpjCh9A=fVot_ZyTOQ2o z(|S6r?j+A1xkGtGGAeu1Ny(ciIc621_b=IMqr znzL9FN;diX=U_=pcl;~l?!IUU`wx{o?{$!zWzpq!{Q2eoq87_prlXVR6Tg06G>~6p>&*&>NcesGo)C9@1mKiYF-=| z>`W~bXRlnW`fAAsLhvDu+`vFXl*V_5EO5M{$yL7q`Of8PvZQY^{Mw$yf3xj}Sl|2y zzZc~>q@lUy*xM_g)tIu36?B}B=+c@V z{UgZDR01iQf|*gJR2DDqYyW6wR2i28e_=jo!*OD8fHYe2$)VcJsA9FgN0OOw1Fu#1 z^-!{W)2w9YChL3ZgMSZ`J_gqIi1ovr(Naawab%EK{975kRGZHA6D5IQx=}gj%{W}G zOQFY}q3ZY(V~B6E@0HVBe{JRJYQ`8PwJ|wm%KNeg8!I!aoHpmCC%OcjId>agwZja- zo)n%P{{W-e+SXqebC04|nPKYD_Z0<>v5B;QZqjD#G36xm^jQW|@lg?)Sw87|nojY9 zU3PP;bI?USXkl4D%M8o88lq(RmSpD^Ak(7(b}~dp_22{}L0XrCauCx0V}*I z*}lmGYk{INTP_w|6awS020i{_`Y$Jd!=hPfFo#g$b$u4p7=P*AXtCp>{2_C8x-B{z zy>T*oNtZ@H_0K1#(R!Cgaf;9Xu&w>V9Ib)?mq35%)tpDVgYR;m55up{qv3YBJX+BH z=~m}9>6Y+T{6avIx(Vb0XYs;bdl?Ekq8Pu%%2{+iVN0%EzbHi695k@9v$OQ*zF#Ya zymRpF?=S4XQ`PDpA9^OdIXL>#nIuEKEYxk@j+zVGm2e z22VFzz#w?JHR3df(~rtg%Udj7fr(~yu|mz_Drh8-X0yezfr6Ou%L;c*cDiK zt;^TtdKk{)*{iDKeG9U$wL*s1R(yaHh6}<@fAZ52mN51E^z%t!XetM91<3^!y9-&| z)|OM7(|_9euRgT4j1Rm@`Wr%CUFn~95Z|OBy8FlUaBZon^K?=EVNW!sHg*~XYm40m zG^ELfiu9+vny*#OF;g@0!Rc0>-`{goLy@WBwEK&IW1!mY0MFW}*F5{X)65r^`+mB< zkDT%M7lLYGB8Q`ZaJ0KlwS`S>XGY&A)~6BN{SJEewZSv5&tCZheQB95PZKBh$_{;V z6#2*LKkaX-_02ox8?(PYJ^b4%->2{PoLO661IKIAXYx&lowDZBQbFS7qq`r}=P&=! zpMO%H?>eK;&rQ|(AQSZ_Wp6-UZ8IuHQ$~-f6KM}BF(RT*h9dX%~u2YH}w5Koay)N*RTD%GwE%6+1l@( zN%;=uZ^#{HqfYRK2|hV+g|{Vk7prb+9o$_gW&x|n`jqv4zJN63NT+J}kP5{DoUJ9# z^o&WZ@O9Ts&a5Qx0CMd-1+ z&P^P&Iws6d&LV_RW>gFjO6?~xSDPDWqk(5oXu#gv{X>DlW&_cv`@3AXY6rHHEwi^0 z+AF`H60@`|IyZk?#6Cfi>cF+~GB~|`QTCJK+{TDAs3&fTayz1h$SaoF7;Q}#0fqLg zE~Xa^!8E7$jpWDv4e_IKuCsuByDRX#*nXaqkfbsw`nX{$od%-TDpS)ou*t4$@VzS< zu>)W4%BwoPU0CcU9s_w_8{IyDMHIS^XJEn?A>QD)x_( z2umjl7A8L?0oV-mg7uWRIA#4oFPe#HqOB0)4K&3I|5jg^V(u3U*0<*E&dggRw1)>z z-eLEUyz~7%@;O7^$-xicWFj{hIUV@3en|*Ls;?zm-yr3FSdf5gzY!@q#eR?&Z#5g@VjEF)GPkX%FUk(BVXL; z5NNaT#^l-l16HPE?|{vN?A<%57Hhh!`Kw-B@om>W#Yw$v9u9Mf{sdFJYuYkm;K=Z` z_Kej=xF!qUEEl|V`!&8>0P7Z1VE~2aRcOT(0CrZ-*qUw^qCX6r+cTE!NCYUg9(s=t zP6wucd^ecf2xj@BsX-v;@05D)vcBI1%)$1;?1kT4BrhH2A13=T=qsMoD@VSYE1b)F znSqN7n-^X8;SYuu&Evn!ZI!4F%2DKz=s+&~;RK;S6s2sAQx!49zPMn~47VgD_P|nh znPZ$GPPU9z(FV@cc|}u+0%YapWIcykvOeYP?4i1|gnCX%WzhOX6;!pHYGudI17&ID z$v_}JBsf-#^I4VYFMJRFg5`oKBu!R70xbRUPD9({VZHV`8IV$>eLOBEDI5xqG6HlXUf@hU3^y2Pu;* z-nZ+JM>JUR$MrnGti1A~6~6&eRhgGm@x}TJidD=LXWVdR3;Zlz>mxbDFLz?zmNs zSG1mNO(RuFnn6{m`lxF1%t+^kl=ZYK@{R7VFVaQgj!1!h-(w&#Yd`LM-AtfxvL(bja!$oj7v7`b1|XcBT)A_z zV$sA{Rie0(k#|`dBV4aw6y|tV;tF5Kt*P?KEI;@C4giSGx2uY9vK@hyo9$J~oz=7b z&R5|WhwYXB#(TI%glQRLO6s@RzF+x1nVM(!1ge;Wf4Fm9rsJIf?ozdd+4}?1-Aogl zt9GpT*1+;q`R7pLf4-;52c2VY&NjDG0C>%{Uv*+r^14e^{x$!r#dB_S0(@Pwxn%C|Z2S(xD-@XL$HsL8XPl&WjD9q)t#^mx?{EiSVRp2&rTNnisK9Hhe z&j&M8UnGqyWRKRkz9x;=o$RuY961a{B(r%l12!@L^DF<|XNU3MbGvwvC zNNU8)&P+#u|2RBC_&yA7)Xh8|<%}+=FQz8*{V)b^{HZS6VcdpMZ8_EKOwaW4oA#_L})VTm*2147%>L4dvbCKE&nJ^kV~`B7us1 zZ=t?z4c6k{*fX;*WnCEW?+W#-@17Bx;Jj4w!iU!rk>nhEP2b#R{KEX}n$u&ywJ*~% zFZO{)B|*VF%78!Bba-IG&_*DJPOH3rA*aR2G{^sHEb`osTMu@V(c7Y1}kZ4P~pDm609=GL3@W2`hW;=Gz*?1Jh!of#v%e<8$aV7Q89((Oi_; z_bXT^mFL=j{p*A6_m{lHyo*-(H%Ue)7p8nuKzzh0jF0J@L0iSA70IV0CebIuaxbv8jJ%I7_e(GH@p5Xjm@jnvLE_vi1(sM`{=Y_CwG4x1_?C zCf>A`jCXwT!Vcw_SAg+1t=ry896#EAX^(G8VaH!4jvs6Pi=JxVlp0^hg^A^tt4lHak7xCKkTMvLAtXz71(p@0mZQR?P!{Mn8VI*nl; zfsPwP$=N}>`_sHPChBmU@TIAR+;TKZ0rX-7UGTSIZt|wx>>?S+8jI)XF#a~`6z<(> zQ=jy~XNn7wpHOtApNmm|e*2-V{@Fz3FnBxP)xV60z4AfqU7U}-Xg>CA4|`+Yzd5nl zM@Y5JGm{I0soE|a%V#O&usO>9ufotyLGfi>$>r=x`=L$1;kCafRqAt|)kvNzdLI#< z)VkP#wkKnd0dg1xR!j@hj}TWW4bMTWon zBCmwKJ9`Y=U4mQ22;4*Z{Eg+#-c)J8g?Iw?fk1pL)Ym(N`pSC(Q^vZ~cQLEwlxZII zMSGeGr%dyx&+e%*)HjA)2%Chz-kzPTCg-TFTEg=#4ATB}0Dqr>kSX(F2&Qlz(-1oA z4$Z8}GzP_v%<)))ytYs0ti&HUP(kj8S$kbymPjiQb8dZZ+V{Y|Ov#)6Uqd8}P1(iD z<`LR`EoY-jpx*vQ_souo+Ld@BBtMvlUT9{nXJO0Q&@}&W8dms-X2WHuhB-Z(R zf)%*Q?%!V3J?&_GW9Odi_J{bnBb6^ajq=I`?$(bp=t*klyi2bB3v=b)rFdTX!TNLX zd(iL8L7!iLet8f6cP)QG4jvEw5lZLRuVmhCe_i-TEUx%zlXj@n#1rmXtXXY*dGY;o z=M&4z@zm4+ixa_Ds}Jz|K7J4KOBRgkL;Q~8_b|T%d#FCbFL^MkkMc`^GNN(T#caGZ z`P%ckv>vF5KiBz#g&ajN2Om$reVh8!zUo!`YDev>U9~Sb)V|Nmnf@8``#){%?~uD!jie!BUB;BkqyR+4M(uhy4Xc@vyfj2 z0)Boc;=zKHk8fcufj+7&9uaJ#dX!gmv{!V@(4wzXM1!oN3cjsc$9hG_4K2EdS3$4n zSzghzy`pxaPq5{|@Qz9S*Ptc%+W2$JKLKI!JtQT-2nk|_>|A~|Wasg#Av@pn0Y}U6 ziWv&MJe6~N{G;(Tk-CL1;Ys*X4}~uYcMTM`t zqFH>YsPLtt!k3DA_{uB&uJ}5iPekIvlkg?H314zaHUGbd_!1@jU;1+A<4gaU`G`lj z=GC?GIY0H398x+A3fSM%+uCa0+*>~_eTpPPrx zPpQQ6_*n@8V@sBw-8`J1LBJ;^He|0T?VXTz+*?iRIp6W_Ebdel9HoMHWqjERMv9Hb zh}OfAPst8XRfm<>5HfsH=O-7=hfg+(Ps)E(J@b2_|Qf6xE zcyHG;pA?^`svt|>Cq;3#f|HO>j=tXw>!+&Y z)by>v5Pd_~qHis19(^kk$$tfXpOgg+A*n2VtMrH>)sWIz`c~-?rK%yNv-GXf|CfKe zB9~5>zv}{U6lDGXo`3)EGm=jp_fVQAl1LyH*-0S2$R1WeR6KMWF|2?HS8}py7?bGJ zaGX$y%Zopql{GHS+B>wLnX2XoS2$`n6Ml$<@k>v_7;*hNv;P0&RQ(@T;Kcq9D==dJ zhm|>l{`2LZp#R!#h_yzC53g9-kPXrB0@?nn2JyTTYRL9q1-$V;q0A}!FP5(rAgt#9 zr2QW@GAH(bSb-D!Kdiur{U2854EoQPe}evNa=QDuVY4^e|NlGxv;1$^&}GM82y)l_ zVFj||KZO4cD|5>6ALM`UKK>~6CT%wQB3DtDu{!^1ZffDtzJbEp)>KEpJCT^)fO3%e~*jy&uy@-lKPj&)TtO!L{*cmJ`(6e#{y>__8il zP#u4!^EEHr*HcnDo)LU&PJj;&jKTUF!2U4!)|>*qHSY$WtKTJHbeB$81%<<)tj9Tg zt!X+=a0HB=3`o-veql^aNBKoGZ92y9`7A-N`u|VHzw8wkL+UR5n3x`gLaoAe7*s!QaC}b{wu@JW(1=SPr~LjWf7JI3 zv1y+*^gsFiAJ_hWY5!&4@bLc_F;#rYph0)Ov4tr)i0{1eiox=3AUW2ci!O{0bexBUkw{6VlFc{vy-W?8@TT$3 zlL+ZJ?R-dZ36wwyt6v~h1^JIYPTi3I=#0W{?{+cuZsjvx`Qv%z-R|x0s#XK~SdKwB zAP(~9X@);H9Zp?EK=D%2gqW zkbNcsPSa6NT+4?`XgQL-IBYHs>`1mA6=t?C$cx&Ut*;_iUlp|#y0sn2tL(f0mmZH) z->CPXzUiVBb-I(HVuuK?1|Ie|vWmDg0&~(FGJa>!>b{a&e5n zPNJk8!$+UC{M>zO@6D)Y>+A}@MHe&!azhpPJc zU=e2<{(1_*b+(%W?oqeYI$)2QR`uW8`tLxpqd=ZB8!V=@oSN)aac%iM<^jEn%-hJ; zz^T9I0Ea5*vgT!^!Rzm=LdDyBE3J8J50!(earnhu}X zo6)(>xFz23`ulHgPuK!A3}S8XyYx3~h(`ZCt^b~+JJDqDr-_ZD8%Y*(?-g`*C;|O{ zwZEfI*5487xmwhGCxeMS0x^Tz&(geYyD~Zo0UgCY9_LFi;5|Sz@tU*xLN21|4YsrV`PtC4~qQR z_0D{6L4>6?r1% z$?D6KhlbWSL^wG8`tszLq4l|Pktb}NSf7?~f+cm`X!!-M0JkEP^ge=-B_*&3=*xhinXPrJ+*WGYTDh<4lJgcaO z9DcIxUpu6I)3hMqV3=I}{o6J+9Lw}<8QP);19_@@`tE$yHn4R!9LY6$RE<6|v{A1; z`@XNj9JTg`I7ULJ8*}`!gHF?OeL?E4br{9JXJaF|jW;Gux-z$oHcXFJIaB<~Xldq9|~;irutTU-caxl`DL7#43&m+B@@>ZiA$g z!K>6MuDmh=yvI%n@8L6n_sEFw8tk3`uSf6peG;IIaAkH-VWf>adBS=$-)Csc#qVzd z{$2R1zZ-5FjydZMZr=s}4M$aGEcNsa*e?F}zi6QDUT}QaST!6mrvKYc5FLi%`&$6} z-qXj#zBk9Z@FjjXF^ASHi44-y$w|as^|^cr?_~I95_|M<#`r#b8u&hPa(o{fj&E)1 z>{Vxo@ArtlPZ!@OC-IT--8FoDfd8^RHv8M5{Pz^=gV-J^D+uB$L0#(|``ac~2fyJ$ zU%ZvP96UIdtJGeT)HAb#7H`kpC)>I03I34cr)d(|CDwPnzsT;#lfN`w6!ah*5%+1YSZF3B+_?VCCV;x8?~w4vmP z>+jhLe*%J8$5`=);A57zlr|eJ#dGeuLVWeLcY3TM+Db;bNtsl=8)JQ2-(f#-p9gUwyUuHQ%?8>)^U>-@f=Stf|;ZaAC! zpIJ`~#2&DIr+00oTglN3*SmP3w=U=K^6;L&+{oeZ8)usAdQ@3TN_YIJX8Hu3Q?Z1wu zCytL+fYcw~(h~`(_AxY6*!!Qk>P?SHycqx*E&AUOra1fCM)foKtL1Mpf0yw0=ls2& zzw8hid>H@z^MTmq7(J+03%i3A(tf`^*fsOXVEI9PY|XoTph}r9AJjb3w?XL}gQE%Q z+++AocazaJ4rKMRDo-9DG%9}wEtoHayVLCjm(ySJ7ExD=Q&m+r+AsCl521!6;f|B&uyTmO zjh&awmVqtuyo!_T85pz|iG9k%%6|W!-ET}cglO9D@u#k(@m}Ydo;$_rMc-jFQ+l@d zzG@Y2-@l{#yasQ|yd`pf#VXuH7td~3m08i}!j+|$EPO-+K+r#F{pa*->wV4Y*`lhp zP|@((-MTjnty^tm>o==QUj5E9X9o5buj*`lR}6#Kt?%@}+?ofb=`ri;GR<#Ox#2%T z@76)|)(Tj|O(qD@tUQ}<-rNF8#hP4(a>_?8gQ4P^dt3Hza~aLw44aLfeFS(u^RDn* zE_nV@|BcUs=LBd@@*p1)7Y;a#w+LkM@#&%MyZrc1g@$kDn$N8VH;&Z)d)@878*Dc_ zA81zmO@3}!{&v}BIK&jpC>L(_xWpS-Y~}W+_I*!isXJkfSZ$~&yFUD4wbq9_U-9jK z{=&`t9N)|cZA<^xKZ^MzF|fkKe8)GrtBk#Bj@dU{yMFZ=!2DbOR`a)KIvaW=|dY&LD7TOS~h<`yLXsDGWk z#d zRdww>$qW!e^b9&m&{U5))L;Sz5;c$jd65JNVIWU65{6_#0(m(P9*O~(1PS9PZTVX5 z=WVs^ZMC*yt)*hMCA@+t8bHN&X=~fTprTemE6n#_`H#m8Kq%@YcCOIz~6aterXWiEnQ|-b9-GI^M?s5G1s((P{?>-t)8eVvLE!P3mid=Apl=tA#~$R+vS9>rfid+B zMKRu9lNZxw0GBHSF4`IdQaKT7c&|1l1ThWK8sp^cJ2&=3_Ls!`ncKa`GL+;UA1T*w zhl}`{?}Lw&g~Oh}8kn@+XevGwSLxF^tMwyo)r(<|;u6-l9A-lp=)6%|trsPsU9S=6 zv0TNl91#z9=DbOiWDU$jWPDuKj0xTky^0w#uwQRYQ<8ThZIPmq{Kit_M@scK(r_=9 zi%mX+E3boI{79+k2lXk*yKo(J{e%GGV1F3J#c?0RehJ4f2G&>NYxZ3<`NatIJ!qOz zOuK~1gfYEsfi)BAV4Z@QPVP#kZ{71%n)GE8H3t@~jHY7I^m0sDVA_DF$x~dID7>G( zPv4tDnx3{X2{XCj^#>CMCjRMrAq7jX-J8B6Wk=S`gpR8*qjKC6mv;5fKXEiX9%}3r zy1aVW+Gm3O=aSa#MS`XK`eQfJ`x`B%9?qL>Y1A=|$!7d`FSa6LK=m;S3V5#p#c z8?KMdA>i?FnTk0J(+J)9TbjFrrZIrN(=xTzEa=FcZ_w(TP#R3tCKpzbGrLkXqxLF+ zrfSNkIja+T^TQKusR^7J1>f(No}yU44SYaZOU?LjFK>?gbx!*gyt(> zAr@r|O)628L=w+SEKWZ-rO15Sa?GbxjrC=p!7_SK?+j)2s6E5u3+HGPgm`zvWmP4velRE| z!N{sjQ~V8(HHD-@)*&%cZPnYC0f|$}z8;bG&?ys6fw-)`+b)Wd;e3)o6QO?uuEaw+ zU6y;b#PwMbgbcdP$4quU({I}U1C35@;=L!be{&qW3zaRosgX+~hFbvW0{RKgMul$zU9R-rYBFFU>`bNW z0OI&Yz%v;}D*>U{n@Ov0zcmfjYK?OD5ggFU=`Z;(9rraf(^w8>>*~(Wz%lL7L}m%y z^K9N*X;!Ys5Sw1x_&LJfqH_Gg5+dGG!~DQs%0CP)&GZ)~_7-K*g~rV&N?UJHHXZa9 z5fiMVMVp>70T|(EO->!;MAd-B_)ms5zym+_-zGVL^9Ma^N3_-lIiCbcnygALQ;uEFv+_4Z82FdDR$IJP1Ep z>ikKNA?qFG&O+>XPvt1T31vjvR6W#Fp`}aDY1r>%*B% zqp<`B#@IgJtBg*-e!*xn78^6`XG-X(V6;l7F!n}~O6aIybQ+yXlc&2d{ zte4h!d_^|jxj@ih8l49SkN4LBDw=kUmZ%IbPl>X#WIez78@{7-!<>wbrr~`7gK1J> z*2f+1(m*tMb6Fp+x!jkJX>Za}dSEWn5S0eS3ypgZ95uviF*@FYrjVK{owG1GmiJc7 z@FH}w4~hs7(Rz)O^YSE2v=9r!*AJg;nfft!k z@G+W%ZWGJM!iRs7j1^UleQ-9CvtC;L(9u%iI;DywCL=8i-I>*++(}Ee0pu(M#O71{&l)V}0E1>&Ism@!1C0QL*wNd@Ah3eZtOJgGpOQ~^3F zh$j_@lPVBTqp?|V&^jKWG_&@uNu;!>WG~!kiZhtvbF-f9I8G^If}6Wb$(x|-!&A^# zFvST-sc0>6DYU?>N_&*klpQ!q5U^w_c7BAC?LSk+ zRAatK$e1cL4K+Az_4h?xF!?t@n`1DWBbIN2>p_dU-Ayyo28-OjBDeSC2zQas)b%K- zJR+UlCR2+6yNpI7crC1gHSkcWSgXGO2fq9yu;@=EFG#N-IleNhu`Ike?i?|Dm8c%5 z8*q(6&5#goA$pw|G43kgxv=fff$rhdcCAS=D0f_ib!<>t#j<%plK|L*{V8;^yQ*BC z_kMcHGZGh}DAY07?)~(0Jbv`|*Y65*a0ETL7s$AE>UYxWqh?DV2N1}uSHzsFz_NuWHJ+X8Qth{EhG6ixt5n&UxVgB^%f@4fyd}8#qt9Q-jhMki1h7KhAW%5FU@TH33(7pM=n*C z#?7w^6bA`rbPHEDV<{gRYr#67@bQ%SwyMCgVejK2x|S>FNgn~r86#?mvP!+I!thea^ruz=M3=Jrf8c?En4<|$3gLNkymf-S5^ixAW z)$}8r7>gD+>}gnc4$zSU#}0lWTItdc?%K=GeMLxgIdiF$)-WbBjEzUdVwBWFI;CDg0%PKRfb(OuZ6bX`q1 z=BJ9)tbKFR^wtAyWfJ@-EFyf$D7+*Ls${*O+&LKv;e(rW)c1-u9%Y&S1igKnvSV%b z^tDQUUy<>(tWzC-M`yuGW&~EBhJega`fMoFT^|BxkyQG-!k)q5EVXU4WL{;N0`*e1 z?!!}NjbYE)&%keQk@0BOt!W)E6B7tROM20AWr)vm&u5z&~OA@#GsXHAhV zZ&?QBt=qlPG8MiH?kC?R)3_Im4jerzD@gwbUHbEIM@V`x10yP)a+i3|9MWs+xDmRO zAZtVk)(?~x_=2Uy*i!@?@RmTw3y@a1n`)z8{wcdjMqI`E;?y2zV!e5KwVdSNkwVKP zrA0Qri77qCXXJ@g@J>qUflef&DNdA4acb7SHSzEWhU0Q#|ER1!glS@hB=Y(!Q?Bas z6`oB}NO{*nRDM)3G>YciM&TA9(r=_XSJ>D+6O|?{XQ`nA%Yg)jeGoDwE5{-mNCt+w zyA-o=Vw!WMtLk&KDRp1i!Yr@XW(&vk=CCpNsiB{0`mqHMR|J0aDY}7fYo;9cNQ$r+ z`iKA$)4G8$e=w89-i~C$^1P*{s(|CT)>55}agWqyUQg-&dvIu@bPW>o?n;C$q{2qB zs+KHpEcWg)r4;J(*IL6pSFOW~2%`V08S2rYUaLu;T^d4%A9mrEC+>r(AIL;wHR$i{ z#~NYw9W1$Xe1ioBqR)1 zy6EGBMuT>Tn-*153qK6v?j&0yt@v0O`01$Q_~^jbd%{gKlqTYJgD#ro5mDN)Smw&v z#EmA5Un9<7iBH^HX$$-?mo88X)j%34rU*@Wp#iErc?!KXg9^~S+S;h(;b1;MrRkYP zC%4QN*g5Nc%>R!lR$Jh3G4ZiXpnrrE=wkMB+a zL;7=p!;?P@-oA?v+KH2d39Sx%Bd$Chz7mBi-Y25DhDkICV?ibj0MPfE23_FP-$b$m zoCUxIG!V?TMw&9ZGVm5I3y~Z1#qskvrkn#af2x>M+qb(X5Q{ary7uB$jJ;W_kZ)^Q zW#Bs{A{(e2oixZ+q0M$qiwB$FXLjC8(eZv!`s*ilkVCe-Mz?SDM1f}3OgS`L*>b?2 zafd#6x2>|mpZ&eS>;m!4T@tPF3D~lA1 z@0w(TJ1?uhW4hloG3)qk7m~fkH%h_NYt~$Z`N`21WF24qUS;sQh&2>wfM0v?H80Nh zX7`A0@Ek!9CK-EdfxG?_`mw_5+letmpm(paD6YFG?)<6*%&VI9vU524l|3s=z8>Gp z-9@TzXLpqq-0)Ucc%wl`yjRg-&gxJxMl!cUP3ef60^yYs{1{8)s;FWm2CPU4DfoKt zjVX-t^^UGg(4Ngl@*=K;zaND{cVTt4%wT&`;GVyVdqq^bUg^6z6DyhZYHLvGQ&j8r zthZ2wroy+iieR{QAf69kZOh(VR6%O<-RC#{0*0T}8c#Tv$Q`ES&Mbq4GEIIRl{}41Sz;wj0Y;o-3}Ofcjj@?*LoQBGEA74j%J2OQ zGqQ`xI(OnNJaje3ERDgf3AW(PNrA(U3NwJ^1rmhu$(cx91JPD!AA?z{$RYA|Wcq6H z3E6LvTeKIx(j=_3Sxi0MAy>tux!U`vzd^IMmjyb0L7B#4p+WaNaDczBaasNQtR7EY zS#O~j$q$T(J&tJfKwvTok-YS>K%GIHqv@JGqez9r27u}|O)M=sf-jW?G7;5R1cfzW zfS1a%w@8e~(*(~QrWlW1FuBoJYtE`weIt~)wQ5Rj9F2-8CHR4om(fyt*1+9A0xmm& z%Dpi~alWFs(U?tmUP4xp>KT(Y&+0i3X;R5YOM~fjcVfj#aRn1kM^}gEZa=meDkh7x z)4B;qzE0~;5KyytA3}V7_qg>z>|jAhc;f|t9lgyQNPjQYvQF#cxQ41WAafWo7HS-L z=#BS-OAUb?2r%`u*6<~hbwuNC!#Wm?k3zE>AIDE{g(c8`Kcc~|Cc;-w?a$UUxbKTJ zxGKybus=o9Vp^R#(Dg1J;Aq8gbSGrQxIA>*f`lsq^?wqTh?)<|T1DVHlj#J?7+Pqt zDV=v>Kuok!6@knnqLs?FiB_s2kc?w2f`dnYSY!yLVvSnXIcWIjM(}4P_NFu8j)3f6ODl-2Dc%@5 z2^UsAkLXb00wia3Br4v0C~V)t3wO}TCgVnPA4LE-eqfQ@io5SuRJRhz7RjbM>0-x+Bk*V?3z8uBs>R^+cvJY;R zh1@AiI;|U>k^VXmkgkU&FG>Q8MHe9ren?(V)=AejSl|HJ&M@w@A=P4EF+FudIU5s_ z;T+QdES}+_ni8`j?{1T^#+upx8zXv)zRzHuXx;H-tR$mtj0!LX!m`9#9pN=EM)9f;wV?Yc>pfsdC9P6R zUEQn6gma|7aG5)&L;Fu6Zn-UR&op9c=?eB=x|F(1Dm>_lz>ckSHUUCCxLYJDwCQ@J zie+}+MUBN$AW#z;Gw4(Dc0f%gXzLdMGUEYs=!{T%EY*CNhEYOGO@m{Ru^H;|dr}O4 z_ULYMO_G#5zXQg!f{tizDgyubl+rZ8E59EG0WAzUHt@^GT}d80*>KG>L2C?!!g@K0 z0*BsQt-;9^4Nh;a_ACt8!(z{ed!f=^Z?2UB!QkjWfA)Ul{1Q*BRq^y~c>0IIa2v52 zr>Gr%2Wn-hS{l=6z;ez$548#zQX3Ga64St_U-k#FdKk*#xA-Z6rPaw?R&%l;?7~*kB)~m}^tiI&k zo`HAby_tA-ho9@k_wml^MhFNZN(TojC<~>MDvrV;D-KT;=vj* zO%MJ)@dsGvxAJpOX4WMhv;il{etg;Y$I_sA<|6MNvo~mVKG{1{cptqpO~^c{cv4`& zZ-EOQ(?E-kHX?2D5?K;b1aN6+7oS6FHei!%qgdFn*{HuIcIZd=aumUK=x-t@6~EdK zO!ed^2t$lkxYxk~Bpa~s67&pE(sC6AkS<4bnu=*OFWaA#ZrpRI|4_hhne5NL?$A4j z-iH_@N;a^_AvXiXSBwQ){F7i1vJNZ$@dzQJ#Wx9$4%b~wN3%?LYP!x$yE{{8&7#Dt zLW^=okSsxON>5f{qH@QFI7q=5V#;T@Uh)Jgiotu@s1zI*s&(QMtfO+r^N54b^Y7S0 zH$IOGu#xEpPkcbv9>Y0h%SSRcV%<-%@CJ#p&C56WyZUiPXAh zW>9RzvH}RPP#N4gM1&7j6M*fI-kNtG_5sa(J{D4c#e-Vq*WL=LNr6*7YP{~EQ1qn6E7OWMy(^!zu++C1R;>G+OpPHS2Lov2CY(nc@u(>Av6B=5$jDE~` zbHRh@e>Ru+@F>94kLUKAOO)SYKNd?|(f-!7oNl^Yuz9ub&dmg)aSz_`8Gho`LxKL- zLq|54#^iZFGdX_>H0X1q`v@6;q?T1y2A=x_9}Ab`v4-Yd-eQ`Bek{8y~moR8WmU@!I>UFug0i`&>$KuSdHRH(sgK| zDdk*WD?O7)^zPP`sS4K<@yc+gbpsM0O+w0MM8PDD&?sL;NOcObi@mqOAh@#|-3ejE z32RL?v}T*IP^3EW2eUH=D2~vYYCSD#9)Jd$B1)3HNnO>)1Q{*136 z0mc#D4(UuWbS7Eq3?#~GB!{&pIYN8zeWB1EJRRR$?JL>bIJoLO zq^r*N2pdWi1#8uEJ`=J~0cAC#hOGMr>=drA)V-<0-=Kkp=7>Qa@3BQ;{ip$(Mj+X) z>xU&}wwQCF9V(z=RICctCS|y$ASe=DLD02;hLBp31){WJR+6Zg;V(p~N4BmWi`?e0 zdXV^G6)6uJ78F``G4x|>q+vm1p(Ev#9&)b=lX5`l2Pp^6dV>kh4Wt*BXnK)|&K1rB zQh}A$RHH-XPnD)5372fNjuBZiHwK~68sSt4ox&TY*e%v}(>7t>iYQtuUV?U?Oir>9 z4guC-hb=P(fQDxB4bc5`Tt9KN9~3A zv8I;UY=Q55C=3VOAL^DRdC@C#Thq`d%fLWrrnlK@juBa-EaJM-HCa=QW?eO&x|mdB zQG{xU5i#$vny`LULqF<~VDkX|fZaSpKg`kkL2|Byek39B#3-f6)Rm%UaGPN}!)6pf zCoYK4384?vQC$f_pW{jp2matCHm~##?mJP`)QYYYRg5e+v zfU^bA1)!fPv>oWrHE6QL5Q2XGBKe6Nr}SgYBa%>{#LMrK$uG9xr2Q`Zcr z<7OK)qvq_Iu^IWXAV2g(nKUF3z4KI32aMZ56*4e6oRAzbD92EWM5QZJQ-(%e8Mcfi zWvGENc#ma*SB^F;S?rrlCV|?H!bI{smYP$RVzl{|IN{}|O!u`5<=Q5EiRUrGrFvJY z1|(DBKF41g^u2TFuQ+MzkLyK+BRKr6BSd6hdr8XkJ?|R5E6XXmMT@@U&=F{sSwt5- zJMW$m!o%%(&*(jcCL{n?7Yq~O?ox3fFL)7fRf2D?Z^wxPhmOP`6`Y5AwkqDY7iaz) zL%5Wqz1xlMs0yUYMdQEQNM0^pBvLwOl7hgKKJgZ~Wl{|jd)fYsr-i`T|3Lw+35Q16 z@+SQFQ~+84xD$OJDO*0qwH!PmLRZ~4E7_N-p!=JFBb7|j@917U0P;PXelR^q?=Fm` zp9JsGSkL*s3%z?x{Rzr%5ytjo&XWu21$*njSefK@AQnOqE0f*~hjLg;jIV7xbnwsE z%RJPNK1vC`hS^7&plp3znft2ouoy>qVZ%+a8*Yl(aFb!{UYS#L)q-NByeD)CT^*!H-|r{8 zN0LsxcIYqEeE17T^aSvI|Ef6Oeky6>Yv_y$XG1CIf#arhu0zR+oj)K^@&2g=U4bcR z8I<+$*dwHT^man(iC266OdsKp+dzG`L?5YF8dYpdEDdvY1>L1c>T;}CHykr87Q9m1A5pX~ zBR`cH3YHd)B)x&`7-n55q!>(c{rTnD0XLcH9YO%UfB@fwN`dJNjfeK+0PuG(CBz2X z=?%718?;Fv{sh43daSq(z;jFo{~Q%V1Dr~lK-ZD(jY8V9PNIw!aDcv&6&g%m$socA zn6>_wu!bR(rH_&#^!2kte}}#Xp|3(ap|ns`=xBuMekRnkQR?e&q`uNPsivu~fNxI#No6-Y$qW_Ch%i1sb~ZPE$vuzyH!r4dOzB zxZ>O2aOjA<_&1@c$O$Fr&k$CSB#@eFk(z22-}a&EhqSbCFk#8((uEZ(cb=)QRMV2A zyri$1z_DS0-|4?3Lf+UjFq6K=IqtmBCXO?(n?`Z7sTN8 zYSPOMc|n>r^jQBzu%ZiMV(F}JKUq+5{+%yvJ3V(x;Pi4aX6&`<<<0rU0J9wBr60vw=f}R9lu4z8Tm4kg4Gh1qCED6OpUKzaL6)_fP z#z6OQidu@73}z(;576*h&^_GOTYK-qofxyM9n}~0x)craCLmRsIyufaD?9MiWzfxM z;LOsn-b{S`IEcInSbkf3zKuH*f)}h7X~%UJCN8AcMfCTz=-Fy~_yL?gN)H*L1b~9! zSwVp{&Xepb#z0c6d!qMKqkDYUGag!r*5vE!%@GgXkFNVWKD+r8-%De`bTOQmBgV49 zFjB;$%YM=y^}OQvEDT3hUKIJf;uubmL-iWGYAbnERajsgPXAK8h??0*4=;qrgkCEm zs1zYku^Ho;cnTc{?-{D?IbVOP7vr5Ypnmk1@P`@~{V~y85xC*|c!<&W7VW-&FLrHW zcNcb-BGte@vE$uk-F6Jmw|%{vzU=qo=ldIDNE!pU`HN$Z(gV6}Zwnq@mc_WIagTwR z-2Y}GjX5M!>x?il0il0x%+VRd^o_5=)cx?bSH4PokL77GoD3mU2;tj*^jW06?M1=;M@Im#N)ZIB**BdsoW$7-~Rr>ZM(h-1EuT7xc_MywIL?QUr#iP zhd)r|B;QNEHDVMO%3?u{Mc0YUWTwB<+6>i0gOwQ?Pt&#ApJVOKd4tNQd*$2R)q&oe zS;|b(Y3 zby^o;kKTTFr+GV6gZnCgP)*`%58i6Xy`#r)tx3S3-d9S)T;$U=_FqH@Dapgu-j7f0 zFs@wVYb1;i+lpu9h%Fx8(woh&9dCr6F#H5(g3FVG7d#a{_Xy5ytH%$%NWycMPHV#X zB$bt3E6RjK?YLxckHuay?fLPr6mKNr&`qNDkD&{+hYM!hNf#)dc=nG+U>)!$kSYKZbp6e$B`ykk(_}Ki_nx_p#Kpc~Wy$Pgg{2;ae5Npf=xuo_TFh-i{xW)=0%)=L?sBcg37_k z91*Pmd!2~pD=fxd3F!qMOwPrF$<43AQgm9&af-J7Df$6b9`C2aJI3Rf@_p?8+7*0_0ZpRelalUYv`BG*+wcDJ9k#NGmdxV<|TF_+B{iF})&`Ec~S;jC+*( zY>6r5){q)2VM^===9oN&99x({tt89VkM>h&;OdkPJ&Cbst;WH2k?Qte) zYZ@|2VKIfu`uFgQ*T1MtFvkLtkp4M_H5MVmR%1`rvr5Uc_3=eFH9(7a8BoI_>o8 zd7%3Vs2qrIg~ABX@m7AOvMz;&Z%~uLDH}IhDgzG*y`tB%FM>V+Bl@DBTCslWFQwvj z8+dKeX0|f$kM9X(1ee4>^8I18yA>ag<-ZK2)2Rhvq{pZY^q76`z$Zb;mL|va>hFM> zMaqQ<6g2d%H=s(! z#qX|6>#oeehg;(2^{;?UF+SEJo6%jE-CJnW68{H|MfC6PqATCsi{IY$&*^7<`hDwP z#0hch`aTiiZTxBs9zD-spmLb<-N&)lu@sYyj59zC|6Nbu7)KK_sFA69y&?Sk3TM~T zRb}GNAAYi{;MQ?^=5Rg+Q;h7=GKt*nRc?F+`P!>oy??n0)1!>e!-JwMk<#iXYkSw9 z1PZZ#RSal7cT)Z{k(4fo{Y*j9bU`-#x2Avlha*J#5ehUPs!iQuyoC=-XGM1KGJb~H zpPlAU%ItdAeG9Iu+F-sJyAcohwD~f{?HIQ+#h{yR7Tv$)*Md{BKE5TU7NjXJX;N3r zs)yk82Bio=aKos4S`p(-R4n?Siss(HF^mQI0I8n;BuC@=NMBv_kF;LAShFTkyofL5 z?Ro|^7n#w7rRO0@75d`_?89e(km4g9j3roy5Q|1>-iACh35(T>A=;xPPqOFt+T@

x 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

n$l#Om!H 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℞KCC1@B-sIjROD8T4; zJ#Ml?@Mx77Jm5KC1%n4O2ahj;&m!=6q9L8fp9HPZfH_X*@m*+s@c6dMo8dW9=ka57 z9uH1Miw$J1owTs8Vr*6@_#+@@jLua@>OFfQhUl`9oudC1(D_q?txAaGN9x0QK@XaM zMGR!LP^f8uuJZt+me!vPQXV#n+}4T#(I31=#;p@bJVwuZVIP`?34{}0p=~;m`xr4O zOlsXj`OOfSVt@y4BM#j1nPtQ|dh}u?L&;=|2txQ~Oo+m!VKIY`XdfDX7RK_@wL~EL z=rcwvOxVWJCiLp@$0t9I*;w<|Pij zsi^hBQO$B|!Vv2X=FfodzvlO5P)dZ~KLEk)TljsEdI~fqpT=Q$=7s7*X64~@v)WVJ z(*$&?v*_TDa&D!M@F=iF6!BvXDH*mc`!QV1uxi5 zf*nb9-=H#Kqyy13`hv_Cw`%{Ek6L2;M+R1;gei?#D!CtoWpj3bGO-|M`>`g;y9pWC zIY!o)uo9)EEMCVFi&driBGoR?-2evoPSLI(p`>KJZOfJb5v6~^2!W!Ppax|N;Zau5 zEcz=k>M|$lFUAN|x3mBVpfO_T@Nj_E1Bs&#aLw;M05^{iNHl1K;D|IrP{hkdh$el6 zsEG~^6ptj}KXTWAc31t&qBfo%Lw|+aE_PrJRjgU}@??k47pj3k>+X+Et+JbFULp=q zD=CLO*m-`);X-Ml@4H_ak}8o?>GR0)bUIro@LM`th(z%amcQ~+=#VpHTw84=RRxv? zlst>Lv|#8_Lw-_d@m&L}eoihrR>;pTI#wv{SK)($x}PE!>C!TxL<%&}!9hEq_6Ri4 z!9mO6Qu0z`PYtShhP=|moJ<@Xs|~@i#462=W_^sf<0i_Ttpm~A-ucwSZTt0 z%yQxV0SKuZ%?eTm&4>F_>4)eiD_Ce>oNi<0dmCbCVXL+qu`Ng21R0z3_Yp#t3>dA$@JnRPe*-74Pzl z>`6C})q`!ai}5B_{c%JIw4hXDH*nCr0z3fx9%=_*ukNi=(Dr!0M5sOj*~Zbdq_~7< z5YqlB-%Q6`VBTD81+DKwRB#{I0h55jvo5q@X*|teYD3Q>UylXjC`^OaB?dS)xGbGL z+C--npcZJmr20SMw* zCTSywD`wvgSmWAvQiTPmD30-hH(OFj%AM%b_+m_d)CGQ1e-!)%J|mX{%liq-%HDUW zG;zNHLh8PuZ}r?fDp}b}xl0WV=%#$Stj|2{>2sU{!5ja?fHu;ZZ9em;%L6pz@55;W zfy;wBILLIRpqDwwe5If!4vN1#sOn)~PQn$uUA~-QSMZ*K?XmKCyR>l<5G0?!y?Ul^ z$~2nKv=4=}DkCQs5gz~d;CQ)ZSnyh$qYxY;x5Ni=qJlX%LT)hy6EMFG8gup$9m#?F ze0j#9nMjRe5r~EO%TNdP9Gz)!dBCSs)4WTU2OQvlZ!Qn`XAT&+Jb;mwcX4Py)lYnR z7cTQ$Ah+Wn2a9|O$hjTJQJDhdOSe}qrf6NcZ^3;6%Bd zFxO6)YbVUL6Xx0pb1)b-=87^LN2=pNUcq5{IZy8)@;rB5H9tv&u9)}Ii)gqQ8uev? zc;X|3bJ+gaNTVZquHNsQmXGR%b1~$KBz6lQEi0Ski-AZN<*+Q$8^ntqS{kqSOuuTb zr$V(ElaU0x6a0*3>a`cQ-wFQI_$*2(1M|YExu1b6 zl-jR22z`z&1$? zVKLsEij*iFE7}gj_lC0@kb_@_<)sv}(VTuSLpa)Ww zmlTV&M%;%6I%%Z&B?NrkHmPw9K81ObynhuDtmkSzKl9^sGerwDvM2mYw8ia%t(7L# zk&G9%R^s^x=#S6$1C~hh{YEM!zC_4zVpA|-2KQayJp7l_7zwD;^l7;ZhMtFi z?ekcPjvSf{JnHA+FA(S9htILaDuMQE42rJMZZ@pyqY9)GHpCj>3y%{v#8nj$X-Kr6 zSYZ5hCsGG4JKx#l(ky^)==shI1Q>(QcYfr#SWst$L7lbW^7EaGwJ$+NPCN%VeJLqdC&v5>jqtL1q zOmRcyp+fC9x9L>o0j=E2a4|8(q+1b%YtY>?;r=Gz6W!@st{}pFH)NNAi}f7r2t$`l zwHFpfmwrmM*P#pTei)$m8tK4palUP6BEd-q9s|xlkhi;&>KBv4A2|nosrL#?o=lHW z_KDlF8mOb=HltB|R&Y1dA(Sz42d@96AVJkJVKj7>VUZ=ud-4s;|ID3VEpLq3)7i*)nQ`iu|B{ zh+gEb0S2^-`=K=GqQQz85=`CF+@(VjzF(zx6R}W-Vf|&Fs-ajZ2?x_d$&R-RQyjdO z5tmR0%ArvUq8f;1JG8Z5xRtMDC=si{cY z9+0V7=r16L2g?Ba;G~}gFAwt!`6^K_Hkf{wZ5E*>0QCkP(XW*tkMcs~P z=rzi`Si2TOVnC(_xdFd`%xwaf^4bpmrgniC916(PG{WVFi~ev4R1;VX-^bXv5iT1@ zI?%WUF8?lak$K1R*U9xt#6>z1;YT_W7pI`3mzVFRc-!Gha_J za|q;SQ=K4s3GZ3=>E2xbVy*Iz=Lg*(Hj4+6sGt|spU6FQJ{K*_S-?5Co0BDTDmuNR*RaQuOv!JKP%`8xdjC45r zE1`(DI0||y4msYgwAnu>(s$mGa28BAa*4NaL5v@LA+to=orN}Vuc!byHATtkxk~1W zELsr5;Ti#-w7yRw8r6r7E3k>d9NX^n>iL$n0E|Gofw80tA&_Zu%sWk_G%F(PJ*`e_CgfBCr0>bj69ZG3Slmp2x7(3Sn!2N zms=WPBauANeuLA)f;6-`TdVtpo}QbF(#I*^o<2riN;SmVcP)+xOEdF_NJ=sA(_&kg zgl2FCNqj$K-twWhK;-4u``0FF3FQXEw7mSa*J}e05*;Md$l;GtP{UywRjy?6r_(Fe zGcr6h{!D){I{sunhFn&`TOWT`JrW&%+}klYYfE=uJ_MB_Rj@-Jf@-%STI?ufcn70U z?KAMjN(S!;a={129ZKy~cq+A9_?gMiNqBM-1#&F+fLRChomI6@Ab|eFaz}Q61`rzF zdk>L|hWG9ca?yZP^A@>iKoTw*kc5k)6#&niu0oZ$=^<)G$08V4M@U8 z1Jd#XmoIn_KBN6fZJ_#xuhFDhi^1q@1JwXs&6kS{zWZ;Fr>>)S8e)f55CrGTNoJ?qp+PAXN_x@$_2z7x>3shWS%w`{99%=^c7{ zIyQF|E`{wyy~O4VX!;zjYbV$bnT{5^Uj!Ann?O}MDct{KA_aYs3LBCvp@dUHHq$b&NjJ&SO~qo-ItALpIWd>YVUHfe@1>3$hN0)G!jSf)7E>Adj`t9P8O zc>qx*XY1hDzZ??V=d{6SyBxb9El?kD(FZc95t7M1!O!>lsGF$~>@C<(FTL98=vp^h zdi79|sbHWGdqA`acA!xpv(30kj55{$56#qWPm2m08z~PRK@6um4M1`obVLt4G`J$b zAL*B}4pNiZbR|oj!HS!z;-@(+tH-+!Q2RYY?I(75y%duz zm@LzbiL>F|W!jH!y)jyo^x(ETiupa=woBJ znY3H-Ewid6$yhjkwG;CTbA~!QKJ3(ERR4xc6vD^HfS# z+`O1x^P1PtE5G>(dgU}X)9a4rYnF8;{>j_)W%d z3Vsg!X5tqfz=%E=-}(-0(Z4(+Xdm{{e3(21uU3~%w?8`veao?Qg_=86%3Hbuv~#wR zSkh2wWit`KuaOuL`rO1qZPHC(Oq=PuP|F@G7*iufqCXMQZ9(2H%(8S}Eg$iu-Pd4T zRSzkR+3=>;hc5lqw*!s&dMxGFv*A)2U3jjt$K^ZL?!7!AZ?Y_7mqfu;65 znZ{N9to9h1yL!Fi!F}iBL@SgfEvi4gv7Os6cUH z-RkZ}Rf3a%E9@EJ?x!qEQL0KY2}cb2gWPPxkjDMd{R&mQFIw?;u1$GUudocsYc9?(zi~ zkh@P0iMJ?PA~6y|CuFYg@xV5I68JUq7AA2IMyb?Shm2AI<~md{UC%~2aK(Ad0Q`g4 zM=szm2K;jY|FFy8KOMzH+e*Sj82$?c|M>{~G4X!I@pKg*DCz*(b9S8(p;f0)t2SZbCC^fX+YvcNq3_qkvS4vyhLuN= z_75maOrVCjODX=1*bRkyF8sKlI?qb2U!=X0PH~7`jCa>j+sD-8*!_Cjv)~-Q7xoJB zF>Qwq-(QwS;^~dFc|hD>wiV?>Wz^^%1k%l6e*(@O=eCLDO7sQeJ>>@w- zv!tizNBap-nVAsgR-iI^KCJZPEedO~()ANRumkglW;(Ml#cd%8G?_*LaV6nC-rgs4 zDFTEreP9nQZGPZe?=b)uW9NBzAMI!g$jcyK^5U!2#U>TeKj=IF;+ZzJiTVfzz+^~6 z#U(B^CmnWP;cRZhiX>K_)iTSui;z@qK`M7<=z5#DzVBj{wfEK~PKokRc$f!vBE*Hm>PtLCX;M&wJur4dXHem}NFl0Z6 z>`Wg63AAgHw?ShM=|G`~kR0kP!cDcG{|iB#thNub%N{b`(dp=xvw4|jm9?av0=LaD z9@ClXqh~{^iB{A=;VDd(cz9FYvk@G$x-;k%?@r^$E<{FD)#P%ym$T0g*~g~Nnu0b< z1j38M+UiA7d=q~a>{Y#5ZAJD{-ETqPRM-#cVVUpVdg*#w@NRJ5Vq#eqXsF3!8ax)r z{WecNu1ogJlKaz;pg-F)&E+noaJupf;TBH@MZyN2G}^$^i3W48p;i-&`a@h+$&3yp zuu^_(E%tE|n-3q|l50MfV>OsDUVDaVN8b1*6pYv2-^N0Rl1s{icJ7EV^uzpCUoTbj zrV{0$-%52q1ZybPMnFE%Jto6L1rx?*xV@+_ojC)2-u0QMhyp{zT!g~Wzw;2S4cQqocx^e`xi?@V=|Mb5DnkO+@eq`Mt z!ga#b8(q(f;Cp%m-``<;|0=pUaom3k-zm0J0^cdwCk4J!df}t8hIPhvppNiuRe4$~ z^seNIBX(3a02K4xZuUwRHi7gZ@coaB@01yoHQ_sD`<2l-gMjd^M1<}uM<9IXA$Z4o z|M#H%7x)F6iqXf+01~77?IwlCx|M1iln{f*Hfkjr-(tqg8G3T8;KO%jrbv#PQj|DO zE8mrAmhZB{5KnJneS8$x@8(QW)@Ndps^(-W>nE{ein4wRJEkh@H=+ZmIn$N(q?ph_ z36BR@Ab19SUJP)>+LJ#It7)!xKMYpoeg+SHs&sG(F@&&0!^f{Ed6OWAp&UqCc=n#4 z_Rhpak-aD&^Ih_qqOuw#zyX~{$!n^RjD>zB?HGAYXV?NPF>g5z4aqRz6mn?_o_J-@ zD?A_pevC&zVb*cd)ABhk((bYaEjXCtZJ14}YiKXexv!*Gk7ga`bGK;^z_~BNBW!YH ze94H8FMnOkEH5&`f-!3+UWABEtcrF?9ryeNxjF)Coj6s$YFH?J?-QUiA2wYaTsvYz z!d(XQ4|D4euKRjJ0=X`KLMd&>3HSq!z`A`TpkN>@p08!Dh03_PAHp6cAAIzSeM{DH zoFH&5ZW2HROa-`;WP{Ouw8?z+Ovi}|ob+qUHhqPtxcdA(QfglhAORxdPan>(CVLBD zOT+J4{F3n-gO2p1K4R)H6<9Zz zN6&0B+K)Kir#f4*O&?=Ii6dCv!$B?~?|^nQGKYwWnnPP+Z_hWiI^J6=?wi747t}sG zyWdCq6yv-Xw2$TP3~Oe7{qc2QBl-pleO&&uzlZBW9Ph2$7b`xk+;R~4wBffGzuox# z9=|Xy=}rBS`2jY#){tbRmJ$y6Ds$iT>tKUJUo79;MDoqM7>I?0r@^I5cn{pG54p=0 zVa~JA>Nv4>iT#9v8`rkrqztOhHb2H2UlG+u!WA%g;|drFMu@1>7l;oZ-Qz!Zah^!? zFM`9Nur0qszAxbSG=7`$tH zOyOF-h=E+xGC6!+pz&_5su^H^g{rDJPyjVIf7?4;#otA$xN^%DQeOYn7~Y0qCv-T=iz^l6K`@GIca9{RWN@Y2BQb zrn#4zaznU_)BEAFrM{U)lmznjK0rCzFG;(Sq+Mk=a}k>*a!jTpD2mE}0l$H-UlZpg zNxO``yUe&8Ygf)Urmm(!TvA6D_;L0*$Rh`3q3NtmW#2SGt%W<)-hnwQD+5pj?6LL! zlz{;{+@Fkh8_eI$q5ibNNUqDD_Dl7lbqB&diS|%mjr2DB67e(Rcj-gX2BQBED;K?o z**AKR+U1*aCwHAo$7p(VGj*O75$;nOC8}FX1~tXUYZs$B_K$t$QrUlLOPF5|piEzh z-hV82ue`;YfKwN!|KNHq{p&w>*+0g;H9KPK^f~hE#_v7+4&&E~-<9iw-r}1=GOfXv zN@q=iwpuQtbWyD}k!o#>R;#FZNVQ7!YHh_Wzu{VSLMjrqiu4!D-CQ-%Uo66{e#@Jy z^jfq^Xz#tqaVLJi!|x^hw&548)=eQ`}nD zlzVYQ&xST+`4tM-(0XfN!v&GIQ$p5F1rpJ3H1~W{K<7u{{xB6{Xt+N_$Ct~872zZL zLo~mYTW&)7H2ki`FB!j4_=WMS4pmKM0JZL3ubvrnlh4L2ulb zZC{?j>V*N2lp8{0Rv5-&W^M_MSq_IACy4q(W884MLSr7riv?Xot?fyN6j^?a)~OAr zHLUpZxUzR{c_Du??7~ORrstS!dXAe;&+kp8=Zq8we!+z|7HM8sOyBji*C7zUm5t7ghUX~og$4Ku#OLElpaI;?iiKEnCuRHI&=joiF0d z^v7`U0M34$Y=wUvRNh(sGwn#G-GIEBoPT-E*tF!Y^8Et_dB&RCun$S9e+!|3c>17u zhE|Mtb$(BQb_jdXwTeVM>hW;*n?Rs_cxWM%P*#R+bBlHfA&8vj?xoNk3O&i8B13Ar z+fSlEShk?vAr00nhPsnd{R8xoGZKuiSN@^FGrm|`B;bWPfY(|cM=GrEt4Bg(G-Mfi zFBHE5-~lx-)>)w-834ebe6Vf9lD~$$f6@LxiQCGDX?<`UF1NaS2@{W?0?$!GK3Bva zoS**!eQDPK=qBgsC=%kl#o9Ym(Jipp(k>x?c_Jex4E976h~5gGaX*z*mUXbsFFn}; zo!t<4wBI6|koUBf7KZ3P9U|LHfaoKtFx;k^Em{Noi}-NE zbx0^&CX5BXN0kOlrmlhq`}m? zO}$^EWqg0lYG>uup^kDdsO!gQ|Yw7fyZwzA6A-maB#Vi zBGo0`=h_VDYfuUvjnnfm;k@l-OQ9*X89XaR{mp@RsylT`(x6&AbLnOC4vR<#=4*I?e9pF|d9IQ>(u8+>*gMOQ9vL%O!U@Iy z?DUioes798Cp{T%Th{S&U*I~(+38liPXu$+4s|g?7NpzA@7S4RCy#x8tZT$UZ{NAE z)ZTL|(o+y)c6#!;&rHWEMmZ3#%2F}Rfw-%Ub1^M%U%IH(W(b#Bb3VIrOwIYU$^_|m zohLqTQ(Lo+*L*VmgofjsvyQhNE-5a`3Q=|={ME^MRO-2|b05lG23+EhtOy`d!(l1W zuvCPFtC2$KBh|3!)#yS6Q;;E7@>uZL2V9MlsKysuja05iN~9XedNpi%HRgGTo%`@y zm;9k&(b8p+8c}_&j@0J@>eF&zJXNT_4Gy(+2)YmR9z|^CncRu9VjLCxQ*Hn*oEJb&@;>y@l?LA)AjBL>iNVG}vp@x;pU<8`5c{o5S~8l6(VP zi1EE%6at@iX+4cXE2T%UKdbT!BOb?$v>bQ`Wn&ZB9IBeM5}Vl({gCHI*RMX9o{mG` z(^vl1W+?Su^#;MIox&r_{|25l*rZ!>7IBYAb^nZSNkm&F4!=n==e27z;*B&3y>d}#t z1}Ndvi=aPK(3fp*fZrN4dW7pF_oPw1aoZ1;K$t1oFObbguu@NJ8`{7WA6N-DF!e?Hq~=FesXaa*a5};*-HVpKkJcE@ zV;v<4+*FUHw;IxpvFHu9`Zm~&c&>f}O>5BTvL8VP--j!hEZnz}FNdeWMTx_$U3qi3 zwWYdD6eC*r0=bx&df_^AjVQm1>{ICY^DzSK+dixS%!|=(kNgD{=mYL6-^F8X_XsQ# ziS#=-DG?)1C*zWJVr-Sxucy4&k!T`2WY7}rg)#i+rPdSOZE9zhpStU(I{yLd zuz*qEh#EYt-r@K*pZf&ey$A{r;))h#w1^e@{cgXJ6Q4Z*+CAlj2G-`@vIt3LVuer(nnQ-etb774SQ zxR_%gH0E)9ewQ3;gv00TK_m}H>h%>2WI21XFyyryY!ebYcAU@sEc?xU7?VSequ4}# z#CwzW1lnHha2)jx+cOV=!BOx{9GR2{RTv+}!?OOlW6Km4@|TiW&x89_@{DF++~6I~ z!+#x0#o$U~yL%PJsnD1v__VQGn+M7+Ytsh)fCa~VvurUd`DSfxpZ*nxFUl5LkzzG} zx(PRI<|O+HQ}`D2gok=FOkXK`#B%)sI~^r zV}}5G6ed_{E1n}^d*9;#M0J^iW=E$7(5Z)drQeT&=-Yd{e`(te2`mc_8C5Q7_t9L>qMS){xS&fZQ4Kg42RpxG5$%ohiU%^NAPcm ztTn==t;Yi&sG5d-H~`E$mQlxoQ$aEbcDmfO5Q1}R$eW`5m`W~#5!aXC_JF|Zu0tKP zpOAN(cJdY|Um+Xak52;V1{6?s<~lsNRd5K?u=e;GBrs~fItv-yh!6m2z8!mMwZ0&K zBqH4zILm@(b{KhP2AlSp8MR1d@R)ZP53=zg4hf2vFB!en+Jgd+n;`YwD1bQ$ADTc& z?kxn{Ve#q7y&VVh@JR_iZ(oVrJ$^rdUY=HF@4!CZ6CGLc>5x7kpFtu6`M&hhOZzFk z@IVsbx2!#$Kry0q4z`uYYu&*4;c{3LkOaO6BMr&g%?0;@VNWA|Y4a|5ZaQAIWG-TJ zIdNyfoIN9GK%3SC8nAhP2(sEkVfGeRq4p#g3(bB!H_L0%4UgZTi@Q6F!SN(K8L|%6 zPDQqU=?TmaNGR4L-0r`EJggM}9^@s}R0H+65@Zh%T%*8h%?xS?gD0T|XBBy`BKf!C z^Wi)VDaX64jIiIFG4}==5r|L`6k&S&N>|MExZI@Cbrk_~`e791<5@he2hn;^K}ga{ z{YKPB@io!&$vS#&tD)!4$LYCu4W27EJ_)mBynNVVfY&w;zv@@<>!pYJ^*cJ|^_k7} z&)}sx%}V_faQMhU_u>V(TqCSu)a-$Bmr}olLtiFH?gJ!90bsB(Y>dH>jg4V6rYO$W zLl{rS+F&VK8aj8<=X@FME^2V?NwoDP9LGWW6Wpc&rbP-Akd(FVB=-B5G|;!94DzTv z@fkv5TT$^oKPH85(!=pp<=7JShnV>!sz>$y^FB7^JHDzogJ~tj?Vz~y_^;xIB~S5o zFZv?Uwj%UB6i!!s*>Jv*&4-`88#-O4Y;fDGw_M8oTFBdv$%9TDR554oiWex|mu<0x zBG$1AzoaG>RyblRmyrHCShToc z{RgX&H}y25`%&zQa&c;@MWMx;ul!4rKz~~JQ;9GoBx1bDb+ndeKY6m3_qGu zYAgrwO1o+-{d^R+{~XrvVH<;)?MNsSPyjJ->>4!D*^`7UqCC!^{@Z4LxQM3DQN zq{dq)23A*bKpe&)C1;X)*CbqaaB!(~R|^?KAy4q=(Z%KWYdfLy(er&DyjbM>sF^d4 zL|dtCibmTJjbJY;I9hRexpo#x z7ajbRXq1$26j95Ew4>2zUjW~FEmK7_ECKtcIc-bPZ^BNE>Z6=kWRCf-b)SmfAc5j7S#=-D&NUWRmSW{wRr4~aSi&!5* zf5v^oo7nswI9V8KFpfv3@<(%5*n8!c(ytP2KgI7A{7&F^0lypi5^eeTJ%ZoQ@wo|EoV^oXH%YFwF8l$$xm_25qxKll=K{`2 zXnsQwn=wYTduG+2t-7-UR_*XgtNdOq?ZHW_oa{3v!6va%!diYax}(9-Ddlwr$Ko?z z+KWB#nea1Y3ttm0_!lH&>07N%cXUX39dal^DM-dpcpX&ZU)XycU#=dmw%XfGxZMzY zu|<9}JHfGFJ%KIhR-B4M+tE|e*|TlRnv}2|5f4s!{lGSQ#FaI^XERX`xqn#Y4WV7s zv0c7~6!^HbzQ;|Vs_?FB?pqB9(2;dRI5Pvi6wHcg^(YECC1<63$S_Se{-o`d~+*q@$iLn?A`G^F8K zIT>T93+7#Lm&8+UKmt`y#|5^;lsrPnNICNYV3zlF;c4(~qL*id+Cb`7+|{l&B(r0H zaw{o>u!l=(C?>Me2u;p@{?hKKpv;oNg{!>Kdtb3&XD>?qLqaU7~PD>n6zB7a1R4ZS`Z zN}X*;=(uPoN;3qzMG@el+-br^fT4zqplCxf!GIhNr6SJ!6wFoR195CnKBT7Mp2HQP ztYSe0a}S5cdZ%33yF>S$LBsO8a!=u88rFDmQL1CXTD#9Po#E&scCX_-HfQ8;r2^rb zrb8JUn`;g{$Maa%Z>o9$+rO5FxLIQ35%R8(9DRYk0Y^4D2R9S;ZeA%7;9f_0fj58n zO``3g0a#1omk9T7@O}%wBl!IQ#L1bIuoQ)a?jnHP{8R?qr z5c#36m*4Nw=3O~EsgYFlXfk9eZTvU59WB!4f5w~AJ>b%qBnFFl1cubOp3^ZXKLseO zDgH{A_ScIv@w*)CV(>}=doJSMjd@S;+UF6E zYeL?%@`tn!A|45%#w-TuRj2X1z&5SGS}_LuY_j|-<>@mGp5fV!meqZ9d|dOVC@=;| zh)?$WbcVxWkU8%^2LDBG5c_Gtg^bv3qb>LX>2?`F{n{;QXt@$U7_XGXJ5&P=;s&2N z+k}ZuMM{+!O4F;<7TlrSAMy;B-}GOFOucEUH%(qU-Q>A8&onWB&o6OlrfaA)?6zyFvM3ESnnXA0#gI7gS=;jjLQ!8UPNGO` z?nXoL{u#7CLsnek+xsv)eHB)KSdF@+V!hr{dx^MGMLN(U&=F#E^a36269R+KF-fj| z+2pxNvdJ%^B$W@&fx61)JdM+-PoweV*Wr)$bM^(V4ON;EP*NOvjd1DGHUK*Sg~$cQ z8Afp+pwiaaW+w5l(L3O%&rerr9h?xXcj}|CCaMv07SccF<4Q3d? zCooA8odu1aT%x@RVFF?V+CgfZh?c~T99(dpb@mK3iM;=18aF()5^VwoY8Wi@#hXy~ zR9SqDbqI1BFu;X&i)N-pe{2vZ$;;PBB3EcPNsun>EP4x_5SNbG(4Etk*seR6<pMJj-^nfVrKYNMwQ)Q0^yOoJvZXqH4-fe#)V33!+p&)*&e02PP_JB_YVc&s z`bhe|d;_L<^pLdESg(hS0Mk;O` zwB3+iH?x%6NKh+{#DZ0}ta<^X$z|H}cuC|!kg2TbVp-!XTTMg>Pq3+({xRjwylnjC?)HZydK!r*W zn-vCB2@*PV~L6P;`@?Q)Mp6^z(02SZ<<0CY%@MJ6>o)O$WKj& z+n|V`U4$x3@lt6Xc+B89QgIa+<;B(53fYXCuXXl<+bFo&G2Dpfli~e@*ad-ZWGgp@ zn-jJQ+H}F&p&sTQrJ+!tHPhY?w)h1dlJED9+DA>fjO-w2OrwUhi{9&#MT-?`?a)V4 ze@P)S{RjJ{fQg#OgzH=5X~W!j*w0pu+V@6mKH_FAoKXvNQ~Ax85#8V!>yxulQMs~Wt)81yITJakDxp;NGq!NkhU1uL zFs_{arf=PkSldI1qvvUpu{7qu3o#+Es!P(8ZRx1Tn_~g6qYSGLSg3^jopRmDb0?K2 z&G=BZbpoksS*o(lhELx=y$%kk)So6#uSMB*3J%{tnavoMS}l?E z=vl!@;6FGosWM4zZ7MQ?*G#HuGU1Z0;Ar1^1Fq6&H{tq6+%7T8NLTtC_fE1iP`=%S zG<7ebYtI^x!&fhfzRty6d{-}SZL*r6&b29fQ&6nB)@<)rw!MoavsywX#g|N;b5oRU zX>h=RzwXxn%jZf^>nX(EqSTWip;}Lg>C1w*w0q_yY4`1N|DCI^BBe=vKcXNRC~S0a z7-o&GI82APQNn0glX--+cjkpAqkL%{C2Nlc$^LXohJ$V>8I>TnS`a^n_5=J}WzYoH zRBlK$7jlOYbM@Q|l`GJ0HcnvAIPXaIBxvC|1%j53K`s>S8Q_lz0Cj$7ClQa!SD%5n z;9o@;?znN)olL?^yI>9pxQQ1dM{O%T-TAQ9sBI?-E-oJ)+DR>`B!VgkXg#a>+7DoA zFCUn#V(pAFSN0NqAS4PH-02uCid9ZqKA}8;^DGwNh>ToK*nrSCLk+lQPX_ zTH6G6g8ZQR3UI@WM}-A1){ z995abuRC7bPUGfGRi#&L8&TZ+@_6?E@K984(J?T}RianESi9qo$i$oO^HJ3a3ww#O z1Q`J^>Q!zth!s7HuveZM&P@Ov+DUC!sH1>NAo8{ca9HpvNO55dY$SfRmnbYwkbs`G zH2Y|vo(hC8Y$yutB&J~M7uEN1K%~VVEsRwEvKBu@m2IUbRQJ^4#F)_H!~iIFyI*M12d=QB$R!xQtF|qWgB1Vsc!^jju)PNP_^Fk?LdS zbv`b%lNsqw>X^uhxSKTloT*=sj>^4I5RAV&E{^-Hz$rcj8sl12A9a0!7xt!-n~XZ! zA}k+bEN9a2e5%f=s@ubkMWKe|mcbG?Fn8SogPB6yM{hpqguOw9!|ek1&@I=(T?xjog0G zhfGM**9#5xgYug^-}El0Y_}4jV)iO;heJJ#i6wG3O11>dTGhj$*9MSM%}s#}!jNFH zIUmV#VN9maHZOqJ$Oon>GG$5&k+eHik*N#G)yZ*~=^`paACSYdTJN=LJ!2u;oDD-; znWO?mC7B=yNLWVTFWHYe%E!>%P;+z)u9((^d6BA8EUMCLluUh3Opb_n0G^l})l<(@ zTaXDMjOakA_W(8WaacC2fusI7W=q4M!?YQyqyP^nz`fy23$?(LM8;Um+w?p7l8FEy zUCp}!&S+M|ll*y45=c0kB)!f34p|mwukD@fGaZ5>Y0-aI#o_k2IuLkt^;xGrF>N0 zpI0*9<#X0W5ZVYnLIqJW;4!q5u!N~;Qv{XH?G(Ql-DKw~grUODttA4cBCUh(#huOo zEh2za>JB(>PCg9cp}zp{93+>+M|pcCM?DqhjY>79mVkU(kFLn?!WEFaBguPomnu3> zb+YQM31G@5W=!&%RCj~4=@mR-JJO}q&koRb7e!P208^`Q5h2na#l1?d zuED-{7$o4ddFtvFFR3jNN(j9zD4_(Z5#3sYIZm3&b+$7mBC(I@v0?HQVPkuBKkysU z1>pi&NWCergi~D>)7y}IO(&Ekno`h@%SF{p+Vx#(FTE^;H`PiI6;{ zy7$>ZI}UJS$6wFvM{TGBdw*a*M2l3Ie_EmEi!<1dwR}Dz7zb197W+k-c($5a9Q_p| zWj+iB8S(luie(;2XPNN5x%Lb87FS&mIaT~b{aywvJmJAc|QD%Cx7?>Ma|P;+3x z8prvFm6dO+MYImX)P+6jMev|~UC3K~>J&X0R8s?$2CXFy<1Tc~FDcgMe@Ws)axjVJ z+rsPDz2pVMZcu>KxRwCJ3c5IwRvb^u1BIzoT(IkC=s=#(5U_97@c<7eL_s24d5X$( zTm-jVIAHpK3YY5NMzC7Yj~buJCiYg{t8Aiv5@-nbo&Yx~y!3+w)quK*!t8DKV~$n@ zHM|gM1*&EV8lg!0QWmDr*9I)O`lW{ufK3&&}0MW5C^2TiwW{fW*;OxHDiVxkP~iTV{dvKrP& zUJWHwL?@ z8MJl;54t8!K=9n4dQ)g0(t`+tmO0tSC(gOFiYh_^-4Th|HpvCKh~V2y+8D4UN9T2+ zyb0B**twPa>y1(Kb@FgeAr`;zDEiT{sI+TVNp&BMlPbX8xI3Won zWxw03&P+BHB%7RlSSlVBn2A83Z{{j`;eyL)GgB%}%1o?A+I;tz%8dk}?El6E(zIyv zf}nX_4I(vCtHC1mJ21lYtupzn0f*OC<%L!`d8IPKH_Oy=#^!3eCr;blMbvC1)yd-E zO=QuE8V>l(Z=q&};4q*0YieIpV5MSe(Qvhosc9DWH1~q>;@IDX1Gjjg0ZRr>?5%-D zRwyF2LMZawh+cH&Q}pV=s+Y(#ohIi_D{lV9^)paXCPEXL5Eur*#IVfX71p9%M&D{d z3WlNk)P<=a$clTZ;#a2uInFdv*?^T|RUmyn5CY8@5rwvO6wwXL2X%@Y4$w}4se00d z>LDgBWk&l8L1uI(P8x<=R-n^j600ylPY@!UX{s}WWb71PD8X6;iA+dLOCyhI%r%Kb zuNkVh{96xmj<7aV*N>%uEQmfgkPaBzch>vqeNz3y4!rFxq-}xW?fO^nr4;n~th;>H zCYa(X1sc&|JiJwJuP?`n3z!sduUdRTarNVfyGu$zpOQZy?H+}5G;oiVg1b)#K&vpO zaXfvRQXTQm#^@>U>&A!Co8KKc*&PIDpN2zjyduL6h(9Z{Wn>Wx9l#%~IC%$?X!7|i%$v<3%k;f~#o(*%j%=8t z?Q+%KkiH(jnW;LuJFQzWMYpCoHDZ-$3}`Sz!w{EN&yi0!dU*dG@4mxUH&~z{1-JqZ zwZRll!K)v}{lKe|4|lJUZ;e9F^pSNC%Xh^v$0PeaO9|Eh939>~qC#G#!^ZprZn6pl z2^y3&7VR!rK@k@qibGCgn+QDT4#^gyNFGpgk{vlV3`#k; z5h9Jo479Xbh*60e+urFYv{sG?BxIFo>G-LHhQ4lhv zq$tLYMgE*2ndv1fImsd`9o{glsf7^dksEdwKqXN%68u@ou>w>oItHi+6ioj({*ml~ z`pWsd1)W6{>uf`3Big6`0pxblRO&)g)%S&J#jtL&%BMAF`Ag~#?x&GV!mVYAYG9eE zRghr=$r>%)xH8eCU*8=mn;a;g3NJz5T_o>&k!tQ4u1~v{v`yOuri;0~W0#rU!)Q)p zfIJi`*0SIN!C(Pu0@}D?D?+H5dFejf*chCiImW#r((U!~iZxR=II2(!b!=w(-9&jn z-Jw3U9gaW)O(5w{-9$hXst2&#&n~=e93u@+`U53eAmM7aiNazR+HWq4zb2(b@s1!HDIByw^rZT;~M{ z{bvyxk+GvFXLu$>m0RK<&vvk}mH#18stCWhg;ASLU#>4@4o zIxwOGvW_#wBK?I1~sIN@|1p>&Hq0YIhqnS*?U_d#q1N+_}H=5c^Ek5g8 zl#jgw$T0i-u$Ck4a9XlieLKi>&g$#HtN!?7iRV647HWjD(~wn4ikZ3L=0QY<{bYWM z&-pIwSBTZplKmuTQ`G#FWl~byQlx=esudA&?fTs*7|lo>`SqKKN{mYXWBg`E@r&hT zOiz+&Ay5rWz_Jb4p_(%lw-CfXt@f)Q0tlbe57WIzC%Lp`5FH^D2b`y_LuDkJMRn0~ zK8kgck>o*KPS`E4S%57!X31G_svZnAMWUOg-*fhYbyHa-Y7UlO)dCIvNClBeEjX=a zTOc^;9;a#7f3_{^0fyI03|-Amj(YZDfQErW)B|6s^wp_jj5$7OGJ!T1)xo9hAoe>1 zZHumiHf=watpwH>Uwjvgo4Oxu8=3G9H25BT_!@{G(2gP-yr|6}sFRrt_jZN5I_xf8 z+AwU?!@M1h6&^_a&z2E z@-@EtIRKp+uLzKaR%8Bu3RpY9i{VN==`ux>&}uWRVqEwRuuhR$BJ_P~?RQ;8z6L)& z18l}ZP?orWIhZA4Bjcy6zu|QR7zq6lP{0~2yh^aNStl^GAB``#iis(KGP{DFLi_py zCXJ}ImQFd)J>}BSLsATm=q_L3(h@;4q*AnseMBv^11ZY!Q697jG&gH8(y9T>$g#f@ z%W+^f3hTUmKeMv3BC3N_WYU*>^^)gt`AwpDgZIHA?MHwJY>$SxvmP(dF;vqpm_7xIbnCaoSoa^(epfJ`d_^oO|w?BR3`H(lJ*i-|Eh z7>X3?e;z)ftc^Jw*AM4ZXCM=y7NM-d-=rLg{U#L&{Y5jO^iI0}DVg;XF5eVW5mr@_ zwIWRXvF1+`^Pgs7*C|Bkc(vW0XU4s#bhf+H@H8@#Hu>;W+tC$5%j|8iQ=AFQ_!Qri zvBgF6x#|uOE9aA}&P>HY!Ir9fV91(z%Lq)3VGyS+`gaUXw+r|9Y@-1h02EMhlP|X) zi&K-IGJ=LJ!DRMKDi*%G?s6rzR-%w8$&Bo7J`euc^>ly1m_1?Bg#~yZv73x}?IE z8cC;F%WM7=O99NZ_b( z4L*ex*iHh^RX(25`5I}Z7rR#P3^NU>aW0j_%feJzfGs_y00sh-)>%=m0fpdYp_jJh zj-f?ck%PRK;trP@L+DE7Q$oD<8cy;NMs^}Gs_1Ei#{edxh?Pr`2td-ZtV_#_0rIy< z6$@lP3Y(wOV z%2k+$h(rLAtOZ=!^FO45$m~gKB$j33HF{sMRT#85PDqV^1Dt9?ZGg8>_=s@qAL342 z*u2zI&&5KA`o*5{h@>=7&&5Rzp>IM}qkS?h8wBbp0RqYPu$f|E&O5UO3)Vz$ObhEE z0EDsIfCyRsEvf|F)f&g!RWQj5KwD+1_#4c%U@?o$K z;+yCmn@%F%)G4&r0h{V$x)ycL>k!&vUa4F52ZTZ@V{6~Ypm3M&8{7X_n2bno`g{yp zE@Dv@eS->3)&2Gk-s!VlYM_}N)`ZoC)DeGXw!bewmYSg6h5e-Rkx;h1qZ#3b6OhJi z`4d{zyUZs(gJ5RwHGOHUwA@l@yQLC}pdUb1P-dCMjE@tj^Q^@ux?Q2lG_3>a)sj@g zB(9KnNS$X1XL(Ns6aw;v1n)ghXNBZXB~xolznOK9YiEn|FyDka*^qTyp1#K@&3-S- zZ%W>y9>Php?@6<8w$*@Q-jgQ>joy#sAEy|-$5F@Nh++sG3z3RA+&!siE^&{BfF@l- zC*vR-8=7OCrq4gsdoUNUADLDO*?8t5?B!94l9i%Wmm9<}zqe)`#EE`kXh|T3___8w z#U(4Z>?e3tD2I}p)GzH{W%(T^AVNyB+7mG1xz571De z`MfaqT7_bG1y-)^!s5N}S(2A<&^Mmc(o)@FJblh4@WU>b_NzNgDEV|&C|{|r!B8TW ztVaa)ociN+M|p#jFdz^s*iu~$606&&SMU4LikEh)ZOXQX@d4pg*-O4y7WQ0Qh+(~E zzP6br8@z(5u&AUgtSKxmlwP@LEI#&k?NNlvoW`IYQh9+Kr-^a&s+TK<%WMQ4SGi5) zC14RjR7Q2yC{I}kQw_vH)q*A{WuI&!$XcX-4JbZZ>&-fd1L~z&N3+gjf16rghfsVu z4pk*rm>vCJfF;K`wSN!way8&MFXgqM zgzBv(g-s)H7#pa##e~C_o?Josve5UCe+1MUd$*u$qmUv0Kib{}zN+d>_)c;TcSNxflmgLuz#3m#Sim6W=iKr47>9rd*{5$38zjp#eTnDh-WnnK}3r`@wim3=E!o zeZ@8V=k)IkZOljuRBQ+wemQLsOp&)U?AC3WW^^s#v*ifAuL&y;G`A??tttsX25Jph zb;QwwDO|!7|FB1j2jEcWU&la1lf}7ehhUJz0E%xo_cJ%R;+ps2y$D99Tc`H6{X$r$ zm)4R)Edirhu{S56QFB!l4D1USd|VHOx-&a48qgD|0?{MUJDFjP!w0{K1wo{3UG4^2 zu|87|nMkbgZ7oD+`&Bf@tT>;&V|DzBlpwU4-y%Gl&D$i+UU(0_sNb3%Fj^A?-i;)R z^GI)aEaf5Zm6tUsXc#^c1Wso@Sj&KE9gY|Xt>D5`Ek}?WE^q?wmJ#N~5&OiDGhU)o z9Cq%^P835fv7d``oe)NRL&fC ztF5x#+}-kD#kaXl?HWR%6k_)B0jLe3IjPOj+TKDwJ;spe@DET&d{7;-p`k}6A_&dV zdz?N{4?gUrHvT3D&eK}ayt6MPQE}Hqtt3&qWKX)CMPw0?Yo)V$F1Oxh@W|v2O&j1U zPl_6o71FKLz#JiK*ACgZ-u^+qF#{o#lA2s57VvMn3 za2vnQhz|U+_m_d%DvzK!$yz<0W0c?pIOmLtQ@ zFn%{Oem6RPC(KRxlf8-TM3{PcPn!*zqR$?a&(%VeIo0h|YNOx_Mk6p%s}^-cgu@um zCVt@6mSBv5Iy$-Ey3;g? z)Aio;RC}ct(&mbX=!x#R-*zADRe2@&vYOQTf2A7L)UNChRXMh>=XVBqXYZD|5{XU8PS0fJ>RM}$BL$wid~i~PWCi87hNG@(sHPHDusD_3R03L@qXk$9Xkv_V3N zG8jgZx7=LrlZ#pwa+X0}wGl%^!TW@+CFRU)~bZCS(Zo9ZuS zz~t|}v}B6(3nzdJdI(1+O7Ed`sPnRUA`3#MUXx8I7FCmHnlJLkPa657so+8egb@|= z{TCGw?YwWIf>iV8+Us+GI4{s8;axZW9@ZN4DAwO_O|-Z2ULsRIvz?X9;6MTD_cA7^ zsH8X5+3RvLAFN#~6M|o&cSB!W)5{v!1rptD$a4VDvvZ;jLUpAv2kAbBw>qB4`Qko z-oTu?xJn3ih^vH4=)2{Nn~1r>FUq9Ws?WyGH7-<3uv1ZY5SJ$GED6DAOo*%R^%8(`vY^OkLa@K=VO%=p!d;+wRoA>hJBo$Xz-Yn$ z#Sci}1lV*h(uEu;TAm6^=UMR+g{67Gb|;<-`mrpiNlRbWHt)HAUhtZMxY5K#^ zlugUfKiF_;8u|-8ZwKu4d7@g=cn1Q+tXrk#2C=f7qIDJgcj@wO|Iid|e#$%cPO>2j zCOhoUNT7EpqG3Y7e*)!4Ph!(x#>tF#dQMKU*UwF}zT1<(|6>2#V8&p^&*6e!*&s$? z#$t(CWLgTZXv#`t%-jCS-~2=%0kLwr=T2XYJ`HY?N4kU47sIP)yg~j&gllmf+r+`Y zN^g)Dqw%pd`aT27EIuZQQPzaP)N%*>-t615IFfUx2)_{1rqzDZls+M!R-1w*y>T9# z9yD+9Y-RKgVZBp$t`u&#OEi1UmW!XuioD407(b7nKb86-^Vu2>G-T?23O6F8$8U`j z+Q&)hE+#U;htiV-VULKm&YggVG`OQq+%0Cun!?Q?T?*0#=zpR#|K`W~KtMNQyb!&9 zw0^`R(~W+_6I_L=+AD|s=-S7=o*`(1RuQ@WS+@CzP)F}KP1cX#d*@jIXpOUbjEi^G zY&p_`qA~N~B};uYPQq7{(Cw_`ztK7)ekXES!$fW=fg%cNQ%PE?I=@0H-b4yJbG{C? z9MURge6e@m$CtFm88`&&+`_Ghi|$w^#c=BBPEsFWQ+6-zcCIk)cF<%Fs$K&23GV=r zbnlE~!jSJNvR_S$ooTs@U0EN3Dh;ZBb%wpOPxUrV**U^em>9Rz97y@%C&1k_Zyq{~ z8>L%`jqTDb{?PJCY`oupNNjv?{H|d9ZjpcI20H}2BsLcLFPx3#+$A=aq>`qG)6&9; zjSr=sH+GNT$*{;DkZ{V}h!$RNoWB;P)O;R@c*d=Z)H%c5mx9v5Br!mkYb} z%zjITBhi)Wy9`9vc=x-;yWf@SexfVY?}RQ~dgBj?)1?Q(biZr7`(5MR@A`=DcTIG^ zOLw26Khy2f-7gEeUAp^aA?GfP{u`%N)q44LBBKeR=rL}4Epx2*NA@J2mi`6Sp@d?29R&AhfgYERIO{@K+@ReFOuKt>ZNgjf2VT;kEnP!o26W*Gssef zJ3Uv_0?)3-NgoAr+#lY8Ks^iXPnWR+K zsGoJB8`|0WYLjZBih!R^>Gp}u@2AAv_iFxG9ip2G8B>MN4DaiIZ2UQ0Pn1&0XrI@BQ6NB>GV}jn+rGql-aevmJ zYsaTokBg(%zDZ5C)F}S@Vw_+_2#Jm_^Ut0A?*MEP{Q?k}h6HcjQzcsjXHHF1fbY_d7dC;WF?DvGlr zXZbBJ$%?G1deL-kb#LO(t78hSajH+K3+kHK32S2+i(mYBE+>%>GudCSUM@>ldR#HA_sH*&%v~Ii z95cBUnZQZ!E2A1@7^xp`qjkgVut3vrWmOFZMBdmp*k*Wk2y4#{LX)G9i%z@k1)L_7 zcs+{i+Glp0tmPV6%X9Qv{+NC{cyD@DjhK!~ZQuQ(Ued%4xf@&!oNyYJ108VQ(}pTl zd@!2831in6b-v*mYX{yXyz0M$6aI0M0;sKy%_IfSoMRGGbv}s^w0IvQ88#cV^CEk} zRDIIkDf>6g?UwcKRJ_(Wy#|Yk*GuU{#cQNR&Vq)u=u8hs2M8Ql?a97xDiIj7qQ*;` z-1klqxPs5%szQU%MUR?=x_gJb*WMQN`?>ym^_c7>r*2q1CYuS3XRW=}I1dUTe&X?1 zd>A(e1NzvQw9tRC)s#xJXq?~v#%q>)dlyp%?L+i#h>Hg^S-%c_x(5?QO|6U(qbkOjz?)KlNke$?dC=xhPS(@wAo%J>F zL;-U~jd$w}7m_t<)cf?j3xKAO`02^RQv#=@suq7Az}`+-;u9+sMZAsQXA)EPXn1Z& zA3xhZtxahDRu;tKpj!@7W^E*zURvyc)wPAIUe^zClU|V>J?d2FoLVAj<8#3lbJzo) z(28Bg`|UURa!Po{f&rDLjM(dFPWpwIuYo%uqHA&$;rQkhL@)JIN}{Y3=lATtZcF&*%m z)jvUvDw(2pezMbS5<~rv4pJS^OuA^@S+(aQNLURIaf4v|OQL?P(h+&ry17t@PThz@ z0Mt6@W$|yaF68DG0F!v3?g<9=5FAy^Jj6WUEdFS_t_I^lQXYE%Q|cQ4?AG<164--r zcH-^A>I(1PlN$M5d;?@~mJU^&ShlG5EQ zn;v=izg$MuqEn@h=BEJIsOdpqjuJ%nQAruygXsrbwqlGm-SrnxuQ=4v=u#gC^U9|* zRCabt(g6Le8$0zWhVs$_I;*#_RCV4>jai*v;D2KQP$oYa6?gc9vGeseLBRLb11m=` z!i>l#Fr8NvzGrV$o8_q0b{#{w5Q>o3+qyyke-OWBewnC8`*(5_r)nDdD>IH@ zKLgrk&}^YNb?xMEO4IRbQuv%8E$UI}xY{g(fa8(NVSJFbWy(+F;^^0oPQt$Kn$Ej= z>_!(-Gs}UeUt6!7GprZ41EQPOq0f1w|q?6dJq8@pP-qIyz&1Sd8E+K zjF9Ryi4vVsq5LIum2!uLUn3QhoiHa#V*6AG^rxc z?*H(}YD5DrQGcHyHq>TW|MV5A0|sr+PzX4~n`kczqtGwhVklbUy~~Cdydqlz-&ZM! z@WXXPdTzob>13wW;UI%idNX0utv8yCEOZYgocfAQP=maDYva?DxJ)9!w&cyuTquT+w-PljFC@MhSfAH)t@OU?)SXt@{q zp6nYbPgZ@!Nil5wEDd%#{^M$yZ|@|ce7!8X^7w%Fya@NVBG&6la6`RT1^ z1IJ?@IQkj*XLX#Uaijoe zeG~{hwU-Yp>RiNZ<4|e$Uz49%pdFp%(r%QP76&mAx%9Zu4M?zmq8famo9x5=8gCUV zLAAa~B(lm{+`|oG&{N|He+%gwr*X^bz*`fzcY6G+>5&YuEDoxZ=+9BvH}LAB8SpP+ zbt8}@8~|~zX;rfG3o=f-<$vVC&x2zb{ejq9O-nUq<2PhnoX)|d`8xi4gFXq>u1)pj ztKeq-*Mu%zH|9~HA%HhuRC-mbN99O}>8Wn|BuC`OP|U)9rheAMlxSwBUs91CGyg%r zR`T{xqEpI{BWZHVaXvuH%^Y1Xadc^J;LvrNh8ns`1H_?-=6()cCZ5p6yan%f+Li{P zf>n};>QyS%Gx{WkZ1L|npI=Cw&yOz6ioD6sy(=pct;~w#EYFHGQl0#k^ShhhYJO|@ zebxW@{1GH`BE$c%>E^5dDIh9u5^u>*Zx1h>pnt$3BPedbO9?xz=)K1W?TexMPpi!F z^W-LwD~8j2PCsLZ^pxWCTHbW=hM0eD{5hzBO0SwlXn2XuQvf1EUtld` zH8Lpp$vR4a=03|$zqp;vRrq|E$$rwjA{NwLMbNgL?GH1xDXgA)?~qA zAq&WG>Z=nOnh!hGgP6gQ8bcLP90lDW;hW zVm;F5W^a|{Qdk{^TPz*Z+~S&AYe!>75+?g0dk~xDsrE1O8ZQGrO>rMcXKf_0W!VOc zHxTZ4h6{A#`yk^uT<8^(s}IeV&;JT(!JV8NTd2@}ImAj$Ys~Vuk@SpXu1ij^6r+nL>^U^7ki~4wA%M>NVDKUH%(i$njL6% zBHEct)zn)>e$iMwzTp3teLmC>UbR{??{q>mY*#r11|64oW=ln@^*7Q%&6om(YxD*y zm&Huv3Kkj3kaoJke1wjhijvk2_R5$#+WXb93_=qV_9z{b=iaZLo$6GdTw~3M6PjpL zhWP1FqclKJd(+al^N{v5eFZ*6@g_J?M|$54*nQKw<1_3F*ELI0;g0L10(`6=9JMc? z>(`s#Z(k^a|DaCuAXe`c*_+}stREf<%+2gQ6-1q{9+*y;%9-8qjzUT{Pg1FpQd-T zvzAtlP2cD_p?T&~T%t?wEqy0wDqRRo-YFBiM+igtOLXOq@2J#1n%FCeu5mQ7OOOPU zL(l|sw{-lja{NwCPx-sYh5njsxjlkBoSpRGb^3%#8EorRz`Su2Z?LonZ_()gB}vA= zGf&34%IOMIm46uJ`zBYHywu|*``K*N33OoMEcQNI8ql~;YG^c>k%BFT+c2^70d=c< z7MTGU%tzaB4#PZgBtb*6&K*~vc~y;@D~x{n9kM!)k#21cf(`fUA+@I#iv|Pt{;&sFkJqs_eO3SE=*Xdfyj? zQ|)&T0Rm=Ku{|xHi~bCK-=T0@B6ltAz5?bLy#9F@4$O6|C1N^oA@HCV)&BM-aqF5l znvlZGwKRP$zbL;?@hjw4#IKCsGJcQn z`wqYV&99o@7x;aXUnf78-~IglnBTqpzRvIO_&vk#d49Y3{WHIV{L<2A`+pg;1G9s( zr|>j&cBcO>H2bpI)AW7T?C|W%XJ0Yf^1sL>GJE>$D`(H(E_?RO*|R2nx%Bp`**PiD ztgm{$vTuD8Oxm)4!Hj9mkNh_T2B_b6gWH9ctwdh9OO7ls0X!AID#CYE6Pz55dXTV+ z2tiz+NXrHw1+L70!`hMV-kx5Z40gr-wf;>08}_2-)0!?f_7=+xo3Y$+seQFNVhjw;hQcX#R!V z9I)nTdA(xdnN3Ye{>g5QG1EZwtMoroQ3KCL<0(&n7^djrI0><5c%!?_GF z1*~#6d$n$lQ<0m9v&#hu&8|De&K(c0Y|b;zKh3`rv2iwB2(kapRlmPhNu-0}WSF&(l>C^>?o z6cw_2f`ZEsnz|Rq$HNe__FJStkgubT$Y*r8;$xr~3_LfSIr`q#_Yr;Hsqb@=!HpEF zA|{iyqgQhDPGsO#()XSsWoNQ|vvfc*=th8O?dX#XVjtkwz^%^kuF3FdD#Jt#I8So* z>;JN<;3ldOGIrz5%miL(-10H}uEj@irH0XUSs#6bvYDk$m^HS9(qaSkXWYM*8c~&l zw~*b4Cx(cOUfV_a-%#Ohl&{e~cheZ07n!X@l#&2cBU@B3q*{jqZE5gn0_o{Ni@~=# zl$=9^0Xh{dr$!Va;v+5pVu~~KQZ@qeBk?vP?lK}hzFAw0l=#2AMYHTZ1m%^u7CxPJ3bsW*L=JyYIj_X%!rBkwKKi9*K4J}>j$I!eva z3-;TYcz}cYY0ZsduoPn3h_k!eH*Uh2)cNQI_**WT5a?v#LF!y|Ao>alO*qcchVCP4 zwn#bmBG zqLPq#H+|_;ZVGODy|6XX{4f(L%Lw@hIB$jCv;#PF@r}^g*H%P71ob9o2M@&dwfy-I z-nw=kVLcdp`wg`RvJUSG*>3j6Xj3G59usbvUl49^;!w1=lx^#v+N=5D#FbnTR7~@7{JNOWs`;LP8|_uTbg`ws&lbA)-Toh zWOC98MES;eFvs_s;=9@r3Ork#L*{CK5N!Bd71EtVTx+nx?fAWi(2*xwx@Z@WKI@MRP4C8aO%+Cl;posOx9JvU3I{I+p>G7*ykwP!qw2nHV#cr7pkw6hh18ehsdTY0eJ4x-Ruyt%r8@+D&6h_;2&j$g~ zH}vd8PHdzhtZFjseHrSNfp>?d_P!gj_W-UvoxJhi=%*;E1{MXHuIzm`15ON&douK! z#$ToG1FY|GtibA$U{HYaSfb%tbyzkxhxJIbKfmYbDR)r|;@$UtFk}Ck_kKVt)CYFY zc|42Ll-Nk~RpKe0ruDJ|-0){`AvcBUZ~&S8xxhL5=b6$v@niv12;LTrj{yFL-LmAI zK7ew=VSzJgi5ZNs@t$0T}6 z=>9x5itkfDj<0;7NDv}x#uA?21>G0NiGN8(Ye&Yd8(3iV_qg}9fe;<_iX3fc&Jo|$ zOac@eExVSRCB~y;iKt#~`|PW1SM<@Cgz6S8*oS-TD}HZqpF{DHw(U(;ff*>toUy9F?l zyMl0n>p%W}Z+g?ml(xO+tc32ynVRvDtaSkHZDNXHU9b)&X(X)l-(IR2@Hzjj;fJAL zxg@O6mz>u7E4=2V*N2sOUJN(mc`F{`T zmjpEgJv{Jp%|XYffh6B^)a$_i{Ymbvl3wS@5qbHF+mM7iB_05`%MlL7p$3k=8#wB8 zoRIH_oUN~Mjn(Bgi`Jikka`F|4uL8|sGiiN>xK|UfW*>%0wi24TH~x6(`_SW%yP9| z8tv|q6#n`5{8V+-8rZ;1v(#4I@Zw~5aN6zaDm}$R>5m2aiXFUK06BH>khVqmflMgf zCiSHBU3Ex5ik$W*<#>n9^ah2S^{IAAjn>PHR(B-V-w3|5T`K9$of_yPb^*6@_7Um| zCtz}I8MO&;@MdvLm)g9C6)okx4`p4bc1ahvC_TE?j_d`d(!jn__0U$`A18R1yExtC zaoY8}*y;L1YO4$)2#fAJX6St(>*a;(?Tg9A&$E%^IMi&cRIW^kTbk728zh4aV6=bW z7rk#sqK8ag)aGBYUJkA&7~~yea%1WO7~jk)Cr?rDAR*eF3?gpoXaCVHPC84*icKM9 z)F0a=qh@t7d*Wd^WybaSdNZ5jz>OPy{u96xIaIHgY4>0ejFNotURdi|1cDpQ2#!QT z9?opwui!*;a&DjhSE9XU1<*Mb2kD)2IEPumm>9DYM1S9@=mF7p>P7b*`i zjN5~v#nAaa!0P=t9)xz367{1sr?S>+x2X$%JeA&eDTxmk;S3!CFZh;u{Ehvq0B;8Q z;c(*s1&F;7QGPz5syU&0&`GF!$^NBqWSy%6M|7n2uIuiGQigYeXw^I8`iKBKVt2e zsuuOCm6GwSn>`&&LIt-<&N<+;BjQJ4Y~bhIWu4%34IId#Gti9(q^y%faB0QgC&e9> z4G-Nb=Wcwk(E@RHa!^6x67OgI&`X9UR(;Sat3GH3hjC)i7%HZSLK&ylG3jF0O)MiB z3q4*h`g5Zn{!uz#(Sy)}k+Xi#?=DYQ75yBjLOccn;KK*8s+skvo(=D0eztFw*lR@N zdjm$DCS}QT$%2ygI8J;o3#nB>8O8^DgAUGSX2Cgi7kw7%j^1B0D!cTkfQW<#1}~dR ztR#o{afemL0AA2AFJT;tos3JgpZ)b7*76_q^{}c9s^E5AOgck27&vxWrYZ|73wAjo z0YE=aK+7V9Wdi!k!uFpE=>Hcwoi^}E6Iqt_YI;FKGuCg&dVZEmqbbbE)FyY%>L6^B zDefJ~fkAg!5I>+YF4%B|)Iz;L;3sSV|73+6?R_T_J>pz7a3OGv)>k>19BP;DIO?;9 z=d-&yda7Q`q9GW*phHw+e=x<`cu=;&2jOPIUrj=DF`>)`>{z=F**zHv6E1DBe}${F zq*pX3C7LESr8O_(H3cs)X=z2#5AG$%)v$LpMXZ4evXb1g;Y56d?`hT#di_H1 zgP<{KtN3XC0da;9$Mf+~JZRz)wi>Hdb!^~WA?P4e&pOqwsqo|2!L`q#M#OlT`LCY( zKE>e#;j+7sT%7t#9?hq^hmOe6n7?s1lER zUwR;!yoog7UEA0xv&HH9n`8x_K5_2tz=gurvHB}orWD3UC&e97C?AYiFYk-uEBDYE zurRg9dj6QTjIG&ZHfR`A8EaX;^*s9qmRJt$7qZsL{(P~b9~BWsuJeCsAWK`B`rL9i zyWD#D6_q%8{@jUJ?}HyhiY&G&s>$OL^5e@2TfI4D0L3Ra99!c|Gi+Rqu=qA!t6*Pg zqIhD9==skT%(Xfdg(F+-8}Jr`d!tI*oSz)P!yTkpHexIIYbtvqtM8Ur^;k=U(JiC# zv^^4CxN&GstU9~pN{y9GejR=R{443FlQ@wtQJasCsS`{@RMcav_P=7D;N9#y_g*ZX z-MlRSRX2PM4ZuMKP=7xSV8GUFA>QO27co>qAupa?7*xD$F@{pq8N4I9P~I#C2GXJdhU{OJ2^y@`8Y~^qwznG#;w`Hwz^{t&Q_-03FZ>KgH|t2KleWVL8?PUOMH7g zTmGwhCq&QFl~x>)*FYt);Jr`Rf>F3p*o6G-~T4fPv&cE9159V$&b%ZthflW*3aI zhR+08f=8fzX0SM`PdZKFw6Ovn&DVO?SOc&_<+^^qyd0Jn#KY#fA6H^g-1n!~V=IQW zHpuB&sI_%?Q7(&(Hh+7(zpFoDt;womy)9>2YOGyN5qB{<0UCp~cI~%z(U{O;@HU^Y zxBD)pfXX3j$?1-spBV7ek1k{J(byTQ^o)IRO2f3BqST=U+&iT#G^EQ$Qr>O<`}(4= zsP|>W4vljYOnd&{)W_Z}i*N|60D|D&^oh6Vtov{MEv)x%j$lWxvQ3lmY&ktb?&m)cx5S_wXZ@YF z7}M`jt-@CXf$gA8!t_-P7qY}Up8;~J!v??BOo}H2?jr=Y+TWx;b%BlDFk2K+u1{k< z)ezBV39stk!*4fNtNkmacgu1>^zLBF1Q#9n601e{X@NStG((>QL3HFuOqa1D?71k4 z>_VfeJ>A#A7w(3!55^uJ=^cW7Jr+CCun)Z`*{( zzDxC3(In-Ms{&aux&*8eZTQYP1OTDmZ~7OJpMNiDM1;7-3Bu3REwYJ7<=!XZzz zHOJ>ijNTN_aa)q?=vbc~Mr-M4;5>7ss55_m;6zL`&9N9^ zhcKMzS@pGEe)Ph!SRZT)Yy#k?HjPPB342OYv28U2(sIWo%_R3FEv@!stT)~RG({PR zf*YqzY%*QatW-&wF*UBb_hL*w&6cvAxxrIan1)?+3^HDb=+t8FY5HplRezwGU|blvuh`} z$YZRIU$Zb$;uxVdceCYu1B4g9WT+F)i5CQNuzpbl1*hJ+jogMguj$iQC-QXpd3?#t za_?LVmerzV;CAdKm)K99G=R&L`b%wa}iZ1D+4n z;E`8|e)Y)Zl2JWzxfBC$#%b3tVgt?Bx@BHzg{tDe8-r&n|h#$7SP;8*(l+smj zj&_$EpIYQBJZ|cQ75b39=&dw0U}%r)_9E zFDa~z+S|mFQba{)ojLZuNEa# zhpZN7*HiMCJrX;vw#y5vST8NLOGa7+`vbwBIl+qvMz%{!m0n_NoW}m3(jDOTM6fir zRZ6j*-{+WAx(+jN?kbA>nbIwBblYW~ibo1vsle(iW|b*DhVIvs`$`UHB5sm}RX-Qz zPbNJJ9B$i}P9p31#lK;-Y${1)UhL^+%^+$RVq)EvOh>OXbw~>X48Ovp4y96$iW&D% za=R??6}8?cP@oW()6idvBON!!A~|$rCgtfhK4_gn^a}UFS+lzST88*ZnK9qq1oF{s z4y{R+pm<2pc&$b>QK?++={(!c(L_-Iw;hmMN8H==`7!WR~^z$QGe0A zqoF@!0EKsihdxo!6h|`0{dfLhXy8|}X<@Qy0pYX#K%fLQhlT%J(Y;>a4fLzs#ba{1a72DGY3ahJ#uSjU-T5(G1?=OqFDLn?Bzs!8yLwu}JZUvXxE zcmz(znue`1q$NMk6n@6Lyl)CgZ>Xj^44H-Ll5k+pnRaqwBb;QuX>CC|0jyD?v@_gn z+j{=WfR@tfir^;~SUVoHGeC>mup2w1-Vz2wDC z&%v;^{|m}0WbNtm>Lb<{{+E7hebuwMKXQG6|3b@PzatEOJ*V&w+y?@^zh*!KApQ2} zbZg^&241%0#vX1c-ffr)?H4_U8bAcwyOmmv(O3s>BZb&FJZe$~ke>udD|IAlE15Tz zq-a=q*N8F!EE2;yi7$GcOO-nUS;$9)l2N3 zD+43QlA=wa*y)C;LfT3Q9m6x3*!_Bb#FPXIL(t&h6`ClTOLX}VKtodrZLRatP}YEO z*v%yCS4>29E#{N$&FprOvwV$f+Xte?2r6}tX6@^QIz~`fzZ2x%ysOA*J1-}qel5s^ zeoeRrc}YA|)w%#-X2+{O{c^x=T_`3ojhAEcbeVk{UaOwg6F1MT$f-o@KLR}`{$0eD zB1apMye;SED@{nTBCGG&l-4~}W22__J(|rLgz=(1W`Z?R?49;)SSTTV>AAm1)y>Be z5#eAyFg*=FjQ0c!!;gyp$DV@XF)-C7bKoE4WSx&4S^qWz(IHWtX>%i?lV}%&z{0e~ znk8WK&QRNU@5s^@Cu+`LD(feNz~?){d3k&|G2bN7>!5 zi~>hj!=qfK`X*Ba<~-DiOSWpIMy zpQk#(38t#;Qdkkv-4=PV<6O5kV-mi;X%FflH@9nSdolRgk};y!zw4`o3#uhZmd34!G9i5vlMO+y zC~BsAR|bJtMcXZCFe-4N5jR)|w86MAx8ctr4Vgy3DlKHl~&9Hd~8J$ZP9P?`r zubh}%K%<7%!isiUpV_qX9E#y6L+wOKPP+z$pH=Y^0{vHfMuSuFoD=`y&@{jOo2o(B zc9KQ&1*84lUpR-ypC2wmZVRLRrNEI*CFe4`<9iSTJJm0tsCvk~OH|KKyW!KZJxH>5 zEFJ|LUKZQa2(R=xmjDL^0~gi`$GDOVUd_F-SYWlPLu`zj-P%ky`;4{Yvrg-CIL);b zc*0KfixbY$j=d^jzZ(KOec&zC`V5sz@Y?Ul6z%Fu#Gm0Ntq8KZd7fI?vA6BQ2!Cjf zE$!%OJFo9y6dn%jFAN`Vo?1@2mJ{}9xFyo|V8>qh+%%QU;pP#TqHcL|;GOj9m-y79 zKZPh|FD>Yi>qT&X1cX*X?>G3R9~wlqfMpnWlXUS~U5<=TyA^R$a)=<8%Tm zh@qLT>CegIb8+c83&=1u<>JzWRb=<2-~Z2yOUhXN2Q_BWe`~(mh96=9UNYqpPbGwV za)zXN=IWi3DC95srGTtyIdRQC%x?(J7CYTML-@m+`fl!JTa;WryqJw~T60Qokaz)o z8Gd^+*g%^~rVMwtUp~nCTpW9a{nPOv;8j>}ZcDoTLAuo`9tx^l9gtgq317K+;m9xzw zynl>&i&irj{cC^xz-PW|J$3YYioSkr*MXr9+|%5^r+g^OelFbk`2Tp z$B#)dA?*K{CRVl`Zy~q$@2h@iu?P5+zwbk(Zs(=xqb@Dil%}h|C4P=y>bHJ(sf|*A z^g_2Y|9JjB%#v1LTI$@%rK;jQQ);DG@Vkq>_M?goNqWLcjs{}t%#4O$TSB_7>b$mN z(s>u>#v)NaivmXT^C^Sy(0zjI)ItUu)+%Rj7o{Rug8jrG)lYf?kMMG{E8@KOCb z&zLIFW3cytWKm_aOXV(}q|r$0Z7JU=V{&ee8QamFGPOL(5@Bis7xFKve(S08S6NRb zuEMp-C!_{EG$5H8ZA+XdtD=Squy^Lz7;rKsSEGeqy#y8-avK0?*8-42PR+|zBn z$F}$UgWMi*DxOh?X8!8q?|xAp5&1pW)~h!W%DXe-gEM9C$sIbxghs+PW8c6*7TwX_x)VaM2?@}x`3<4wMg4W zf{GPY(rZn;(`?<|xrkbQ5Yq~bC{Mq_&9&^BASA{#IARFp8m?dNmd?XKzS8rA$AoS- zR^6rLLUL;KSp1-f8sE-5nX|siRO%NmGwP~6^0B{d?-r^3JXqfrc|mlZ(op(cSequa?`>9VT0(o4mOH;g(!Lk{_FgTy z?g|y&g|?Y+X4J#mNT_@!uiCDApRpvZ+8r;uBI?e3;IN+Q7!^z@mbQ1;~$!Ep8zL*I; zD{*2Tw|k~xXUx&{Ng*C8&PL%kh1N>EmbDU+<(fW@p=|ktl7Xyo$iJzNi&9f)MxS~( znSdMD6|tRQ)LFqLU1T`Hv{%I z5>$Fu$%zKuwLiTqBv4&{G*U_#lCn^&EZC66ax^mEk`aIAVN{x=da@d3LD2^>e7u5` zP1pImp=oAK@>yBrRbHPC*C!5oTB71o5r=J$^e~FyD(~D?H1sYikHqc@He3$vqG>5y zHH5hCS zw4l&Hm0X|U%EH!CoA>_4`y+G}*aD6YvZiAWT!{~Qd<)y>XEx0K$xJe1b6(L6Z^}NO z-H`bcvDO%xW}m;de#%d-qm#M zCRj3xYAhZBt+Mm^uhy8rZE!#E8hs9myzOn|k7@1}X*T@YZ&Fw>vfwcq?LGfhAF$xp z*3qHahOSNOXlmXQd;;6TrVI=qcOyBo2ReF2BLiPrhU{HxVfbh}FY zD$pKgXz`Ex4dylF6srT7TcSe@tYwJAHbA07AfaNO&{uK~lEvxhm;bw7<3I9mJq_sh zEjeA|XzOI}GHE&t-=HxB59lE`G5C}&+i_2lH>Oqh8$ynIf~TR}?;Syt&m{ZaYx-8+ zn;gc5T=?b0h_T{ZkMJdWAmEBgwzITg5pR`#2xub+XJtVVulQ1eQgU&y(3LJ(C9X`a z(^ydMZkI{nOCqRw=yF$502f;pLC|@q;E1_XrpFHzoZwlHbfUdLvklF6yXWqJFp#NU zkB5oKrnXCU)V@&ZzHwI|!2*c4Q&Kor--WoFr|%-%&3DyKzv`t03v`pkt4S|ST`KKa zT2QH9#lovxR^qdzf`=$fOx zp=~Zo+Y%nNI;OR{{b>DcyqQcWyEe_&p1Nd36bD6hd|#zmnbMKqEwPeY z${Xfze=jOI^3h$Kr;}`B$xbAx|2Om1EMN9&*G$IPp4BZ5+~*makQK@M7Wzp|oJ8*}m=;vPA!5>-C09Qy*?3C? zyeK*#CXHEuCATaz%dg~?0=k(fS)i9i+ddhqRPoY0N3Ug5Fjg$G6k~eOtd0N1XR`?G z)~C}Nqpp2FgI4LiObBsQf@NzQiB&|JGbIjiawyAe6bBoG)5vt==g@LUaRs+7p{Nvb zWay)|;k`6v;(U>FMXybyl&$T~lj54kZMd6d2@~Yg0y%1(U7V@O2RAxdbZKvg{7zF)!= zSdl5)K6yiA=(CmHy__754t`5NcmCk-|Nie2I=U@wPCNHbq63bShAyISy%k1x(u(NR zu)}qU3sqHtiLK@6$Y%-N7Rk*Swp7wj?^whIUE-_1C%tnUkZ&BRNfZZrc%3|c>H}ts zga6~nhI!tb8oF`Ht>u#`kO4@T%ADebPE~g=#W&O-lBI2{X`8yU z5(e{C%9cV*pg3hq$>hd#uejU~9#_3Vyy6O00tT?w12$KB4>5dt_`gVNsj4}5ay2?g zoL|#_lAf?bWQAW!V$<04WJ6K1VUdX+5J5=!kK```p9W#xUrmw1cgX+#v0Iu#kQnn4^@$RP?M0~rS*D$2@khbj;Rs@SwnOJfl(J9-o0iN?E8z-8m~9)W%bNlZf12#5B*2K7|5c* zoK&0KAmfT!CnY^WNv42G+14d|W&O{DBQCS$FN5#9I=8*9GOejv>8*lFPD4p@`=5}8 zw6Zh3KjeWPnb3g0z4T-X{H6B|s`oP;?37HLedWrP!lopXnQ3aP?8d->UT=nMnAQyh zfMZQb+fBT}gpPqoDQPWh)SYm3V(|^aIL|6xY1ldvAS9HgPHS7xwqHo0?2`@&1sF=R zU{~mg2jP-3qkZ3;_ema`I9LbW&C9bOz$}|ucsmC|)INV5tH z+hmortS%y2C^zon@#Ug-#)lTJ$*9+Av~3aT&5Cu}N+j<`uUnmGxpez(X;#&IXR98> zAa-pTKD;$;Y^+_8>UyOr&x@7kHe92&3P5&N_AgL+dvmuiS(L{ybu&fkl2QlMlDTTh z{N#2?pE{zIr7aVpNHHF@j5x72o#0o*?z5D$~ZE-A_eN&es){PE^#mWO5y;)bKgi&vRDg zBuWKxr|E{?AM#c;%c=-FrSqB0NR4+0#buzI<~n0|EMC-qTVGMPM+(M7<{(^})DoRe z!7R~BGthog$#xn;Jx=s23s7_*65rsN-Veu zwwuEcWZ|jT)I;>ofIo)}Z5#&R^{D#z--zUi23m-SZxYi{?KS0*f9N-UZHyb?NGE++ z4A!i3yWu8TB18n0lLOI$44DM*A*!NTD4lnVFO)cQGrxx8?<4RDC|8M^#UYvSmh=tAiA&-N@?UEkZ^Z^u7(e5Q@fuq(#u_-J+i( z-UB?-x~^{OHar9M@)qu4Jg83}q-T^BAEj@?L6m;ru~Ifo@>$XQ=cA6DRK<{(Z!#yz zXT|S)>f2}dmVEXLw9E^0;HrnEv!Duy$mftpw_J+UjaLU(_>K3Hf&GfLzIo+p-OlnbqDYkae0+9G8?A&E++6=~W_NW~xp z39by$m;sv4?Yf|yxI1v+y}$9<><9{!u)xK~t&|JX_o0jr3Y9s^AQ!ufST|y$~xr~#3dz!+D_KZOuCejICaa_Q zxQ2+f1;a{cwyY#v-I%9rS$nY&B&^nweXt|+I0g13LXKNVIrndN(6S6WZy}yX-&BC(g>=8p@ z!7`lBiQ=caRt`z`zPvSC+)}SHIRHo$kY$(_;se10F#1_86)^edJ6otmI0LH@&bZ-L z0l$SHVJm25(Oh-ke06tDC0i1IxKX}I+l@cmabLFCqZ1JMYN{8)yoLkR=kgFqO}BS^ zAE#O&^&4ei_{?JP^{DLPB{+op3bk~~Q6!L~Q@|dOBiW2EDZ_~P-)yn*Bzy6gYm(q& zlce(JCv@ZCO0R>nh0~9TW$;3pBZ`8u==L}|J!`_8!}|P937_?+IXd+9mruwnAdC{e z*B2Lrf?JFAuk%1yT+|9io8r>smjbeFiLc;x-Y=(@_xo=$TVRQ}m1L9PZ)j!K!obR`ppzlVO9H_l z*F?L?MozIb=;NwtIMl}i0}{gGg+X4RxQF_BaWKkBPN>HbG4NTk5bb}kqe>MBK=ycL z!osRPs}7~#De@eVmSX2XrKQ32hXPUxupoA{>0VwGzNB9?tx7fqV9^DTu7|vCx+bmN z8}?arSt%A>Rsng)ouJ8-la{`@hKpM3w|Bb>`xy||R`UNb8b}3C(aOqrG;idCI4nLDx-2c8fnJmUAhcz2pm0SNh zJ4#OKOHvC;rCD-2NlZej)cU{vdB}bS*UM(UVGnQ36HLMi=?ec_OrlIOfl1uPu`Zaz zFKH-(1y3YgG{G+7d)uC!yfp{}m;`M>O!}h0_A0O>TVqL=ViSTCkW6C}Q)n_J0YwZp z@yw)er;1oFpdvdoLh<6C^YrMY2*q!Kh15v=BUu>$Kn)gc!>q6J;U)*uJF&m^; zn8NIH3{CxIOuNeTDlKD`j-ziyrd581OVW%F#t%&z^h|rKlGnlB2J{{o?*#2{8xFIc zCivNt<)tDlg%VG?*tXz&5%#v>E5@@WZg#(LBe9d#6nt#m-B!D-qgvK`({*w>b5dFz z=|Bd;1U`ITh7eD-=oS1_UdaN#$f+ggeX*o$KhDvHkcP1^*RHxJF@Div$r-CpzZxhRnipFX2{~ z!07V`|2ZiuKy$AW9R+^Egyw)smP7~ZUuQ-diB`(HxIVyKKvt3#K<>GT%0ON07X@^t zHO;Q_TA);_ystAlOvVJcsXC;~?z(J4Tj)kO8cS9kx@%4C@BNJlz3x5oXOyaY$R366 zxR1&EFx^2kdD)}rpLHY2kPXJ_*#@Um4*+521>K21Mj9Pt-WyyaEiZ6v0Yr{1h`aD` zE|sUAooBjZ1~sA6$}pJpjDDpz`X40OuGx2-w$DDqSIiGJtOSF-UZ;5k1}-McKiEg} zwbO}1`KL`%9dzN3)xJc0gOuCrVZMlcasI0bJ0t_hpWTz4u*3d?@mg^&PAM+&TcIL+ z$8m+D6*jz+3^`Rfb`GzdhjaNKJBKj#Mcuk{HC{0cG(uL9Mvbt;1+LUOEj~VHuUng@ zY23!k)SWq4X}rVodsXSoFl#l6FY3g!7dG5&-PLfn!*HLoe$=!fcFZa}6F6P? ztn60H-pGGLGX8h;;$e7e2E2cGYRAF*qL@zNXnLF3%5`k1<oe~T_LWHoy!p(%VSoJ8~_H05dD3H@R21cxwpdK++? zumyQB?=%9V-w6(5-f29BTknJ%zrJ|i>bQa3HZCq)bEE0mWcUg*Nww)|Jre!4;4p}_ z#+gpQUwe42KJu_%@@WvvVN>{t5Q&kJ0xTquW;YgK#1+C?=1n$ANkNV(L9o3}I4-EU z#m^#^xXWKE96`0QvRu4URD_(Ri3MmCaaouw%k$YTH<~NuOdKq-Ib~y3gqC|J0W3_l zP^PV;fy7$DzQwwKD(`s-*kl{ONx-`$)^wW3Atrlwm?ETIkgBxRmv7^9@?oI~tWLpS z^gOSgM5C@U6FfnrP5_`wk19Q;jF+6Ya*i(pN%1KiwJfhDwk)>+eZPqF;GqRh$)SbG zQopZa1UcT@31m->4voH@|BUYHxPPg(VIg&Y*LmoobrRp8)rPd-@@6;QUFpV8RC+hS z*OMTXmq7qqkqWqdVMnWoI1j%>fkR>O!acnLN43W)2o(7=3oeJ1B!7)pVZLYga3^Ej zKOjO`U4Xchk@MuANGJn5qWRRx?cF4$94&qDeRc=&`%3a&9+@)j0~q5ieO&XpM{;|P zE1dUezdo_#s~kzHxG`FMzmd?w?bBi+Yr3qeqKNl}7cziTxoQMp?PE6;8*n>>1YxFNgGQQsk=0$u(+{d35_%26>zz|%c)r- zsbBnkjij0{8c)>+Me6fWKFg7>L5)%ZW+?UwBR`Aj^RYqe5NXJNNy$?`RI-spPB2NE zQ$= z@_E^*XvCqL;?Eabc%k+*C~q`sSrv>mezx40PQ#cel9Esw-HF&rSf(>I!v|GE4Z4+j zjuLU;Vt_TfInnTW!+mqZv($?+xA6C%udZTK&LBu->_THWcDgYXJKqqDovB|*tS;{< zCS5E%pB2QR*8AstIxf1DIUu>ti}KRZ^_cPk$53+&oOi>S6kA5I#j*2^x5dsh#$p#5 zK7)mG{y6>cWsFG3tr{bX)XE6XdqktO1M&ueSCF?Qye&WV37(}H*U}7%maX~XHmOt} zE_&=I08ol{93TGzVUY-quNKc2bpzFsgRi!-A~%kCx91>7gxQKbnPpraQAIgGXgnXB z1VWx9ln=Y|*j@9SvISt@6O2<0&Gh_=d}=by+WOR67fcr5% zv2ZMcg|U*t@`mdn&yChkLTmkyWIz}i^4Th{e_J$u#%Ets;ziCRmP!5Nm_SbAzlf+P zBshlEzL!C&aqZU_H!+nz>#r$X4HIkUBKDOLH6mmBaGF4Pi5{@Nf+&LxCx9R8ds3hY zUE4SyY5WDwkJk6z6d$_@i|1TXX(dh;TC1b%U-UT}Be8R=png`+2rKAt{k6jM*n>*o zC-`_XA8(AEX#5x-uZz9aa5Zhk$PwT6_Ao7Bjmy}bLU61Nq4kQNm{Il~7@ z6*8|lQL3Hrx4{82p?OPup&*_D!jGdPf5H3q&B)C6&A5QNE_v+ZX~pVrtS-C$AoF?@ zS`%aA4@;l?{cHGHc)eJLA*|^2qSXabutB!cZb35cG_HTjcGCD_a_(C#N5s`0MW73Zk_o!!(G z>s@_K&#F0i!qk9wx1UGV78tU4pn~!zgUIp62n@oERjo z!r#Q7rvmDBx6CpuFx|Kt{Knb+6Nu&I{<~;jR^+8#V(D?s;>UXakTaK$aJ7K|ibH(9 z>~MXa+y{xz3d5jb3t!UQ`^OS-&1DOmcPbupDxPp!w~35=nx3ZBdO_kj4NnOK)h@|F zBL(Ml@x9n@{*WHVb5k#K2%lH!eO_KR&E@5Fk}}VYKUL|K@KV1)M^~a1ggfq=#Zhxw z#pmJk*$tk+UF(R*88C2qzG!UD33e$CRQI8`T$Yfa4CuAT=Ticq>9RZ0t`f(t(^d9X zlP4@TX(PSA4v_caoFjB^;2qy*v}&3^Fyw}RBOT2e09H6N0&m6YwpnF$+wjJPvy;{Z zFhE)6cy+<#f9Wmk&Edwz7jnpe*8GyAgb~I6AMc9X?2roTX5w;1ouT1#7K;-_9E}oHX&)q~!hlLme!s6H~Ruu84hy@Q2mzH2Tj*G%vr|yIbKPhvuDY$?T=lEX1)Es}l z01&(~-=e}>Ww3R4iev2Ot>7TibxYm zjsyeoQKFeJ;WAZoKwB8P!vkMJ05v@D3-POa$X%G3RWT^<`+;cUSoa`y8G+zY)Yt)C z_{v$V4oUw%D;{*W(G#5LZnJ+OhVlXmtIskTs^mm4KwP=Vz^~Pzz!`k_>iXhm@qTk4 zi@u+gf`1qYzOE{s)isVo4FsPL0! z!O=$+8oInA`0$D2B{=1#_SbIqby?V{(8>|Q5vZmS2{aA(%W2M02b_HIE%dq~Y%bGC ztMNKF@GG3ATF-_&DGi?KmJpqCQTcmDL(NU=cg>+Dxlu1hK^t#g`IN$}V z#mm+zp3Fn2B$kj-eX91ndY zn&Y12dEmY*Dha#c8`xAc_iCZjY==${L601*Y_bv%J=|A@=vB@&O#3RW6ZUy{^S&t* z3%RbO&MY%n=Au~$GQhds{!uJ@LsvL-x}Vc1)G8a)1)-QX>xGGqbw7XE2|0$rMpFtz z#`B#cLHRyvApMy&j?m{j$5~45bDFgj-XI($ig!)TJHE)%&VI`|kS+hc-tsz#=V0RI zyyUk>r2@ufV-N`6w)c24sqBTVcmHK|Ji0qxzRP;%yCM_3Pl$j+bGyCip1TzTP2oM{ zEr--4Z|R(_qH`#NPp#3fNcwxc@-hA&I1zngto%(G?O5heH!g{tqT2U5zI=}okG3p3 zK`|zc85U7!t2`{!!zDG}4+>J1EuH%c}eioU0NB1A8 z7aF@s?yR3B1#y)u`htCPxhaBwLutq?zy67Axo_wOio`y}QQ9E&=J!NrX_@^4d2WovR`2dOogC#|RE$G;+9wQl<_nVj5tJDt9sNBZ8r+@4_uqoTuCcn~=H(yF|*&#$Be@%zujaJ4yX2s?tAIdWjI3 z8e*?_q4C{jIz${Q>(Mhb)r&R#1@fiVpDg~plo5F&$=R>dyP$VmdCAq5fBi~LPi)rU ztJ#^rv29n~qbiKrH1ViCKz|)Nspq|ga@0#wcJ6)l0F5stH3+BrGJ+?w%V#|yp>;rs z>&=#KS~v3*BG{-UwM4YYv3XAw@jLE;_468IjWBfnVu)CLB>t34Q@nl*1p3mU<;8E5 zUPCRV1sd{LV$#DPV1s@0F}csrfo0q)xwH0rG-oqh>AVDJO@|r z_2s^L`Cg!9UgHw6>EkHn>(R^T|EH7CZhr~D1=o+}0Rpf09{}R`JjCw2iA0F|FZ+mC z-sPRvtVL~|V?AC6Uz=q;C-9P-oJFzn>oa~V$62kJ3UJRcTl~SXfX1mTK%hy5+ICew zsScEJdl%dMdXz-9TC9ZJ9^1Z@8_Qc`EtVxr&RU|?l+}Up^%Dj(TTaQQ`s;Y2`ue=5 zP96`m;JgXt$y1hix`fXELf7kIpsy_!8H2vNiYk5Wdnw{i#(mjIJ(prgqW!A;>xS@CAF++*mt70BY2|aSG8pSDRudGn@J^^|T~tT2c-| z+_5n}8}RX1an`-G?Yw+?dm@lWtyG{%Ez<_IL~0LMoy2XI2FiV9*%}F>m^F*KF7Lfi z{&%^&`~rD%RC8Z^_7JTd)bC!NJTzx#Q)9p9vDwnpA>q4ejn#l>`gbDpb2qE7L4|C?0Gz9~G_5>@q42u&gJK z&wGk<#BLUP%{xlt;r(VemF^os}%hz(U5n)R8tnyZPeq}synM#}lN1W2Q%D%S3%LeD|$Ptv8RkIP4l;^qKf z9G%y=usQIOdDJKdCJe;GbyRA2$tXTbLb4HiBSa4f`}qRi+Fwpbihi;DlvC|s)XYk3 z$=cKar;f)O6_w&pd&kr zCKk_*UOf>UTW+3ZpnFvGxKxu+F9w@pS|dc0cwUM%o*{*leGEw_h?VAB^KXeq>lsS; zaIoHJ7;6uTkj(%O4Q-HQ({@VZZGBxb9>UDbpJP<+V}#t1rWj#jj?bu3TYk?+%NRX( zqd8||ATv5!Qd8Tr=p?vx&dxcDGozV>w8$&(1jJKYM%Z_|NyEH)|7p2bV}GD)+dW2( z2S;CQBB$&FX0b1^igFf9>1vqcp+p5%bKLnYizrUPM|fYiz7zYBNBZfhYa_`ETdbjl zX>;MJo|lHIR9524XjMQ(8 ze@a4a%urWh;=wcYGnzD91Y2@=aKO{e7iOEsW5r%{uI$8eidl~_E$U;VIrSndHsvTX z4tB7=z+CUYn5WHls4r$^ZQ5{F5idkN9`}A;8gq@}AzL6c&Z#T!g@U$^j3X#G8_~MK zy*U{fyBK30@OPM5tT#etBvI(4!<2WmmA{x-hWggTm%?PuWVq7c&h_Sm*;wI>-v#+r5OR$I^9=Byq>16>uv$(E^bB+a|e zu|TP{DF_dc8A9!X3wLoc6w8a{WWz2_77y178{>uHWP#9tK~oYr9K%0f zBD5i#%wkH4lMQd&rHzLfANryX=)p^*h};1`Uc3YH6Oyhgz?dDl1J=^@x4W! z0ojG>h4JRB9I#h7 zpfpscn^k%C^5V%nkoXzo!#UYt2Mnu3v%xx>4b~~vAzlr|23IH9;C0~Z$^0*pd$Iga zj2LeISNC`1e|7dG{N)`f{#W3f;Pdjox+MSWd^!9t9?4C78Ur;f(AZG~YlRKE4uB%* zyG0j(q`yCxf5mRlh15`k;=b)>%SY5v*_<`8`K-0b9{QLJB|foRQG9GLEA9i%4NDN@ zQK7>uK0h1)=RV0_Zk~AE+qeo+u zaz;4MZI8kZu{g=5wf75Oq_<~*W=7{B<8S~tM06iON5A*}>Wx`mZwQ!ojFGv7pv&}FYVVH89SoWbq z3JZ2QSa1sOZ2140cM>L(#ydZn#yh*xc&CcbwaF*r%W3@cmBJ4XTmR(aA6CiXpNtaz z2|Kd+=bv*J0I?Ozz)AeG-sYbI730xX#Xki<+OQEO+(G3SYIBO|@*??XYl?q%$cdZ+ z9FzRBL-;3;sB`nr{b~FY?0A9vvjhBk+(wVW8a0qT2mb_O0yL9DqZhzGTT}eA*5;qJ zihnw+XXt;Le*&x1_-F0kk$*Z^7&)HgpU3iTCUJiJSexXZ9sk4pQx1UQpYwznLeg6= z;a}mOos;;d8mai_$Sd^FWis^T@Xz1e=1weV4Fwk(e4M0CN34mgH zN&!$9Xn~j@E=>RKy(s-#80Sj!mi)KI5#n0^hH-Y-m6Y*a426@x)1`mU$p_ecL(TSO z=->X3;-17Pc>SkYhLt$&kv3ZUHg?>{eUlovQ6+y~fEK=FMkV}pJkMxobZiRJf^txN z-%1bv{99~h@ptE=DG;h!W+g#r2B$zV(WkRDUBAW4ztb{N8L61)x9p)F84B?$5IU?t zXq8gfjf%gpY(tmW`9vxG+^Fp4f*X&1?v1Pfb=hnkog*R+$J7x8lIr(+yZzA5dgT4G zX^$5j_Z;=p|D#>yJ( z>uBXu=AnCyAl>{_@2C+dExyI;Z@DLasWuoppw-QEzi+$3)IZAp`7yD75@5CFAu;e4 zE-?R9Y@0M$G1t(Cbi`bPYkthUnm8F$$?{y$B1zC#i))$Ie52-?&1Sqpz5vwU;)@Mp zGo4M&J(bLjiZfDWO@29sBY>J?(S2m)>~8WLBnQePeQB-4o&0~mylX)`Qf=Pl^}HC5 zbfB}FH~F7c13JxT{gEDj#Pa-x+U+NwiAVbr%f{wCvy{Ihy%@Zo%K41~wFUMj{) z44555L`B?$BNZzlC2``51QkVn{^n&8X0u(wY$!-A)!Vs_h0j*)D<#H;`-pAim{AnL z%8FU4E7m*<8(utIBis*5Zj({ev1Y?s>rby|c?gD+H@G!$FnSd^$ev)$MATYs9nsf3 zFpx;S7?}v$pc#BN@erW~si6pSK`?|Gc*8*Nwsm4(B-{6L+$}j}>xHj;66;=(vhGnu zx<(oCiWbD0lLkJl627f(;!BCO+Qe6sH1P#%w)|n}^405z=&83#)H!Mpi=Nc1_EMit zYg)~dEP5N`%hOC%i4A8SJtbp}s+hiU?v%!xmnK4!ntTlGTMS;E24ApIFwvEi8 zY7?6>dO;KG90=_*s@5>3Ajhb@L&k>tSQY;f9F_iXC(A0P5JEDM+N>_0uA#!{e6_d%nV7522Owmz;ev*fIUCOA+h-kChhO z<7lwtZmfA&Z`o;k%lu}PX0VTN(~RWK6%|A+wR83$wR3zixp{{P17Y(LMQ6d4s!clU9_FT(zMezP&YX0~}+ z8POxX@$y{S`tI<{i3;vD0Wi_wO{=rC8NJUoqkqwC*|aWcJ|Cful$9mEov2SzN=Kle zCUVY$d$EwhCqZ79n(R=gC)`2Zmhgz@h`&km%_rCsjOiYu^1J-TDU_J3_JAbAOM~+w z?*=l0F|XgZP*woZtxqL=%Ennn{9fKnb?~G{IIchGR#t zHHcvA@JHAXDv*m{>zX9kPUj-nmdJ`V`GbA_it)z>_{0`MSR@bx-^Z$C;oDi4Bh1J>}A;Ja&z;M+Tc z;9I2Daa!TGH!1w~Tgw$Cl1*|U!cWs*d(u^73qMJGoGSd@C!Yope*26akFtbmd&x%b zJ0ly|V~vf;zttxF@Fr6iuw4o^fkIup^Ce_R)q< zNj;9pIL3Jp4iu$i0iGWmTu4J$sQ<8d!MVmcQu{>o8T$kiRRHB5FMx@@S>oGg;GbX< z!hZH!-+GNqZ7}Uvk%?j2)6xOUxj~TioDx@q4EyRazM#DF*~?-q!f8qJB_@< z2Z&cYUEWzU$vfFVCGYIr`g_Z}R=2!+{yJw9F9cwcnbqVGuQ9Qx%40kebH@|G)=n?) z_7c@$2KTtm+~(P+pq5{8%|E zxE6>aA6K0T98Yd8k202&haH}9r!5cn04j;8vE`wdlqSi;{UQ(dPbUwt0Hx$%osx&OY4Whv z8o0)mhkM-euy!KaPd=i)<_YdGBl{=G!#YPE)}lCxmZaoi?YZRPo{N`^Dc zub+zmcl}j1u*b4qkbn0ndDtoPus#s3o+=Of(Z+0f*fB{S z&SphLT}sKr`WfY+D1UBwSYHrqNMo$i%EP_W%EMYE5BKPOLLRbD|FiP2*81|RWNIAJ zi;#zPZh2Uvl|brgPnL)Fl~<+Y;eJO6tW)x^){%z=`82rOW6Q%m%IYcx{N6d;nxW*ODJ!h&=R%>fr1sqG;=rr6J8(QVKh2Uw_(eiNY>sdq-zS?c48C`()pg z7_>L(eQJl4+IQatAQnuuGvF0WwZuJOs+C+zsu+l=w!qQ%o+sHwZ`uXPzx|H<+j{}> zZw7sDZ#It%?zZKha$;%ur?_OR75g)XOypl%D>&|@=x*AbI8B` zndBeJmLva^O^m)XN+Fy{{$2fY|?as^lMuU(?w< z-STg*E&p02Owdsc8%6%r+wxD@JbP2Bp(QrYe$1(pwCk( zHdFGiLCL?}BL5INN%;p@sY%MeMo+lamVdj6EFu`omVY%<~&S4*|xe)m%);CaRztR^8@6=o7vX6F5qc2V;C^@>eaT`G?o9Ea^_c(%b zw?1`$Z+)@WtuOu%vNS_*;tR3Kh^7c!2=BQ7`zX_$Brh%7KKe0rrm9_MQtOMShvYDJ zS?m75zalRiT=FvGCnqiRjH>4B*it{jD~b4lW&K*QsxIqo&#ToD{c*RgJUYVj(lpbm zg+96c7KA6{g;&$xj*aPF+?h-Q-_q0s68x9qYEu~-WNVbZQnEr`A^-E4@G@zECN!PXP#Xz@V#^kmMVp+t#Es=m#rqdGn*nl=I4|r6tiZ@ zL!@Td{V3p~tFUP{(u<4e4r!|Z{4iIQdYZdG)JtW6RXKj_>cLi$Jc7L@)iV2yVq(g2 zVxP&S_z*0(hmh-FpLp+9QD?z?iQZ70GjeXqEuwOz`bH0bg!4FBiJ~z{4As|5C*Fotuu;wMl?4N88KpQtdPPN@$x=@i1h1R8T)^r*> zBGJ&qxbRA`mnc0TQ4&QG*-c40{?<>;YU(xYZ_N_jyZ#DF$)O!#8I`wu#M^f)F^b74%z>{#9 z3g98|L0q@31ojBk_?{p>2dA^?-I2KMa>CS*g&Dn$@yq$bs-?UE<0G94JlG?nPm?GL99(YehXrai^!EJ z(*478W+%$Dzppsy?`ztk@?~6e;HjRbp{g}&*RQq)CAwJW%RJ~aSGeoblIXkx0n{A$8@j3Ubejq$z>^Q1q znIiZ#5PWVL!9##LDCRZK=`;H&x`uIF&9R}ITvXrdqIzv2Rm~EI8u>n>H{Ggy_Ka5mzIVEl#!>fwA>=Wrj)VdTK zwk)an#f^2bBu_VMDIx0*o{=iRw1z9nR53xFLNPCh{Z%N2Y@YS(?JFoVsP~p#vtxp& zkFNbgleSuUYExT1+dLtAS3vxYWS-?W7N+9WrJNE6jBH2xWG2&idU-R(f<}aeZ~p*h zaTG6fGTO!+Frf2bjMf~O!{d4*-Hq`5|&4^`rv?Ydx?IT zPtT5cs2as^7r}J0fp@ThH>Yo4nRnvt)}MYS``2X!pFKN~#w7b)TW9AesIBYRG}{UG zfGbj$KD9|IGtBQLEzzuXs4%bwe@-~a>+9Sj!1wuqq(u>exVK+39pvz zCtsk~T;U6x*!FIn)F2EcWaPj}mQmx+M*?1A!-%I#X{Loau_ic(&cSQm`Z^;gGjWGz zDTPUvA|V7mxW^jnzo1_M!WY0hU>xOjn)n7kpjKpmAVf@AJEUjM3CuPsf68xxkd=@+ z*PW~`oZ4R^{^O`27oBF zpEwjs5Ik**jDK+Sk>ZIJi#^dRSC%lyJpxSpt;M44t;}`AS zwlbyq(<0E9Sf0cBp}exhvE~_;_=Xvmc}#|M{Uyt~N?(LUNkwBWhAeem@*9O)NVj0f0*hO3Q`N zlYDTk@WEN?{c>dq;e*-_yQM zT$k<3c?Umt@Dt`|QoNF&Zk>O600b!B^kk&ZVY6T5llBC!DRrPOBZKHGnd?ZkH3Z67!6O} zi}Brm(7yRSo+e!@P4p+E1}u*vX;S8aV@>vz6Q39oLDQ?)ULX)64G;y2_lF?FIwbW( zWhYvwIpEHxhf%0_QUYM_%riGHpo+)phs^p4W+fGSLcYXOPps(_$%9n&;TZF{*aGOv zC48FYl#>pI+#v?oA09!r#U>PT_~~wADnKvo6T#!NI*)4L5E@StKQki-6(1@EeR4A5 zxm89*jF#(K>2yoa_6=!mU)zrtSD!jrbAQ|^q&fZbBvPHcT@NyXJ=NTEVJ;j z;)%rCOez?T=<2fS`D=`ZV76W97j;4aP-?|gJoI~cE$Tt!>3R^hbzy@l2Jsyn0je0p z7?u@&F$*6uDyp&bW6@K|(V~x^Gz)J4s+ffji2N_49V1cAC{1J-wwa&eh?#ekcK^Z460xSSK(k8r$U%L>AJ>Kkg(gO$2I zP&oqqZ(&p5lzG@F?jV>e|H;59qZllk%Sj7FI*r&<;Dh=F`sn$^gx8>s86jQhb08*e zu`yMDF@>tN0cZX(q3}Mdly=9PuGDICgBk57v;Cl-L_YLaw(#aJiuc0zD3Hw~ANEiJ zjB`s736kH5PDpW3OcsSNFOBrHk z#R-7^^cjjx-b{Y5r_@jhaMjF7B@o|^_J-=m<*P&=Bp_-ZSDX*G3=_x{=oKEBxiR2@ zN48`U%@H^bkIV#WWG*#N`_ZZ*5~wBtYzO@;WNTu1KS4~S=YK*WHZ<8FwV3~+GS*d!X z>abe1UMwsSQ8RzIj)O8hy+Rlx$KgXq5i}OLnatlc`6q|&S>?90NBo*+3f2;VZlMrM6$Jhy{7FjMsEFM) zFnW^;4mtpEt+>-|bUtt{bbby6Xw5pX`8Tl^D{MZ1^V|WG&N;DTn{-eUhl#_Y&k0(p zLg++IIbfdeh`>*sEvQ!_pt7-H)+ADN zSd&P3S85D8>cqCJiEU@CR(sTZ8AZe-B%AF&l_)tI_kMPhH_2$F5{a+diqGH9i83Qy zo7PPz=}KLZerlL(+$AAy-KNKX6vl6}Q75atLP|*py-}`2MS(u@eXG z4htqbjTsPqg1tk@>;9wbm2canCBYT;8{dCO%}bOF3Q^!sh7C6LqvcE~Ws)zd2x4VGM}d?Y z$f*2~Z=Vw62xy!Sef|TslpaQ`dMHKIC*^{*pdPgabr0xS32MrfA*GSgq#04WR7>cA zGznc}OK2sYdyH6(i038jl%q?29oa9oA&*2jHh*C{p}ZixHp zIk&-)#Dhp_5JkMaQKa;o$x`}lau84gMM~Gknvl{BT1w|TQrczl99rrKWO@uLA^l}0 z?R<6tLYg;f;MgfYmMx?kl0y0ej*xB;Ax+SZvaFm(NEcAwdq(*@f3?-cc_9puYLcFo zp$a9K-@!*pFgG}Yx$#_rxlsgjLz-azwb)vMeN=KWs!p;3j9B3naq~z1C|HhE{;hmk zK8i@DrXm1KOXYW&H%&@qbuVtQn8Zc&ZoOJZ7(XtHdr=Y@OE?E=Oymy>4G0Q!BVdHb z7X-&0VD?ej@?gU*V4N!CRr!zl;}s=*Zbtw(--&h&zMZS9t?i?%CTT~kX44RO zu&*GD+hLcIxKa{~C6F937rk%u(t7I4irutYFFvW*jw5jqX7x(qc8bL9EBh2M)0Vc; zkBg-Jh*TtZByH7*NLrq)C9Rrc=kzm-%j$@K+4ZWA= zi1Wx1tn=hiVKGop$y6#sbxrpiik3yYB>!M) z6|2$A=C1Pz)H_eu0=55w1ZtxrP&+PMpo)VN7T+K;mE@x@3H?OsVcye<)PE6n7HYNr z(ynQsT>IFS!yzS7KWUG8QbvV`{ihJADHfSnbrv2+g9L>1l~z!VwXCnGJGy)sVnvQL zOl7b0bc z<_hy4!-%#-B0>3_93CCeW`=79FO#_W!iOADO2Na)qSPGmpTKH?$_uV(OUlwI>h72= zMMMo9pnbqCaX@zNjQkV`?9MOn9pAx3SB22qn!nBk1cItzP(L#&U+YUf1hpjLC zA}LOFxUmwa*U3d3K-;)#i&KQ%MOF{NLnB^VnOUz67k)+1Ew+(LDyd>k5E!B-GHb!fHW zQPFDaU5Z`D;C+l*ZM~Lt^b@nDgzFCEPeHiOsQQ^&8>#w%aQ)si!u6es{dHPjY!*VF zs?OGna2+$MKCgsgLsFf6RMvI_SmgnJk%|kBpuKib1TByWK`T_Hrma-kX=nbQ>b~__ z*w%=!trv|}2P%wdjkZQKTH;bBYqX!>xfn>2g7@o|2wwG2QK|KEI~r}PTURa3H>0hN zze#6yQ;L6V1;LAIiBWJ_;x^(c_0iO&KEt7i#Un{k{K)f&V&b|TQCuUUco?l$ zi{fGHu#k`z#a&7i|4e<56veoYl+|x~b@w&Uz9WhoE?yLm+UhRKLAod&bwn|ro8{=g zw<`U2SoB|dD>(Y^KxHGPKu~~3{FG6fn^J%$3+uj_^xmGNtR}u>ir(8ZRqyS0B=!a9 zz12xkjaj&-aA=T+vhVyU0Pm0E}ZJH_1sTW@><0jDtY}+ij7%TJ6BOKg#V!a z5@+X@*N*zDf<`mhU+IQj9r7ba#fk3-D~^O&_7fCRSE6Sx`p`gq1{tfhULN0i0>DT_(N`uxb(LvL5(# zGCMm$I$CN*YDx-1<8Hwk?H!6JbvPxJeexW)I@~(lLrPz#B=YU9dL7A3f(y}yd)-2~ zcN!s#;rr$5!^?he3t`DGKfi(bB9)&>Gk0q!r!2P-_&agD6dPg$&?U& zzdh;+8I`UN6Q7+fgx{vdT2?~cvCmeU8K#7Aoh^h7d(?;39s6FEK79IFgfP+AX+qeo z4=)#r3H6CStc7ra`oJxO&!G?RW$@o1gdLkRM(}hYoYaT;TnXV1iVzN0ive9kuoAu< zSZymC<8zf59z}^x3gM)K8UOO5!{R#QC#=QskEg>Yf(^QOwz|_B!E%lzj*dsE`7R(l2|+Po4eHBRWW6*#nrAsSAPq zHAT1+Dx#uRnA%}$)(?fU2h1@Y9yn=~*-NBR_mK4&#Q`6&j{ZO>oB-;*-5<{;n~fkK zyiVBAsnT7a@YctJyQEcBs6vvZ9!q%li03;4TctEA3R?bP*OGX!IuIP!MNlYP(>o-+ z92iAFe)#eDt!8i+|HIEmN$+Z%_bonZ6;GJT`@T^aKPt%ag7RvpqWp0}=lThyM`%kr zL7NJh(=|}mTPL1@fK)`G_niTHREfv4-u5al&8q`E&k`+IB*Ks*+#FLBq1r#Fs;MC$mb#TW8m zRRU}ptv%Q$S#N9B6aKZ|x}9Uob2wU=>wF11dx|rm+Gd8=6SBqB5#lO@705%$OE*NEPpSeK27 zyU0}e#ca-~V1Pa)O?Au^PHLy#M#t7yL0?+_SMq?1vxX!8k^CbPP6h^$z&5ovw51Wh zsvWgxR2)G*?^Gd+M&&P*;2vMe7UCZrNgodxLK50> z&3Fmj>$S5(_TWOQ5@)rJ%lnf2R;)eu%D;RpQ7pdV#Dm!qwAHWE`iirq?AaHNv0YuF z1{3)0T}+pa=(S2R3xSazr08q243a(d(P!n;OxN;DfxJ#3EZ+ZwQFQ{8=1flzn?z*} zyH_Ck+rdMEY!AuX&V=J--;-XiCJPx2wN&we4^3% z)%V~4W8A^TDO6n3d)0tPtoOm8A;_oxYfp8&T8(F z8wY15mIvfIBmw72CyCH-St(})p+O>NX7nS0HQwk4v0m^}W@L|tF0;{o0eb2MUo9_4 zszz(B-q|9B^XP11Z*j9xW$+;9rKEw>bXzO|^rSOlqGOkhm|CH7DdgH@9u~rDxARGf zT$z8ACko-=apob?)UQ8E*nrR-rM-&0!q`qeEw7~sk8MbNniSOrD2r7T16OwHgq3d9 z?-u>&)c1OBXgw2Mv(~Cnw^OVXhs(@+Q2IKx{)?BY@Y-<#8OB!f$dXAXm7u6D3Eqao zArwWF;2~Xsgl@o6D&fY##{(nVR>#U4Xqlv=jmuWTXQkF6m|Ku$(}>+qC9T|I)7IBh z&uE%ri;^GWTfKhm8td0=7(CVtH^63X|M(RSceUeVg}pBIDjrNiw#`y`+bJd=9Y;Hf zDN8tmcwbJEN*0m8*&X-Fxr`t!$EJ0@yz2WRiW{vh-;sYiQU^?sW?9xm*;(u4f9oNu zWC$+i4v9UchXlb4JC$4>a6%fwwN5a@ru8b4!F*PFq|{0*gUX+g;Vik?0U7vF&B;z^ zRk^(%Puxk+@*cAUKH2I@-tej9jn&YyY(}U$|0xMxAZa4gj$Gi0l5^8uq9aB!{c|Km zr{o4RGqpY&<9ABDpu`Tiz{8DWmMFFQni^6#Rw(j2%xa~hK-K2;kd^T}&0fxLp@fgjEfu&@tfbnKa zutPB{v(v_So56TMk_vP44HT|37x@8kmIoSmz~=$+L|Umo@EhvUN#(fXo?{@qlg~)S z)nkDO81GUr-jA1vG&*3O@P~H!#l!;O5tO(30qXbwvf|-KT>S)6{+7-<=6c9_ZEezi zqf6H*`^|UdVyN1hle}tw(HtST;q&V1W7goeCVdy9ESI;a%a2$GxXfBe3YQ8#>UY7w zJqiZyO?d0#!QF|QFBcFYEWd`?|2e>1!%_yP{Y#WW;W`QEx zXp>1DSOo^xud|*z0)gr{YmCz)fx`j@M=?aNS74A>>lQ|cr0(UMCRR#VP~t(7RvuR! zCPMp#p;NXp42Z}k5C<^0ZyGSDA{G-{Mm*Gm)!FoEV9==tI~^EQ+4LBHCZhYSTY7j~ z4F=cykO~S64kW?g(^ z(Bct}HW=GqBXR>S1D>Oebnm?a=Q;(>*;!>2FvU2g;EUy=c!)ct;x~*+T^?YXjdluQJUysu7FV#Jrgyt+X?-9%T($*T-{1|*iEiS>qW8(3 zHl^(;fubAa?d(0RXHR)k_OwWWIJK|h;?(lf+1)-qnQnJm`CJ%Bv{BF;6?O0CiTtV` z%95n>NqOAj>Ek0~Rw8qT!DTrqCyvgCF;#zPR-E&D?@;2FZ!e7dYr@$CRP$0 zvmL29QF=9ZyxMxL8eVOct2@@FMyfli;Fv6X$X)7=wTYDza*Kmfv!6YdT+M8BNq8i! zd@ltjL|Z*k3jlY*DWU$~0^49{MrDlxa3bz-un|AK8eClz>{`7>z?%wP4IgAItycuV zAtp6|Beh_^6jy=C2!QK!1)%y=FTKw}c?!S{OaX8ps~G^C1ncY~QdO|qI;){m9!#~r zY%xgo#czIeomHbg>mb?A6RGDDCN0^jvQt%O1hPFNnYV=$jM(e8*P%B^x`zUB)V|MC zD9-N$$Y733p*S)~J)~H5ONNw2bC5fhy3Q$-qOA-_mrxn3jYL+rY++~fWzX1l3aE-61#w59!V4}opaJ^Qf9q+ zh39rFJXbRr&vk<5_G9Tw;<;f@d6$FdY80N^C3vnriRbzz;kgRIa}_B(Hzs(l&&G4R zz;iu-IUpTaPH3Kv<_?~_ssjp0;<+)6=g?3_lX&jM_9UJgapAcNjpuebc&;yr=lafr z=X8Dl3&wM*zQ4kAeb$E$@U|}-&mDt=rsBC4J}n6EHmXF_Ch^=S9X$6Dh3Ccy%9#ew z)ez}zd-pC3&t1HIPvbddv|;BIn3L^EPiinK3SC(4Z3@eY*rp@s`$TC`LWSngbUFvWEp7!^ z2q#W#PxJ?su0nE_1ibxRfww0VBOs(r+v6PY_9xD=fVbekIsCv4-VUp)k6Ewh>SXXn zY{ew-wp|DZ?bHEp$}=qBO+3RB^r&>eTTLq~WrMf#?&v>3cn(PVpb%kj<{e!s*HNk9 ztQxV^1frH~oS5TwQh1FU*?`UQR+oOtMK95hrSO_VE6)v4Pg`#Ho)&p`$DB6v z=_q|Y_H`Ss&1V@ge2=bB_O$eqfjzC$!D_9FhvPc3vD%ozYP-N{*wb8CZRLewwR76j z1gs@~@xKGsdNo*+YREgjeQvOJ;H&zG{KJ>kAxH_-6j=LDd&tC>7?KXwBz$TzSbIPX zueQ2mc*p^35=W!j!Cdad}A71Yjwf3VNbNn4cCq&;aa-lbVoara4qqWWH(Jh zY-Ht3MQm8#CLy-{{^;YA5nF|_zC8l#aQjzPA**+P1sXYIePfTqpBW>y+LZn6M!5)H z+mXEL#%q_Ws}8-7$?AMC-%yhAF-BmS>d%kQ}G%Gfm+Ek75iJ=WV|N!w|!t{ zH(u*>@EXCi*x&jDuhk^++TKZcZI|G+U6b(IUK_9Voy-3Ap`Wn<=frDE8DZPs+<0x5 z#%m;nY5UvWBwpKl9=ujJ)fsy(`&*rI#)|!Iul1uw-u7kVwZUoeTDQV$_2;&~O~q@< z6I*BFHQm@b>4}}z{-*MUAA@pUo`-;VZC*BSntz= z|G*ICJ+9-0-2T|;V`B2PVOyubwz~7#-)z|Stp?c}4cqD_!?ynhjXB`sKW0E|pG_e) zZGXFa5@JiYzk%53{euZk+252q)v>>6wgUVV6xV5^I8K{al@l;_9ZLI2An>txKY~zp~KE1otO?aih53{g{QjP!zWbWah#% zM&+I7fpQXcXNDgWuB)M3oj|#dIZ*C{0_E-z9G)`1$%X>uj>~(wHgpP<`!y4BHuVU< zPY2_k;By7z_SrCQJbddTrC-#C;{%^pJJZB!2sXJ>*Zj-l!Pr>fGJLju39ENCCSezxwr%S1q%J(B~&0sZM>!sQ(0EG@B2o|PQ0z)ME)(ZFF6(%Z#D@{)N{m46Mq6ep@Inrjrd2O^_J z?2pv5QIUJtuE{FGdZ_;L(`qtV2bN!3dF>SWYkT1EKSQ7gs2Pe8G1OzdMG=3asw?$kh5x`{jESe)RE$v^taa6U0hA)FT0xB<1H?&m|akncdto)QVr7*eSyO z^UU&E31}qSJ(wpM^&#T->O54^4L3@jUK5@zSw)Id;GH6$$G3xTNGK42f-5p5D1hWg z(hBL>$quSKJ%R=7%=doB#b-A>Q>l8@vF0->Td$UqGB=y4R6X7C0zYJlotAfeEA?qq zuHHTf!})LvVK3R|Em6Z;(FRn~jLi+?lR+TA@Y~+w8 z%a!J4PAXU0ytP>Si}=FSdZl)MLTqo&9C*5?W$;1Nl-29jueIL(Lpi3^9QMprK191y zLBnh&B0{L%iHA@PK}+m{mxGrmL`JS2-ODZ&fs6xB6|9%gDlvvhQ5u!5hgV(|rBPF? z#nT(qJ+`287587A-c#h=$+-V(wS)Hyazj>yg0STTK-y(#e$PkCxY^uEb!l9UCH*iT ziY~9oW{nAk(*g0i9?FZ(?mr^09_&~qggqt#6s^N&R0<|RzgbZPfdxo@rD&%scRu>d z!DS5K{>n-1EUc$v=yROef*|R7cPd~m4w04eThLWFL>KA$+~?$w^jLq`DgRn_E_^Ug zN?=0MBTMXby$YExmX*RaY&Z6TNap5%-g2EKj8Y5W7Qe4;)h(01i-(UQR$aTT6rA5Q*>o6xCMgxYR?f z=1|Zdu+}c)OJHn-bCFn1^Uh+bqU8{2Nku@3igl{_^63IH4nw_L^L2jAH0L8&jWU+Y zNtlS%T5tTmoCTyLQ6bft9L{a22ApkEj>CE?Re8)3FQt2F2D~aYw27f0f7i*OF=dH2 z+Y@1~qvnfZS$emq1_Ydk@?31UG<)_$X?B*i1(qnpao{ojMRN&_s6o=WOwc==&UOXf zVGsP845S8Pht|`pV~xaXL5x!ERamtY>8(p+)!cKU^l~0|d6wl-cgeNx<}Oa@ZSmg> z%~)!WZ*RK&a@|-|v24N{q@Q+{FyY{Qbx_rVMMgBHJ=nHleeQ9YVy^Xv9sJuhv`DXl zdg{#8_H@M@(2N9{4I?U-5o~69q^RIPs%TD-DlIw$Iw65!9D=ER0jOw+c-)ki?y+u?mqr}nFN`7^sV=YT=B%Gu zH>a1|K~9PFXIK+NQHfVY$~bKFTvP+8c%GGlqUMW2JmQhOoYxQh2<#w zs4E2{I-P!mLP%09xGQ}>RjhxbVq;@gUe(1H3r32&s!rQwgQZ$&BY6b)Dkk1e?cjL% zUh8i4kX-Bgm1_Al&!h^ru5F5UzM4S)HUg*o0ES?XKRB>N!agId)KIp^P#HYZqr_}y z{2KOIqVy!ol2PMgfnp6Qry2;hIwbU3CEIFLc0eb=x}nYh|En=7eM&@7)NNLP@;Xv< zn9`e4Usp;ENjw=L3@ax{Q(!n8bxhWofOb%Qc8WC z`hY~OhUpL0uTleQq#>P34XByM8s$z6&`dDRdw8zY0AYYSHK4|N0|$iX2pCwW>X!q@ zlLg6{aE6l<09{ILT)RTuI|K}bs_Ds1dtF(VES6KkIWLnxh;x^iYi>k6Vm1QnU9esp z@Cxnlhg7BIkRr-(16gmA#R~6JE)bT9ZLBT`*HGF?xl^9i8&i6%ivL}{I7`(Rwwt2Z z7p1=N0E-yP_II-avxfRpQJRE1#2sWb~!7k+-0onH};>~l)P z%Q_md1u}SsdPBi|TmCRO!L--#0IBKxbgi1spe0KY>MtO(qv|Qa1gc1L2fryslNJtN zO*s4~6pzWZ+O}(AryMoq=`tZUXxbk-AE~wzFxdl%CJ&`J6o{c`oTBlg_Ws4TCIZ2*@D(3Q}@8A*vXa>)XgsFvUmh`Puhv! z4sAj(FlqO;SHq5y+g<{qkhtD=s>jm&ReQd8=Kg{(h&X-Q=jq4kO|N!S#Q8RTFPna+ zd(+F_JM)IqXIS?FPzNX9!PnCTQ%Zl~E1b<9{4ZHM>0o=A9WN6pWT6>7Z3)^@3 zj6LM2J>5f# z(P*C%Ua7MnJ)Y$(-1Hxi5jYeLF-#yMg}Jc{6Dmv3U|88c%5#&Wz(!4}&Aq8cz9{s^ z))6SR6u3dCyThoRgjYULjGSx)s3=2cA*k})lJKhfOsuyO|0(wxR>h3gW4^K;QXg0n zD;3=rkB;-1_!z0zeS%1-p(`X^L*Wv5{OHhZfx3}#!g-}ycP-m)Z2z%Ts#G>^V(3X4 zDnfV2CeP+ll{9qcoxYqhezx=TS$;hC_;Oy)Pd-2I;^!fLzQWHp`S}4q?|z>z=YD?5 z_}R`+a3i(|eoTJ8!_NtRuKX}Hy!r9-qv`?A=ZTW6NowSsUURcu%GxB>oyb^8lC;ca zd7guWY61f`db&!&%K{>W(l zU)2fvoIXLj?@u$Al+GnWZ>|-i?+3!ldgdYi9UI!>K0tcJ`|S}==n<>k=SPotmp$TN z^oX~(kB=U4tvw>DNBB0~HdmjXk?y}B7TsT%&1=oJhSh-{wr-a%bX5LTG(gH%)(>4G z`6ahKmJz)~!l=EkCN)HAZkOf|yjyGreX+A1WBV-egVI#I$s?Jnte*&9pHcNZv|<;( zMuzU##D4N~ke@&CU-pa2&8on3wz)$T;n>)$(hq@|V~wXgtMX!FncHp*9NRkQ z-h1*JDO!$I?f%*8*KM#C-kFhcf0mR7$(27_*|k{f4XUtt;MkTUGR`X(PH#}-&;-;t z>C@+o1E_mS@&dhE{#{1TlF`4^qp@+S(VuXQ)^Gi?-*>CrIWzgbxvo2>z3&P=&Us&9 zDCcq{kR_OyzgAs=;Zsx zhVM+01cmD-wmoESTd>ah-PfVDRi$>SwAdw9Y(6fVRdKRr51ETNTk;)A>IuBK?fB5E z8GJPZ`8#?=`w{?PMn=2*FM|^3;ql5ROK;TtLo`*sHL{Lio}7hEYs3Uo+U&Ik)*|`C z32qU=9|sXEBlp`U+0H>MBKyTx2-L>%OVGx+*|e~^J=iEuOL$>e zB*A%6dlN;Mp#C8+qy_JQnMZ;&;gOW3F)A)WLg@FwNQSCb8=zi!)hIN|y;{^w>XCqf zU=N+oV&(HQqyLofUKa>zF&gZLU4AfhDvOU-;vzE5S#Y|c%Y_?IplpYL5rKI3GpJBu0@hhim#n6^) z#b9>$Nob4uJT&MUV82TxlgD=*`2hZw098zCV#+fyvYW5AUlV;{gCt)I?>VGOC!;sZtZbLZAnPrC{=I& zh`*akeq~oH^Kq`fT{^On4xgFuzADhhk&cc9%KOV+zmWD}_&RT^huD`f1*XI-o?;eV zwsEU6pfFmt+6NctB!ui!n;qoSc~+aTK$1bMy(b-T<*T$>E`11xNB{OPKz= zC;i(VT8PjYuVuzi(_26`*_Om7 z$wSQXoFrdF#D%5HAuRP$z{0B9!@O7DHGHR+;UY2alM$GBIX~3S z^9Dj=Ww0}he2|~LT(oV>N_ekfxo(!%i;f4%2g=?6e_DxociBRGw7l!1yz5hJ`*9sf zUU`I}M&){0v!HM>Rp?;S{`$M=ZF`S!)ADR66v=uovH=Q}w2jMHK2ZQ| z&&COg#|aAcZV(DxrzjMSX;dh5G)bZ3NeY$jV~Rq@to!c}&PwN@g2;&dszFk$P9Cc~ z;!tRhr(03zJ5v;TSSa+YqR=@h3LRh@GBkw(u-z0|{W2)@XdpZ;6iQfWE@d}_LdS(d z7i$U~4@7#QQ1ORY=KMXZ=Q5@Mhn|5#e@Ly{xJ{V1ky zlO%QDdjiKuY2iSZN4lG$TI8*`F$ z_+p~OO@}3l4$pqUMlQVyx#ZAlEqWDHD6R!z;m_*p9$?QhXmGrYx|E|f4XOn}v4jQ- z0&PacnAmc#V{>vT>{2x-e=1rWShlc5;tb|L%BxPI#Sx=&t)fMm>ZZ}6vy=X#&|<03 z;wmq}4&BegOrc09aSBTnQWf>g#YtiOqtkNISuRd`ZaTF&>6q1Atm$;DpnNKw9!#G9 za8HVz#%04{r!AVD-r{1X9qmDjs~XC2<~5YVAFr_74~1H7e0QN(?x5_CqShpXP@5wR z0)7g25NZ{E+OPO2)GC1;Q>bd>(gJ(`YfUaDxg zywBmK{fd{4P0LH6-@B&LFF4)VT>n8&$KVH`UpGEnq*|M4ktNbe*##hNc$R>OJTLR! zpg;tcGw{QPY>3_1F_$AH!6ZtEAvtIcq2NSfK1K~;&#TE{{~Q~bzmuP6CPI}g1Dok>?8ly_D~Aw zaq`&%<)g;-FUrP+`%?!Y2YPnlipA<6T;<>j$u$wKJ=n&-NoaAEmZ!w$M)Q-{g00D6 zEvAW?NXHgK4^O_i2(_V)U<)+8hJ-XcBF_>LO>diF5xOUl(&)rFZaMwzE*Ou9ehcEC1NnZY$a8QT~Y*UR?84^gGddyFb+mAH^} zNqCpQoa|+!L4 zyFcsVcK>JZa_|1|l-+-~>~PqU-T!BHk$|7n?w^$pQo>N{7Mcej3^flJ^bFR^?mP1E zawQMhen%Fn^M8K3#=#-I{V-zZ#=?k)*nV;dW&5|DZ~K4$xNJX;0%!Y&r``SrhS}RM z2+7uHk`g!x(QndQU-m||?W4(~PMxypw*5zX+wXO1S0oisWnWl;{V?0sJk1pkn6U~L z4f%mqCh}ugC~cjVA0vt?0@%yOMNd?6PIUxCb^LWRKk6*>M>N@m!AKK5Wz zV2n9%eggu7J7g>*@~Tw%8hop}pI?U-W&PVbcrr{dhk_)NQR$OBe@K0}&({G!Z^Za~e4BGHXtJ zA}ypWau>EfAJULc>cZ@QO$A0G;Rw`+aXP2X@mO=DPd3(?NB3XmfjKy>}Z zay)5L9_T2$M(7*vldhbZO{MEnv<*{qp6fphQ~ZUd?XpGZTk-`dx~>;yV$*n%H_0!G zKi$SFV98P_mky$yQ*k;&myCf^%tD{1Q0yXsE|9GBC_8Sxm0(FalyylTQ821B5gk)4 z%1&U3EbfpmhFXb?J3+}4ld+2ETvuCKt;V)Y?zuD~k zy#)zGm+SK&&=>sC0qQU$f<0KxCZ7CKfXI~bbz(<;_j4jIXd_!jpV%G@kdeIDS?|^b zCT-z@xpZIpzu8 zDSsjn?1xU$-hI~qA`v^Fx&vxt!uJEY*An{^xm#-v_G|3fshiJ}J4^U;hCkTJD)I`l$yZJ_B37dz#=z?dAy1w2lIsJ zu^51`<3{jK3>(`wiR_N#F^gh?I*-!-x**&o#3&u)mC985nw_^VKC`%JB6`(|<;8Ym zc^RaxMt{eh&^n}Ep;QPR_0ygnTYorDlG7st7=y)@Ondoo-?sOnVbC*<$JxNPVZb0Yg#0cVG>o0SYbvNqp=<3P)2a?MwUxIV2>^WGP`Lftb7+o!@;F=}v4W7-Ni8 zBUV)~O^GzjrSrRo$qyN-2G3>c9H?N{5^w&K7aYl|!&uMpo|SjP9u)z6oXJXU=J06c zQ`C{ie@YTe5bp|AxeaW%<+*12z40yHd+eAIHv?7tb2a=Eh)2KYXtw7#)UW|pQR2Zd zyhUat2k0iIu3_{<(<9nGl}(|C;>{BM!2;arGc!ET#-p6Wev=g5et#RTyGXr1I*gJN z$@83`>`t&#YGj`XoHSyY;_}Kj=(`x%qa|;=n*^KLN6 z;(&*4+jOUtP}40DLV-Nd4d}Znd^C?xQYkWxXAEymJ1(S1m-drxSZnQily%Wo@BLyl zY>8fjqb*U0w|v+`5b0*QPB5A1&=~HxVItVj9&E5rZXSloZ0lRkY6jX~_6o9kqPRgC zBp+%#HsRfRg~%PMbruUB9T~g^DM41H5j!hS^etQOdZy$Ze!9#Nbw`}m*PkJ<-Rz;?OVSg;rl6* z%W(0e{V=2}%u`xlmoj_fgHk3}&HuEVpm1;TL~yi-IR?5UkV(&yS<5!Q*Ce=Qc9eY0 zDHENoCVJl^_C)t{FA*PffU;j^0WTvTCSOLxNcwymao4BK_qo2b`HJ9x|Ehbd`PRAC zamnQS6WpyC@arUM?G&3|59rOv#5C5CiM^1DrOa?troMeX%vj=}h)H-#DhH~fP5vf~ z`GMdVbd6V0(RG%mgAdH;uu&AP4@7dyq(tNGtly!s97(Aug!We4QNopNcwppkVBO)^ zC5q0<5hT&8TVk!6`u&h#6pv}0Fz6SytdAAIHgbvqLpG zuA^JuG&4&k##u4spd6KO9m{qBF`CkhZz-T_ypSOJ748%d9XjW*@KkuF`7{DU)^CTX z&t%h^hy0;F^N627fund(ZEk?~U!4@H3>I0jxbSkzPHbx#zE=vZ#CTUFg^?F=ocSCp_Yi7zE=s#z(Y$qB}<^$hN#&-)L zBXy+JrZNb6PSY zYjL-jbg^xrqAivnl5j|&eAbBF1VhemR6XhQB(-BWf5Jb4Py-55%r>zyGeD$7sFBs} zQ|>uY%$tN86PzL8n!z3$X1os%qSOtKZeR!oj{>qc*Ub{qM36tt2&EkZp%@gmQ||nc z2U!ZupBpi92HJ%`BWdB!mRQldbN2!D2QG7WHlLJ@a1E6`qM(4w9!QhZr? z0CimQU~^*b6rTp8BrA9hzD4+SWW{}Dedbteui}fa?HKTMo1hKrpxLP5chjLw*f=4($pYESs0u zJh5}OaOk;a+Z`oxzhLgR=k>jSOpG85Eb&|pX!lY?Z!qHgiqZ+*A;{l;nql(ix zsepQlbApo-xgIBjLLjsbs8_(5bUft4%&Z#pEX*%=jkQP4jY7|v_xQ|}ZZNFNboysY zweI2@HpbtBW|t{oZ^IdQHA7RmE4nnNGnCLJxRvKOD!1xjtk|1PDzxO}NkApGJTwpR zOuHX*8zLP}9PQJ*TE%nQ2gs-pgdt?~N~7`{@@r^3aFl~&*SoaOk;2&@d_WGr1ah;4 zihK9U%6^(&>ixpKiWT>sjJCf50ovTV*g@OHcE*iNFU7hiO^>-97w%0cN^)*h*9-HW zEecLhvhBAYWpxn75{)h4J_Mr0Z;6+9&E}M4LgDEfcm)I!CJD(*C0r1#im=>5AGV34 zHKJcxBi5&xBjE26)*vPc@;w(e1++;*n-sJ?Lg{?5SE8~5Sr`@%jEzaBsLZ3}7eNr2_;hdeBi#^fIr7&Px z9dM^w?xb$7P34w{&pj=2MZHmQpq+Z=+J-TzY#0yFSWq&-aw`97RAj@m1y*&7u8L?s z>ovAZU?m}->-|TR@=G?FQho_*vIWzdffO2F?Y#X;tq3n)Ra_9(Bg<_y8ATZ6LB=p! zCyMZRVkuyYZKUS~XI5ZC$ny6R>_m*~wsom9oNP8jN+Zo?){VFn;G9^~0y)^W0z7t3 zw8c?aOZwB%Z9-?_^~$`Luw3^6o}6CJ0ajWsC`ZuNq_GN}*roY7>~76BN??<%`6dH7 z#1m$U=6gsq-*57lbkcA%-@;Pf3iKpVMC16i|e5D1K69|B8-2&6}!#qM^%NMl7WWPe|pGU>@0=#5*P%LykL*A@RWHx*9_&q@~X5 ztxOC3H`jAeG+<6tV$B!;O|)S1VT>OG5*a%z1!%`qMKhXUZYE*|rB(FbWupJm8H#}6 zUK2pwi~jopk;9_@lGd1~dPI>Tsd_}6Fk(7VWdK}dK5aYh{r``>w-1b~EYrr*&d>&! za;6X=V1c?t0SBbeDzsDCHtqD2(DY-d2m$=6P;o6yCk1UF&1BjfPDb;tsb=2|yHTUR z?3&fMrfytQnS7W8h&0exQm9gq)ft1@0@@D>`CZrjJZI+2Bx%#qS77Cjb|!PqoH^%t zp8Mmu?(4p9I9sU5@M<2s-LtHtzLNc}l6`}&=$!Eoa=kaa4aslgLP2nZu;;~PvE|)s zqJ?~3;Q;z8aqpYl_;wz8i18^a& z-EgRS@p}N(t?$W3Mv+a}Q*|&VRZOx1Em}Q+u5QQvE~ibq2?I_AIsw(F!Pe#j&Le+pA>X5nB4Vfc?_cX z42)q8LgC2a#7+m9T%iFA-(KpmJ`P9<(2^9T!IozqFdwGN@ z9_>P~jPOmmey?)B!3fq$r+kwJ%wSi~74a{SLn+q6pjp$gUDa zguCE=<-!^&uNEVl!_JdWZCYe_ClYgjL%R&0M3;LZXyVV#vHe-wne8sRazr8QMiU@o z#Y!~q8d#6#W%(}e3H(=#99>wd>HHTdfXDOj3im4ykN%zYnpu(qI;FAg514%DSh}yT z(s@N%N+0Ia>Ac#^-}0aETsW^6fF{AW7zx=0a+CwTY8Tk8P~vZYo~u78j8K}`L)gMN zvg`T+7mE@`_~S|7VJzP32oJXPa{8_YEo8Sud9Xc^M~2I7l)WK_5-1gD>|Wn9xYIjL z3}U-^j$%b7#ZkrArl# z*s#PyxgeT>;DZPo3d$h9c4#m50m+!tz{d4YqS5M{gT6r*hW zGb2@dennYklCu>p<39wnCAl-p|Sd0oHbwUlP5Szz(Il0q*DH@2w=}6mY z=i=@O2FrD5d1a?9dQrepP&ktpz8cXfH-0V&zWPvLzU{&DX{6(LW<0#?u4i-kVRwy8 z5X2CeHWQ?b<%)yepB|mM3To8ezdXF)0_~qKgMXfWV(0~N&fykN-qik7Ho4>wc8eRFCY#t)M2`M=@=XJG1^ zcWadc_Z-UR7~FI2SQw$80URMTwf=KSjk5@Fq78LA>#U^QnT-2&c<3YEZ)6n~fUJb+ zqH7M*Dep@;<*(XK`LT4TTmOIK5J{5zj8c({#vbVPCcIA1gO>#1b<87 z`I|qZALGr%^Z$qFEL5hZCQuu^8_)O7J7DY6jClTp&r;LmVwB*hy}jc3pZgSV4ZFQD z#`FCm2k*x7--394>=T%(IL%{4S+H-yZS&65Mh|xaid4`9H&>Lm$ygz<%cK z7tgQ0OF!sois!TCN9uXsjpv_aJU>KHdFRFRZ@z;Pep2y#3k&Z}V_fgX^T!g;pL#on z`Z)3YEFM2mJbxMbN5M~cyTtSN-8M`?C-=f970)kXN3?fZJpWf8*H3>M;`tl8F#su* z{cb#e%<=pltU={Hp8yYiJIC|C3c4zs|C5a8{~QZ235see)>sfxaurTrJbwXh;duPm zxTJ!cNU%E|KenH_w1^La2St8tjCf#*A3Kob#|{w-P4Z(A9Jk4_J<$|7cEFY2PjYPB zNsj%vkYiV8kYoE)Y{D5JEJi^Ft*KwiV8()}S`fd5$63(V!Hjh6sN;^3lYl{E^J)KJ3nT*Cxar23QjL3 zxv+f_@yc_fVuh-IiTf1yS?%V@5*>^C>>yjINBP=+<9VT*NM^zPX~I=2{}KcgfNt`- zKtMCOurCP$dK6!j0U(bG4_h`B5Ll86x{{fo9lrK-E~reS%>{iCteF_Opcjpu1+0U`sG)LbKnc{@C;5w3Y1a_s6j!uRky5HFL z3(k;(Ad1{&MG)msrh=wI;+LT5zu*g4LqLp$AgY#-9W;F%FlB~ADHJ1c*+(OY&ZcbG zLDM(G4n^JH844vQJ9Ix{9!8m)VCnJLp@NStI9WdEizD(uTb+E+1HuR0&-my>0Q`1* zlr&JV^nI+7mTRJGwq}E(nyzAl_F}b<$_DLCXM=Vgj}7|53Ou^<9y>>3gSPW{K6bXk z28{_DbQo!H(xbLcGQid+XRQZJA%tSU2E`w_PB!R#mHjl4x~cF*Bm8G9lq#?xV;dhh z0Tc38#e{@NkH~}+{@S;2yP}$6xa{!gOp2+WK?EI^IyC#Icy8z>xelmj5HmoHoxG~( zrWhW}W|&?xTsOs_n{rv0Za@YC^T~%T%i+qKfUja)@WeNh{rIx)fRp{$>JR1=U+H8& zBK`pWqxa!F#ZO-fetMAnbcB5{y4aT?Btv!{=o`mWkQjswR3rf1xR-I_VDF}zbYKR7 z;+6P_Q5gvn3+++J>1njb6Vau5SFR|CH=v}8rb~^1?|A3y5-*mBOa?bn2pcJGB8;we^Ea3#n%;8&4HPlH-0MIUX2+KOL+w-HnK0R4IpD2LxCMUp`?)P-ft~+FP6w2 ztIrjpO4&=Ok{dpROQ}k+U^{qJ^;p=voNxzf#vWb+&SG@VIfE=7%RAug91g#R>dUNl zICR+~wXw9?v76jO*Tf@}tEXU8($3LNt zf6!3`R*ok=sIEUx9Y0G|RI++dKnaihspB2+De!o~BJ&B0tq z0k#+Kgl#qR$N=%iKOzeR7S?0Ax2O<3WU=E>kM}qD=fXoy!#_@ovJb2W=wY&eu5G7N z4U@&mmRNUYgFa)A{BjRQ9wBxR08ouS4-EPNs76@XhyI+usT_8L!e8Vh>u{LHkVx;&v zP*RMo6?iXx(KOI;SRu4`7CI0eK|Un&1*9-$2`D!#VcAwxG%Me;0rfHWLDpFx^BC)7 z9AJG+l!WYZwI}lmYL-#;!Vl_~5(jzbj=jQCJXHMjgzV%$(k+%4GKAD^go&k)23gr0dBr zyZRIMhbo)*#PuZL$)JGY5$s}cGs@sliCIj-m`)N3)(nF%D|+~WB#Zn!YUeDHE9 zeJTE`l)mgon)OcbR?%mb^(}KzTNQOpp}4>U%z?T;4=rXAn-JWM20Vjj;y)2Q$mpwJ zGOOa0-F%{~k?T$3D%r9IR88phxz_!g?NZP$S&Q#q!oq@{rQlPcyeq4tBQwbeAH?;@ zvQ*;S{o|?l+qa7w2FNn*m7;t;xgW1OCHSV!;S#*~Mmjv+Z{y$3@b7={Ps=M#3m<-{*nlnZ*`+7a~`;YC+uWxZlN7@-SdMW*0?GqM2xuQm2Wj$ut&o5*dw(~Y`nU*T<-fpUSL zjB4b$R7;-ACAd!6Z!gFCJnDPRf2inv>$0#I=8MZa$ccTohy5f1XY25N-Yg3ZHM~!^1(kW$KSPB>uMU2vQF~OlC1!l_8i1KU2u+ z@Em-gpERKn2|6sP6@2q%v!wH$ES3dFMg1vdQFobj^ZgU+CiFaxDaEl>k1 zeeM2d$c0%QL?1*V*x*e;xIAUms96 z_(FYrY5*h7v%^PS8*V|v8x$wTy)|w>riS zkL_wpjOTRXZcvK&21_QF#`H_LvQ@Hgv6^mwVU1CCH$MtgV!=#9Dc2@3tIe~bT+`M; zG@LQ=cJRGxH#qC){LuY6X3e$7zpLm5)WR8u+LkC7<^1`<#d?}{6`jAfisu-S@8fyw zPceBV`=X0Rs!*{jRezO}=Q;r1Gx(u_ifGOym_J{Kg`SYuEOZ(RgB7ZVNU*|mqqa!B zxp9}<)rBk1Q!|O`qWvvdUJOlj8%m4He1_Ix?D0gdj)&dTXS>fq?h34&Je?}syqv8q zXd!zBkpYtaSZY-7;i#bNcBom^fqp-}VFv18C+#7Q)M14To^J*#1}8@&bk7Do>XqkV zdzoLS3?_1%wapAvkRdq_RuU-JKw|JLOo(V1Q7~d`;9eZP8-w_hp$(u9qu8c<=sK%- zDwGQ|`D$Rdz4f)%R@RNLiQ2n93=ra)C{&l5k+}9cr7X4tW;HQvJ4?V$5B_uRH ziS^1ND)7G?vNE{L)+t37ChPgBo{IK?F)N!^FzEcj&f*Uvr9-Kje5jgE(|u40^6G=` zg(Averi+?svDM6xY&=S^*`a36kRhyv?g2|V&_vPw5l&iL1y8ui{|HCeD68k!pyToz zDY-QiEBeHxv+^so(AHJ#iZ3J&eaMjby9}H=_pALT+etJvFPwySsPd5X#OSGS!w3}}agE>}v`I)MeD8BRT z+6@!*2@m$j zl~A%IFBg|n8wr#MjPg$2`}DLvbx)iA8O|X3(Qlh@0rZ{wb^e}jmo%opmZvxB4g)-Z zznseyPv>)(S>-A;tXg{nFAiRSa!SZd9>toYoAF=pG$dfAW@{S4-mO^+g*%p`Fa39 zxb}vR=4?2-?S(V9bYvk7!u4!)(d!yHgW{KKhTAS1oM`;$D~tA9OEbet33t#W-^zaJ3fBq{m#C6YiSAr`-Bs4r!oz zE=J8CKtYHnF(_)pqnm~Vd@*-$nz1<|n1APa0MXDcnI#HQ##>e%;{Th=UdoEjDGN=o z?mRGm@C?4QVSrvZ#xn_l!`Z>&GYUUKoeaRu?0%yC&r-467v14?*R z!K(N&oa*XAOEdq(ho*He5&`O78INJRvc1g|2q6+f6`K>9pU=;YyjNFbZY0n^X zH{Q#px_KCg*Mi+N@VlGYql7?_1H?P1K)i!il;4M_1-h&qluT^Vp>5eUrOpB9L5%{g zXd7r6@)r$^BjD96tGFx5m!qb2JJ90p-toPH0a^tHC>I!DwxA*B((88Kz~EAQ-%x}c z%eg2dFk}2F;&%{8f2fW-{$APf$I|e-UcKY*)jR$=z2j#jQBUiz9sfOoQzGP+!teS` zc|LCXTZ++gtW^Y}fAH$e2U8=f@Vh26RLgyTOYvp+1_3BwZy4Z>mtfQr|BTT`RRB6N z(=l{(WcbR{(4i^6X&8LhYr}W2j}r$BCLOMm@IYul!F9h4r?wyLnVE?Mv_Q$s8fAelv2{w(1UwtZmq~}i^%THGBoecT;hXw6vS`BQuXDx zggf2PBk#q%CdJu_Z<1?b9~cvUM|_}#^4v>#?#z(qMj&{dTAqP-3WC==26?{Af-K~x z`{F+#b z*J$J_d?k^WdV4M2I?y|j(g`P!()~b0|CdWCc?sB%DJh*>nvzo1vKUE9KQfAx4vXKh zdf;0iqU!{@%Mj5a+Shauy$t8k-X-PpJbv-?%V#4NVp2XY8BIP<3BS|w3Hh1PXusf$M9Ok6Ms17Kj zn)1^dM}zN5Go5s8N8io{bdOUszr9(D<~c@W=P077;$6c%JUc%7q{L_6O8fb9y0Dq{ z^Y!7viA~}#`&q>Ao__iCTl1Y8ooxcCff;#_c*C8$ii3BXGUS4)1+LTe}Cu4vBL8nFXlH)mT5E<6MhX-V&o zQG^UnS?&V@BMy2MFiNWgK-6Et4*-Zt?vzsRLWZkdqfuQ%qyE8~cLOTwgDB;0vL14v zQAfgW5RLlnnOnLAje0|E@35zgUk-GNh()J6b={~ZBBQ$yP!#&0rz24}-wqfG#R5@B zEK~(}N5}`LbLa72Z$vG8&);4&Bf8i|F99 zU+ZfRf4+ChQuFq0*~`qEwz<`1tdeST^A^ac=aWGb;0h#8m5hU z@G}I)1g{0AW=6dD!~v3pv$KGZEeLxC$IpmqK-bqZ4jMb2oEL48^Gd0Wj2u26t2r!M#AB9?Fo0hZp~$ZwH1m~ zr`hu;dbmQJLIOR`P#k*JJ)9brh8t7EvFTVeK71j%1O-T0@F-cGqaCHzCa+kj?x7%l z_cS~ql6STj;Q7XF@NB^}qAusT-FcTm%(8IvzVWPLn0E!J6N9woLfD=e>>4jqilfHDGT@c_JRg_=N(qZjGx~YUw82JAu=tie*H6#xAG~E zchTb>?;n4z{?+aEco+YV$2;Ly9&h8X)j!R@-11TZ9&V(t-&CnJQ)qS(C-Y-NLH85?9l(?B&>xrxPnb1dvKigbmI< z&!X#v0?vL(aV!5dN4S+YT{FpRg)8tQnpO#gNG$j$JUz1z-d(5fHE=FX(O$NTr~Es! zB-R~}`|A!6-h*Ko;0x%LH{ZVm{7TJ!Dz&mq5Z%z;xY(musJmZSYKB00yTp`e6HsdF zd0>udq)T8m`Hj|M0=A1;gTGt)&m~!xdlg{2SE)t>Tml`Ym?1@qaDpi-*8|X&Ep06T zTL)Cjmcd}k0ZxGx+Ae6XfaeILSS!800S&SU?MKjmQ(y>d@n#dX7%^j{Q2z#{OqN+~ z<|8-Z6XXp(;m7x6u{>|ge|)j;SEjb%NS|y4y)(KR=KQBB}FCD=KR_ zXG?VH5cv2{7-7bU!6qbByvFj(Cb{$PHYgVqVP<b;xxj z@m1b57@voH;wSn9PW34~RNM+bhN1}#)nQ0G7a!Wo^8K;75rj4x_|0?htbEW}_az^c zF(YW+=$)=`mkZgM=$l@n(+F0@SHN9l1zc3`yxt$E3FQdG_|l&;)z-`0N z!7GwtLE5<41smFr%mX zeTDm6?W^#m&iKZQ@NhQfJrDORTvhTXsPf5G?X)rP4wBm>j;e67jpsVps!I^PLF@3|09b;SCvOpW?DoG<9)b(jc<>S@|u5$dFhVYEckb10ga| zPfmX7FqF)u{5klk|Al8bSv*Ya6d|!5Qf3syEfm!{QdDDr#4;i79u0|g65?h_%D}!% zh}(#);X`xF-I;{BX8}?*LoI~G8jY=U<%9;&BNc-)Gat{V?yD_BNf zJ?e`fuVCn{Tnv5W%UB}-%`0%8Lba7k&snLJvpbch6)l5WxsOoj?(qtD{r5UzJa4MC zIoz7aZvviY6^4U>PCwa=piuHK|h{} ztdf0JyHm7Q#{Y5wo&}kV5Um*$tqZ{Ggy>>7Q0+qFk7sb0(luZOOI`Sl*?uTak@*cX zqf;ij3d_yH{=ute`~|RnViLzCR23CRQqiRCzc4h3Khgpg_WOf9NH|2C$TQI@gn-7N znIX5a@uvF~Fvn3{y5C&g<%YlwVDf!!C|%tL888;2T@T_?z3H<4za0kz_{@!|44K(g@Hu#*C#(a?`<+5|yYI%>?m>}`o zNgRF!;bVshh4u8e3453(RE!5)$rO*+_nH}{tpJmF{ZzB0B7WDaaEMAYgLwJoc+;O= z9}?5q9iT$Y>XvPWyi*32+~Px4Nd@_n*7f*c zm~Cwo+e+I!+_tK{qVHEA2G~Zn7nV35wzV3R<&p}gfkjxvHn5&8)-%xuhI~)?Uo*o0 z9|o2t7JTM4@t>{J_zqgo-cAXEbzMVB^K!R|h9$=}t)y1irc|5OnfBjfGOZ=eiErW> z!|ZBFGmI)dG-`~OeehN!mB$yVafQnLht-A~j{u9>erWIFlsRR|cs|vi?om%Q!H8_* zWoSv=s9UKlX-m?QPRzjsBrR!6%97R>#L@LHX-QGX-e1yNd;?+#RuDoeRun00?#CgD z=H|yy_Ex6@h)vqb)o#aby1X*nR$(>1hl!gTZbLB+SWlyD8N~}rI=_MuoE|&yY893W zpR5Pb38U=uoD~(E7Lx1{u$)BKeds6nvm)}gjbuUd*EXB7L(^LV|gjg(fSumCntvRk~nkkP= zga(tWt<#N&)8$v0NUFI|o9(R^@U%d+h+);>^|+Nx8wCRP9lT1gR?}ZDvcH><)rF+3 zT83mf^pS@#8$jieI8lW!baUgFrHmCPhMk@<**as72@>nwL(}8ip}JHigqW`Q|NI`R zO)<)P&_l4K*~*)0t-QkA&Lv^ZteEi_eoZk}_*?!R)B(oUyLk03>-lM_dEzcippmyX z>IPw>6I1Kj4NJ{VeMlU|?Lws}uNt|f-9^{Q2d?%(A6QetSYj4`2~GY4JV+qmI~0w$ z@jst6(37~Bhr0__tc;&I8Sl9Il|Z2ZR-h$xAuI;`NoE|m&vtbe#DC+}auCh&N8Q)? zNe`*na87i}1ed6KT0EB+vfkoVXapMdOb|m>K|=<+0Ymnhh0JJ}vBPfgaB1MsE))|B zO9nHB+&MIenmw`|TSl$c>EA&UUwq@k?%5A}&a*<*vwPrr7Q3yIW^BVhg3fm(&9mW| z_P~IN@|XWX)sj)?+*XOC#S+s=*+^~vtfHyfa^0Pkl_b+2wdNz6Zsv@8=MVWWvNcGhz=*l?KckG7Hi5FG zlr%g>@9B`+_R8wMGFT%QVGlivY#a%TJyX*183f5YY9wp z)~6e?NG3O7XFegA|{Apz1S2;$9l%M$F^fJOYB&%b}(D<{YqL!H)e-u z%ntgG8sTqotZid<7>+ziMeL`39VE)OWRNBrvrXJ5UT^Oc)9EM)#(Zq!Rdg=+joc|- zYkvZBHiks9=D`OtHIOgR>}nhQBt#VLNCH*%h*Y_R4w-Jtx*WD_;|AKX%k=||4}EG# zWPow|JoiwjaZLe~5j0;xd^h||Aaueph$#~lvP~4#E}E`(nya65yV|vh>XvPj(?m@p zlLRSzh>&EOsE}=XV%lEmMBOEU{LwOafAX9z>7oc=joM zLWc2!#6B?ubyD_;e1c|fo?;_yo?1rOJjKScc>)m-4-Fbc$~^r&&A2=yEfmGp*!o$X zCeN>TQP+>SJ`%T4$b&VsZm>}5yR(wtCHuuTQjw&Qs=yaAja0MTR_9OWVwilPO50dL zvx%{aQ*AvNpZB7}Mm=X1ijA66VJ*D^P#&xk2oIt_#Xt$DZfyNHuiQN?Q19GYRa+{> zI<>VDKi}NG8qee0U^QxwYh`>p5?WFltj5sA++axn1)N@Ld2X}T<0Q4s5(TbyTB47v zKvnuq3l^_8@scc3SUkQ-Fnkk@@GS=p7O#(oxzmcJ?X+k`gJAc*xt-Pm|IPy3b}?9l zYNu7Lc3RooX%*5wahp}xj13lDi>5RaMbq>(-d&(Kv3&wYIAxkZ6#0@HiNk9A!RlHy z6@u(Lqzu2>Eic=QO}Bz3QVtJ)+RbBiaZJ837cdD5VkVqB_uN;cClN6I}>UGMN*; z6lf(}B95Z9!p&w@ExvYB^rN)`8>mJkpDK?^49ya=q#VZPQ7p);-M<6-X*n#%PQ72+ zMU6@IF(`VJ+&hl{XvN6L}^qsw>5buh7=cL^g48&mF+ zjiwL8aoff~wRd2z)RhK3^1*0hIti2ne`D86XqwGTsweHS+fA4%Ihg}8Y_7cg_< z<8J5HNp|t}*2yA21L|o6yEKUw(% zm0_Y5*`}!IJv#q9hC#JI95dfd?33)E9Qo(6gQ|ypO3Ob7E8FI~9d`$HIUib)7Sc^r zRi=rWC}$D}wf9jYn6OOiiB*>xM|A5)e{TwUo^tE+JsEUTeWHG zcj4Wrn2j>ONmKP32?QG}Y54jj(CrX3Du~sxb4Bu`tF>(|Hej z5CNzL{5NdVM5B~uk(`^Rs8}Y}49HBN`oEW9;-hmgD3U-Wqa%e_M#-VN3THZUsP^B2 zz<~O?%Au-LIaIkg&DeS#R)`rH;EziV)jqy^gg<6R`tcqicUp8}z+9Aws!KG{nM2i| z%%RHRCDU@KiWUBUS~ID{`XG~vuPT#@@0dx|&rGV|H0(t(GpYI|lZuS+WFFP_yYMZh zQvKw87~kz2HKtN^CdT6eDwXQbfVr*hGV<8BM=!%E$yBO-q*CGGBvE2`K9yK{0`9kA ze6hdDuNy)@Cz(&hIRw%WjkIEH3&41dUxX78eNR$e=+ya3s*P=HNM_~VMo+Tpmn5rZYx`mj^{_lE@k!j(WC zgJ-22P-oiJLfq4cX;(5ksmv=OZ!!5QaWQ^r#N?}G%c(SEqTqM1eA4sj$yd**`2Jmt z@29Goz>kLFyk)BOJei!rUcvH}j4Pn>wf9V9j0xy~@~BZWsj$~9Y*7*YWDye~geK$r zNhi8o#~=`63e*a`6KGnB)^M_Wf)6XsjDL5UAB`j_9pbk-u0-UHUNq4h6sJf>bMhO& zS0j{zT^3i{v<}%<1I?+Yr558JoexL4M_`u}pcCWu7Oyv>H{e?qSV3Z;=~n|sr=iy+ znC5wXD%_(saSFwWT!9l5kOMCEX#?c0VB8;_t1GOWEdWIj_h)Z&M*jZ;v*HZ<`>=F$h8Xgu#MPFtzv~&> z)t+NRIdF(+u{p18aJ65-cT++9MjT7J+`&eW2K+Ch4j+;`_E;r#3|I*8Xa*aB!?T3ZJV*sn4QD(iop^}| zg_>=*dwMSJRc3AQ914$miyH*;+i%I1YHlisF%6ne!vAG>L}&Q_qGb@+Pz%!CSZgbqBwxmM187wN7L@BL zm|x@=dv1(=2?2lV9t2dJ`9jHcfl6X_zR)g5zR*A7-c$R56S7U(d_sX@(k~#Z#^UvG z&!V35F@@NVA236h06sj+pC%UBn@sUN&pZ82C2$18__sSayg7~&3aznmb4 z-V?+~Ajz+{gc{Qgz{43~X~ZO{f`&>LN2!XqKPW|kL#@mlJA;_HohK;ZK=8@T-wJ&Hrg!QZT1=PC?rqnQ)G9bYeP`_kf@HL#J_XQG6kw7=lpABa-o>Eww3Z^tN zn9^zoQv|DO93D*R;l2R$oB1sUr?Fc7nIt;lv09KG3ay( zfrjc4OyO{IGXD>K9ZqClG*6WiLuzAd;s{v*DZ^_O4#4)l2CJJ&NbHAcT6cyTYQQ*1 zNn90w1xcu4Awi4A(4F(FF5h zo!J&-*)=CkFaj#aGr^_G1dB>Xpf(jy0ZG&i%PRqu#?kEWO#HOiUz$d3fBBZ26d2!N zgSO1t^4^3)Da#vdK;>c4wGQKZH%=MR`0{|cogytU6(B)a&>Q8$&G>)Njeg$cNfQia zfS6#=0#cC_nzVK9RfqP*f3Q@UC-;R$ga~$Yg*&>;4XJ@@)hO3>VtNr&KA?Rh+TE9M zg{0k8RJ)Tkxc`Pr6vPjRl(>DnqBF-OzJ`wowFBDfRsM^Q)|LZFu#fXQ%-VieJxly| zOVpD9+v4Mq2S98KhSoirm3{SK;eZP0s|z^nt0LQjC!oMCiXV&^!7edsU!<19 zl;qcHyesAxs-;o(X&ync{+C_{Pf3|K+2N!tTz}HSK|{Iru;OAhs8z6TetTwtb#ZJl zY?5_vC-dw|t6#_5{gbk9AkzeEY24~T6c03_urATrc0`OxW-B)qmNfd>spm@IsXW2B z@jepERFO7G*_M&aG;l^FSDqOJ3*^!2tnKTpk``^fF7O9YB||o@nlR8Zcy&R1+n?V+ zqDrMoV*M1y7fAGu#dt%5hHt3K1pvi+EM?7VsQ?*GrY}K6v!n&8P{&~=at90HZ4Gc0BjmnU-1pLO@jf`SXYy6)0(tR3s$1qEm1CxJtuP;ty!QkaV@C<4)ayg z2lIta?66-Q>n03s0tK3*fmZGSmx`yZGV^P&1mZJa#$YYiWpz`=YxfHn7}~9*5wk+E zrK-p=Y?l=IW7YGAP&uO#GY2YeuvAk85PUIr@`3z&wAoAFL8ij)3a9A=LD#VVIu9T%dOKnf}Hgd;CoM47}K>IpG4gp934XCh+ zSw^VN-a@AAmm;;jVTAt~lBcZKEAvy<>sH92!+IgIse&{~^L4meb*3a!{5L6G_T;J2 z*_smnifa_aryrzTxPAD!IpY!*K7)Xf$cESqpU)R6ckSSq(tvTINn}e4&OD+XC;kEb zFd(u$%*!Adrz1sVt4$KwZv2B5S)qj2vZ_3+)}^-9x)g^+P@ztR%T{0P*H$agpiNeZ zZL(}SThe6haBT|V2DT75i#Ta-UP0C=cg?5X2E`hE0b#OO^WFZJ03U+mXhimV~ z9+!v~pIhy&&-Zs{8mo;{aUpPo1HFUm3*xRn(FQePz2I)J2m30%ONF3nkDQM^7&4L6 z9t^x}*rcn((ka?o%ivT?YOrXl1p+qCP__`6YxMm%5yHVHzYQGh7WIX0Tm`!?{+GoG zx+WU}G+{^}tCjIPxSk~PGUGX#tU@tabG8Uaz>HFNLXFBC?&OL#w*CpmkMwH_xRWDL zs)_aJ+#vMp2Bk)ov+Cps*o%2({J!7g#|K1zf`nbGIRczka0F<6$Pu^+Cvi!`dE)Za z9095$xDgw!7B+SbQcecnj{%5AV1kD<2V4K8Mkg`I6{AFEE(Z-;*(XiIZqPLB zR!p8v!yY(34cmz9#U9sR(qnAx!yEX6q_35fKI|SZ3^pB?I29)O#!2ItfpJWHpC% zB2PfonK~uwB%1^q?G%!l?BwiCR!n7p3cM+H3Gk+y1Z$q`Zz;%-3u9qyo57C)Rmp-3)9|-t^s9Odq8ogO(MIWP;K8gCM6h*52Kuhhlv&-fcjLP^Q;~r`z={mp zYw$z5B7^-4W2?x}Z|%5?7eP^mkKxrW%D`?>$gjUPy(oh`yei7TlNED9oIgiN26fUe z_-H8Z4;be2{b?l`c-)e7SVvU`4!pA}1N=R@5K@?-$q4@!*GUO>xX77ARfdvESWSPR z)hL@H3#dv(o#!%4-nHoyDuSMPdOyA-B^mgWW^{n(Vp@d$q4M_42x%e5smjoY!|7ES ze*Q~bMR+8~smj2-^wFy_}l>FIf_ z{d2UtVn4erFHMK?8eX5F06(beGt7~9tj};0-evT=;@n5aT%Um#Fxc;kT0-hGP|T!0 z14m5yU9FZk>~~cW_sqb62pxN*`V8!79RBEsRegpmeoeAeO(}2B`V6erFuXp)dYsup z{UG%jHsdddv#!suXC~B!Vs1!%hH=iuS6{xGcf&6@>NE7D*JtU8$VD&?J~N;EjPIjDkw08$JH9I7oWM@Klt zE?<<*6f5))BFGAVmha*V3gs){Jw zi{It|5*j;#*W?C7_Ycghq;Mh}1(g)|Qwj1sB;(WZ1L_cxKBevfXztytm{2n;uG4|< zTEYHxF0^>IJm>Sl+^GlqHjfteu#j;6J{RKnBviP9{gU-*cVS!=KlfSqZ}~OWVf1Ad zkl}iNTPpLjwIF_Que~9W1UE$ERT+i3EThoj1MG!b3KeFs990ygfC7pq0KyL;@``#4 z(%DNu5gRi5Im=a-)R9b4hqG8op$8X*O`K0bmLKsCAU7L?l2B&?z5NuSg29zrR7FXt zr|{U75TZie_v;l*wd_+fC>2II%Q@ls{7-GTfV^jbO6_a#{hs)R>bV9lgW=v$hE1+%n%0y2nVHT$}(5U8^VWHqaD(m-2omsUePAR1;?W$3Wi3PEU8pL*DR z(QNnGMwtD~5S%b&49w~NP?NFsXYyH{=#R!k9sbIER(*@z33LR9B|=;rV-%g43qmID zzbopw$b}58eHuMp6VG}EQxDv=$FC1*`%zmpK7mXV{cBOHA`Muj!si2bnU z8((=I$Yc2}3YmoWt-wj4n<$zA$QuKRhtLbrktdUu!kKJamQ3L!;j$Wi5aTcX(2>9S z_cZ+J`I|yxGz+n4xTrCxI)zj1!%%I2rU9!Cs{dxsQWxS9(8YBaPNb@Ef%>267Cp~z z3L>TrkKIqP+*u~jR*M<3f#zVSd5fdF&@4W++{PPD6QbpFpAPicM~;u#7R*l0_3e{OY}Y# z2soq*1i*akWy7<2NSlCGXn6Js3LY$n?s>*=isV!}YwsjQ4rXHnLVy#oI=X3mvbkb#E+m^ zYyFRKy%=R@QL`#~o2(~9RcM@0FMu%TER|D?X2zvPo){|EAvQ9mDC@`pv?`QTsEH1W z=LY}FMXbI%fl3ur%j69I(KWaL90)4amnFUeAaEzf*8VK1P!DK@Ispo`OBCwMqEIJ< z#x3-Pnp|%n-3Vi>r%8T&8TqG zZ4c=mxIm~&XU}#UM!1=OLYK-Tv&K!iv2~YxR;qO=*Bb68Q=PgFByOb~LjHq@%h00$ zD?x@vm||W24n&(7Z0`bBv!h_eE%EO?rPdB2IW1foSZCmL!h|JVjTu-!1@WyokH-gG zugUsSvw+}>DAe5v;9StT_2y1a9LwvJ7lV{mN*@uH6?8G^R1}jB?n@klUIh`4TGfMd zsa5&PGpSYUo$($FbK)At@lxrA&`7BoF4lba-8vuM+BDUAcIY}(Frg;J4|c}C`8`{c zqIAoj{|%Zn75=t$=k6CI_RYJ-m}Xhi;bDs|TXcmEaxX%HB*^1pOOYyws7kGhfd}f~ zV?jRp{kzSQ>S3ys{H>ZKf2#ul@MkrH8cSubBLI#0y|;3~jpcex*sjhQf==Mk!?)x(mygKRpkMwv~=1)EuO# zAU>W6>XKNgRY6ehTn7{}S}^K`)kdX#){dXzQBR;D)~Xr;B_*YQ{80^|beR$5R6 zm9fEsQ&~@^5+0>1Kr@xsv*MOD@gMd=_4PohNwcVH0rsW5NNBuj9!9uad6E6vi^Ryk zAxf_nUL@FmIHlQ?>TGl*Yv@Rp(~*HASqarZM{+XGq9Yj_UOX6f11hgMUFF3RbI!nH zrc@qcq(vzEh(0$Alrp`#$M*)*oQjVkx7zNWopK3NE?x>&kjC0dyNR*_c?N3PnrkaM za%rUT{Nn7T)?Cni8p+wB-m?w?$Py1SSei*ut+rL1?`52kmTH~q+#~wU_7wpWK)E@a za3g#Th@nzQsx?V3u{A@jA-%TKLYMdk>xd8Q0?Gd>qldnt)^O5g6QJZ;-ytQo;!tVubHH7DaR9^h<;l*4#EVi&S*;CzXygu_^EY<*fj zQ@sf46W_&OBdN-+l*8CKs>2BKo+S5(!&uU-R?bKcqat(77?K545MPN?Gkiu&2SWPr z8S7lT6No%w5mu&r#%lVEsJUKApRskA&sakRIu-heJ|kawCfvsS%5()d<^8^notY(dRWS9Iici`t z6q}Iun^9jKj9)P^WOjWL!^nK!ilIHz#5+PiwF_` z<8W+-3;h+J;9kE}5rBrZR|LeK%K23zuyqQ?OQk!_RYNOjzu)2Flxaz({f6MEG&1LR z|Aox?MVbs+Tb)#s#mOjaH*(JJHmriQoZsJ`f3i8h)A1aV^ZRrz20v6jE7WL|e;Bu# zmhiiS2OSB&+&d)`e(Ad~;g_$NK|sB!K8r!z(8vkDoEb^@1;%@cDRp+4@Vkt^q{2p* ztxJm;eH?`VRIzJE%qXMb;(x1{Q4?cEDeg8ry9eEfIDGXq$c(oxOQswD%sRXcaOP%dF}#VcmC3Oghy^EMwb zV1`5_Vsx%VjQ+26Fc~wF4J#TlIbufthPl)+BQ$8rLRXhZ00>#I18&Us721=q(Hx)nbAZmq86l4lZ|c&XCd949E~eM#xj4;b7D# zv+1N!PEs_Vtz@4BjRXN-19l1qF8(4~Yv7xM$bjNQV#r)=*yLB*$5+cU>zENTju|t; z&Eg?J^1-S>>MrtjQ8*IMsJ8d^BbKv-zC?}Wyo8HSjC(~!4IWmpEa9-!(Odm69n`{R zZ13yXlJW!mQv;lo7M&YkrEAW?Uu}ZFO7~Yon=zwI6&0l`hgo)Y=)jTWCn$__o;3l5 zQZEvJF1gqcI9iQ6N>FR}-zbnjFlr3Mff5?^6RDP=xjJYYeJ0eq5jfNU*voP3^X zt9%R;hZtff%{h<@4NjI~K%rKUy2=eX|Iqw4maRs@D!@%`I9R$`a8SmR#CUW%j0e}N zPOTZqc%+pAMFlp1;(f}5w21yU79I(IiBTjJVbdlA4TV^T4M--ht&mTv6gP;Om-(+1 z@UuS6ex$4ih7Z786@aI`%BV4b)PlH4I_4>HBOn5_n^=1)Zgj6Vg$Qhd9&jK6){$@* zOL02uHzZddtjC{m9otZ(*Karl`@x$ki2ut@E;XG|x}EolB6Hn{8=pxT*Cir)hmK=~IiK#C^XMx#rDNMI2Rp!7F;Ho<7190I*JWi+Y? zqEh;dvg;^X3^YlZ1ktj@1fXSwUoNVa^{3AeUCZ^OmX*@Ag00Vj2Mt|YW#pBVrW7sf zH$hA_Fwl$TZ^w|RUsYf}Io;5&3zK>^M=8})0tI>r3bdj=5j84s$xAVaN~1ytplCv< zKBZA%f5)y-|HRdj(x{9oQlplXB7`I$s`xFFD~Mn96Y!=(z&T;!6BI}2 zb*)Fymj-&2qvFt`X=uO~K%1mNh8}I@;y{lEhL48nQMH8T;cT9ju1BT6K(Gl)^mn2} zL6V?)vWt^al`^7}rb-bJ15w>vsrX! z7S{Y&b!WXIYDqce4Bgoxy0cRp?-S`xu6d{Loz$I*do_~otU7`2tQOr_o31;>chb%` zgo_;-M12P8s5_fS)t#bQf}%TD#;2dHbtmFQpQAK^mcw`v5JKoh;_4E1PwG#!yh#ca z!tMzyz>)RmNk-p$6aOM>`K}hFJ@LcHXM9*zd$Xv|fYjhmOI;*trj+MBXHj{=?^Mc@ z*Mhr^$h+%hCg1~J?r=SY(LpRB#m?H;%%$H+b{0KW6>?9eGpYq&fOELu(d4FA0`9HF z^D=a13B0DqS($&Hq~bwcM%@?Ke2X8;ez*kv{~Lsp9Vrm8pVH6hEp=?9ZSw!I2SpM&t=Yp{Y&S zaZz{DLsitKI#k85!%q`OQJ*%iDaXPYrxWVRXMr&>&u zCN$M%5Sq|ed6+|*Bs9e_>k@t%knoeNbEr=|{d7$P+xoaHC|iAg6Mq%N|F8qM0CBmi4msA+7X$zB}DSGG0;oRDl`D`F!yG;Ow<% zqHA_C3=iC*T7fVw;iI);%Vd%7x}D25gYsHG7Rsyba*Em%eWblkC+k&tot?sZwR@%{ zQHwO)SqsuDbSLf-s`Cusm!VC846PgG-^XF4F|Ws+E6B@MnyMr(l_n|w z9Z;Q?bOW>Ft*hemzmJuCSgT3|Ta(?uP!{ZR97|J_wd@F#f+OHumOz@NQi-H}XE>KT zotp9)E0zJ^hDj58zq675%l0ScHjNm8P=)T&b0 zkFM8*Z-_{-axhEjV0J-0QYi@Y^CQ%M+QHY@MFyF2N z^B4UG7K#MsWg|<1Czgw?7gI3jwnGZmh%FaDq? z#mQ*&h!uysP8QyfaOdH>Y&Q0s^oA?KO zX3ZOOlV7@kOexFzB%V{Jl-WNrwv@6~OR7>Z!ccDKlMx#P8v3F1d@^}>$tOcWqF_1j zFtKcoWHNQeFZf&_4KtanH7%Kp$5qE(M=}{l-I+{QWvM!$?DE@-yauj3fwJJ2sV=|b z_X89RG#F(U@-Ubmq4K#5!AL$CepN!Ym`DEANqLNRB+9`VyAHZKanXCY(o*?WQm$z(rs(MK27zr-D-#qS&(PERJ|7t)f+c*>hgCgUXw;*sytLLr%q7d(y0WUVTh zOdeE{$?nDVRT`GmJ3_q<)#bMr)Mz8}4=-SJlgVUvjl-aT6|9oUdXP+px(vLOfBSU& zZ6aBN#4%eCV2~1O!8LVqW%rb zCj*NnYj{2xwTQ|m<2_gb=95uUGV;kdf~kD6eruCQ`HrqlZhyzR@kZW&a_$fteq;g8 z4L{1vbJq%$X^Y%4$tsg|wkX$B9vr*=iXoP+zfJKUfvlq}#7J3Xjm#>$=L(fo=H_B*w%qpYc+4Wd6oBsw%Tc|9USq7aFz>Y}T{=RWJesP3?!2R*rhp1XmDN|Jgeu4E# zQIDbRb@M^h@VDn|Nhq80m5ktEiqB;o)m1ZekZ>XTKAC9u$&hWcS;DTPyr+A{v3iE` zwr}1H4_i220CNSzK!>OGeAb1?B~zhcsXkbN=-)GPf}H};ixdE>*y}?dC~KGRakkIs z*U0UYs(r?jk;jYxJfO|Ep6nbd(ggeXc$rx6#Ee%nLPhk7=-~mtMsVljjeDe!+Q3OZM@Raq4qI=wP|CA$9A=;A~m=hSybi?uyjNl?#Gp} zk5Q;BeBitJH>xSy{Qe-~Ctx(RYH~m7B{ibN-$twmRWGSU>Lrys`_2;;=cFz_kVP3PKvZiXQZ{01nHvC>;cCWHDke+)8YQ z8#-LXl3}ebHJ_o+!o$WBB^%X#m?TS8DvU9$;+sgbXFRKK@aoLRQlokgB@`6)P^$_g z{T;pm7)H=fjBf-pN;YXwfKNJ_^i=uElR#}@T2z0!vkH3UVRJqrQ3Fg%8V6@jw`p{hNn_o;NC-sX0 zK>?rcKm`uNS)^*fR#zEnr*5oj2ay1xyyXs^gR;mN)REN= zxe!X{Xm!Ing8jY%j~Q&m`f=zRq#3y^PfK*(5MmZ#LCZspDohkWz*6?QNH3!Pw>RpF zVu0;B6p5;dlc8tq=E_f|)uSX>f6~gPS9+)Qpm!SLC8BCTg4I2;Dafl;kL&;{QA(3+ zDJx`anlsPDTm%7E;V$X0tGJ{>z2~nl`YitW`AL=QTAi}fl&rB%4%m!(3D*- zCw3MHa7uJT6-sVfMQ(dVZVRLh%?H@YQ|sG=Yw#0kGK^#>sF160DO+lbF4FnJBF~IX z*hj`B&pxynMt{$qk)*jYQ<@>WcI#=9oHG-19MW9vl;&$F&BzOYDA!3m+!kg0c-qsU zo#z)gxR7JvLQ<6LihU$CDpBTON4^SCPOJv33u#W=gx9EKwI>#&-p;_=QG_+w1#)Cz z{q~pAh4s(H?|flZ^`yoouiIaKhs*1 dD$ujk_=m|7*TXYw0wN?x7*(WlZ@^oiuP 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àAIkzS^es!80s4?oXH1x~J8h-837pTG? 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