libfwupdplugin5-1.7.3-150400.3.5.1 >  A d?pp9|fxscG抄0Χ5À< ?kBf4!c<'LUa2Ču_!EV]3Jm l[ @]jŚ]LAvyd:L'=wO!PH;(2Hwag%T:<-Hӽ<5Oϫ͹5 =!@69`z_g =wlQex6Γ_ղMK QxV|_$H>8U,A#OES0dca2dccc48a9d1a46ed04158383c0412db0f7557d7d26e25013b8fd7acebf3ca0be777764dbe5ff3df662016e4455f6f718714aPd?pp9|Rerو~Ut3߲4\v?/X\ֲ|9>V}V4*1(b/CE N1Zp@g?gd % V) ?Pcit|     (0; 0A4AUA(8[9([:[>`@`F`G`HaIaXa ;Ya;\bX]b`^bbbccAdcecfclcucvcwdxdydzgDgTgXg^gClibfwupdplugin51.7.3150400.3.5.1Allow session software to update device firmwarefwupd is a daemon to allows session software to update device firmware on the local machine.d?mourvedre pSUSE Linux Enterprise 15SUSE LLC GPL-2.0-or-later AND LGPL-2.1-or-laterhttps://www.suse.com/System/Librarieshttps://fwupd.org/linuxppc64le pd?ޞd?0903ebd7fbbdd5f0729fba0c8bee0289398e6a365626cc65419370bf2cb09a7dlibfwupdplugin.so.5.0.0rootrootrootrootfwupd-1.7.3-150400.3.5.1.src.rpmlibfwupdplugin.so.5()(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.1.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.6.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.7.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.7.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.8.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.9.3)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.9.5)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.9.7)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.9.8)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.3)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.4)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.5)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.6)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.8)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.9)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.1.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.1.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.1.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.2.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.2.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.2.4)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.2.5)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.2.6)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.2.9)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.3)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.4)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.5)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.6)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.8)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.9)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.4.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.4.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.4.5)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.4.6)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.4.7)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.3)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.4)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.5)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.6)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.7)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.8)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.6.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.6.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.6.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.7.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.7.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.7.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.7.3)(64bit)libfwupdplugin5libfwupdplugin5(ppc-64) @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    /sbin/ldconfig/sbin/ldconfigfwupdlibarchive.so.13()(64bit)libc.so.6()(64bit)libc.so.6(GLIBC_2.17)(64bit)libfwupd.so.2()(64bit)libfwupd.so.2(LIBFWUPD_0.1.1)(64bit)libfwupd.so.2(LIBFWUPD_0.7.0)(64bit)libfwupd.so.2(LIBFWUPD_0.9.3)(64bit)libfwupd.so.2(LIBFWUPD_0.9.8)(64bit)libfwupd.so.2(LIBFWUPD_1.0.0)(64bit)libfwupd.so.2(LIBFWUPD_1.0.8)(64bit)libfwupd.so.2(LIBFWUPD_1.1.0)(64bit)libfwupd.so.2(LIBFWUPD_1.1.2)(64bit)libfwupd.so.2(LIBFWUPD_1.1.3)(64bit)libfwupd.so.2(LIBFWUPD_1.2.4)(64bit)libfwupd.so.2(LIBFWUPD_1.2.5)(64bit)libfwupd.so.2(LIBFWUPD_1.2.9)(64bit)libfwupd.so.2(LIBFWUPD_1.3.7)(64bit)libfwupd.so.2(LIBFWUPD_1.4.1)(64bit)libfwupd.so.2(LIBFWUPD_1.4.5)(64bit)libfwupd.so.2(LIBFWUPD_1.5.0)(64bit)libfwupd.so.2(LIBFWUPD_1.5.1)(64bit)libfwupd.so.2(LIBFWUPD_1.5.5)(64bit)libfwupd.so.2(LIBFWUPD_1.5.8)(64bit)libfwupd.so.2(LIBFWUPD_1.6.0)(64bit)libfwupd.so.2(LIBFWUPD_1.6.2)(64bit)libgcab-1.0.so.0()(64bit)libgcab-1.0.so.0(LIBGCAB1_0.0)(64bit)libgcab-1.0.so.0(LIBGCAB1_0.2)(64bit)libgcab-1.0.so.0(LIBGCAB1_0.6)(64bit)libgcab-1.0.so.0(LIBGCAB1_1.0)(64bit)libgio-2.0.so.0()(64bit)libglib-2.0.so.0()(64bit)libgmodule-2.0.so.0()(64bit)libgobject-2.0.so.0()(64bit)libgudev-1.0.so.0()(64bit)libgusb.so.2()(64bit)libgusb.so.2(LIBGUSB_0.1.0)(64bit)libgusb.so.2(LIBGUSB_0.1.1)(64bit)libgusb.so.2(LIBGUSB_0.1.7)(64bit)libgusb.so.2(LIBGUSB_0.2.8)(64bit)libgusb.so.2(LIBGUSB_0.3.1)(64bit)libgusb.so.2(LIBGUSB_0.3.3)(64bit)libjcat.so.1()(64bit)libjcat.so.1(LIBJCAT_0.1.0)(64bit)libpthread.so.0()(64bit)libpthread.so.0(GLIBC_2.17)(64bit)libxmlb.so.2()(64bit)libxmlb.so.2(LIBXMLB_0.1.0)(64bit)libxmlb.so.2(LIBXMLB_0.1.1)(64bit)libxmlb.so.2(LIBXMLB_0.1.12)(64bit)libxmlb.so.2(LIBXMLB_0.1.15)(64bit)libxmlb.so.2(LIBXMLB_0.1.2)(64bit)libxmlb.so.2(LIBXMLB_0.1.3)(64bit)libxmlb.so.2(LIBXMLB_0.1.4)(64bit)libxmlb.so.2(LIBXMLB_0.1.5)(64bit)libxmlb.so.2(LIBXMLB_0.1.6)(64bit)libxmlb.so.2(LIBXMLB_0.1.7)(64bit)libxmlb.so.2(LIBXMLB_0.3.0)(64bit)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)1.7.33.0.4-14.6.0-14.0-15.2-14.14.3bs@aaA@aaaaaaim@a^@`e`c`KW`6?`.V_S_м@_$_i_F@__@_O@_"@_"@_"@_@^א^א^1^@^h^)^ @]@]@]c]8H@] \\-@\@\Yz\73\\U@\ @[k@[Q@[\[h@[Xf@[GB[E@Zľ@ZlZ@Z`@Z1@Z1@Z1@Z;@Z8@Z2gYYYX @XX*X*X*X*X*X*X*X*X*Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@UeU+U+jlee@suse.comgmbr3@opensuse.orghpj@urpla.netbjorn.lie@gmail.combjorn.lie@gmail.comjlee@suse.comdimstar@opensuse.orgdimstar@opensuse.orgjsegitz@suse.comjlee@suse.comglin@suse.comglin@suse.comglin@suse.comglin@suse.cominfo@paolostivanin.comglin@suse.comglin@suse.comglin@suse.comglin@suse.comglin@suse.comdimstar@opensuse.orgdimstar@opensuse.orgqkzhu@suse.comdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgyfjiang@suse.comdimstar@opensuse.orgdimstar@opensuse.orgglin@suse.comglin@suse.comhpj@urpla.netstefan.bruens@rwth-aachen.debjorn.lie@gmail.comschwab@suse.debjorn.lie@gmail.comglin@suse.comglin@suse.commpluskal@suse.commaurizio.galli@gmail.comdimstar@opensuse.orgglin@suse.commail@bernhard-voelker.debjorn.lie@gmail.comglin@suse.comschwab@suse.deglin@suse.comndas@suse.denico.kruber@gmail.comjengelh@inai.denico.kruber@gmail.comtchvatal@suse.comoliver@getspam.deoliver@getspam.dedimstar@opensuse.orgmpluskal@suse.comantoine.belvire@opensuse.orgfcrozat@suse.comdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgstefan.bruens@rwth-aachen.defcrozat@suse.comstefan.bruens@rwth-aachen.dedimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgmpluskal@suse.comzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.org- Add fwupd-bsc1193921-nvme-ignore-non-PCI-NVMe-devices.patch to ignore non-PCI NVMe devices (bnc#1193921)- Update to version 1.7.3: * This release adds the following features: + Add a sync-bkc subcommand to ensure a known set of firmware versions + Add FuArchiveFirmware for plugins that use archives as firmware files + Add quirkable page and sector size properties to FuCfiDevice + Make Upower and powerd support optional * This release fixes the following bugs: + Add some sanity checks to the elanfp firmware parser + Add the CFI JEDEC instance ID if using the vendor-extended version + Check the value range when parsing the quirk keys + Do not wait for a USB runtime if will-disappear is set + Enable the MOTD integration when using pam_motd + Fix DFU regression when merging the FuProgress work + Fix running the tests when fwupd is not installed + Fix the GLib error message when inotify max_user_instances is too low + Fix VLI VL820Q7 detection to fix flashing of the Lenovo TBT3 dock + Ignore a USB error for STM32 attach when the device goes away + Make the HSI tests optional for embedded targets + Make the plugin startup order deterministic + Set Thunderbolt ports offline on host controller + Use endian-safe version functions when enumerating Logitech hardware + Use lowercase flag names in intel-spi to prevent a runtime warning + Wait for the System76 Launch device to come back from DFU mode * This release adds support for the following hardware: + Most Nordic Semiconductor nRF Secure devices - Fix build when not on TW: add BR protobuf-c- Fix build issue in spec (references to libfwupdplugin2 -> libfwupdplugin5)- Update to version 1.7.2: * This release adds the following features: + Add a new HSI check that PCR registers 0-7 are not empty + Add several compile flags to reduce the install size by over 300Kb + Allow overriding HwId data from the daemon.conf config file + Allow overriding the firmware GType from a quirk file + Export the component release ID over DBus + Remove support for the SoloKey and ChaosKey devices + Show a daemon warning if quirk flags are malformed + Speed up the daemon startup by ~40% by doing less at startup * This release fixes the following bugs: + Be case insensitive when fixing the device model + Fix a critial warning in ccgx found by the fuzzer + Fix a DFU crash if the attach failed due to a hardware fault + Fix a Redfish crash when specifying a URL without a port + Fix CLI downloads when using fwupdmgr --ipfs + Fix critical warning when /etc/machine-id does not exist + Inhibit thunderbolt devices to correctly use UPDATABLE_HIDDEN + Set SSL_VERIFYHOST=0 when using Redfish to fix OpenBMC auth + Skip UEFI devices that fail coldplug * This release adds support for the following hardware: All exported MTD block devices - Changes from version 1.7.1: * This release adds the following features: + Allow specifying 'fwupdmgr device-test foo --json' for unattended testing + Allow using a filename when using set-approved-firmware + Inhibit ModemManager device in mbim-qdu + Share the Common Flash Memory Interface quirks between plugins + Show changes in HSI attributes when using 'fwupdmgr security' + Show the user a warning if updating may affect full-disk-encryption + Show translated firmware release notes when provided + Support loading remotes from /var/lib/fwupd/remotes.d * This release fixes the following bugs: + Fix a CCGX regression when loading firmware + Fix a potential crash when dumping Parade devices + Fix build error when sys/io.h is not available + Fix building the Synaptics RMI self tests on s390x + Fix the CSME CVE detection for new generations + Handle EPERM when running the self tests on systems with IPMI + Mark as SUPPORTED even if on battery power + Only save the HSI attributes to the database if different + Raise the client timeout value from 25 seconds to fix Redfish startup + Redirect the old HSI links to the correct place + Relax the ITE SuperIO signature checks for new hardware support + Set device time and timezone for logitech bulkcontroller devices + Set the verfmt of the returned device when the daemon device is unset * This release adds support for the following hardware: + Dell Atomic Dock + HP Thunderbolt Dock G4 + More PixArt devices + Steelseries Stratus + Wacom 3rd-gen Intuos BT - Changes from version 1.7.0: * This release adds the following features: + Add FuCfuPayload and FuCfuOffer for future usage + Add support for an 'unreachable' device flag + Add support for Logitech devices supporting the Unified Battery feature + Allow adding GUIDs to each HSI security attribute + Allow installing the LVFS remote, but with it disabled by default + Convert security attributes to JSON and write then to the database + Convert the device test script to a fwupdmgr subcommand + Create Redfish user accounts automatically using IPMI + Use an interactive request to restart some Logitech DFU devices * This release fixes the following bugs: + Abort on invalid SREC files early to avoid a fuzzing timeout + Allow using interrupt transfers for HID devices + Allow waiting for multiple devices to replug + Fix a critical warning on a Unifying flash failure + Fix a regression in flashing the Dell dock + Fix Thunderbolt host controller probing + Forcefully set checksums found in cabinet files to lowercase + Force UX-capsule over full size BGRT + Make the SuperIO ports and timeouts specific to the DMI model + Only probe SynapticsMST devices that have opted-in + Remove support for --ignore-power as it did not work for UEFI firmware + Reset the CMOS as required when changing system firmware branch + Restart the daemon if any of the the plugin config files are modified + Show HSiLevel=0 attributes in JSON security output + Update the child composite ID if the parent changes + Use a per-device global percentage completion + Write the BMP image upside down to avoid using a negative bitmap height * This release adds support for the following hardware: + A huge number of Synaptics CAPE devices + Elan fingerprint readers + Logitech Bolt peripherals, receivers and radio hardware + Logitech devices supporting the bulk controller protocol + More supported PixArt devices + More supported StarBook coreboot devices + Union Point SPI hardware - Add pkgconfig(libprotobuf-c) and pkgconfig(protobuf) BuildRequires: New dependencies. - Refresh patches with quilt. - Drop sub-package fwupdtpmevlog, no longer built. - Update URL in _service, new home.- Update to version 1.6.4: * Allow overriding the quirks directory at runtime * Fix a regression in flashing the Dell dock * Fix probing the Dell TPM * Show HSiLevel=0 attributes in JSON security output * Abort on invalid SREC files early to avoid a fuzzing timeout * This release adds support for the following hardware: + AVer ATLAS CAM/CAM520 Pro2 + Cayenne/Spyder Synaptics MST + VL819 USB devices - Changes from version 1.6.3: * This release adds the following features: Fall back to the parent if the child does not have a battery level set * This release fixes the following bugs: + Disable the uefi_capsule plugin if Redfish coldplug succeeded + Fix an elantp crash when starting the daemon + Fix compiling with old versions of libxmlb + Fix detection of 8Bitdo wireless usb adapter + Fix the 8bitdo N30 Pro 2 install duration + Fix the modem-manager report that failed to get device after update + Fix writing large redfish firmware files * This release adds support for the following hardware: + Poly Studio P21 + Realtek RTD2141B - Switch service to obs_scm, and recompress to buildtime. - Drop automatic changesgenerate, upstream have perfectly fine and human understandable release notes at https://github.com/fwupd/fwupd/releases that should be copied into .changes.- Add requires to udisks2 for dbxtool update. (bnc#1192344)- If the machine we install onto has shim installed, it is likely an EFI based system. Require fwupd-efi in this case (boo#1192206).- Require libfwupdplugin2 by the -devel package: the -devel package installs the .so symlink, thus we must guarantee the target library to be present.- Added hardening to systemd service(s) (bsc#1181400). Added patch(es): * harden_fwupd-offline-update.service.patch * harden_fwupd-refresh.service.patch- Update to version 1.6.2 - The fwupd efi program be separated to fwupd-efi package. - Removed pesign-obs-integration, moved needssslcertforbuild , SBAT and EFI signing stuff to fwupd-efi. - Moved libfwupdplugin1 to libfwupdplugin2 - Change log from upstream: https://github.com/fwupd/fwupd/blob/main/data/org.freedesktop.fwupd.metainfo.xml - This release adds the following features: * Add a plugin to check Lenovo firmware settings * Add initial support for the powerd daemon * Add support for CapsuleOnDisk * Add support for installing UEFI updates from GRUB * Add support for soft-requirements that can be ignored with --force * Allow devices to only accept version upgrades * Allow discovery of Redfish BMCs specified by VID-PID or MAC * Allow the daemon to request interactive action from the end user * Automatically connect the BMC network interface at startup * Show the build timestamp if set on the device * Show the user how to switch out of Wacom tablet Android-mode - This release fixes the following bugs: * Add the alternate vendor name into the 8BitDo allowlist * Allow multiple devices to set WAIT_FOR_REPLUG * Allow the client to watch for more property changes * Always ensure the SuperIO version string is NUL terminated * Automatically clear the update error as required * Disable all UX capsules for Lenovo hardware * Do not assume the metainfo file is NUL-terminated * Do not save invalid files on LVFS server error * Fix a VLI regression in enumerating the PD device * Fix a VLI regression when installing VL820Q7 firmware * Fix enumeration of the Synaptics Prometheus config child * Fix parsing Redfish USB/PCI network VID/PIDs * Fix the fwupdmgr progressbar spinner to actually work * Fix version number for legacy Wacom Bluetooth modules * Ignore virtual M.2 ATA devices * Preserve NEEDS_REBOOT on successful update * Prevent a corrupt PHAT table from allocating lots of memory * Read the Redfish SMBIOS table when required * Remove the vendor string from the device name where required * Save the update state to the database correctly all of the time * Switch from sysctl to ioctl for ESRT on FreeBSD * Try reading from /sys/class/dmi if SMBIOS direct access fails * Watch for children added or removed after setup has been completed * Work around a XCC-ism on Lenovo hardware - This release adds support for the following hardware: * ModemManager devices supporting Firehose or MBIM QDU * More models of RTS54HUB * More Poly DFU devices * Parade LSPCON * PixArt receiver and wireless hardware * Realtek MST with RTD2142 * SuperIO IT5570 * USB4 Dell dock- Remove valgrind from BuildRequires since it's not a hard requirement anymore. (bsc#1184248)- Update to version 1.5.8: New features: * Add a new internal flag to opt-in to GUID matching * Add D501 Baklava device support * Add fu_device_set_battery_level() * Add missing uint64 read and write helpers * Add Qubes wrapper source and create packages * Allow enabling plugins only matching a specific HwId * Prompt for unlock keypress if reset command is blocked * Remove obsolete dell-dock non-passive update flow support * Remove the Hughski public key * Show a warning when parsing invalid quirk files * Support for GATT characteristic signals/notifications * Support more than one protocol for a given device Fixes: * Align the CCGX DMC firmware to 64 byte chunks * Be more strict for custom quirk keys * Check pixart firmware compatibility with hardware before flashing * Correct a thunderbolt assertion if kernel failed FW read * Correctly erase STM32 devices when transfer size is less than sector size * Detect SREC overflow to avoid adding ~4GB of 0xFF padding * Do not show a critical error when flashing footer-less binary files * Don't allow device updates while needing activation * Fix a regression in the elantp defined IAP start address * Fix a regression where activate stopped working * Fix firmware update of pointing device on Lenovo ThinkPad Nano * Fix the HSI plugin 'Disabled' state * Fix the quirk key name for the Lenovo HDMI with power * Fix writing to the GD32VF103 bootloader * Only call elantp->detach() when writing a firmware blob * Updated StarLabs GUIDs * Wait a few ms for the Logitech hardware to settle after detach - Remove GPG-KEY-Hughski-Limited from the filelist - Drop upstreamed patch + fwupd-bsc1182057-fix-sbat-section-copy.patch- Add fwupd-bsc1182057-fix-sbat-section-copy.patch to set the proper section flags for .sbat section so that objcopy can copy it into fwupd*.efi (bsc#1182057)- Update to version 1.5.7: New features: * Add initial support for Bluez bluetooth devices * Add more supported pixart devices * Add support for the RTD21xx HDMI converter Fixes * Convert MBR types to GPT GUIDs to help find the ESP * Do not allow updating a synaptics-mst device with no customer ID * Drop unused heap pages after startup has completed * Ensure SBAT metadata is added correctly * Move the plugin build logic to the plugins themselves * Only allow verify-update for plugins that support CAN_VERIFY - Specify SBAT metadata for openSUSE/SLE (bsc#1182057) - Adjust the meson options + plugin_uefi => plugin_uefi_capsule and plugin_uefi_pk + plugin_synaptics => plugin_synaptics_mst and plugin_synaptics_rmi + Disable Intel AMT plugin in non-x86 systems- Update to 1.5.6: New features: * Add SBAT metadata to the fwupd EFI binary * Add support for GD32VF103 as found in the Longan Nano * Add support for RMI PS2 devices * Add support for the System76 Keyboard * Allow downloading firmware from IPFS * Install the UX data into a single .tar.xz file * Add a plugin to update PixArt RF devices * Add new hardware to use the elantp and rts54hid plugins * Allow specifying more than one VendorID for a device * Detect the AMD TSME encryption state for HSI-4 * Detect the AMI PK test key is not installed for HSI-1 * Add Maple Ridge Thunderbolt firmware parsing support * Add --no-remote-check to ignore checking for download remotes * Allow creating FMAP and Synaptics firmware using builder.xml Fixes: * Add support for the Starlabs LabTop L4 * Allow using an external ESP again * Ask the user to reboot when required if downgrading * Be more paranoid when parsing ASCII buffers and devices * Check if the fwupd BootXXXX entry exists on failure * Clear the pending flag if restarting the system * Do not allow flashing using flashrom if BLE is enabled * Do not allow Lenovo hardware to install multiple capsules * Do not parse the OptionROM image * Do not show Unknown [***] for every client connection * Fix dnload wBlockNum wraparound for ST devices * Fix OOM when using large ArchiveSizeMax values * Fix several crashes spotted by AddressSanitizer * Fix several places where the Goodix MOC plugin could crash * Include the PCR0 to the report metadata * Report the lockdown status from UEFI and SuperIO plugins * Show a console warning if the system clock is not set * Fix flashing a fingerprint reader that is in use * Fix several critical warnings when parsing invalid firmware * Fix updating DFU devices that use DNLOAD_BUSY * Ignore the legacy UEFI OVMF dummy GUID * Make libfwupd more thread safe to fix a crash in gnome-software * Never show unprintable chars from invalid firmware in the logs * Allow using fwupdtool as non-root for firmware commands * Do not trust the Block.HintSystem boolean for ESP filtering * Fix a memory leak when parsing Synaptics firmware * Fix a possible crash when reading the Goodix MOC USB request * Fix crashes when parsing invalid FMAP, DMC, Solokey and Synaptics images - Deprecate fwupd-bsc1179790-disable-hintsystem.patch- Add fwupd-bsc1179790-disable-hintsystem.patch to remove Block.HintSystem from ESP filtering (bsc#1179790)- Update to version 1.5.3: + Lower the CURL version required to fix build in RHEL + Do not use meson ternary operations to avoid bumping the required meson version + Added Lite Mk III + Allow setting the GMainContext when used for sync methods + Fall back to the misc device for serio devices + Actually implement rescan in FuUdevDevice + bcm57xx: Refactor CRC code to remove extra byteswap + bcm57xx: Fix CRC check + synaptics-rmi: Don't crash if calling ->to_string() before - >setup() + Fix a possible critical warning due to missing retval + Add the serio->firmare_id for UDev devices + Export the driver name from FuUdevDevice + Allow the client to send PKCS7 and GPG signatures + Force the remote kind to JCat server-side + Only parse the signature if the remote is JCat + fu-main: Fix sender_features insert with wrong size + make platform integrity plugin optional and disabled by default + Add quirk for Western Digital + Mark more user-visible strings as translatable + modem-manager: validate firmware update method combinations + modem-manager: remove unused byte counts in QMI/PDC update logic + modem-manager: make sure the correct interface number is used for QMI + modem-manager: udev monitoring only if device switches layout + modem-manager: plug udev client leak + Restrict loading component types of firmware - Enable supported_build to clarify that this package is supported (bsc#1179790) - Drop fwupd-platform-integrity.conf since upstream disables the platform integrity module by default now due to incompleteness. - Address fwupd-refresh.service in %preun, %pre, %post, and %postun and provide a rc link for it - Version "Obsoletes: dbxtool" and "Obsoletes: fwupdate"- Update to version 1.5.2: + ata: Add OUI quirk for Toshiba + libfwupd: Restore recognizing gpg and pkcs7 types still + Register the SoupSession gtype when required + Switch from libsoup to libcurl + Fix sync method when called from threads without a context + Move ABI check to Github actions + Enable github workflows + libfwupd: Add fwupd_client_download_file() + libfwupd: Add fwupd_client_get_user_agent() + Only download the remote metadata as required + Add breaks for fwupdate 12-7 (Closes: #960688) + Install modules-load configs in the correct directory + vli: Do not be clever replugging the MSP430 device + vli: Make some trivial debugging more specific to help debug an issue + make gcab optional + Fall back to FAT32 internal partitions for detecting ESP + Add a flag to indicate if packages are supported + uefi: a new option for uefi configuration to use UEFI removable path + Add a section to man page on scripting + synaptics-mst: Improve reliability by waiting 2 seconds after writing data + hailuck: Add an plugin for the Pinebook Pro laptop + Allow setting global flags for FuHidDevice + Set the SMBIOS chassis type to portable if a DT battery exists + colorhug: Don't set the version format to triplet at startup + Allow components to set the icon from the metadata + colorhug: Fix detection of version on older firmware versions + bcm57xx: Fix reading vendor/device ids from firmware. + Remove HSI update and attestation suffixes + trivial: make dbxtool executable to fix snap build + Ignore an invalid vendor-id when adding releases for display + Notify the service manager when idle-quitting - Refresh fwupd-bsc1130056-change-shim-path.patch - Changes in BuildRequires: + Replace pkgconfig(libsoup-2.4) with pkgconfig(libcurl) + Replace pkgconfig(systemd) with pkgconfig(libsystemd) - fwupd-msr.conf and fwupd-platform-integrity.conf are moved to %{_modulesloaddir}.- Obsoletes and Provides dbxtool since fwupd 1.5.0+ now embeds dbxtool in the dbxtool plugin- Amend the spec file (jsc#SLE-16818) + Only enable fish support for Tumbleweed + Only enable the MSR plugin for x86 + Only install dbxtool in the architectures with UEFI support- Update to version 1.5.1: + Use UDisks to find out if swap devices are encrypted. + Show a link to discover more information about a specific plugin failure. + updated fish completions to 1.5.0. + Remove the duplicate parent-child data in FwupdDevice and FuDevice. + Show a less scary fwupdate output for devices without info. + thunderbolt: recognize authorized value of '2' as well. + bcm57xx: Make hotplug more reliable. + Use a different Device ID for the OptionROM devices. + contrib/ci: switch TPM simulator from ibmswtpm to swtpm. + Delete unused EFI variables when deploying firmware. + Fix probe warning for the Logitech Unifying device. + Include the amount of NVRAM size in use in the LVFS failure report. + Add external interface messages.- Update to version 1.5.0: + Add a compatible re-implementation of the rhboot dbxtool. + Add async versions of the library for GUI tools. + Add commands for interacting with the ESP to fwupdtool. + Add firmware-extract subcommand to fwupdtool. + Add FwupdPlugin so we can convey enumerated system errors to the end user. + Add plugin for Goodix fingerprint sensors. + Add plugin that can update the BCM5719 network adapter. + Add plugin to update Elan Touchpads using HID. + Add support for a delayed activation flow for Thunderbolt. + Add support for ChromeOS Quiche and Gingerbread. + Add support for Hyper hardware. + Add support for the Host Security ID. + Add support for ThunderBolt retimers. + Add switch-branch command to fwupdtool and fwupdmgr. + Allow blocking specific firmware releases by checksum. + Allow contructing a firmware with multiple images. + Allow firmware to require specific features from front-end clients. + Allow updating the dbx using the LVFS, validating it is safe to apply. + Include the HSI results and attributes in the uploaded report. + Support loading DMI data from DT systems. + Support LVFS::UpdateImage for GUI clients.- Add fwupd-jscSLE-11766-close-efidir-leap-gap.patch: Set SLE and openSUSE esp os dir at runtime (jsc#SLE-11766) - Drop _multibuild and build option -Defi_os_dir="%{efidir}": with the above patch fwupd can detect esp os dir dynamically - Update the efidir related %post and %postun scripts in spec file- Update to version 1.4.5: * Add XB_QUERY_FLAG_FORCE_NODE_CACHE * Add support for a delayed activation flow for Thunderbolt * Allow firmware to require specific features from front-end clients * Allow multi-byte FuUdevDevice preads and writes * Be more defensive when remotes are missing required keys * Disable the SQLite lookaside cache * ccgx: Add more hybrid dock support * ccgx: Modify readme to remove customer info * ccgx: add new protocol for dmc dock * ccgx: remove verify flag in plugin * modem-manager: read the vendor ID directly from sysfs attribute Fixes: #2209 * thelio-io: Add the DFU instance ID as a counterpart only * thunderbolt: Add a new subclassed thunderbolt firmware update type * thunderbolt: Allow quirks to skip the authentication step * thunderbolt: drop support for force power * tpm-eventlog: fix PCR0 calculation * uefi: check for free space after cleaning up ESP * vli: Add dual-image feature for VL103 backup firmware * vli: Add the project ID shared SPI PD controllers * vli: Allow chained usb hub devices where the parent needs GPIOB reset * vli: Do not modify the class vfuncs depending on device type * vli: Do not use GUID matching for the MSP device * vli: Rename FuVliUsbhubI2cDevice to FuVliUsbhubMsp430Device * vli: Set FuQuirks on the shared SPI object * vli: Set the i2c instance IDs in probe() * vli: Use the GPIOB reset for the MiniDock VL103 * vli: Wait for the root device to be replugged when updating the MSP430- Update to version 1.4.4: * Release fwupd 1.4.4 * Fix regression when checking for downgraded metadata- Update to version 1.4.3: * Release fwupd 1.4.3 * ata: A OUI quirk for Kingston * ccgx: Fix a potential division by zero * Check the device requirements when returning from GetDetails * fu-engine: Allow --plugin-whitelist to use dashes instead of underscores * Always enforce the metadata signature has a valid timestamp * ccgx: modify install duration for dmc device * ccgx: Add support for HP DMC dock devices * dell-dock: prevent updates to occur via synaptics-mst plugin * dell-dock: Capture the dock SKU in metadata * synaptics-prometheus: Force the minor version from 0x02 to 0x01 to make sure the devices can be updated back to 0x01. * Generate a body for github releases (Fixes: #2034)- Build the package separately for openSUSE and SLE using _multibuild (jsc#SLE-11744).- Update to version 1.4.2: * vli: Add no-guid-matching for all VLI devices * vli: Remove a copy-and-paste mistake * Add two OUI quirks * ata: Add WD OUI quirk 000cca * synaptics-rmi: Essentially blacklist Dell K12A * dfu: Avoid communicating when bitManifestationTolerant is off * ata: Add OUI quirk for Western Digital * dfu: Support MATEKF722SE quirk * Fix various build issues with -Wdiscarded-qualifiers * thunderbolt/dell-dock: Delay activation for Thunderbolt updates * Switch the default of EnumerateAllDevices to false * Add OUI quirk for SanDisk * vli: Add two standard USB instance IDs for shared-PD devices * vli: Use GPIOB to reset the VL817 found in two Lenovo products * tpm-eventlog: Correct the display of final calculated PCRs * wacom-raw: fixup switching to bootloader mode- Update to version 1.4.1: * thunderbolt: Don't show safe mode errors for USB4 host controllers * ep963x: Various changes to make the plugin actually work on real hardware * Make tss2-esys conditional * ep963x: Remove some dead code spotted by Coverity * ccgx: Only update the FW2 partition of the ThinkPad USB-C Dock Gen2 * ccgx: Expand the FWImageType for future hardware * Allow specifying the device on the command line by GUID * Fix the DeviceID set by GetDetails * wacom-usb: Fix a theoretical buffer over-read to make GCC happy * vli: Only show the i2c devices on the USB3 hub * Allow devices to be updatable, but only when upgrading a proxy device * Reset the progressbar time estimate if the percentage is invalid * ccgx: Always report 100% when finished writing * Add a device quirk that forces an explicit device-id match * ccgx: Set the device name and summary from quirk files * vli: Only do the APP5 FW bug fix on affected hardware * vli: Show all the buffer when debugging with FWUPD_VLI_USBHUB_VERBOSE * fu-engine: Refresh device name and format before setting supported flag * Allow a device to set the logical or physical ID during ->setup() * ccgx: Split out a trivial helper to set the instance IDs * ccgx: Set the device name to be more useful * ccgx: Set the logical ID as the FwMode * ccgx: Split out a trivial function to set the version * ccgx: Do not reboot the device write after installing * ccgx: Do no show the flash parameters when unknown * Allow devices to match the proxy device by GUID * Do not skip attach() if the device is marked _WILL_DISAPPEAR * dell-dock: Port to using fu_device_get_proxy() * Allow adding a device 'proxy' device that can do actions on it * vli: Do not show the USB 2 recovery devices for USB 3 hubs * vli: Add metadata to identify which is the same physical device * uefi: correctly format firmware version of Dynabook (né Toshiba) X30, X40 and probably others * synaptics-cxaudio: Use the ->attach() device vfunc * synaptics-cxaudio: Wait for the device to reboot after writing firmware * logitech_hidpp: decrease verbosity of messages that hid++ ID is missing * Prefer to update the child first if the order is unspecified * Do not modify the device priority for child devices- Exclude fwupdate from the architectures without UEFI support.- Update to version 1.4.0: * Release fwupd 1.4.0 * Allow removing device flags from quirk files * Use black to format python source in a consistent manner * Define SOURCE_VERSION when building a package * Only set the parent when adopting children * Do not conditionalize attach() and detach() on IS_BOOTLOADER * Do not crash the daemon if a plugin does something dumb * wacom-usb: Add more sanity checks in case the daemon goes crazy * wacom-usb: Use a per-device cleanup function * Add some more device regression tests * wacom-usb: Add a lot of missing metadata about the devices * wacom-usb: Hide a lot of debugging behind FWUPD_WACOM_VERBOSE * Only auto-add counterpart GUIDs when required * ccgx: remove update message * ccgx: add parent guid for hybrid dock * ccgx: Use a smaller timeout for i2c read and write operations * ccgx: Retry the register read and write with a i2c reset * ccgx: Fix buffer overflow when reading out i2c status * ccgx: Retry the HID disconnect up to 5 times * ccgx: Show a better error message on failure * ccgx: Allow forcing firmware of the wrong app_type with fwupdtool * Modularize the hardware tests * Ignore indirect devices that replug during the composite firmware update * Export the device state as part of the D-Bus interface * Fix devices that use CounterpartGuid when more than one device is installed * Use the GUID as a fallback rather than the connection ID * ccgx: Fix critical warning on i2c write failure * logitech-hidpp: Do not add peripheral devices for receiver in BL mode * Install the installed-tests only if tests are enabled * Load the signature to get the aliased CDN-safe version of the metadata * vli: Only reboot the USB hub once * synaptics-cxaudio: Only use the PATCH2 address when the patch level is 2 * add STM32F745 stm dfuse quirk * dfu: Add a way to set the timeout from a quirk * Export the release urgency * Export the release creation time * Check the firmware requirements before adding SUPPORTED * data/motd/fwupd-refresh: Only order after network.target * ccgx: Do not add the HID device that will disconnect * ccgx: Use Silicon ID and Application type to set flash parameters * Add a new daemon configuration option to control EnumerateAllDevices * logitech_hidpp: set the bootloader protocol * Install meson from pip for LGTM * bash: add completion for fwupdtool reinstall * fu-tool: add reinstall command * fu-engine: export fu_engine_get_releases_for_device in header * vli: Wait for the VL103 to timeout to fix detach * ccgx: Show the UpdateMessage in the correct device mode * ccgx: Add extra instance IDs to match specific firmware * Use a static version number * thunderbolt: Rather than hardcoding to PCI slot numbers, use domain in GUID * Revert "thunderbolt: Create a unique GUID including Thunderbolt controller path" * dell-dock: Port to fu_device_retry() * nitrokey: Convert to use FuHidDevice * nitrokey: Port to fu_device_retry() * vli: Port to fu_device_retry() * Add fu_device_retry() helper functionality * ccgx: Implement writing firmware to flash * ccgx: Add i2c status check when reading or writing registers * ccgx: Add 5ms delay between read registers to avoid an i2c error * libfwupdplugin: Use fu_device_locker_close() * synaptics-mst: Use fu_device_locker_close() * Add fu_device_locker_close() * ccgx: Do not store the silicon ID in the image address * ccgx: Add device quirks for the Lenovo Hybrid Dock * ccgx: Switch HID mode to HPI mode at startup * ccgx: Clear the event queue when in startup * ccgx: Wait for hardware to settle when coming out of reset * ccgx: Do not mark the device as updatable when in boot mode * ccgx: Verify the firmware app type when preparing firmware * ccgx: Set the update message when running in backup firmware * ccgx: Read the FwAppType from the hardware * ccgx: Set the HPI version number for the current firmware * ccgx: Get the silicon ID to map the flash parameters * ccgx: Read the HPI device mode at startup * ccgx: Set up the HPI I²C config at startup * ccgx: Create devices when in HID and I2C modes * Add a new ChromeOS CI target to build without GPG and PKCS7 * Use Jcat files in firmware archives and for metadata - Removed fu-keyring-gpg which caused CVE-2020-10759 (boo#1172643) * csr: Allow truncated HID reads * vli: Only consider the high nibble when building the sub-version * csr: Parse the firmware as a DFU file * Add support for EP963x hardware * Add FuHidDevice abstraction * vli: Correctly attach VL103 after a firmware update * ccgx: Parse the metadata block in the firmware image * ccgx: Add a firmare parser for cyacd files * logitech: Correctly set the protocol * Add the optional device-id to the update --help output * Fix a difficult-to-trigger daemon hang when replugging devices * vli: Remove a dock device from the whitelist that is never going to be updated * vli: Add some trivial debugging to help track down a bug * vli: Never add USB hub devices that are not upgradable * uefi: Don't use shim for non-secure boot configurations * Start fwupd-activate.service after snapd.service * dfu: Actually reload the DFU device after upgrade has completed * dfu: Add one more m-stack device requiring a quirk * Apply version format to releases and devices at same time * Ensure that the DeviceID is set for child devices * Fix a daemon crash when removing children * Allow waiting for the parent device when replugging * Add fu_device_get_root() shared API * vli: Fix an error when detaching MSP430 * vli: Fix a critical warning when getting the USB speed * vli: Fix the error enum values for the MSP430 * Do not add blank lines when tokenizing Intel hex files * vli: Fix the version calculation for MSP430 * vli: Ignore one more error when attaching * vli: Always expect the VL103 header at 0x1003 or 0x4000 * vli: Do not fall back to the recovery write for usbhubs * vli: Only show the 2nd header if the device ID is valid * vli: Fix VL103 reboot from ROM mode to FW mode * vli: Add some better comments for writing GPIOs * Add a helper script to add a DFU header * Add 'firmware-convert' subcommand to fwupdtool * fu-engine: Make two passes of requirements checking * fu-engine: Copy the VersionFormat from the CAB if specified in `get-details` * Add a new plugin for CPU microcode * Don't build/install fwupdagent man page if agent build is not requested * Introduce a new VersionFormat for `hex` * Drop UEFI quirks we now inherit from metadata * ci: build Debian using libflashrom * When TPM PCR0 measurements fail, query if secure boot is available and enabled * fix fwupd.shutdown.in according to the movement of fwupdtool to bindir * ata: Add OUI quirk for Western Digital and Intel * improved fish shell completion * vli: Set the MSP430 version format to pair * Always return AppStream markup for remote agreements * ata: Add trivial OUI quirk for Micron * added completion script for fish shell * Do not fail loading in /etc/machine-id is not available * Use xb_builder_source_add_simple_adapter * Create FuCabinet and untangle a lot of legacy code * nvme: Do not try to handle integer version numbers * Allow server metadata to set the version format on some devices * fu-tool: Correctly append the release to devices in `get-details` * For the `get-details` command make sure to always show devices * fu-engine: Copy the version and format from donor device in get-details * fu-engine: Use unknown for version format by default on get-details * Inihbit all power management actions using logind when updating * Decouple the version format from the version itself * Add raw versions for bootloader and lowest * Allow server metadata to set the device name on some devices * Remove support for GCab less than v1.0 * fu-device-list: Check protocol before de-duping devices * Do not allow devices that have no vendor ID to be UPDATABLE * ata: Include a vendor ID for ATA hardware * ata: Switch off the verbose logging by default * Always check for PLAIN when doing vercmp() operations * Discard the reason upgrades aren't available (Fixes: #1678) * Improve the description of `fwupdtpmevlog` for man page * Move `fwupdtpmevlog` into `bindir` * uefi: Move `fwupdate` into `bindir` * Move `fwupdtool` and `fwupdagent` into `bindir` * Use the system provided flashrom on Fedora * Add a plugin vfunc to run after subclassed FuDevice creation * ci: use standalone script to generate build dependencies * Move the daemons from /usr/lib/fwupd to /usr/libexec/fwupd * Use the recently released flashrom v1.2 * Generate an additional UEFI quirk file using the stable LVFS metadata * uefi: Apply capsule update even with single valid capsule * Fix a critical warning when installing some firmware * ebitdo: Fix the endpoint address logged in the error message * uefi: Find the correct lds and crt name when specifying -Defi_ldsdir * upower: Move battery threshold declaration into a configuration file * upower: Decrease minimum battery requirement to 10% - Refresh fwupd-bsc1130056-change-shim-path.patch - Add new dependency: jcat- Update to version 1.3.9: * Release fwupd 1.3.9 * Always check for PLAIN when doing vercmp() operations * improved fish shell completion * vli: Set the MSP430 version format to pair * added completion script for fish shell * Always return AppStream markup for remote agreements * Do not fail loading in /etc/machine-id is not available * fu-engine: Fixup broken-ness from 0c0fada18fc9cb2a0efec351db67f0867bf045cd * Use xb_builder_source_add_simple_adapter * fu-tool: Correctly append the release to devices in `get-details` * For the `get-details` command make sure to always show devices * fu-engine: Copy the version and format from donor device in get-details * fu-engine: Use unknown for version format by default on get-details * Inihbit all power management actions using logind when updating * fu-device-list: Check protocol before de-duping devices * ata: Switch off the verbose logging by default * Discard the reason upgrades aren't available (Fixes: #1678) * Improve the description of `fwupdtpmevlog` for man page * Move `fwupdtpmevlog` into `bindir` * uefi: Move `fwupdate` into `bindir` * Move `fwupdtool` and `fwupdagent` into `bindir` * ci: use standalone script to generate build dependencies * Move the daemons from /usr/lib/fwupd to /usr/libexec/fwupd * Use the recently released flashrom v1.2 * uefi: Apply capsule update even with single valid capsule * Fix a critical warning when installing some firmware * ebitdo: Fix the endpoint address logged in the error message * fu-util: fix a logic error in report uploading introduced in e076d48afb74d1447936d353f12781755f13b047 * uefi: Find the correct lds and crt name when specifying -Defi_ldsdir * upower: Move battery threshold declaration into a configuration file * upower: Decrease minimum battery requirement to 10% - Update to version 1.3.8: * Release fwupd 1.3.8 * Do not use fu_common_vercmp() when the device verfmt is PLAIN * altos: Output raw buffer data when using FWUPD_ALTOS_VERBOSE * altos: Prefix an error to provide more context * altos: Add a trivial _to_string() implementation * synaptics-cxaudio: Make the verfmt match that of the existing Windows tools * synaptics-mst: Allow MST to fall back if no PCI device is marked as parent * Allow specifying a list of subsystems when setting a physical ID * synaptics-mst: Fix trivial thinko caused by the wrong dock connected * vli: Invert the logic to reboot the parent FuCliUsbhubDevice, not the child * vli: Switch around the hub tier values * uefi: Fix a build regression with Fedora 30 * logitech_hidpp: Ignore detach failures (Fixes: #1183) * logitech_hidpp: When detaching to bootloader use non-blocking IO and wait for timeout * vli: Show erase progress when doing a v2 recovery * uefi: Do not remove the 'Linux Firmware Updater' boot entry before update * uefi: Do not rewrite BootOrder in the EFI helper * vli: Add support for the PS186 device * Set up more parent devices for various Lenovo USB hubs * cxaudio: Set the update protocol to prevent a daemon warning * vli: Add support for Lenovo Modularized dock * Add an extra instance ID to disambiguate USB hubs * vli: Remove the unused tierX custom flags for each device * Revert "Correctly delete UEFI variables" * uefi: make debugging output more readable * vli: Fix a potential buffer-overflow when parsing firmware * tpm: Optimize the string parsing and fix the boolean logic * synaptics-rmi: Add a missing error enum value * synaptics-rmi: Correctly identify a checksum failure * synaptics-rmi: Fix Coverity issue that is impossible to hit in reality * solokeys: Parse old versions of the bootloader string * Add a plugin to update PD controllers by Fresco Logic * vli: Set the device progress correctly when erasing a PD device * vli: Use the correct command to get the device firmware version * vli: Correctly reset all VL100 devices * vli: Set all standalone PD devices to not do SPI auto-detection * vli: Mark standalone PD devices as updatable * vli: Set the protocol for FuVliUsbhubPdDevice types * Support the new gnuefi file locations * Cleanup ancient fwupdate-* EFI variables too (Fixes: #1739) * Detect kernel lockdown status * vli: Add the DEV instance ID to all devices * tpm-eventlog: Replay the TPM event log to get the PCRx values * tpm-eventlog: Store the eventlog hashes in binary form - Update to version 1.3.7: * Release fwupd 1.3.7 * Correctly delete UEFI variables * ci: allow working with podman w/o aliases * ci: fedora: force correct rpm package version * src: fu-engine: check version was updated by checking version * Correctly import PKCS-7 remote metadata * Add 'refresh' to fwupdtool * Add 'get-remotes' to fwupdtool * Generate a win32 setup binary * Fix display of UTF-8 characters on Windows * Move MOTD population into the daemon * fu-util: Discourage metadata refreshes more than once per day * Disable the battery percentage checks if UPower is unavailable * Allow getting the list of updates in JSON format from fwupdagent * Revert "trivial: Attempt to fix Debian CI" * fu-remote-list: emit a changed signal when modifying a remote * synaptics-mst: Skip self tests for systems with amdgpu * Allow applying all releases to get to a target version * Split up fu_engine_install() into two halves * logitech_hidpp: use the correct timeout for IO channel writes * Allow quirking devices that always require a version check * Shut down automatically when there is system memory pressure * Show the device parent if there is an interesting child * Allow the client to get the list of FwupdDevice children * Set the FwupdDevice parents in fwupdtool * Don't always get the vendor ID for udev devices using the parent * Add a runtime warning when adding a device without an vendor-id or protocol set * vli: Set more of the firmware max sizes automatically * vli: Add a SpiAutoDetect quirk for some of the PD devices * vli: Use a different protocol ID for i2c devices * vli: Add support for standalone Single PD devices * vli: Move generic SPI functionality into the FuVliDevice base class * vli: Remove the PD emulation code * vli: Use a more standard GUID for the child i²c and shared SPI devices * vli: Allow setting the device kind from a quirk * vli: Make more function names match the docs * vli: Move the SPI command quirking from FuVliUsbhubDevice down to FuVliDevice * vli: Rename FuVliUsbhubPdFirmware to FuVliPdFirmware * vli: Allow the device to specify the PD firmware header offset * vli: Add a FuVliDevice as a subclass to FuVliUsbhubDevice * vli: Define the device GType in the quirk file * vli: Move the CRC calculations out of usbhub scope * vli: Have one 'DeviceKind' for all objects * vli: Rename the `vli_usbhub` plugin to `vli` * Capitalize GNOME - package has grown a few new binaries: fwupdagent, fwupdate, fwupdtool and a tpm event debugging tool, that is packaged separately: fwupdtpmevlog- Drop docbook-utils-minimal build dependency, manpages are generated with gtk-doc.- Update to version 1.3.6: * plugins/coreboot: Add missing fu_hash dependency * trivial: synaptics-cxaudio: Add Google type C <-> 3.5mm adapter * fu-engine: don't expose bootloader version errors to users * trivial: dell-dock: drop unused quirk keyx * trivial: rename synapticsmst to synaptics-mst * trivial: actually set vendor ID for synaptics * fu-remote-list: Drop fallback path behavior * libfwupdplugin: Make sure systemd created environment variables exist * trivial: fu-remotes-list: drop usage of `FU_SELF_TEST_REMOTES_DIR` * trivial: synaptics-rmi: hardcode Vendor string * trivial: Set vendor ID for Dell WD19 to USB:0x413C (Fixes: #1653) * trivial: Document the use of vendor-id in each plugin * superio: Use the baseboard vendor as the vendor ID * uefi: Use the BIOS vendor as the vendor ID * coreboot: Use the BIOS vendor as the vendor ID * flashrom: Use the BIOS vendor as the vendor ID * dell: Hardcode a plausible vendor ID * emmc: Set the correct vendor ID prefix * fu-util-common: correct the default prompt for reboot/shutdown (Fixes: #1617) * Split out the remote loading from FuConfig * vli-usbhub: Fix the quirk for the legacy VIA 813 chip * Clarify error messages when no upgrades available * trivial: Don't handle a vendor-id requirement error that cannot happen * Only check the vendor ID if the device has one set * fu-install-task: Enforce that device protocol matches metadata * Add a new plugin that can parse the TPM event log * Allow other plugins to contribute report metadata * trivial: dell: hardcode the physical device ID for tpm to match the tpm plugin * Add a new plugin that exposes the system TPM device firmware version * Add fu_udev_device_set_flags() * trivial: Render large values of VersionRaw in a more portable way * trivial: wacom-raw: mark all Moffett SKUs as self recovery * Throw exit status 0 (instead of 2) if there is no firmware to be updated * Add a `dell-bios` version format * Add support for multiple LVFS::VersionFormat tags * Do not do semver conversion in fu_common_vercmp() * trivial: Deprecate fu_common_version_parse() * trivial: Support 'plain' in fu_common_version_from_uintXX() * Add the sysfs 'description' as the one-line device summary * trivial: Also print the parent keys when using FU_UDEV_DEVICE_DEBUG * trivial: Add fu_common_version_from_uint64() * trivial: Convert the VersionRaw value to a uint64_t for future use * Allow building on Windows with MinGW * synaptics-prometheus: Allow incremental version major and minor number * Replace 'scheduing' with 'scheduling' * Export the raw device version to the client --verbose output * trivial: Only dlopen the test plugin once * Export the device protocol to the client --verbose output * trivial: installed-tests: try to display journal for failed tests * trivial: ci: debian: enable verbose daemon logging for failure analysis * trivial: installed-tests: explicitly choose webcam device ID * trivial: debian: remove obj-* built files to fix back to back builds * trivial: ci: don't let bad symlinks cause debian build failures * trivial: debian: correct a dependency for libfwupdplugin-dev - Changes from version 1.3.5: * plugins: Fix potential use of NULL pointer in fu_dell_dock_mst_write_register * Fix shifting integer by more than 31 in fu_util_filter_device * synaptics-prometheus: Reload the device version after IOTA update * synaptics-prometheus: Reload the device version after update * trivial: wacom: remove coretronic config from Moffett scope * trivial: Fix a NULL/FALSE confusion * trivial: Add a BR for Fedora * trivial: Fix coreboot commit to fix CI * trivial: libfwupdplugin: clarify name of self test * plugins/coreboot: Improve version detection * plugins/coreboot: Get rid of FU_HWIDS_KEY_BIOS_VENDOR in coldplug * trivial: Move progressbar out of libfwupdplugin * trivial: Unexport fu_test_get_filename() * trivial: Unexport fu_test_compare_lines() * trivial: Unexport fu_test_loop_run_with_timeout() * trivial: Do not include non-introspectable functions in the GIR * trivial: Fix up a few introspection problems in FwupdPlugin * trivial: Include the Fwupd GIR in the FwupdPLugin GIR * trivial: Never add duplicate symbols to the map file * trivial: Properly namespace the defines in the exported header * Install development files for libfwupdplugin * Convert libfwupdprivate to a shared library libfwupdplugin * trivial: Allow building GCab from a subpackage * trivial: Fix under-include to define O_RDONLY * trivial: Allow compiling without * trivial: Do not use FuProgressbar in dfu-tool * synaptics-prometheus: Manually set the bootloader mode when attaching * trivial: Split out a new helper funtion * trivial: Add some optional debugging when hotplugging devices * trivial: Include the correct header for S_IRWXU * Always use the more portable 3-arg form for open() * trivial: Untangle FuHistory from FuPlugin * trivial: Allow compiling without * Revert "synaptics-rmi: Use the build ID as the version number to match the vendor tool" * Add missing documentation from the plugin interface * trivial: fu-udev-device: remove a prototype that was missed in b3d4d2ff * trivial: add missing gtk-doc fields for many files in src/ * trivial: fix compile failure without gudev * synaptics-prometheus: Mirror the _IS_BOOTLOADER from device to config * Allow setting the device flags using GObject properties * vli_usbhub: Set the composite parent at construction time * synaptics-prometheus: Set the composite parent at construction time * Allow plugins to set the parent during construction * vli-usbhub: Whitelist the PD and I²C devices * Set the protocol per-device not per-plugin * synaptics-rmi: Use the build ID as the version number to match the vendor tool * Create a REV_00 instance ID as this may be what the vendor needs to target * fu-util-common: Invert default behavior for reboot and shutdown prompts * trivial: fu-plugin-vfuncs: Add GTK documentation for all vfuncs * Make gudev a compile-time option * trivial: Set the offline trigger using an environment variable * trivial: ci: pull lintian from unstable for now. * trivial: stop including fu-hash.h as part of fu-plugin-vfuncs.h * Fix shebangs on scripts * trivial: Use prefixes for DATADIR in config.h for portability * Allow compiling GUsb as a subproject * trivial: fu-udev-device: add a to_string func for debugging * trivial: Don't assume that plugins end in .so * trivial: optionrom: remove unneeded includes * trivial: debian: ci: ignore library-not-linked-against-libc for more * trivial: remove version-format.md * trivial: Allow compiling without pwrite() * trivial: Allow compiling without * trivial: Allow compiling without realpath() * trivial: Allow compiling without HAVE_LC_MESSAGES * trivial: Allow compiling without getuid() * trivial: Allow compiling without * trivial: Allow compiling without * trivial: Allow compiling without * Ensure the _get_type() gets the same ABI version as the constructor * Use the correct unlocker when using GRWLock * trivial: plugins: only build coreboot when option set * fwupdtool: don't show a warning when calling `get-plugins` - Changes from version 1.3.4: * trivial: Don't force specific linker flash when cross building * dell: Use the more portable g_usleep() * trivial: Fix unused header includes * vli-usbhub: Make erasing less verbose and writing more obvious * vli-usbhub: Correctly print the 24-bit USB3 offset * vli-usbhub: Print the PD firmware offset and size for debugging * vli-usbhub: Open the parent device before attempting to read or write from the child * vli-usbhub: Set the install duration for the PD device * trivial: Fix a failed error prefix string * trivial: wacom-raw: Remove embedded from device name * wacom-raw: Correct HWID support * uefi: Just use a uint16_t for BootNext processing * uefi: Use a simpler entries set algorithm * vli-usbhub: Add support for writing using I2C passthru * vli-usbhub: Support updating PD devices that share the hub flash * vli-usbhub: Support the PD file format * trivial: uefi: correct a NULL pointer dereference * uefi: fall back to `ID_LIKE` when the path for `ID` doesn't exist (Fixes:# 1566) * uefi: Make generate_binary.sh more robust * Tokenize the Intel Hex file before parsing * trivial: Detect the USB version automatically * trivial: fu-util/fu-tool: explicitly block unsupported flags * Add support for matching requirements on device parents * Skip cleanup after device is done updating if `will-disappear` is set (Fixes: #1529) * efi: use a wildcard section copy for final EFI generation * modem-manager: explicitly use plain version format * modem-manager: add quirks for the Foxconn T77W968 modules * Allows confined snaps to activate fwupd via D-Bus * trivial: thunderbolt: clarify error message * Add a new property `Interactive` to the daemon * trivial: contrib/get-version.py: require git less hard * superio: Never read from port offset zero * superio: Fix regression when coldplugging superio devices * trivial: Fix Fedora CI build * trivial: Fix the autobuilt spec file with the new tarball version * Dynamically determine release version * trivial: synapticmst: allow missing `/proc/modules` * synapticsmst: filter invalid chip IDs * trivial: Provide some defines for common image names * Allow aborting early when using fu_archive_iterate() * Add fu_firmware_image_set_version() for future use * modem-manager: increase re-enumeration delay to 20000ms * modem-manager: add counterpart GUID for the DW5821e/eSIM * Add versions formats for the Microsoft Surface devices * usb: make loading vendor/product/serial strings non-fatal * trivial: Fix the protocol ID for VLI usbhub devices * trivial: wacom-raw: add more device IDs for Dell devices * trivial: contrib: don't require TSS for debian archs without EFI * fu-udev-device: Adjust bounds checking to be safer * fu-udev-device: Don't assume all devices have `device_file` * synaptics-rmi: correct an error cleaning up on probe * trivial: fu-udev-device: add some safety checks for fd * udev-device: fix offset of vendor id of hidraw devices * flashrom: switch to upstream source * trivial: fu-plugin: only show an error once "failed to open plugin" was being prefixed twice * trivial: debian: only use mingw-w64-tools in archs with UEFI plugin * fastboot: Fix a regression when updating modem firmware * trivial: conflict with old unifying plugin * Rename unifying plugin to logitech-hidpp (Fixes: #1329) * Add a new contrib script for installing a Dell BIOS from an EXE file * trivial: add-capsule-header: rename to make it easier to import * trivial: simple_client: make it easier to reuse code * trivial: firmware-packager: make it easier to reuse code * trivial: add-capsule-header: make it actually work * trivial: fix some gtkdoc sections * Bump the required gudev version * trivial: Fix a compile error with older versions of gudev * trivial: wacom: add vid/pid for panels in Moffett * trivial: post release version bump - Changes from version 1.3.3 * unifying: notify users to replug when using dfu control (Fixes: #1383) * trivial: 8bitdo: set a transient failure while waiting for user action * libfwupd: Add a new error type for user action needed * trivial: 8bitdo: show the same message for SN30pro and SN30pro+ * trivial: Fix up some typos from codespell * trivial: Ensure config.h is included in all source files * trivial: Fix up some NULL/FALSE confusion * trivial: Add all the _LAST enums that shouldn't be checked for ABI * trivial: Fix a typo that means that UEFI results were never cleared * Always report the update-error correctly for multiple updates * trivial: Fix fwupdmgr get-history if the firmware was not installed from the LVFS * trivial: Do not emit a warning if a child has no version number * Move the file descriptor lifecycle into FuUdevDevice * trivial: Fix some GtkDoc annotations * ebitdo: Modernize the plugin to use FuFirmware * nitrokey: Use fu_common_dump_raw() when debugging * thunderbolt: Create a unique GUID including Thunderbolt controller path * Use device safety flags to show prompts before installing updates * trivial: Use the new possible_plugin support for USB devices too * jabra: Move the Jabra-specific detach out into its own plugin * Ensure the device is open when doing the subclassed prepare() and cleanup() * vli-usbhub: Add support for updating V2 devices * Allow verifying the device image itself from fwupdtool * Use XMLb to query quirks * trivial: ci: disable pulling libxmlb from unstable * synaptics-prometheus: Don't add a config-subdevice in bootloader mode * dfu: Use the VID/PID to identify devices without download capability in runtime * trivial: debian: remove some unneeded lintian * trivial: debian: bump compat version * ebitdo: Add SN30Pro+ to recognized quirk list (Fixes: #1503) * dfu: Add several quirks for Realtek camera hardware * dfu: Always mark devices as UPDATABLE * uefi: use `genpeimg` to mark ASLR and DP/NX on EFI binary * trivial: solokey: correct a typo * trivial: fu-util: fix typo * uefi: rework ESP path detection and lifecycle * trivial: uefi: show more metadata in to_string method * trivial: fu-device: add new method to remove metadata * Add a plugin to update VIA USB hub hardware * trivial: Add fu_common_read_uint8_safe() * trivial: Fix two typos in fu_common_read_uint16_safe() * solokey: Allow parsing firmware with fwupdtool * Allow fwupdtool to dump details of common firmware formats * trivial: Do not do system coldplug when using FU_ENGINE_LOAD_FLAG_NO_ENUMERATE * trivial: fu-self-test: set polling self tests to slow * trivial: fu-tool: Allow `detach`/`attach` to prompt for device * Strip trailing whitespace from USB descriptors * trivial: Add fu_common_read_uint16_safe() * trivial: Add version to the FuFirmware->to_string() output * Add fu_firmware_set_version() * Add a systemd preset file for `fwupd-refresh.service` * trivial: dell: work around a memory leak caught by address sanitizer * ebitdo: if the device has the will disappear flag, don't wait for ack (Fixes: #994) * Add a new plugin for working with eMMC devices (Fixes: #1455) * fu-engine: Check multiple plugins if quirks match * trivial: don't try to enable LVFS from systemd * trivial: coreboot: fix a clang compiler error * fu-util: Add user friendly strings for all device flags * Add new device flags indicating update resilience * plugins: Add coreboot plugin * fu-plugin: Add fu_plugin_get_hwid_replace_value * trivial: Increase verbosity when actually updating devices * trivial: Allow plugins to use WAIT_FOR_REPLUG in prepare and cleanup * Add FuDevice->prepare() and FuDevice->cleanup() vfuncs for future use * dfu: Implement FuDevice->to_string() * trivial: colorhug: fix a crash that occurs when flashing sometimes * trivial: fu-util: break out of automatic reports if one is not automatic * thunderbolt: some more clarifications when using ICL * trivial: fwupd-refresh: activate motd if using systemd v243 or later * trivial: fwupd-refresh: allow exit code 2 for success * trivial: synaptics-cxaudio: Add Google Pixel buds * trivial: arch: ci: Wait some time for tpm_server to start up * Allow a custom FuFirmwareImage->write() in superclassed objects * dfu: Remove two completely unused helpers * dfu: Make DfuFirmware derive from FuFirmware * dfu: Make DfuImage derive from FuFirmwareImage * dfu: Remove private headers that do not need to exist * Fix device flag filtering * trivial: fu-engine: Don't compare device and content checksums * fu-engine: Read all releases and convert versions when comparing * Add new flags `can-verify` and `can-verify-image` * trivial: make verify and verify-update safer * trivial: test: add checksums for "stock" 1.2.2 * trivial: fu-udev-device: use parent udev device to indicate `internal` * trivial: fix TPM2 simulator tests for arch * trivial: uefi: don't add PCRs with all 0's * trivial: Fix a recent regression causing a double-free * synaptics-cxaudio: Support the ThinkPad USB-C Dock Gen2 * trivial: fu-util: add some extra checks around automatic reports * trivial: fu-tool: typo * fu-systemd: Use correct method for stopping units. * trivial: fu-udev-device: Use ID_PCI_CLASS_FROM_DATABASE if name not set * trivial: fu-plugin: quiet down debug output for optionrom plugin * 8bitdo: use will-disappear flag for sf30/sn30 controllers (Fixes: #783) * trivial: ebitdo: don't dump out firmware header unless plugin verbose * trivial: ebitdo: don't use local errors when writing firmware * Add a new device flag for indicating device won't come back * wacom-emr: Fix a regression for EMR devices * Add a generic DFU firmware object for plugins to use * dfu: Use FwupdInstallFlags rather than a DFU-specific version * dfu: Remove functionality for modifying DfuSe files * dfu: Remove functionality you can do now with fwupdtool * dfu: Remove the merge command as it's unused and broken * trivial: Add fu_firmware_parse_file() helper for future use * trivial: Remove the fuzzing details for DfuPatch * trivial: Add klass->to_string for superclassed FuFirmwareImage objects * dfu: Remove DfuPatch as no vendor actually uses this * dfu: Don't wrap provided VID-PID functions * dfu: Use the standard FuDevice custom flags functionality * dfu: Use klass_device->write_firmware() directly * dfu: Use the generic fu_plugin_usb_device_added() function * dfu: Use daemon flags to ignore devices rather than a special flag * dfu: Set the device state directly to avoid proxying signals * dfu: Use the built-in detach() and attach() vfuncs * Read firmware back from the device as a FuFirmware * dfu: Remove a pointless function * dfu: Remove support for the Metadata Store Proposal * dfu: Remove XTEA support * dfu: Remove the SREC and IHEX parsing out of the DFU plugin * ebitdo: Use klass_device->write_firmware like other plugins * trivial: Remove G_BEGIN_DECLS from all private headers * Remove FU_PLUGIN_RULE_REQUIRES_QUIRK as all the plugins now use it * Set all FuUdevDevice plugins to use FU_QUIRKS_PLUGIN * thunderbolt: recognize new 'generation' sysfs attribute * Rename and modernize the udev plugin * synaptics-rmi: Also add the product ID as a GUID without the minor version * synaptics-rmi: Correctly set the payload length rather than hardcoding it * synaptics-rmi: Write the core config correctly * synaptics-rmi: Decode BL7 status failures as actual errors * synaptics-rmi: Add some trivial debugging to help debug a write problem * trivial: uefi: Make efivarvs errors clearer (Fixes: 1330) * trivial: uefi: don't prefix efivar errors * trivial: Remove some now-unused vfuncs * altos: Modernize the plugin to simplify it * Create the custom plugin GType in common code * Reduce more boilerplate in plugins * synaptics-rmi: Check the correct register when querying bootloader mode * trivial: fu-engine: fix never reporting remotes * trivial: fu-util: don't show warnings for no reports to upload * trivial: debian: remove more conffiles from transitions (Closes: #932617) * trivial: debian/control*: Update for fwupdate transition * trivial: Fix a tiny memory leak when starting the daemon * modem-manager: Fix a tiny memory leak when starting the daemon * synaptics-rmi: Copy the behavior of rmi4utils for BL7 detach * synaptics-rmi: Simplify fu_synaptics_rmi_device_read() * synaptics-rmi: Set the version after ->setup has run * synaptics-rmi: Use the correct mask when getting the bootloader mode on BL7 * syanptics-rmi: The build_id is 3 bytes long, not 2 * synaptics-rmi: Read the config partition the same as rmi4utils * Provide a default implementation of common FuDevice actions * thunderbolt-power: avoid checking for bolt support * synaptics-rmi: Add some debugging for BL7 devices * Fix usage of incorrect type for return value * synaptics-rmi: Do as little as possible in device setup * synaptics-rmi: Speed up reading the PDT from 900ms to 30ms * fu-util: add support for a reinstall command * trivial: fu-util/fu-tool: update re-install help text to reinstall * trivial: fu-util: remove double printed message about succesful firmware update * trivial: fu-util: show no updatable devices error for update command * synaptics-rmi: Ignore the ATTN reports from the hardware when reading DATA * synaptics-rmi: Move the fuzzing instructions to the toplevel README * Fuzz the SREC and IHEX file parsers once more * Use parallel fuzzing for the SMBIOS checks too * synaptics-rmi: Fix the packing of the partition table * Add a plugin to update Synaptics RMI4 devices * trivial: Add a parallel fuzzing script * trivial: fu-util: output newline after prompt. * trivial: fix %u output in report upload * Add a --no-domain logging option * trivial: Fix compiler warning for impossible-to-hit condition * Add support for automatically uploading reports * trivial: motd: disable updating motd for now * trivial: fwupd-refresh: fix a clash with fwupd.service (Closes: #941360) * trivial: Fix Fedora CI * trivial: fu-udev-device: fix some assertions * Search up the tree for a vendor name rather than (ab)using the HID_NAME * Add some success messages when CLI tasks have completed * trivial: Put the boolean prompt on the same line as the text * Never show LicenseRef-proprietary to the end user * trivial: snap: correct install hook root directory * Export the instructions for detaching the device * uefi: detect unmounted ESP partitions (Fixes: #1405) * uefi: stop recording efibootmgr output after flash * trivial: post release version bump - Changes from version 1.3.2: * Add support for '' to disambiguate some firmware * thelio-io: Add a plugin to detach the Thelio IO board * trivial: uefi, dell: skip self tests with TPM if non-root (Fixes: #1396) * trivial: dell: quiet the TSS output * trivial: uefi: allow forcing to TPM2 via environment variable * Do not ask the user to upload a report if ReportURI is not set * Do not enumerate physical devices when running the internal self tests * trivial: libfwupd: skip tests if machine-id is empty too * Add a new plugin to update Conexant audio devices * Export the salted machine ID as a daemon property * Fall back to /var/lib/dbus/machine-id when required * trivial: add stalebot (Fixes: #1393) * trivial: dell-dock: correct another write_size error * Align the key values to the text *width* not the number of bytes * trivial: Move dbus directory location for snap too * trivial: Fix some NULL/FALSE confusion * synaptics-prometheus: Fix tiny memory leak when using FuSynapromConfig * trivial: Fix tiny memory leak when using FuSrecFirmware * snap: switch to core18 * trivial: Return the correct property when getting the host product * trivial: fu-util-common: fix description wrapping (Fixes: #1378) * fu-util/fu-tool: Map out changelogs from remotes * fu-util/fu-tool: Better display historical information * fu-history: Update device_modified in sql database during updates * unifying: Use the instance ID to check for supported devices * unifying: Ensure HID++ v2.0 peripheral devices get scanned by the plugin * trivial: Add some more defines to the srec parser * trivial: fix wget command in fu-tool.c * Allow parsing a raw SREC file * trivial: wacom: Add support for second vendor ID * uefi, dell-esrt: Show firmware version when capsule updates unavailable * Add some more debugging to the SREC and IHEX parsers * Print the instance IDs if the GUIDs are unconverted * Add fu_common_bytes_compare_raw() for future usage * Call the set_quirk_kv() vfunc for the superclassed object * uefi: make the TPM optional for runtime again (Fixes: #1362) * trivial: uefi: Make the TCTI output less verbose * Support in AppStream metadata * Include all GUIDs when uploading a report * Do not crash when starting tpm2-abrmd * trivial: Update DBus conf path for example Fedora package * Move D-Bus conf file to datadir/dbus-1/system.d * trivial: Add fu_io_channel_write_byte_array() for future use * trivial: post release version bump - Package new sub-packages typelib-1_0-FwupdPlugin-1_0 and libfwupdplugin1.- Fix file list- Update to version 1.3.1: (jsc#SLE-10751) * Allow disabling all plugins * trivial: Specify the tpm2-tss-devel version in the example spec file * Move to CI Fedora 30 * modem-manager: Fix two build warnings on Fedora 30 * synapticsmst: Add another name quirk for the ThinkPad USB-C Dock * Re-introduce GUID support to fwupdmgr and fwupdtool * uefi-recovery: Add a plugin to add a fake ESRT entry for device recovery * Add a DMI quirk for the Minnowboard Turbot * trivial: Make it easy to disable or enable libflashrom for distros * trivial: Don't use Recommends for RHEL 7 * unifying: fix timeout metadata * ci: arch: minor improvements * unifying: fix timeout * Allow disabling SSL strict mode for broken corporate proxies * trivial: Allow ignoring the daemon version check by using --force * Try to only show DMI product name once * trivial: fu-util-common: Show unknown devices as interesting devices * dell: Use TSS to query and build TPM vendor strings for GUIDs * trivial: dell: show reasons for lack of updates in `UpdateError` * fu-util-common: strip all trailing whitespace in XML description * trivial: fu-common: match all whitespace not just ' ' in `fu_common_strstrip` * fu-util: show release output in get-details again * unifying: use fu_firmware_strparse_uint16 to read be 16bit values * unifying: fix incomplete hex file parsing * fu-util/fu-tool: Print devices, remotes, releases using a tree * Add aliases for `get-upgrades` and `upgrade` * trivial: UEFI skip self tests if library fails to initialize * libfwupd: Add a new private function `fwupd_remote_set_remotes_dir` * trivial: add libtss2-dev into debian/control (Closes: #1324) * trivial: Fix up the GtkDoc Since lines for API only available in 1.3.x * trivial: Post branch version bump * thunderbolt: Add support for kernel safety checks (Fixes: #1312) * Include the kernel release as a runtime version * trivial: fu-util: Drop GUID support from get-devices * synapticsmst: Partially rewrite the plugin (Fixes #1105) * Remove replug flag after the device comes back from reboot * trivial: Fix running the tests on devices with the TPM in v1.2 mode * trivial: fu-util-common: more cleanup related to topology * trivial: fu-util: cleanup fwupdmgr get-details output * trivial: Don't use topology printing in --verbose mode * Make get-devices and get-topology aliases for one another * trivial: Adjust daemon device sorting * Make get-topology more useful by showing all information * trivial: Fix fu_common_string_append_kv() to align properly with idx > 0 * trivial: dell-dock: correct an error preventing write_size from being set * trivial: Do not warn about deprecated declarations * trivial: Update BRs for the example Fedora package * uefi: add test for TPM 2.0 PCR read function * uefi: use tpm2-tss library to read PCR values * fu-common: Use environment variables for systemd managed directories * Use more systemd directives for directories * trivial: fu-util: fix debug output for devices * Allow turning off the timestamp prefix for debugging * Add a ->udev_device_changed plugin vfunc * Add fu_device_rescan() and a FuDevice->rescan() vfunc * Remove the duplicate files in meson.build * Hash the source files when generating the daemon hash * Split up source files in the build script * uefi: add support for tpm2-tools 4.X * trivial: plugins: clarify stance on afuefi.efi * trivial: plugins/: Update README * trivial: disable gtkdoc by default * trivial: update references of hughsie/fwupd to fwupd/fwupd * Publish docs to fwupd.github.io using CircelCI * Add support to integrate into the motd (Fixes: #1270) * Simplify get-devices output to not show un-useful fields * fu-engine/fu-config: Reload metadata store when configuration changes * trivial: If no devices support updates, show messaging (Closes: #1295) * trivial: uefi: set vendor name for system firwmare from DMI data * unifying: update Solaar url * thunderbolt: Fix logic to work properly with ICL thunderbolt controller * Add fu_udev_device_get_device_file() helper * trivial: Fix regression when using fu_device_incorporate() * trivial: Fix a potential crash when using FuPlugin in the self tests * synapticsmst: Make FuSynapticsmstConnection an actual GObject * synapticsmst: Use the same style as other plugins * trivial: Add some helper functions for GByteArray * Do not use FuDevice metadata for the physical and logical IDs * Use fu_common_string_append_kv() in subclassed device * synapticsmst: Use G_DECLARE_FINAL_TYPE to simplify the object * synapticsmst: Add a SynapticsMSTBoardID for another Lenovo dock * trivial: remove unnecessary CUSTOMERID_DELL define * synapticsmst: Add a SynapticsMSTBoardID for a Lenovo dock * synapticsmst: Display the board ID in non-hex form in the error message * synapticsmst: Use a more suitable icon for the device * trivial: Remove unused variable * Never use memcpy() in a possibly unsafe way * Add a ->to_string() vfunc to FuFirmware * Use FuFirmware as a container for firmware images * Allow filtering devices when using the command line tools * Be more accepting when trying to recover a failed database migration * trivial: Add translation for X-ThunderboltController * trivial: fixup standalone installer * modem-manager: add counterpart GUID for the DW5821e * solokey: Release the interface and rebind the kernel driver on close * fu-tool: Port ability to update a single device from fwupdmgr * uefi: Actually write the new device path if different than before * Allow setting custom flags when using fwupdate * trivial: Do not show a critical warning if no firmware is specified * trivial: Fix overzealous search-replace action in user string * Verify we don't break the ABI * Fix a crash when stopping the fwupd service * Relax the certificate time checks in the self tests for the legacy certificate * trivial: add cache directory into systemd unit rw paths * Never show AppStream markup on the console * Do not segfault when trying to quit the downgrade selection * trivial: Update icons for Thunderbolt and MST devices * Add support for the SoloKey Secure * trivial: Allow a device to *clear* a firmware version * trivial: debian: For signed package fill out Built-Using (Closes: #932757) * Allow specifying GUID to check any version exists * trivial: post release version bump * Release fwupd 1.2.10 * Disable the flashrom plugin by default * trivial: thunderbolt: catch failure setting up device * dell-esrt: Improve the experience for the plugin (Closes: #1245) * fu-util: When unlocking prompt for reboot if applicable * remove those PIDs with Bluetooth interface, Wacom updater doesn't support updating from Bluetooth interface * flashrom: Only show DEBUG and DEBUG2 output if using --plugin-verbose=flashrom * flashrom: Only call flashrom_programmer_init() on whitelisted boards * flashrom: Fix no version format set * fu-util: Show devices with an UpdateError in get-devices output * trivial: uefi: use UEFI-dummy for device ID instead of just uefi * trivial: fix error handling for non UEFI case (#1220) * Add a specific error code for the low battery case * Fix Fedora docker build missing directory: dist * uefi: Determine whether running in legacy mode or not (Fixes: #1220) * trivial: ci: debian: Only turn on flashrom when running CI * trivial: Fix typos in error messages * Allow client code to construct objects from GVariant blobs * Export functionality to build an array of objects * flashrom: Use libflashrom * trivial: Fix the version script to pick up boxed types * trivial: Correctly order the map entries according to vercmp rules * trivial: Fix pylint issue in the version script * Add meson target to fix translations * Add support for 8bitdo USB Retro Receiver * Use the newer features of GRWLock rather than reinventing it * Revert "Allow SuperIO updates to be done live" * uefi: Try to find a duplicate using the loadopt name * uefi: Provide a quirk to disable the use of the UX capsule * trivial: uefi: use the path for efibootmgr that was detected * synaptics-prometheus: Fix installing CONFIG firmware updates * synaptics-prometheus: Set the install duration from a quirk * synaptics-prometheus: Don't emit critial warning when updating config firmware * synaptics-prometheus: Fix missing field in the IOTA reply struct * Create SECURITY.md * redfish: Never set NULL device name * modem-manager: Never set NULL device name * ata: Never set NULL device name * trivial: Add some parameter guards to FuDevice * trivial: snap: make polkit directories if they don't exist (Fixes: #1205) * trivial: fu-main: clarify missing PK file error * synapticsmst: fix GUID generation (Closes: #1207) * Lite Mk II flag for use-shim-unique * trivial: circleci: try to fix automatic snap deployment * Allow SuperIO updates to be done live * fu-util-common: Support empty proxy strings (Fixes: #1199) * trivial: uefi: clarify error message * trivial: Fix non-systemd build * trivial: Sync example spec file with downstream * trivial: post release version bump - Drop fwupd-bsc1143905-hash-the-source-files.patch: Applied upstream. - Add pkgconfig(tss2-esys) BuildRequires: New dependency. - Add gtk-doc BuildRequires and pass gtkdoc=true to meson, build api docs even when using source service.- Add fwupd-bsc1143905-hash-the-source-files.patch to hash the source files instead of libfwupdprivate.a to avoid the checksum change due to the random naming LTO profile sections (bsc#1143905)- Update to version 1.2.10: * Disable the flashrom plugin by default * dell-esrt: Improve the experience for the plugin (Closes: #1245) * fu-util: When unlocking prompt for reboot if applicable * remove those PIDs with Bluetooth interface, Wacom updater doesn't support updating from Bluetooth interface * flashrom: Only show DEBUG and DEBUG2 output if using - -plugin-verbose=flashrom * flashrom: Only call flashrom_programmer_init() on whitelisted boards * flashrom: Fix no version format set * fu-util: Show devices with an UpdateError in get-devices output * Add a specific error code for the low battery case * Fix Fedora docker build missing directory: dist * uefi: Determine whether running in legacy mode or not (Fixes: #1220) * Allow client code to construct objects from GVariant blobs * Export functionality to build an array of objects * flashrom: Use libflashrom * Add meson target to fix translations * Add support for 8bitdo USB Retro Receiver * Use the newer features of GRWLock rather than reinventing it * uefi: Try to find a duplicate using the loadopt name * uefi: Provide a quirk to disable the use of the UX capsule * synaptics-prometheus: Fix installing CONFIG firmware updates * synaptics-prometheus: Set the install duration from a quirk * synaptics-prometheus: Don't emit critial warning when updating config firmware * synaptics-prometheus: Fix missing field in the IOTA reply struct * Create SECURITY.md * redfish: Never set NULL device name * modem-manager: Never set NULL device name * ata: Never set NULL device name * synapticsmst: fix GUID generation (Closes: #1207) * Lite Mk II flag for use-shim-unique * fu-util-common: Support empty proxy strings (Fixes: #1199) - Add python3-setuptools to BuildRequires for generate-version-script.py- Update to version 1.2.9: * Release fwupd 1.2.9 * trivial: Add two new translatable strings for new category types * Check if the system is offline during install, rather than at startup * Prompt the user to shutdown if requried when installing by ID * Use the correct file extension for the offline updates cache * trivial: Allow using --force to use the wrong daemon version * trivial: Display the correct expected command * standalone-installer: Be smarter about existing installed fwupd * Add a plugin to update Synaptics Prometheus fingerprint readers * trivial: standalone-installer: rename uninstall argument to cleanup * fu-util: Check the daemon version is at least the client version * fu-util: Check that daemon is started by expected unit * fu-util-common: when stopping a daemon, check for snap too * Allow using --force to trigger a duplicate offline update * trivial: Allow using FuUsbDevice without a GUsbDevice * trivial: Copy the icons if unset for the device child * trivial: Copy the physical ID if unset for the device child * trivial: Ensure the parent ID is up to date if the device ID changes * trivial: Fix typo when setting the parent ID * trivial: Disable the flatpak CI build * Allow handling FORCE for devices that subclass FuDevice * uefi: Fix a libasan failure when reading a UEFI variable * trivial: Fix a memory leak found using libasan * trivial: Fix an libasan failure in the dell plugin * trivial: Fix some dead code spotted by coverity * trivial: Fix a typo spotted by coverity * trivial: Fix a missing config.h include in a new source file * Dynamically read path to use for /system-update * Display the remote warning on the console in an easy-to-read way * ata: Set version format to plain for devices obtained from udev * trivial: Only apply SmbiosManufacturer to release version for internal * trivial: Fix two bugs in the hardware self tests script * Never guess the version format from the version string * Only force a semver when the device opts-in * Export the version-format to clients * Add missing gtk-doc documentation * dfu: Add some trivial, but useful, debugging for AVR DFU devices * dfu: Correctly identify DFU firmware that starts at offset zero * dfu: Don't keep showing trivial debug output * dfu: Reset the forced version during attach and detach * ata/nvme: For devices running Dell firmware, set `VersionFormat` (Fixes: #1169) * fu-engine: Check if VersionFormat is ambiguous when adding devices * trivial: Fix fwupdate --apply * Only use class-based instance IDs for quirk matching * trivial: dell-dock: set minimum board to 6 * trivial: post release version bump- Update to version 1.2.8: * Don't upload reports when the user has configured their system in a broken way * Allow setting the daemon verbose domains at runtime * Allow fwupdmgr to modify the daemon config * Do not compare version formats when the release format is unknown * Do not fall back integers to a plain version format * Use the device version format when converting the release version * Set the VersionFormat using the metadata or the UEFI quirk - Changes from version 1.2.7: * l10n: Create Lithuanian translation file * l10n: Update LINGUAS * Updated: Add support for 8BitDo M30. * modem-manager: increase the timeout to wait for modem after uninhibited * modem-manager: implement qmi pdc active config selection as attach() * fu-engine: When removing activation flag match the correct version * Require --force to install a release with a different version format * Match the old or new version number when setting NEEDS_REBOOT * Make an error message clearer when there are no updates available * Add support for the not-child extension from Logitech * thunderbolt: Set require-ac for Thunderbolt devices (Fixes: gh#hughsie/fwupd#1142) * Fix some typos spotted using codespell * Add a component categories to express the firmware type * fu-tool: Port get-history command to fwupdtool * Recreate the history database if migration failed * Move the core built-in 'fwupd' remote over to the dell-esrt plugin * snap: Add a custom systemd unit to call activation on shutdown (Fixes: gh#hughsie/fwupd#1125) * ata: Flush cache before standby and activate * synapticsmst: blacklist plugin when using amdgpu (Fixes: gh#hughsie/fwupd#1121) * uefi: add a new option to specify the os name * Return the newest device when using fu_history_get_device_by_id() * uefi: More carefully check the output from tpm2_pcrlist * uefi: Don't overwrite CustomFlags if set from a quirk * Shut down the daemon if the on-disk binary is replaced * ata: Correct activation functionality * Fix version comparisons after reboot for some formats * fu-tool: save history from stuff installed with `fwupdtool` - Changes from version 1.2.6: * ata: send ATA standby immediate when activating firmware * offline: Be more graceful when dealing with Plymouth failures * Save the new version in the history database for offline updates * Show the DeviceID when showing the updates list * Allow forcing an offline-only update on a live system using --force * Do not schedule an update on battery power if it requires AC power * superio: Add InstallDuration default value * superio: Add support for writing new e-flash contents * superio: Fix reading the attestation checksum * superio: Add support for reading the device checksum * superio: Use the chipset ID in the device name * superio: Move the device flush before getting the register map * superio: Move all the IT89xx code to a subclassed device object * superio: Move all the IT85xx code to a subclassed device object * superio: Split and export fu_superio_device_ec_writeX() * superio: Remove the port from fu_superio_device_ec_read() * superio: Move the register read/write into the FuSuperioDevice object * superio: Check the IOBAD0 is usable during setup * superio: Use fu_device_set_firmware_size() * superio: Move some constants out to the common header * superio: Use GObject properties in FuSuperioDevice * superio: Convert FuSuperioDevice to be derivable * Update Plymouth when updating pending firmware * Ask to reboot after scheduling an offline firmware update * Do not fail when scheduling more than one update to be run offline * Allow running offline updates when in system-update.target * Fix the location of fwupdoffline in the service file * Add optional vfuncs to allow detaching and attaching verify() * superio: Add list of SPI commands for future usage * Add a verify-update command to fwupdtool * uefi: Actually upload the UPDATE_INFO entry for the UX capsule * superio: Get the chip size from the EC rather than hardcoding * uefi: Check the error code of QueryCapsuleCapabilities() correctly * Update the UEFI UX Capsule Header checksum when needed. * uefi: Copy the shimx64.efi binary for known broken firmware * Correctly get the check the new version for devices that replug * Add a simple script to add a capsule header * Ensure the PKCS-7 client certificate exists at startup * fix makecab directive options * fwpup.service: use display-manager.service instead of gdm.service * Allow signing the fwupd report with the client certificate * Add a D-Bus method to generate a signature using the self-signed client certificate * Allow signing and verifying data using a PKCS-7 self-signed client certificate * Fix a critical warning when loading a PKCS-7 certificate with no DN * Include all device checksums in the LVFS report * modem-manager: Fix a trivial build warning * superio: Fix a trivial build warning * Move out the offline update functionality to a new binary * Do not reboot when failing to start fwupd during offline updates * Do not write the schema version to the db when loading * Do not recreate XbSilo caches when running on a readonly filesystem * Add the fwupdagent binary for use in shell scripts * Allow restricting firmware updates for enterprise use * standalone-installer: new --allow-older and --allow-reinstall options * Show the upgrade and downgrade flags when getting releases for a device * Rename FwupdRelease:trust-flags to FwupdRelease:flags * fu-tool: Save device state to @LOCALSTATEDIR@/lib/fwupd/state.json on actions * modem-manager: implement support for qmi-pdc * Add a plugin to support ModemManager hardware * fu-tool: Don't let failing to find dbus prevent engine from starting * ata: Support delayed activation * dell-dock: Use activation when calling fwupdtool activate * Add a support for delayed activation * uefi: Fix the self tests when running on Fedora SilverBlue * Do not fail to start the daemon if tpm2_pcrlist hangs * po/make-images.sh: quote LOCALEDIR and PYTHON3 * meson: print stderr of python3 command instead of stdout * Revert "contrib/debian: Switch to debian unstable" * Add elogind support - Changes from version 1.2.5: * uefi: fix segfault in fwup_set_update_statuses * Show in Flathub correctly * debian: explicitly depend on shared-mime-info * superio: Implement detach() and attach() * superio: Correct the names of some constants and improve debugging support * dell-dock: Filter the last supported payloads of certain board 4 SKUs * circleci: Manage the lifecycle of the snap * Add support to run snap build in CircleCI * wacom-usb: Use the correct buffer format for the touch module * wacom-usb: Set the install duration for each device type * wacom-usb: Return with an error if there were too many retries * wacom-usb: Make updating less verbose * Convert all child instance IDs when converting the parent * uefi: Allow devices to create more complete fake UEFI devices * unifying: Fix regression when recovering from failed flash * Ensure libxmlb dir exists for LGTM.com * Add C build configuration for LGTM.com * Use G_BEGIN_DECLS correctly for internal headers * standalone-installer: Fix issue found by LGTM * Use '#pragma once' to avoid a lot of boilerplate * Force LGTM to see Python 3 * fwupd: Hide firmware-packager behind meson option` * fu-common-cab: Correct handling of CAB files w/ nested directories and older libgcab * Fix a regression in using the InstanceIDs for quirk matching * thunderbolt: Convert the instance IDs as we never open the device * udev: Manally call fu_device_setup() to convert the instance IDs * fu-tool: Correct a crash caused by calling fwupdtool update * fu-tool: Don't fail if dbus is unavailable * contrib/debian: Switch to debian unstable * wacom-usb: Record the block number when failing * wacom-usb: The touch address is big endian * wacom-usb: Accept a non-binary IHEX file for the touch update * wacom-usb: Only poll when the device status is 'busy' * wacom-usb: Only reboot the device when all composite devices have been updated * wacom-usb: Fix flashing failure with latest Intuos Pro tablet * dfu: Fill holes when reading SREC files * Add fwupd_guid_from_string() to drop dep on uuid * wacom-raw: Check the InstanceID rather than GUID * Defer the InstanceID->GUID hashing until after setup * ata: Check for USB enclosures as well * Do not use efivar just to print a mixed endian GUID * Add fu_device_add_instance_id() and prefer explicit conversion * Report the DeviceInstanceIDs to `fwupdmgr get-updates` * Export some of the GUID functionality * Allow a plugin to set _ANOTHER_WRITE_REQUIRED to run more than one plugin * nvme: Add an extra check for Dell plugins to avoid false positives * ata: Add support for detecting Dell GUIDs * Fix the self tests when using glib2 >=2.59.0 * Add support to call composite prepare and cleanup using fwupdtool * uefi: Disable -Wno-address-of-packed-member * uefi: Don't unconditionally enable Werror for the EFI binary * Disable -Wno-address-of-packed-member - Changes from version 1.2.4: * Remove the autogenerated headers in the gettext files * ata: Default to the non-activation 0xE subcommand * fastboot: Use a much longer timeout as the removal delay * fu-progressbar: be more quiet when running non-interactive * fu-tool: Show UpdateMessage if applicable for install command * dfu: Simplify the SREC parser to avoid a crash with an invalid file * wacom-raw: Use the correct error codes when the panel is not supported * wacom-usb: Add some more information to the README * fu-keyring-utils: Don't fail missing PKI directory when compiled with GPG/PKCS7 * dell: Check that the flash interface command is available * wacom-usb: Fix the plugin name to allow devices to be updated * fastboot: flash the partition after downloading the file * uefi: Add a quirk to use the legacy bootmgr description * ata: Mark all devices as needing a reboot * ata: Add a new plugin to upgrade firmware on ATA/ATAPI hardware * udev-device: Add a utility function for debugging * udev-device: Set the firmware revision automatically * udev-device: Set the serial number automatically * udev-device: Fall back to non-database model and vendor values * udev-device: Fix critical warning if the device has no parent * dell-dock: Add support for a passive flow * Add support for an `UpdateMessage` and display it in tools * fu-tool: Port the `get-updates` command over * When using `directory` remote type automatically generate metadata * libfwupd: Add support for new remote type "directory" * Ensure cabinet archives always have a container checksum * Add support for a per-release source and details URL * When generating a CAB Silo use the prefix "components" * uefi: Add a trivial debugging statement to debug a UX capsule failure * uefi: Use fwup_new0() to allocate the updates table array * nitrokey: Correct Nitrokey Storage invalid firmware version read * dell-dock: Add support for flashing Thunderbolt over I2C * wacom-raw: Add a plugin to update Wacom embedded EMR and AES panels * fu-util/fu-tool: sync up reboot and shutdown behavior * dfu: Ignore the SUB ASCII value * dfu: Fix the parser to support extended segment addresses * dfu: Support ihex files with leading comments don't show an error * uefi: Correct a boot order creation bug (Fixes: gh#hughsie/fwupd#956) * uefi: Remove all variable length arrays * uefi: Fix a logic bug in fwup_search_file() * uefi: Use _cleanup_free in one more place * uefi: Do not pass required attrs to fwup_delete_variable() * uefi: Delete the old Linux-Firmware-Updater boot entry * uefi: Use the GNU-EFI BOOL type * Check if plugin changed after the device attaches or detaches * uefi: Refactor and simplify the EFI loader * Show a console warning if loading an out-of-tree plugin * UEFI: Do the UX checksum calculation in fwupd * wacom-usb: Add two more Intuos tablets * nvme: Add the needs-shutdown quirk to Phison NVMe drives * Add _NEEDS_SHUTDOWN flag for devices * Use GCC __cleanup__ features in the EFI loader * nvme: Add flag to support manually aligning the firmware to the FWUG value * nvme: Support FGUID to get the SKU GUID * nvme: Support FWUG to get the write block size * nvme: Add trivial comment to clarify address bitshifting * uefi: Do not check the BGRT status before uploading a UX capsule * dfu: Fix flashing various Jabra devices * upower: Add support for checking battery percentage * nvme: Check the return code of the admin passthru ioctl * fu-tool: Add support for an 'update' command to fwupdtool * dell-dock: Set minimum board to board 4 * dell-dock: Workaround a manufacturing bug for board level 4 * dell-dock: Wait longer for re-enumeration on TBT SKU * superio: Support IT89xx devices * fu-main: remove incompatible locale error message * Add a new plugin checklist (Fixes: gh#hughsie/fwupd#899) - Dropped obsolete patch: fwupd-bsc1130056-change-esp-os-name.patch (upstream PR: gh#hughsie/fwupd#1119 - Fixed fwupd-bsc1130056-change-shim-path.patch so that it works with the new files - Cleaned up changelog- Stop shipping polkit rules, as we have the distro specific setup in polkit-default-privs (boo#1125428).- Add fwupd-bsc1130056-change-esp-os-name.patch to change the OS directory in ESP (bsc#1130056) - Add fwupd-bsc1130056-change-shim-path.patch to set the default shim binary for openSUSE/SLE (bsc#1130056) - Link fwupd*.efi.signed to fwupd*.efi as requested by fwupd (bsc#1129466)- fwupd.spec: fix shell syntax error in %postun section (boo#1120363).- Update to version 1.2.3: * Correctly migrate the history database - Changes from version 1.2.2: * Log an error if started with an incompatible locale * Fix building with -Wl,-z,defs * ebitdo: Fix the reported version number if the daemon locale is not C.UTF-8 * Add Dell TB18DC to the known devices list * Allow replacing the last byte in the image when using 'dfu-tool replace-data' * Check the device checksum as well as the content checksum during verify * Submit the device firmware checksum and update protocol in the submitted report * Include the device checksum and update protocol in the historydb * uefi: Add the PCR0 value as the device checksum for system firmware * Add new API to get the release protocol from the metadata * Allow plugins to define support for a 'well-known' protocol * uefi: When adding headers set the header size to 4k * uefi: Append the header on capsules without headers from Linux * flashrom: Ensure the quirks database is set on the new object * uefi: Do not add devices with invalid GUIDs * Do not allow a GUID of zero * Add shared functionality for reading and writing with O_NONBLOCK * Only run attach and detach if the device is in the wrong mode * Sanitize the version if the version format has been specified * wacom-usb: Remove the DTH generation hardware as it will not work with fwupd * thunderbolt: Remove a superfluous boundary condition when verifying update * Add a plugin to update hardware that supports fastboot * Fix a regression when doing GetReleases on unsupported hardware * dfu: Require a specific USB class and subclass for DFU mode * Correctly parse format the version numbers correctly using old metadata * amt: Fix a crash if AMT returns an empty response * Check plugins set error on failure * contrib: Add a simple python3 client * installed-tests: Adjust to actually use a remote for installed tests * Add more standard USB identifier GUIDs * wacomhid: Rename to wacom-usb * Provide a way for plugins to decompress a custom archive to ram - Changes from version 1.2.1: * Remove DaemonVersionFormat=quad * Shut down the daemon after 2h of inactivity * Create a silo index to speed up GUID queries * Fix flashing the 8bitdo SF30 * Speed up fwupd startup by loading less thunderbolt firmware * Query the XbSilo when calling fu_plugin_check_supported() * Guess the version format when it is not provided * Fix a use-after-free when using valgrind and --immediate-exit * Add per-release install duration values * Fix showing the custom remote agreements * Be more explicit setting the update state * Include the os-release information in the release metadata - Changes from version 1.2.0: * ebitdo: remove SF30/SN30 pro device ids * dell-dock: Drop delayed MST callback routine * synapticsmst: Adjust EVB board handling * synapticsmst: Remove the content checking of firmware * synapticsmst: Access Board ID through memory instead In firmware images HDCP 2.2 will be enabled by default,so access to flash region will fail.` * contrib: Adjust flatpak build for moving to flathub * dell-dock: Prefer to flash VMM5331 via I2C instead of DP aux * Use HTTPS_PROXY if set * firmware-packager: Make it clearer to use * Sort the firmware sack by component priority * flatpak: Update gnu-efi to latest version * amt: Set the full device version including the BuildNum * fwupdmgr/fwupdtool: Move monitor command to fwupdtool * fwupdmgr/fwupdtool: Move firmware builder from fwupdmgr to fwupdtool * Add version format quirks for several Lenovo machines * uefi: Set the quirks on created devices * dell_dock: Use correct offset for finding version of MST * dell-dock: Add missing unlock call for MST via dell_dock plugin * Support the Intel ME version format * Port from libappstream-glib to libxmlb * Bump requirement to meson 0.46.0 * fu-main: Catch SIGTERM while update is in progress * fu-tool: Stop any running daemon over dbus before loading engine * meson: Bump dependency to 0.44 and adjust sysconfdir handling * dell-dock: If marketing name is invalid don't fail initialization * Readme Updated: Added KDE Discover as one more graphical front-end available for fwupd. * dell-dock: Correct a situation that error wasn't propagating * Don't segfault if a plugin returns FALSE from UpdateFunc with no error set * dell-dock: Use different debug strings for each device type * dell-dock: Don't use the VLA feature in the new dock * Add a plugin for an upcoming Dell USB-C dock * contrib: Add information on how to use debugging scripts * Allow setting the version format from a quirk entry * Don't use AppStream-glib for string helpers * Don't use AppStream-glib for version helpers * Don't use AppStream-glib for the GUID helpers * fu-device: Ensure that parent ID is created before creating quirked children * Update all sub-devices for a composite update * Stop showing the current release during updates in fwupdmgr * uefi: Move the TPM unlocking functionality from the Dell to UEFI plugin * Run the Dell plugin initialization after the UEFI plugin * thunderbolt-power: Fix possible linker problem * Allow firmware files to depend on versions from other devices * fu-debug: Redirect all debugging output to stderr instead of stdout * synapticsmst: Adjust panamera ESM update routine for some reported issues * fu-engine: Optionally wait for replug before updating a device * fu-device-list: Use delayed device removal when removing the tree * thunderbolt: Use replugging from the daemon * Add support for devices to show an estimated flash time * Marked some CL options for translation * ci: Run clang static analysis for Ubuntu build rather than just clang compiler * nvme: Initialize the buffer before reading the contents * contrib: Add a standalone installer creation script * rts54hid: Add support for Realtek USB devices using vendor HID commands * fu-engine: Don't show devices pending a reboot in GetUpgrades * Add FuMutex helper to make various parts of the daemon thread-safe * rts54hub: Add support for Realtek USB devices using vendor HUB commands * uefi: Check the amount of free space on the ESP * fu-tool: Import debugging options from fu-debug like fu-main * superio: Set the physical and logical IDs - Add pkgconfig(xmlb) BuildRequires: New dependency.- Add pesign-obs-integration to BuildRequires and add fwupd*.efi to BRP_PESIGN_FILES to get it signed - Add LC_IMAGES and use efivar only if %{with efi_fw_update} + Also update the version requirement of efivar - Disable Redfish and NVME plugins if %{without efi_fw_update} since those two plugins require efivar - Remove fwup from BuildRequires since fwupdate is already merged into fwupd.- Use gnu-efi only if %{with efi_fw_update}, always use pkgconfig(efivar) - Fix file list- Amend %post and %postun to install/uninstall fwupd*.efi to the EFI system partition + Also add shim to Requires for fwupdx64.efi - Mark fwupdate as obsolete + fwupdate has been merged into fwupd since fwupd 1.1.0.- fwupd is require for thunderbolt firmware update in SLE15-SP1(fate#322681)- Update to version 1.1.2: + New Features: - Add a new device flag "ignore-validation" that will override checks - Add a new plugin to enumerate EC firmware - Add a new plugin to update NVMe hardware - Add a plugin for updating using the flashrom command line tool - Allow the device list to take care of waiting for the device replug - Allow updating just one specific device from the command line - Allow upgrades using a self-signed fwupd.efi binary - Download firmware if the user specifies a URI - Include serial number in daemon device output when trusted - Notify all plugins of device removals through a new vfunc - Use boltd force power API if available + Bugfixes: - Add an install hook for classic snap - Allow forcing installation even if no AC power is applied - Allow using --force to ignore version_lowest - Always use the same HardwareIDs as Windows - Check the device state before assuming a fake DFU runtime - Copy over parent GUIDs from other plugin donors - Detect location of python3 interpreter - Do not add udev devices after a small delay - Don't fail to run if compiled without GPG/PKCS7 - Fix a segfault in fwupdtool caused by cleanup of USB plugins - Implement the systemd recommendations for offline updates - Improve performance when reading keys from the quirk database - Remove children of devices when the parent is removed - Rewrite synapticsmst to use modern error handling - Rewrite the unifying plugin to use the new daemon-provided functionality - Show a time estimate on the progressbar after an update has started- Use noun phrase for summary. Trim request for comments from description.- Update to version 1.1.1: + New Features: - Add support for the Synaptics Panamera hardware - Add validation for Alpine and Titan Ridge - Improve the Redfish plugin to actually work with real hardware + Bugfixes: - Allow different plugins to add the same device - Allow flashing unifying devices in recovery mode - Allow running synapticsmst on non-Dell hardware - Check the ESP for sanity at at startup - Do not hold hidraw devices open forever - Don't override _FORTIFY_SOURCE when building the EFI binary - Don't show passwords in fwupdmgr - Fix a potential segfault in smbios data parsing - Fix encoding the GUID into the capsule EFI variable - Fix various bugs when reading the thunderbolt version number - Reboot synapticsmst devices at the end of flash cycle - Show status messages when the daemon is initializing - Show the correct title when updating devices - Show the reasons that plugins are not run on the CLI - Use localedir in po/make-images- Run %udev_rules_update in post as package install udev rules- Update to version 1.1.0: (FATE#326702) + New Features: - Add a initial Redfish support - Add a tool to mimic the original fwupdate CLI interface - Allow devices to assign a plugin from the quirk subsystem - Change the quirk file structure to be more efficient - Merge fwupdate functionality into fwupd - Run a plugin vfunc before and after all the composite devices are updated - Support more Wacom tablets + Bugfixes: - Add release information for locked devices - Allow building with older meson - Detect the EFI system partition location at runtime - Do not use 8bitdo bootloader commands after a successful flash - Enable accesing downloaded files in flatpak and snap - Fix a potential buffer overflow when applying a DFU patch - Fix downgrading older releases to devices - Fix flashing devices that require a manual replug - Fix several small memory leaks in various places - Fix the retrieval of Redfish version - Fix unifying failure to detach when using a slow host controller - Set the Wacom device status when erasing and writing firmware - Show errors in the CLI if unable to access directory - Use the parent device name for Wacom sub-modules - Removed enable_pkcs7_when_testing_only.patch- Update to version 1.0.8: + New Features (including version 1.0.7): - Add an plugin to update some future Wacom tablets - Add 'fwupdmgr get-topology' to show logical device tree - Add support for creating a flatpak - Add support for creating a snap - Add support for Motorola S-record files - Add the Linux Foundation public GPG keys for firmware and metadata - Show a translated warning when the server is limiting downloads - Add enable-remote and disable-remote commands to fwupdmgr - Add fu_plugin_add_compile_version() for libraries to use - Allow requiring specific versions of libraries for firmware updates - If no remotes are enabled try to enable the LVFS - Show a warning with interactive prompt when enabling a remote + Bugfixes (including version 1.0.7): - Add a firmware diagnostic tool called fwupdtool - Adjust all licensing to LGPL 2.1+ - Allow installing more than one firmware using 'fwupdmgr install' - Allow specifying hwids with OR relationships - Do not call fu_plugin_init() on blacklisted plugins - Do not require libcolorhug to build - Fix a crash in libfwupd where no device ID is set - Fix a potential DoS in libdfu by limiting holes to 1MiB - Fix a segfault that sometimes occurs during cleanup of USB plugins - Fix Hardware-ID{0,1,2,12} compatibility with Microsoft - Hide devices that aren't updatable by default in fwupdmgr - Search all UEFI GUIDs when matching hardware - Stop matching Nintendo Switch Pro in the 8bitdo plugin - Check that EFI system partition is mounted before update - Disable synapticsmst remote control on failure - Don't recoldplug thunderbolt to fix a flashing failure - Fix SQL error when running 'fwupdmgr clear-offline' - Improve the update report message - Only enumerate Dell Docks if the type is known - Only run certtool if a new enough gnutls is present - Prevent a client crash if the daemon somehow sends invalid data - Reboot after scheduling using logind not systemd - Use the right encoding for the label in make-images - Added/backported enable_pkcs7_when_testing_only.patch: + needed to disable pkcs7 test during build (can be removed for fwupd >= 1.0.9)- Update hasbang in installed files from /usr/bin/env python3 to /usr/bin/python3.- Update url - Small packaging cleanup with spec-cleaner- Update to version 1.0.6: + New Features: - Add bash completion for fwupdmgr. - Add support for newest Thunderbolt chips. - Allow all functions that take device arguments to be prompted. - Allow devices to use the runtime version when in bootloader mode. - Allow overriding ESP mount point via conf file. - Delete any old fwupdate capsules and efivars when launching fwupd. - Generate Vala bindings. + Bugfixes: - Allow ctrl-d out of the prompt for devices. - Allow to create package out of provided binary. - Correct handling of unknown Thunderbolt devices. - Correctly detect new remotes that are manually copied. - Fix a crash related to when passing device to downgrade in CLI. - Fix running the self tests when no fwupd is installed. - Fix Unifying signature writing and parsing for Texas bootloader. - Only send success and failure reports to the server. - Use a CNAME to redirect to the correct CDN for metadata. - Use a longer timeout when powering back the Thunderbolt device.- Ensure library package has a dependency on main package, otherwise it won't be usable.- Update to version 1.0.5: + New Features: - Offer to reboot when processing an offline update. - Report the efivar, libsmbios and fwupdate library versions. - Report Thunderbolt safe mode and SecureBoot status. - Show the user a URL when they report a known problem. - Support split cabinet archives as produced by Windows Update. + Bugfixes: - Be more careful deleting and modifying device history. - Clarify which devices don't have upgrades. - Ensure the Thunderbolt version is xx.yy. - Fix a daemon warning when using fwupdmgr get-results. - Fix crasher with MST flashing. - Fix DFU detach with newer releases of libusb. - Include the device VID and PID when generating the device-id. - Set the RemoteId when using GetDetails. - Stop matching 8bitdo DS4 controller VID/PID. - Use help2man for dfu-tool and drop docbook dependencies. - Use ngettext for any strings with plurals. - Use the default value if ArchiveSizeMax is unspecified.- Update to version 1.0.4: + New Features: - Add D-Bus methods to get and modify the history information. - Allow the user to share firmware update success or failure. - Ask the user to refresh metadata when it is very old. - Store firmware update success and failure to a local database. + Bugfixes: - Add a device name for locked UEFI devices. - Allow each plugin to opt-in to the recoldplug action. - Fix firmware downloading using gnome-software. - Fix UX capsule reference to the one specified in efivar. - Never add two devices to the daemon with the same ID. - Rescan supported flags when refreshing metadata. - Add pkgconfig(json-glib-1.0) BuildRequires: new dependency.- Update to version 1.0.3: + New Features: - Add a new plugin to add support for CSR "Driverless DFU". - Add initial SF30/SN30 Pro support. - Support AppStream metadata with relative URLs. + Bugfixes: - Add more metadata to the user-agent string. - Block owned Dell TPM updates. - Choose the correct component from provides matches using requirements. - Do not try to parse huge compressed archive files. - Fix a double-free bug in the Udev code. - Handle Thunderbolt "native" mode. - Use the new functionality in libgcab >= 1.0 to avoid writing temp files.- Unbreak compilation on non-x86, upstream renamed options to disable plugins.- Update to version 1.0.2: + Add a plugin for the Nitrokey Storage device + Add support for the original AVR DFU protocol + Allow different plugins to claim the same device + Allow quirks to set common USB properties + Move a common plugin functionality out to a new shared object + Optionally delay the device removal for better replugging + Set environment variables to allow easy per-plugin debugging + Use a SHA1 hash for the internal DeviceID + Add quirk for AT32UC3B1256 as used in the RubberDucky + Disable the dell plugin if libsmbios fails + Don't register for USB UDev events to later ignore them + Fix a possible buffer overflow when debugging ebitdo devices + Fix critical warning when more than one remote fails to load + Fix DFU attaching AVR32 devices like the XMEGA + Ignore useless Thunderbolt device types + Refactor ColorHug into a much more modern plugin + Release the Steelseries interface if getting the version failed + Remove autoconf-isms from the meson configure options + Show a nicer error message if the requirement fails + Sort the output of GetUpgrades correctly - Changes from version 1.0.1: + Add support for HWID requirements + Add support for programming various AVR32 and XMEGA parts using DFU + Add the various DFU quirks for the Jabra Speak devices + Allow specifying the output file type for 'dfu-tool read' + Move the database of supported devices out into runtime loaded files + Support the IHEX record type 0x05 + Use help2man to generate the man page at build time + Use the new quirk infrastructure for version numbers + Catch invalid Dell dock component requests + Correctly output Intel HEX files with > 16bit offset addresses + Do not try to verify the element write if upload is unsupported + Fix a double-unref when updating any 8Bitdo device + Fix crash when enumerating with Dell dock connected but with no UEFI + Fix uploading large firmware files over DFU + Format the BCD USB revision numbers correctly + Guess the DFU transfer size if it is not specified + Include the reset timeout as wValue to fix some DFU bootloaders + Make the error message clearer when sans fonts are missing + Support devices with truncated DFU interface data + Use the correct remote-specified username and passord when using fwupdmgr + Use the correct wDetachTimeOut when writing DFU firmware + Verify devices with legacy VIDs are actually 8Bitdo controllers - Add help2man as BuildRequires.- Fix dependencies and build options for non-x86 architectures. At least FW updates for USB are arch independent, and EFI FW updates can also be applied on Aarch64.- Update to version 1.0.0: * Add the plugin documentation to the main gtk-doc * Add a waiting-for-auth daemon state * Add fwupd_remote_get_checksum() to use in client programs * Generate the LD script from the GObject Introspection data * Prevent fwupd from mounting filesystems * uefi: Do not use system-specific infomation for PCI devices * uefi: Support uploading the firmware splash image * dell: only set coldplug delay when we know we need it * dell: only run SMI to toggle host MST GPIO on systems with host MST * dell: add functionality to blacklist HW with problems * dell: only run on intended chassis * thunderbolt-power: always run after thunderbolt plugin * Allow plugins to depend on each other * Add support for SMBIOSv3 * dell: prefer to use hwids to get DMI keys and DE table * debian: remove /etc/fwupd.conf on upgrade * unifying: Use fu_plugin_check_supported() * Add fu_plugin_check_supported() * unifying: Use a device whitelist to avoid breaking devices * Fix various printing issues with the progressbar * dell: Fix a trivial whitespace issue * Do not fail to load the daemon if cached metadata is invalid * Do not store the newest release as part of the FuDevice object * Add a method to return a list of upgrades for a specific device * Move the downgrade calculation to the daemon * Make FuDevice derive from FwupdDevice rather than FwupdResult * Add a command 'clear-offline' to fwupdmgr * Merge releases where multiple remotes provide the same firmware * Remove the UniqueID property * uefi: Do not set the release version * udev: Do not match USB devices, even with a GUID set * Use the intel-wmi-thunderbolt kernel module to force power * dell: drop thunderbolt force power code * unifying: Add hardcoded summaries for peripheral kinds * Create CODE_OF_CONDUCT.md * Ensure more devices set the device summary * Add an 'Summary' property to each device * Add a human-readable title for each remote * unifying: Disable if the kernel has no CONFIG_HIDRAW support * Move deprecated symbols to a new header * Introduce an s390x cross compile target to CI * Add ModifyRemote as an easy way to enable and disable remotes like the LVFS * Do not auto-open all USB devices at startup * dfu: Use FuDeviceLocker * unifying: Use FuDeviceLocker * colorhug: Use FuDeviceLocker * ebitdo: Use FuDeviceLocker * altos: Use FuDeviceLocker * steelseries: Use FuDeviceLocker * usb: Use FuDeviceLocker * Add FuDeviceLocker to simplify device open/close lifecycles * dfu: Remove DEVO support * dfu: Remove the now-unused symtab support * Remove the ELF support from libdfu and move the code to the altos plugin * Use -Werror when building in Travis CI * Do not install the libdfu helper library * Parse the SMBIOS DMI table directly * usb: Disable the fallback USB plugin * Test for missing language translations at build time * Fix the libdfu self test failure on s390 and ppc64- Update to version 0.9.8: * Add a command 'clear-offline' to fwupdmgr * Do not fail to load the daemon if cached metadata is invalid * Fix a crash when using fu_plugin_device_add_delay() * Fix the libdfu self test failure on s390 and ppc64 * Format the BCD USB revision numbers correctly * Never fallback to an offline update from client code * Prevent fwupd from mounting filesystems * dfu: Allow flashing when the target does not specify an alt-name * dfu: Do not try to verify the element write if upload is unsupported * dfu: Fix uploading large firmware files * dfu: Include the reset timeout as wValue to fix some hardware * dfu: Set the vendor ID to the runtime USB VID * dfu: Use 0x0101 as an alias for 0x0110 * thunderbolt: move test for mock environment (gh#hughsie/fwupd#280) * udev: Do not match USB devices, even with a GUID set * uefi: Do not set the release version * unifying: Disable if the kernel has no CONFIG_HIDRAW support- Update to version 0.9.7: + 10 months worth of bugfixing, integrating more vendor specific Firmware update paths.- Update to version 0.8.1: + Delete duplicate translations (gh#hughsie/fwupd#89). + Do not hardcode docbook2man path. + Fix fwupdmgr timeout with missing pending database. + Fix compiler warnings. + Fix a crash when enumerating devices on a Dell WLD15. + dell: don't initialize libsmbios on unsupported systems. + Do not fail to start on Dell hardware. + Adjust systemd confinement restrictions. + Do not dlclose modules when running under valgrind. + Really remove the NoNewPrivileges systemd confinement. + Release fwupd 0.8.1.- Update to version 0.8.0: + Show a different error when checking for updates while on + battery power (gh#hughsie/fwupd#68). + Clarify the test in --help and man page related to offline + (gh#hughsie/fwupd#69). + libdfu: Use a heuristic for the start address if the firmware + has no DfuSe footer. + dell: Don't return the address of a stack variable. + dell: Fix a possibly-impossible-to-hit buffer overrun. + close USB devices before error returns (gh#hughsie/fwupd#73). + Make libelf support optional. + Always make sure we're getting a C99 compiler. + Fix redeclaration of polkit autocleanup functions. + Uncomment SystemdService parameter in the dbus service file + (gh#hughsie/fwupd#74). + Make all providers and plugins share a GUsbContext. + Unexport libebitdo. + Move the plugins into plugin-specific directories. + Convert the providers to plugins to simplify code and for + future features. + Add support for Logitech Unifying devices. + Add a set of vfuncs that are run before and after a device + update. + Return the pending UEFI update when not on AC power. + Move the UPower functionality to a plugin. + Fix udev plugin loading. + fix dfu plugin loading. + Disable PrivateNetwork on systemd service. + Use more restrictive settings when running under systemd. + dell: add a new method for forcing a controller to flash mode. + Add VerifyUpdate to update the device checksums server-side. + Move the Option ROM parsing to the Udev plugin. + Move the device add delay to shared code. + Add initial skeleton for Intel Thunderbolt support. + unifying: Use the actual bootloader VID/PIDs when in firmware + mode. + Allow the metadata to match a version of fwupd and the existing + fw version. + Add fwupd_result_get_device_version_bootloader(). + Fix the appstream-glib version guards. + dell: Add coldplug methods to let other plugins turn on + TBT/GPIO. + libdfu: Don't read data from some DfuSe targets. + Add the ability to run a prepare->exec->cleanup on coldplug. + Allow plugins to request that all plugins re-coldplug. + thunderbolt: Detecting new devices and add an actual device to + the daemon. + Add support for flashing the ChaosKey. + thunderbolt: add some guards around empty arrays. + dell: Adjust the coldplug preparation and cleanup sequence. + dell: Fix possible linker problem. + Revert "thunderbolt: add some guards around empty arrays". + Add fu_plugin_set_coldplug_delay() to allow hardware to + initialize if required. + altos: Add error checking when using termios. + ebitdo: Subclass FuDevice like the altos plugin. + altos: Set the flags in the init_real so they work for the + cmdline tool. + unifying: Subclass FuDevice like the altos plugin. + Include all debug messages when run with --verbose. + dell: introduce a standalone (noinst) tool to force mode + flashes. + Introduce plugin for Synaptics MST hubs. + synapticsmst: Add cascade support. + Only register the D-Bus service when all devices have been + added. + synapticsmst: Refactor away the global state. + synapticsmst: fix cascade support in the plugin. + Updates for thunderbolt plugin. + thunderbolt: Add special handling for safe mode on Dell systems + (gh#hughsie/fwupd#84). + synapticsmst: Iterate all nodes rather than hardcoding to 3. + synapticsmst: build GUID using dock type. + Add a new function fu_dell_supported to fu-dell-common. + synapticsmst: add a test suite. + synapticsmst: Fix up some trivial whitespace issues. + Fix a refcounting issue in the udev plugin. - Add rpmlintrc untill security review is resolved- Update to version 0.7.5: + Clean up PO files + Verify devices support updating in mode they are called. + Fix an assert when unlocking the dummy ESRT device + Don't create the UEFI dummy device if the unlock will happen on + next boot + dell: Match on TB16 as well + Fix a -fstack-protector-strong crash when uploading firmware + Enable the stack protection in local builds + dell: If running in test suite, don't try to get product ID + from sysfs + libfdfu: Show a warning when getting the alt-name failed + dfu: Fix listing devices using the ST reference bootloader + Show the nicely formatted target name for DfuSe devices + libdfu: Fix two possible critical warnings for corrupt USB + descriptors + libdfu: Correctly offset addresses when one zone has multiple + sectors + libdfu: Do not do GetStatus on dfuse upload + libdfu: Fix uploading from DfuSe devices + libdfu: Use the device offset when writing DfuSe firmware + libdfu: Add DfuAction enumerated value to represent a device + action + libdfu: Use an animated progress bar when performing DFU + operations + libdfu: Do not do a zero-byte download when in DfuSe mode + libdfu: Fix verification of written DfuSe firmware + libdfu: Ensure the device is open before claiming the interface + libdfu: Ensure the mode is set correctly when faking a runtime + libdfu: Re-get the quirks when the DfuDevice gets a new + GUsbDevice + libdfu: Add quirks for HydraBus as it does not have a DFU + runtime + libdfu: Match the device booloader or runtime VID and PID when + checking firmware + Add a 'replace-data' command to dfu-tool + string + libdfu: Add dfu_sector_get_zone() to get the continuous memory + zone number + libdfu: Wait for DNBUSY to be cleared when checking the DfuSe + status + libdfu: Correctly erase DfuSe devices + Enable hardening flags on more binaries + libdfu: Correctly set the element address when uploading from + DfuSe devices - Add pkgconfig(gmodule-2.0) BuildRequires: Align with what + configure checks for. - Add pkgconfig(libsmbios_c) BuildRequires: Support dell bios. + Unfortunatly, until we have fwup packaged and enabled, this will + not work. - Add disabled pkgconfig(libtbtfwu): For future thunderbolt + support.- Update to version 0.7.4: + Add a fallback for older appstream-glib releases + Write the ELF files with the correct section type + Fix libfwupd self tests when a host-provided fwupd is not + available + Add dfu_firmware_add_symbol() + Add the Altos symbol table to the DfuFirmware + Use the symtab to set the VID/PID from Altos IHEX firmware + images + Show the human-readable version in the 'dfu-tool dump' output + Allow specifying the argument to 'dfu-tool set-release' in + major.minor format. + sections + Support writing the IHEX symbol table + call + Load the symbol table from ELF firmware + Load the Altos USB descriptor from ELF files + Add DFU_CIPHER_KIND_RSA + Fix a possible crash when uploading firmware files using libdfu- Update to version 0.7.3: + build: Fix gtk-doc build when srcdir != builddir + In get-details output, display the blob filename + Ensure the update ID is set when getting local firmware details + Use a private gnupg key store + Add support for installing against multiple devices from a CAB + file + Use the correct firmware blob when installing a composite + device update + in get-details output, display update_name rather than Unknown + Device + statements + Don't make failures critical while checking versions or locked + state + Show a more detailed error when installing firmware on the + wildcard + Add Dell TPM and TB15/WD15 support via new Dell provider. + file + Allow blacklisting devices by their GUID + header file + Add XPS 9250 to Dell TPM modeswitch blacklist + Only display flashes left in results output when it gets low. + Add a small library for talking with 0bitdo hardware + Add another compile warning and fix up any build failures + Embed fwupd version in generated libfwupd and libdfu + documentation + Update fwupdmgr manpage for new commands and arguments + build: Fix gtk-doc build when srcdir != builddir + online not offline + Get the firmware version correctly from 0Bitdo gamepads + Switch to the Amazon S3 CDN for firmware metadata + Fix writing 8Bitdo device firmware + be updated + Show the vendor flashing instructions when installing + Split out the DFU file formats to separate files + Add fwupd_result_remove_device_flag() + Add FU_DEVICE_FLAG_NEEDS_BOOTLOADER + get-updates output + Allow providers to export percentage completion + Add fwupd_client_get_status() + Handle the 8Bitdo bootloader in a better way + Show a progress notification when installing firmware + Add fwupd_result_get_unique_id() + Use the SHA1 hash of the local file data as the component + origin + Use the correct define prefix for FwupdDeviceFlags + libdfu: Fix hang when parsing corrupt IHEX files + Add a set-target-size command to dfu-tool + Support the 'DEVO' cipher kind in libdfu + Add a set-address command to dfu-util + Disable the Dell specific code by default + Conditionally enable all providers based upon what's installed + Add a summary of providers that are enabled from configure + Do not use the deprecated GNOME_COMPILE_WARNINGS + Ignore devices that do not add at least one GUID + Do not attempt to add DFU devices not in runtime mode + Save the unique ID in the pending database + libdfu: Add initial ELF reading and writing support + Add dfu_firmware_format_from_string() + Normalize the DfuFirmwareFormat enums- Update to version 0.7.2: + Allow devices to have multiple assigned GUIDs + Only return updatable devices from GetDevices() + Add fu_device_get_alternate() + Allow metainfo files to match only specific revisions of + devices + Re-read flags for a device after a provider's unlock routine is + done + Test for a locked device when trying to install firmware update + Enforce allowing providers to take away flash abilities + Support returning multiple GUIDs from GetDetails + Add a GetDetailsLocal() method to eventually replace + GetDetails() + break + libdfu: Add DfuVersion enumerated values + libdfu: Show the DFU protocol version in 'dfu-tool list' + Only claim the DFU interface when required- Update to version 0.7.1: + Fix libdfu CRC check for big endian architectures + Add dfu_image_get_element_default() + Fix libdfu CRC check for big endian architectures + Fix big endian issues when reading and writing DFU and DfuSe + files + Remove non-interactive pinentry setting from fu-keyring + Set the system's DMI product name as the DisplayName for UEFI + Re-order output of get-devices to be easier to read + Make the device display name nicer + update version + Return all update descriptions newer than the installed version + Add summary and name field for Rival SteelSeries + Fix a critical warning when restarting the daemon + Add a 'supported' flag to the FuDevice + Add fwupd_client_connect() + Add a 'monitor' debugging command for fwupdmgr + Add device-added, device-removed and device-changed signals + Match the AppStream metadata after a device has been adedd + Re-match devices when the AppStream metadata is updated + Show 'Unknow Device' in fwupdmgr when a device name is not set + Set the device description when parsing local firmware files + Add support for a new device field "Flashes Left". + src/Makefile.am: reshuffle so enableable bits are only + referenced when on + Add support for a --force flag to override provider warnings- Update to version 0.7.0: + Use g_usb_context_wait_for_replug() + Run vendor plugins as required + Add a plugin for SteelSeries hardware + Add fwupd_device_flag_to_string() + Return the device flags when getting firmware details + Show device flags in 'fwupdmgr get-devices' + Add fwupd_trust_flag_to_string() + Export FwupdUpdateState in libfwupd + Export FwupdUpdateFlags in libfwupd + Add FwupdResult to libfwupd + Add a self test framework for libfwupd + Add FwupdClient to libfwupd + Use FwupdClient from libfwupd in fwupdmgr + Use libfwupd inside the daemon + Emit a FwupdClient::changed when the daemon emits this signal + Rename some of the new libfwupd API to align with the D-Bus + names + libdfu: Fix up some NULL/FALSE confusion + libfwup: Fix up some NULL/FALSE confusion + FwupdClient + Allow other checksum kinds in FwupdResult + Allow SHA-256 hashes when verifying + Show the checksum kind in the fwupdmgr output + Add Alienware to the version quirk table + Do not use /tmp for downloaded files + Add fwupd_result_has_device_flag() + Do not return updates that require AC when on battery + Connect to UPower at startup + Test that GPG key import actually was successful (or didn't + change a key already in the keyring) + Use g_auto() in FuKeyring + Return errors of the correct type when using libfwupd + Allow overridding the location of the pending database for + test suite + Allow overriding the location of the provider offline files for + test suite + Validate that the dbus system bus is available before running + libfwupd tests + Update README.md for changes that have happened in the project + Add some basic explanation of how to use fwupd with various + frontends + Split out the libdfu-devel package + Revert "Allow overridding the location of the pending database + for test suite" + Revert "Allow overriding the location of the provider offline + files for test suite" + Allow the test suite to run in %check + Generate gtk-doc documentation for libfwupd- Update to version 0.6.3: + Require AC power before scheduling some types of firmware + update + Install the hardcoded firmware AppStream file + Correct the BCD version number for DFU 1.1 + Add an unlock method for devices + Add ESRT enable method into UEFI provider. + Only read PCI OptionROM firmware when devices are manually + unlocked + Do not use deprecated API from libappstream-glib + Ignore the DFU runtime on the DW1820A + Export the attribute and quirk values in libdfu + Show ignored DFU devices in dfu-util, but not in fwupd + Allow defining update vfuncs with no runtime support + Revert "Allow defining update vfuncs with no runtime support" + Add a simple plugin infrastructure- Update to version 0.6.2: + Add 'Created' and 'Modified' properties on managed devices + Fix get-results for UEFI provider. + Support vendor-specific UEFI version encodings + Move quirks directly into a single table and file.- Update to version 0.6.1: + Only dump the profiling data when run with --verbose + Always persist ColorHug devices after replug + Do not misdetect different ColorHug devices- Update to version 0.6.0: + Add support for updating USB devices with DFU + libdfu: Add support for DfuSe firmware + libdfu: Generate gtk-doc documentation + libdfu: Don't rely on specific hardware to be present + libdfu: Move the VID:PID checks from the tool to DfuDevice + libdfu: Use a custom error domain + Use the same device identification string format as Microsoft + libdfu: Fix crash when setting a target size + libdfu: Allow setting the alternate settings in DfuSe firmware + libdfu: Add a merge command to dfu-tool + libdfu: Allow choosing a different alt-setting when downloading + libdfu: Fix a crash when setting a NULL image name + libdfu: Correctly implement auto-boot in dfu_device_download() + libdfu: Check for extra args to dfu-tool convert + libdfu: Call the progress callback when doing detach + Ignore the DFU device detach:attach when verifying + libdfu: Require a --force flag to flash wildcard firmware + Use new API available in fwup 0.5 + libdfu: Make the element address 32 bits in size + libdfu: Support the ST-specific bitCanAccelerate + libdfu: Only do a Detach notification if we're actually doing to do it + libdfu: Use the progress bar for all uploads and downloads + libdfu: Improve the output of 'dfu-util list' + libdfu: Support download and upload to ST DfuSe devices + libdfu: Fix multi-interface devices like the Neo Freerunner + libdfu: Add a pkgconfig file + libdfu: Use signals to propagate device state + libdfu: Add a context object to handle device hotplug + libdfu: Add an example showing GObject Introspection + libdfu: Do not ref DfuDevice in DfuTarget so the auto-close + logic works + Close DFU devices as soon as possible after the transfer has completed + Emit the changed signal after doing an update + Rescan the DFU device after replug to get the new version + libdfu: Add dfu_context_get_device_by_platform_id() + libdfu: Add dfu_device_get_runtime_release() + libdfu: Add dfu_device_get_display_name() + libdfu: Fix self tests after recent API change + Split out the DFU provider as a new file + libdfu: Copy the platform ID and invalidate the GUsbDevice when removed + libdfu: Accept multiple spaces after the DfuSe sector name + libdfu: Verify the GUsbDevice is set before using it + libdfu: Remove the weak pointer when destroying the DfuTarget + libdfu: Fix dfu_device_wait_for_replug() so it can work with a DfuContext + Export the AppStream ID when returning device results + Rescan the DFU device after firmware has been updated + libdfu: Handle cancellation with ctrl+c in dfu-tool + libdfu: Add a quirk to support DFU runtime-less devices + libdfu: Add an explicit 'attach' method + libdfu: Add dfu_firmware_get_image_by_name() + libdfu: Make reading and writing to targets easier to + understand + Fix compile with --disable-shared + libdfu: Display all the files shown with 'dfu-tool dump' + libdfu: Fix a few crashers found using afl + libdfu: Fix another bug discovered by the fuzzer + libdfu: Add commands to encrypt and decrypt firmware images + libdfu: Show better device errors + libdfu: Add DfuCipher which is a property on a target and a + firmware file + libdfu: Add support for the draft 'DFU Metadata Table + Specification' + libdfu: Only enumerate the DfuContext when required + libdfu: Fix several reported crashes in the inhex32 import code + Release fwupd 0.6.0- Update to version 0.5.4: + Fix compile error against fwupdate git due to dropped + functions. + Use strerror() when printing errors from libfwupdate + Use new API available in fwup 0.5 + Release fwupd 0.5.4- Update to version 0.5.3: + Avoid seeking when reading the file magic during refresh + Do not assume that the compressed XML data will be NUL + terminated + debugging + Use the correct user agent string for fwupdmgr + Release fwupd 0.5.3- Update to version 0.5.2: + Ensure D-Bus remote errors are registered at fwupdmgr startup + Show the dotted-decimal representation of the UEFI version + number + require appstream-glib 0.5.1 + not found + When the version is from the 'FW' extension do not cache the + device + Support cabinet archives files with more than one firmware + Add the update description to the GetDetails results + Add profiling data to debug slow startup times + Fix verify-update to produce components with the correct + provide values + Clear the in-memory firmware store only after parsing a valid + XML file + Release fwupd 0.5.2- Update to version 0.5.1: + Fix the error message when no devices can be updated + offline update: Use glib api for for reading symlinks + Release fwupd 0.5.1- Update to version 0.5.0: + Do not merge the existing firmware metadata with the submitted + files + Raise the dep on GLib to support and use g_autoptr() + Do not reboot if racing with the PackageKit offline update + mechanism + Release fwupd 0.5.0- Update to version 0.1.6: + Install fwupd and fwsignd into /usr/lib/$(triplet)/fwupd + instead. + Use the new secure metadata URI + Update the offline update service to invoke right command + Don't apply firmware if something else is processing the + offline update + Remove fwsignd, we have the LVFS now + Depend on appstream-glib >= 0.5.0 + Add application metadata when getting the updates list + Simplify the version properties on devices to avoid complexity + and bugs + Release fwupd 0.1.6- Update to version 0.1.5: + Allow fwupd to be autostarted by systemd + Sign the test binary with the correct key + Do not pre-convert the update description from AppStream XML + Devices with option ROM are always internal + Prefer the GUID from the firmware than the device + Allow no arguments to 'fwupdmgr verify-update' and use sane + defaults + Add the ability to remove a vendor on the LVFS site + Fix validation of written firmware + Move the verification and metadata matching phase to the daemon + Add a simple config file to store the correct LVFS download URI + Make parsing the option ROM runtime optional + Add a Raspberry Pi firmware provider + Use the AppStream 0.9 firmware specification by default + Generate the ColorHug test files at runtime + Release fwupd 0.1.5- Update to version 0.1.4: + man/Makefile.am: Add --sgml to docbook2man invocation + Make statements about storing private keys stronger. + Provide a way for clients to add new firmware metadata to the + system cache + Fix fwupd-offline-update.service + Revert "man/Makefile.am: Add --sgml to docbook2man invocation" + Add a Udev firmware provider + Extract the version string from the ROM in PCI devices + Add a 'verify' command that verifies the cryptographic hash of + device firmware + Make the ROM parsing more robust and add self tests + Get the version number out from Intel VBIOS too + Provide a way to dump the option ROM using the command line + build: gusb is required even without colorhug + remove unused variables + Do not return NULL as a gboolean + Fix Intel VBIOS detection on Dell hardware + Do not use the subsystem information when constructing the fake + GUID + Actually parse the PCI option ROM + Accept multiple files at one time when using fwupdmgr dump-rom + verify run + Add a 'verify-update' command to fwupdmgr + Fix trivial bug when parsing firmware versions + Keep hitting the hardware until it gives us enough ROM + Make the version parsing more resilient to corrupt firmware + Fix the example .inf file to reflect reality + Fix ROM PPID searching to work for all ROMs + Move the LVFS website to the fwupd project + Add the ability to create detached signatures + Allow cab files to be saved + Add a simple signing server that operates on .cab files + Automatically download metadata using fwupdmgr if required + Don't call efibootmgr after fwupdate. + Associate the contact email address directly with the vendor + key + Use the actual LVFS GPG key + Allow running fwsignd as the non-root user + metadata + Do not merge existing LVFS metadata + Do not use the file hash when storing the LVFS submitted + firmwares + Move GetUpdates to the daemon + Change the DBus method for installing firmware to 'Install' + Allow installing an offline UEFI update without --offline + Add a 'fwupdmgr update' command to update all devices to latest + versions + 'update' command + Increase the size limit of firmware to 50Mb + Only sign files when the entire file has been copied + Fallback to offline install when calling the update argument. + Reload appstream data after refreshing. + Release fwupd 0.1.4- Update to version 0.1.3: + Coldplug the devices before acquiring the well known name + Add an UNKNOWN status so we can return meaningful enum values + Run the offline actions using systemd when required + Get the firmware version from the device descriptors + Added syntax highlighting + More markup + Support OpenHardware devices using the fwupd vendor extensions + Move boolean properties on the device to a set of flags + Release fwupd 0.1.3- Update to version 0.1.2: + More markup + Fixed typos and markup for executable + Add slovak translation + Add helper code to validate public key signatures + Decompress any firmware signatures in the .cab file + Verify firmware if a detached signature is present + Show the firmware trust status when doing GetDetails() + Only allow signed firmware to be upgraded without a password + Add some guidelines for vendors to README + Small grammar fix + Extract the .cat file alongside the firmware + Release fwupd 0.1.2- Update to version fwupd_0_1_1: + Do not crash when there are no devices to return + Add a 'get-updates' command to fwupdmgr + Add and document the offline-update lifecycle + Create runtime directories if they do not exist + Create a libfwupd shared library + Export the status as an enumerated value rather than a string + Release fwupd 0.1.1- Initial package./sbin/ldconfig/sbin/ldconfigmourvedre 16819074561.7.3-150400.3.5.11.7.3-150400.3.5.1libfwupdplugin.so.5libfwupdplugin.so.5.0.0/usr/lib64/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:28662/SUSE_SLE-15-SP4_Update/89f7692e61fb502bdc3753005819faa5-fwupd.SUSE_SLE-15-SP4_Updatecpioxz5ppc64le-suse-linuxELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=144a8a293f631097fc360f9303a207187d65de68, strippedPPPPPPPPPPPPPPPP P P P P P P P P P PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP P P!P!P"P"P#P#P$P$P%P%P&P&P'P'P(P(P)P)P*P*P+P+P,P,P-P-P.P.P/P/P0P0P1P1P2P2P3P3P4P4P5P5P6P6P7P7P8P8PR.R0RR+R)R,R*R(R'R RRRR8R6R9R7R4R;Rfk0[o6ސZ8!=k>'Sw#-laôcH~ba2ԯPy}:b!n/ZIy+} bUw{? Պ0!LP՞d w÷c :E 0 |8X4ؘcXDߕysӍf~]%cyLBNҊrѨb~G*1:5?q!ބ{"(ڞ&>DcU,;6jAtoπ֩")13%jb#̀'6?c%F旒q<-%ϡxq.N=ToDw=8銬y]O|~ABܼE 9.u%\x1S0Di$N "mrM ZŶ2v+(ب߫9A4$j )WVHOe-'|){3kfylp x7\*-2O\s}HN q Y_' jqRf!l߶!e0(AC5Ɇ ֲ{зפSW)eu%&" 7:] pW=h$ h:xի78ECg3=ؾQXsIPz R  ÓwNqY[ H2 @j3~gF} 0rV~)eZ͚u .n:6/IjȚyG &HNM[7Eu֨CjSZ]vyCةXW7} n- Siu/E8tJA@h/]Pbg%FŢ&^)4=&Un)T$kT1Aaqs|5 *J0hthd/`eeIY-<h]jH}p I$s}W'4JFiM85Q6R&,CgIdP,** ٞSI*4#Fy:ĉ [~ia~O3Nq68Oϕ@o'(N ت@#rVD{0 7sIkC68܏#*Aڍ/wႛ<%81C uBP p*3 N#B+@gˬ_C2M⮆4^yΛ :*n7uکDK1Ģ"HTwmϋTy"yU} fnrt@^ucauEpC·Dۈd( ̨fN~g&աV|б(3z)8t$%!C[jfdA>pf)Cܲd_|j+@A~pqO?AlWȦ-p Vsz RkxF-=7R{?:?=jAL0RL 9s#ߓ殇k1 DSܮP#8s"C}A]G"q.Plg9r'8JaH7ۡ)6(\ILT_ezHen\ #6ąMq(@\乄յNvqQe~姓,3Q&GKPHl2u  cʤ⭡[m=RUu[1aƔ9Dc(獁pq-ΆG1 $TZ`,og_p78j96䈩AP. hU}k%O o>g2'GXB[PU鎁ɫx&h.^|' H3Rw9AUz-+Mh*@\ _n!4LmM6VLKH=LuN}̆R0 58 &\T(E~İڱ9.l睺/ׁ?<4nJDϟ(R5QFu75 K1n)O/>#<2[2DkLbQ*C'ɂ yj3F @Ҋ?@C,u&ML[ #첳WZyH-8d]8|W^ IˡoWiv8yUPѾ/GbpgP5Y&Ҽ>N5W]b>A2 p "RH~5fQpz;#VäAx"ryW#OwvGuªFf^8iH',#hDZ?WKd4f{.QS!UEL$,{u p1-d 4-|5W㹘 ! Z po%4pfaIdd?-וrNm& ͫa2ֳpW6">\cO*r\FJ}#t?`*p-L}Բvߓ3iA9 FA tUd%~=^ۥ]R٦ $O,Dq M.^ MD.odħTqk[[詚F2Pwy}qGZfKGEP.No۾gfV3bteV̘\~=Ǘ&,ݘn}e^^ֳ'd昿K^]@a菪PFp |PxcD-Ods;l3m_T~4῵8P*Ѧ±4exxda *(&iD\-k?AoUAE[LܝpS"UQF]7߷U6QbDLON2]A|ycy5(!JD5 y8XT0l?oA&oL D͘ ܀;6BabpE"Ix'~~V۞.1y߅yag#X$o'QpS}wU \ //Ns\& ]8迂V(ނ{885Yrci·#v; DI_U CLd3Mwp<^nuKA7 `Q7߯a|ޣWw_8 {ɏ PpO 2V̞0Z_5VN,ffA_>b !*'ɨ [WB!22d)/btϋi CJ*k!ƈzp5 28V\ksFD MgOP!u!2o\ #g5^n_+R)@FAYv,g_:׈HV¯>~(qJ@GYy.Ko9uʦWBJO}[̹ ^Dܥ-#/8;,F(U4BI"x&L' NeÏ롎kfcĦd![Πn`[TG ?*y¼dB߮w9B /zY vjl<;a@Tmq\-6 Y밀#9xe،$==7}U?GC% jh]s9^f#j}2[8bR\GZlupcjwiJ/)ͦ64ޫKrYs7JTQ ]=|p'Ko{$Ԋ )&faHT)GWh%jhm^w'Toz@ݒsٙ=trc3>̦%e=+No" t6FSM>v5҈B|w'ݮcH :Kl4 HvIC*۫1&CD7!e|;dvuiA`RS3$x6$"|J)`@mHDHA_aDFour~d$EHxјx 2}[ċ$O{(eE;hPJ66 jF@ZJ)0*qf^d+DU4qhkmyTGߒv͝30\2ZOk9}w ӵarG b;]_qӆahS+k\cTeJrKi CۍCȷ 1=8XTb+-%l+&ΖطB !WG\i,<& NWs~ s[08hOZF7=RZqd5AQ c<]] VrVgzIPAL]`jQ&Coh "1Pl6`ťQ}B D&oBGIi~e~0]WTҔaިlAB£9r)er4T`]Got|Щ+$]CR 1@1Yt}yJ> _n )=NLF eF"i.l3f+.M=uojU;ށ-,neMo(4AԦR\;9x-1B݊l'dxm.By`cGF%Nؖ'VHMT.ѩMaZ͡x>2 R$06/&]-Mڠ >5h.?ՕH@dՇꝸ@re <*m$ܻ{ d6.}:,3뒶EƋTʗ'MzqOh5s+d5 )Ef8$ZMR,_|de1cN1KhE8秘e>BM@>@nf ":$o CK y߃0I|KzU!m|S\oruTpIRs6iQ0')j).Ա+X|+9h0jT`0qŀ* Qsъ ǏA .aGdrƉ:=g#9q׍,یsB6f5VؐFb,[,=8jcgrU7#0'iRNJ9<C1w6 ]ps k (< [L0 f\u(uM9g}4"ӹ9cq#ke@b891T+mwtN3 ,Rq7&фS,ŎkѨ]?%,߹X~7$-ڥK`aK!2;'zYo6[>$jcm/^f&Xe]B ./5v<;Ԋ\qd|k,>Ff*]̅q CtH`XP[Tf[<$@Һ<~yQ҈89Lh^v'C̮B@LZgU[?fA'?-F9n9HJMp҂%ʔW 2k4RrDb3騕fhMRPL_>Ar=bӅ(nFSH<iuj?b䏽v釜&B]Α@\̡F$$rFXM0 QPA{Zv?R[;/Z܈F^/Qeq?M>Waӳ99L[u4h#pJitgSk)uboZ_EfrjN@[+h~d=ǦaKIr)< @uun A1A?5j[&Ŝ_R."N~z= 77yn)]K;9T A*RR\zK>fu j=+n oxH,LznJ,NL@*Zkag<lTtߢ&7<Tl@:OҵNJ[R6 =!N' \j@h7M&y0em 梳ˤ N;=v$7HU=x>:8$!sܡMdRd*ӿIfH;eP'_,bሬ?~w* Wmb14keSAs/|EAd͎Y Y5!Á3 FqW& g]aүRlb_b-`G,WW&g[] BӦ b)R*ygO%n2T*]-֠ pwt _Ɋ`WήR.;ʛĬz6M'a/}2U]Ed4}ip2GekS~emՏcc!YKsrD佃Z=~S:FDǶ~Fʏ}~ ®klXOee5 鄫#fƮ$GrLK]E?T x޳Iڋ(3'% *@gD Fյ`x(>}8r-Y8Ć6sS|쬉\I #ūDzsQz)3[P@ٮuV`O}cΩsrjm(XDמl"*f%uGaލ*wR߷}CpaRLRЦl@'7``$0cC㓪v_8t\dž3KYJ1BOPxW1@Aǜxo:GƯ"ЕΥ\Aֲݰh@BKo|(#2!.@_Hj$B.{T?uCBh[j 'xCosJF`p4k,K,㊋Ot8S*$ڵ PT}V>5`3ߩ1\܂f.-s +=Y9`|H$栦Oi8C,q5 G_Mx$(>s%At>(n^Hת-kMWp@u"VRG„)2+t*z87>C@-%[q0X߯}77ȣ8GTUpK*?_ùk1Eв iΐE'נ׬§EitK%8g# 9+ yl5T90Py֨\`g^Ng5[y'>kPD2~̣ᦜ@z6t'QhLѫs|*-UWj"ZֽF]qMzS&=;ӹ6&Qiꚩ" vPr1eb2ݗTNk׭UG9'if^<^W[ m3=Pp?D9ӗJ [`URB܍ڼq:*C)ދRNNF[|A11BWzb.fLZ y>jd qTS87j0 JɃ똪1=JČT\lqjPL#~1z׼aykqъZg$-G mݝ3VOT}%!mBy;OBpߞhd2<:@:QʀQ (:F5tk$:󖇘IU4;% Q}~hrSXWYGdo=o亻 xPeS, FUjpjxL.s Tvz!S~o,%svRS6?yM^ {k]aP %h7P%W= .f]G*,(cJ._%04oe"/arKmrEmGa/}wҷ}f5!o']FaUKCzqDSd,X 9f*_T$ty@x><}>Ġӊͫ=LWc>vr#ΫY#ϼeM@{#b­3{[;k{M{^?|AzrUd˼X>* 髟dr.\د -Hi+To= J  4.E~T!6|w_A&3+Oc~'bADI3֑-LnIrvGI ;4's6|r%_-xŏoC@^ # fqQ5qg? Hko0<`ӳfvhQk/",|OqZ~ bKiMa.3E#{I9]zRpcN!D,z>sca4T2DdT)R"9C2J]h;ׅR8MAωp, 64S:+G{QHy.贫]8RXvqh}>L%cdE& w˱;Ѕ^DPHxㅿĠړg zE9]Wsy&Sg"BQҕ +5 +lsigrnٕ_4x8Oh WG I?I+5S y{+%sO$+`NB ܐ(Z2~V݄뭁'WL՝t ɜ.[^1ëpis"Q&Sr`-Z7PӮ4EXM0^KτqX7t?8 KN5πQUy(9HHm%$=7yf?/مf0_:AaݿTT6pk3 h)+5xɟ74Kj߹`.|" |sPxJH`תrop$6Ig@Xj,>6xE±ҙO{s5աH 1fJm=u~*HU3}c3*'&6?!Rp|LK jk4wNdޯ Ȟ/|fIߤoG:$q= UtKO7JV`$=m| %GҶOuNvY'Us'#<̜*~ԲA M-L_rLuP{:4df1[e˳6stD6GWz^GZǂV`a5ètYEla¶ӪHѠE_v$O@=NUXZQxƕAgI"_@2cqG?-z;'gŌ̝!Ό>"o'@;!Uo܄vJ8݀Kyz`p-Gav"z>C`/x"N޹"0/;u7G O7KAplrmet|!I/(e#,=qEs\щ./#B@t9:w׷@L@=Hu@a=4)^yAsa;igI2*c,pVxC# :-zhgsf [I`ohA"%Vo}ڮ!ǟ/@N 9u:$ ?,"8N1' .DՈ|3 m= sjO?@`:30>e3te{~"l7Օ[V@VQb~XD I CM?2fdhíaa:x/o0ợZ9,`x %" G,|pڶ4;K~OX _'&Uuz5юͦEZ8^h8EB`CjtFZh`O30ⵍ̢?/hNYZ;a粚n* %BQE'`6.fX3* ~,AHT,`$SyT6gJ츟ڔjnn1)IV.qq*Nue7oz6-ӅO"%55Va~Ih@YME!pc5L2!,ͧ%ɴ3`AD'`.>d闒Ddؙzo%A_Xui 2nC ,Q>zw m\qӯOZ !Ntg GdЛ?z\+w,h>c1\l4 1 #E5 sC(l5CJ V?9']٩f0A&7tS(BW`F'kLFeb2IF&?}P8a E/H[0Dחo cY{t[.Să9|A)ϸj%H7_/k'$&q+aam֠F׊B+<,E<V}@ B3nC ޷-ermbˇ$T;ꝯ PD{{GH>FTX9y]Zuݱ_*EnuXǰUKt xyǤpśv݂c3ptH2?"^AC+ hI[bn]*eO菳w'\O-ޠ~#6ojS G lo FJ ~Lrj|hp؏Ku;c%S>R_YXG mzrZ Ӈ]3B6ifT[sdHkʀ[kzU0WI ;5ev_Y$KWr_W0UǐTwWTdsA<> 54w2 l&g0E[l{b[W!??DAܽޅ0Bۚ"]B||А Hۑ!Mxּ$<ՠwռWʤ aJ).*_9D/t^^DV ߵuT9B rsxnԫ!\+!$+'jz,PUޥ"ۼ?v0`s' r[ۺ4l),X N)*`@,WZB'm2D+%ba>őok9Cxz"F7؝RIĽEsDh1䪠) 3`|薊Ew ypOkFnfk6||jgn!Za5JȾx(;dkvi7Xf %8|\Pq`Uڐc}LB&4` =O9}DEO倜%+4{K¨QRAPƇ [5h6%Y?{+7],kեCǼQҁ)׆~%z8njD|)Pac(BeTA^xNQfR%֍K20g*eki'^S~~7k.5FY]Nѱv>_ΩJW]DJ<_QU0#&GnDs+Odnh3nTN[&usO0҃AJu^iVqw~7߫z25s,Pӷ`)6Zrp%@bd/N&&iAPGgMȋùqy&7hCxX$HE,cLbKh!rjc*%IW#%#m?r9{.ZZW3J 5Eln6$X춗}`UQ ܋"nJڠ~uA_q_?'iN{1q1f IM clj /*lx{LLe:r2PJiwOri!.'cT1^ ׆|UIftD泀 ua$cZg $NZ C/ya K3B"{xGnF`Žv'UXaH،V!2?x\Y+T1FGLhNLI0pmx BNúMG(JjWdy>"A$>@GAu?RKS]tFXC$I suu%ۧ&ډD'T >*:M@/αtAh0n`۝_'aavЩ"sR:EpU׵PZNQ)0W(iFpVi稭b b)]\a!нR`!@F6ҹo ̸& Ni-Kz E?c/BGzX7[.sgwwyd3󝋛@֨trOoprn F'=5PN6/Ts`kt<_ۭ@ee%~s]ʃ¿Xz ЃYSE9+/|$kN[og=4M2 ~7ւLmE?G/xܹ{L?F&j/:O,0sWJ56{D>Pih`xX54e55^w@>I7v~쿢aDv#1NvA2'/D:@.8ʛ ;EHc}+AdZw则<=L ,SFaG3LN19ϵ,^+ȕwRAdT+ 6'L]gXgM;ɱh>UG/L;~!$.MUc3((#18V/[L~wPfe\NGSV.DL>:(-srŊH@֋tC>b>?' ?vF ?ɖ:SxD9#OZ uzw^ /Na*1ؓr@1_ЪG*X}C( 3F?g7㮺q~ K+mo+60l@I$t^M.5:E_ gcfZzme߈a/׺2/et@ԹR6dUvbZ_(RMg'oU ~0.nMjY\Dsx FN^?ܑ!!W8oI?,HSֺꏾwA?#vVyo^R<~&p~'= ɳ2uB{M!wV,*(gjg{"k.3:}$MYS@!>}峓UjJ^ $]Lz])堕]\]`N{B6-h f1@^"[4X&(S tUs.^,ǁ54lj RdXknFmJ U>XsOQ#-!1W̋(.;_~:ۭ0J yKY/UYo\;#)?xfN)XIhB'Co2DVo㕗<|&`RՕ|CuD Żz .1ɟZ2V؋+wMF׮[ U/eovBl?_4ڒ:0I (7.1L/'% o՟:?yvɭ/N a)2A9LJXhѮ0 6<;9l"O2` K0hG>v ഻w[v(Sg23!<$4O5"l#F8\|Tio,PQԪnaY|J^Ik{t?eA wEy50g0XTEFvq1l5}ɒS XT<s NR g\r=d&oI.\J8S|}wH-7awȸ8y3@IX )Eʱ*ؼ"0s18"ط}XX zBFv!jrC^H.o8<88RlMeZ=5q̆?R96pgbLj`9B+V:>P|}]-1_8D W_0YQD?kUYKg"3OIV% 1 }{ih1e ] Lx[!m?-f1ԉeAZ1 ) K$bݙ]<7OCzaנvJiLJq*@+A^ghc.]|G"ؒH8G$~v~t-;@;~+N"̊."g1愕Wֵ'sBnb3u_/5JҀ@kXIZ%&ήX]xnQY ]5fW p}M=zFUѲ㖝C39 px)2I<񫙌?BBvLL[N\hPaߏ67BJhs@#6)X?۶YiO=}x wyV.DNR 5h EQhMHw -0ƵO#fAp*TȽЌ^mp"=ŕk,vf&L x[|%x_\Yj[DPG6ҳH晬^>V#]fKƂ +_U#&$~u~ 0r+vbjd OZHlCx1g\-ډodkH_z<|CuMm-S}>&v1"Z>s$*Pȴ S+$یNT@٢,[6±=xoHxATKĀTuS; 5BM `UP8Q-;tU.6DxУ-?sfz*_eyTMpT sUu/&8`]F L_Ө~~,gU<Ff~)e A3sRAR2:r4Ü< 98BoQ4Zu{HJR ȩ,Aiu@꺮46x z=[nil#c8*VS lvqѵQpJ8]jQF.+]? J;MPDϹOkE%ų }h_?Ebo6IfcgsVFl7(-soVCcZV>{_lX-XB3N:Y7vL/ͧb((;$ D[~|B $(CfLM8l?A{K{qٟ՘B8,#|"<}Q]So̓[\?K*VU0kml=nt:XT@Ǝ%~A`N5ٳ:ܗR4 fK~a m &#fB뾺[Çslۀ$8{ɡE,=wA'BY;/ z F+:DM)< ôGOc *D[nk6B@^@k>tCtau=ǭ$5G2|˫BU^]QIrOz +йSȰ_װ8K/w".!Kt++h|iAbA]E9 [PD[ 'PmobS;ӜP j?qrvR<J-cDA xIϚhȦ5.*[6mD0c:i? n/nBhĸ!F B!%svSGp<\m2i|0~4h|xȺT8g²w95G +n8rRvwh`+8+ךyi@"K͹aM qeUM9EDMRZI`G-ÙiNzHGL& xl0>7dQ`avJnSF‚Om/>0Ŏ֡@M_3o T8v٥p>x*;1P0w~ 1Jrjx0c~u$fx?˒{HCz%J2v|/[`M1#= UдYG[יR[wH D'ugws4K{Lb`Kʑǩ]%eT=zq2%MB{XvozL+u܋o3Cߘ!pP2Ҕv"s 1Ǎ+=p+ea$xuQ=?<Ͳɗ Œqԭ]l9@SO{ < (GsHn'"6/|F{jUѶUnm$4-cΞFT4 R$8[7(!j%&GG[fRgOr:5Ҷ|aJJ%rV lFgsJY2K-9 gv+|@cj W,W%[N!~0.j$NsB7~X%3fkZ9 ̴CH@D9S.,?װ-C_`d(lGJ?U|C"c~ c@,B#A48m@S;ǐ\(,6y3 VǹXry!4~{RKBg|/%~|驒Ǣ#3HMn1yaZXRhx:EY1C&3?Ug2lg-ṣ?+iUhnֆilEQrn22{R/-=ա6ȉcf#_=M.]SB^vt͜Y?Py ݫ" pB[nXuWk5nh\xV}5Z"ʞ{ߦr Čݻem$ev`*YbgLqS(IɨQ IN6y|SmYĂ:Lļ1LcnJ:O[4M M=WZ!I-. vCi$jq CNmӞ$+*X/bA'i2 $},x}4nl(d$UAH$t+zYĿ7XR9 wCZc p2jTۇroXthVG;:T6@p$ZG 6DڍDŽ"ڴU]ɲrUFƊ9w2upYBo9DAJ`?g6ٌߵ#,*RF)!<20Uv{Qd{-5+|/ybqPmkք W,GlHsЉ͍cUu_r)ad=6<cT׉z un}I+ݫCE^hWL7?(eSc$:bLKBFIn%ȓ)ُYm*Rƃ"wNA)'b|CjL1`yr1"PL5}=df1`xᑶQ\()P_]ߎ垕Ӥ턒83%BAţgʨBp 1- ZLm&'i *Br|ypfMZI@( !m; -*GZ"ޗ@VWǶVЩ kcgl>}Z1߷I, O5T 5*%3g. |k2ʘ/Y:8#Gf@h!YIv)ǃ^QWO?E1eN' /wvk#ɩ܂md`;I_&r0*^,RK}&B}nPZ.`I]v`VI2^x?Ɔ&A+!.HVS*rm"rrV_TV߫jd]l[Zg*ci:Y}}0iJ] 9J 0HSڼg7z Һ΁|*_xQh{8' wWl0 w2(ɫǿX]X{3Jvpq KJ] CJ>={Q RQÖZDRF"׊eCw >!lX2  1IFpi^(ИӦTe _;A@#)Nc ^ -eV̔ 'a!;D@·9msL6@/)c2r: cٖq@1G ڷh18C$gt@Sm=y} > 7py4mX}pN~@?dyW덃1+ X"nb^5^Nu^6EVwzb`ڄ x3kV3FTiV5/gs`v)nK_ yEH>>@7.}~GO l631` qHDzxɓgf9#Xhrrr.F ,Bit쥀 xa)W TU{89OXGO$"\lH-؈'E7ݿw5hfMM*elաWi%D..r P ;(mr6wr+ bD?ՉNNF~锧s',gG;o5uޏ_󨚖oVsJM8g^ xP\DRNSIV{f_^] :߷; [B4I_k&g t,lfyQo&.z'l:v6xռ".gf sy| & X7kqi zowv;ًCD|7is Ll(늏N~BtAR#K9@HB%W2ƳXPxJR3bƧ)no:b~e(NjfAL=fREjxW18;ǜ82ChFdk;2IvU+DX$B7P4Ά^'gv9;Me#(B03 FJJٸ_gg5ᴝŢm_ g] h^O,n큉t"14}ԎvW _;W{< %O@/K8xP I'&j7pyL@klx'VkAۂ`@\ YqRIhj<2G3)j+(1P@"d~,G'(bhG_l<2XDٿ k+騤kQFit`}" TmpMh>E=vU@֊Z]cc[ۮjS1.x⛌wQ-=1ާ>#t(wl1evhR 6! a.rɹ絛X@zlWh꥖(}R7)|mpQpoMvR34gtVnZ; e]+Mϓ ڠD>Er]X WJ(&՞&0Nx赁"3֬R'xwH†U<%?a0hO!G*9K?`xdTc w V:,W7-|^R0OV Ϣkd艡@uQMgȴE5=l5F|j,fϿvj"I郒˒fe%^~O0L9P*H27S* ;,y&0JY {1>J,:59b{s-L Sl2*h<ugkJ4P'8ço^*ڀym{;Mb+/wNRߨ@[/R?9#5ň@ˆW:玜pQH8e9u3_x'$xg #>$&x)eJ˃*OGשRF*'}SE ^= \bk~wzE4[zIM ie/-5Im:Z=w {Kj$%;.SF CDrw,ãcHgRw.j<,a']ôN:{p#YB>֪o),ɏl="KĨ+feY N~JOm-g.ʀgje[OtO#q-a&ݟd4^Y%:,PlVVΤe1N:AyACXx搫+R#[F@(aR2SztI|*JU=&!|j)8F 0gWu{MmoP J wb*\ͺYXAP65CCc7jL?6IP*VQhm(H~B{(B >)Sg)#\eAzzh~2h-qSZTzOb|S i^Xngl̵'S/mt"`r`a @mZH06>q 9)&qMѲ}⠨f 0\*AV~1vn #?c ꬘;.>[XϴƮ+K3[,8Ɠ}Ga)Cc\]/:+$)Ĝ^m7 Wb0;0{GevgW`̿t:D%6LUzq:Rdhf([ ԋoKi=oU'c`%/[_(Zhݲf_v9@Eٍ|& ?CggLgPI 7T,ckFDDxSbO@tF&>-a$f39ۈ'TBڼ]k-jIvQ,"Nr'$Ii~gY/OQIT^̻halI3~jD#hs jsp6sݖgwtp3P9XS !uR֪uT6+社m|F@tjk#XĮ]WMj9vZَL8SzQ0 (; jd&UwIQ1A/{.36uX@Dq飭߂3_@U>a\7S>,?ޫ YQQ:qƕf,4߾jIVGx$}j-&cDQ{CJHP}In.Jn=H)c;TSPz;H;UcR; _(n' Yv Ӫ!5 6;Af.u7ΕO]FdV9~XkLmLF5/WdFe\d$_:pzh]Y÷+j" E, ;w%'33aG6W`Vm0w2ѻUVwa LFD9\%(^GՕTt,HκA@ j5Y ՖV. G4:1{-&ҥtEzjEѰ'Ք\ Ο uL%QJ  x" ~!ezzn.Q"*kqFp#/kg.zu1r:lS:vܒ'q`@vepܖz K7.:Dɢ=|K3oג12CהOl^3N3D7q'4"j<+eȁyB z)<sN.t^Il;~3v#`\UT|> 4_&G-yM>F~cPW}pD0釶z]M߯y2PAt?_/jOX#~K3@XbPN0t6{ݬ'SsFVfVa(_d )W?D2M~IY8?tHHRVrDV#os[LzA%*5'Y`4:Tk. T8Tڵ H8D`$?tbL(?ÊNu{ȐV"zZ725 uoKOn8Cnjw gUXn]H¸%ƶ#dx@ !']w5{wW pr[ k&Opϊ E1,x`,){hGq o:?urN /Xɓ”m'xP1dAɆab * :\4ApQ*M7%14Brb;M&A:p IժrSHBc\6M|d 4N_i#q$i͘Gr ]@tqbN u&MkO)(zF׆C)n]/ sGn0Av6_tU" C"eF(rFBƗJx z&ESHlNFrf\ѐ(84KZ.؝`uWl)iM._52P*5ơ"XeԳNLKUv3|,S?~czNMۻ@-5JLj AC181CRS l/D?PqNfȈvU-wM待_dՃJt~qRRIjڼn /H^yjL3uGsӐ C}ATBsn<,:= zޛ'f[in,#3}h$qI\+>꺂me5m/J除\i5K@6*m֭Bfsn &BqE;8ʷ;NW/zcM[?=%*GKW*֛"gGzAOi~WځѸuRJ/,|*-A=,ɘ:4bO;O.+]Y~;+KxrmInPx-Yہ>J̤_)/ 0(BR^6K ƶS0Sb09{JJLiɩfk9Sk^r?ǵ֢ PU2>D pj  8eTr9)dցqodCD[&峚XbuԿO + y"&8nE <w6 ₣s*rh֩ݮu= ǁbIToP7=t!VVZ=o<̒D(5n485rH,)^^̆?iʸ]4( 1̑+ ӧ=aw0X!g xTfUkE MZ1L[v?HE{A=]v6Ӑx^?'KU0KJƄ=krN7H?{ θ_" czm앎:LMx ~ q9ۆwcÁ86˛ӭX*ul{$YDMK*C`E|S_S&>a wש茺gרlMan;vMݯ{3}JԐ4SX?_&\afG9GS]64X_𖿰"k3IGh!8 X bDNJ '! &ՋŔ m&}E'PZY_>i9@KuEf$_'FO.a?-=z v졹{is2@A }*OMK)KDZ.8.3o.WUǘgYԊXY>%PRgB9QP$ Y2b ʹp#OicmsoEۻsZ 1ޅm)&[*mx-shJ} R*=`ڟۥg>ޛ7M9'ON; )!8!S51lh҉kC0EZ b o7'QϪmlſַ/nu4L1ޠOhw_UegAKk1ns0RLm@fTUE(gyGL)ZiZWfK#pDfToR"Z!n”w ú.^Cj7ʒBu'j}D߼HZ ƮSm7J| u`;h6O7zXCEXln^w!k!qeS_&yl!\t C2ͫ$fW @7!xaxv wðk{gοp;]mzOp+^U?XbMa ΍cV:nk< 5Um+;7XIf.z)ְll裇*(G.Ʊ'@ \)/ مw]kQXgZ*pP?735K@w]ޞB[> h㼾:vOd`x~zLm6#/ ӕH-B&L?:wFp;9W~`ʃ<-I^0~|uPۣ3f~w>J K-`:LxCH}l/x-6 Y^K+nkUɰ8+3[.l{t2!cM+;Zxc!GxŹt;c4s xxB^V p 'e eVCTC77#tUR8b Cè2m|ۣb ͠@ǏcHB2$?Nq3Gʙ쑳b_BDYA%d t.b\8 rJ 7'$ovŽNjvGm2[>H ,AHNڅA@Ig+x, K 1TT~ #~v `vIUs^M=68SlywK39܇VȻ!!w@$1)Dq;<;joU5kVTD =K3{&jeC-bȏ`CLJ':smO6g<}i,#@ldB^g)=?Fk[CiPlv\b,#[_@Ȣ|@k,{RwS}gwzr;0>X˦:_ #Q ~ zČ]^Dw&s$ ד(LC,s MbʋH1`Hobt!@? UNhOUvQ|0s]Z[/)aw)<' _Ï6mIoC 9gU@{ Ӕt׵._ m DXXg˙`{%ahbQ(ҁ;4Ɉ '7;CW'3ƅ-SSsU M8t,^ADDA]&fCzC S%aho!BFN6){Gxϸz*tc3ITz-d'S ~K@k9qVu{C|YN20Qq^u $JGu3^=y!F7AsTQ>*~Op +^Kj2Ujy,?nsVi^:;9 qGCk4*$ ZBDۤB91V aq&jId lWL$HM&2!,×#`S3MK,D`\l5+h%rL>t:e.FS.w?D%aP, cr4gXG%s}cYU;O_[ްZf86B1}yR?_ s#6| n/\(h*}|@.M_w^g"ߤvĶ&Z$",rV\F6YI`&K`RU g uݤYTA*Kh~2{v2|i9wraDwTm1ksG1n i 6OFTŬ0=?N׼넪Fmյnµ /*9kUPO99Xs~%͙|έDka@iUOIO qCQsg_i\XmRYr#Y~ 4u~5Vl!ЪI!#NL&r*3^ I!g`EVe}(C'S4RDk@pl,e/  M [u1 a9İޱE!v?(($Ra܊Z=5]=+mzy.w달a&||f%5>^X*R' YZii ۾M ( 0Ȗ&ž2bI쎹mn27)^|x^Tۃ iBD|Rs䙺WbchL$P8iP#8^oaQQ}w .-8Tt8y[0>#mt,\i!29 JOZrJ'^# [Yzí3yV*ib eA->Vǯf, E b2.TGuÅY_톞,g3#3Q`6lvmz}TB5p Ҁ1A~[T#g~aчy*+"*{dxs|'ڭ+4%JVœw@U0?QLW>50}iX~o'X]Y6gzaN5DU厍~΋4,lRYocCfU0,r~Jw?A+͚ףD& ZwAwj$ V1bh$*~s9,J}{z^?1 T5=o!'ģ`heف+` T1kLƁ6O/2OP&!鶺 :zT53NVFI)}yrC@o!sÁF| G].B[ic-^#CIMs8+ ~вG>p^֫ pNqpGx9us쯅\p 8w0 :0wf=9DI+b%Gۧ1ڸÒZVua4s^4܎^,i sۏTDq8ѐS"{w )QRjkof{ Q"fZ}7CQI49>OQ䥤ϊL>嵊IGL湱׺`X 9Bdn\@Q9=l hO'k Au~U^bxH8^XJ,8ޓnygج +nL@ 6;@pXaG%D! @Xt./UHutR ׊(l\~>AT+KEƎO-Z'3`u iW5,IUEz++7TUq 60[-"(|,޸PvtmDq.d҆3vc@ڧxR@H qݑyluIo+74f:CuѤd?T+F4fX[,6JEw)~7"H(>͞0QԃOٱ{}3bQP].6wPh~mI *a$ѝwlW:8n@k vR8`Gn7&XVs&U,uI_[+  wnNI`VZ!fI[3\FZW\H 4NzrA Q;,Q~u]z^v3Vp! {IMNQ8]B$g/e\.㏌^ ̼<祐 'Ζ2dDf"͋҆AOV['%F MXrH~Fff {^?d`=| Ůh,n,H*&YG}U/Z j2*yGH=mTYVKoHQDY{eGf:fP"SψoS4Ze [}h/iʠ]I$}MUfI;KF&-4a9E"2WBH-xmlZ)O{,,ǓH!-gM[JtAY]ڥ% Ga@%7DvSY߉ě[ph~^ ʣaN籙?-f.dH'0˰.72,E[hA`be)-`XE-{?r.ؔ zxe@'u"Q< yF<,  M꡽fll}/[d%*AIyCuh v&7dA8 lOHړZ9b%Pc9y$J§ -8#|GhH>cPX SK0Q{z>*]iy^R*wO֔t>t( G?셶*J4ɕ29@x=:`V #?O>_ jVe<3^SU>q;.8}xl'dZA ,`1j`-bF&Ok9&">r{4+0ؑGLDDH7&W] dq , T\[B"sbbFĊ= §Ųɧ1zI.4T.5aQ似c{{97"Qp{ܢ s!w֏i .JxYIIZȑorKWLB`mokC!{ND|A›3Zэ鬰%TĀЩQ`*0y[!W82ʆ5ї)G5y'fy@lXub'y.| 5Z$&(ܔ޿\yr Ț^-#dVB &*&uP rdm K7'F{v@d{ӣAt}u6+AXd P.p;6PNjl..6nE*hPa =ߖ 2}aٕ(Yc9!wIttlhM^X P^Pg{_|74~tU:/a'HC#lOYC4f?7%>;xB<(Œ(e~Mk*фA9K_C 8(1F@l3򚰾P]_#"mX"p߀ _\\BLU;~dJT'Bℍ_F$F{}^ K3/Kw$pTU`Ah]Lt h58VmHw/ӈDHm!C#]Ԫn ̨KxF͏W{6{:B|nt`g< z%k$H^^dJ\ʖ!<%7"4?TAŧ2W) U/2TMN'sL6tVOc؍/ZTPۺQH~mk;x]f>Pi{V,(!"ߦqm>!vbӍ`}p$E5PnFj!\޻t WOaĸf@pFThkZT=:|[Oq;=CL5EDp oc9MECxB6!= pd$N>;( nz=k ">0fdjB/4پˎjfP^&c,/qI>f21'e2_X[tԹ —؛M7gaJzlpN{}p!tеG)ͻkCLlT2V^4TXym' (4"  2MP$nLjL* UΘLDVMCzfRUMGl0 (*n3)@4ѬXWl9j*`l$`wmq$;/fPg%UJ,`q"(^#ruF^{#Qn< 4U _pg $OFzGN˺=NW ( [!bn%{ kJ_(bz͝i~< %bݗf'__!&^"V_ $q'93Z<4Vyt`iR*UxGZ:x9hcDJrQr=KZn&Vx1GcR,aL^1>csHA㬰(@"ʵ_'{4PZ0R;FPOLp^4RScfA&prЏ4t֜ ή콀/U# BumO\Tp 3eMEӔݣK!ʴDL!CL,Վ(v 89Ip9,v>4Eec9Jxj!mf@[M˵X~Q 0hUOmWsyWۼ[T5JTJ~q_pfxn nm؇,:E1+ c e֌'N4#Lh\hH\R8!1`H3|N3%M:|qVHfJOΗ$k։JK{mQ Ibe?G>vd=I!C3tNu8(݊򁳷⋸ޥ&fRĭ^`a;p}0BUl-|r'_/?$ f@B#(.KߴiDm!BNU~N O(+4ޓ́7[;$@O41N%ȼR5rį n7噻XI3Py5ͮv˱Ϻ-ZMS>Kv)ޡ$iI'h8ɂ' n:ʒ%~d^Mzh6V^GqC'9y&t!^aJ?L,Jҹ@a Aŀ4z➲uT#w9T}x$Ur/]Ո27qpO3 -J鿏HJnJrljq84w+~bܻeHxJ~[<+DUe^,Nq o&MI%[͟f* SR`3(ɎYzbeXG{Paq>-36VMT\br˃yYI^o3<1II<¢9kٓUzmL&.jߦ+Q+ y_OդaHϨMՏ#=iE.)g:2 +N<фʸ,S'OکͶ7kTS˥.o)*4M<:5*'S zP$yd*f Px=]YXd%H!iVfd*Dʂt_}⶚-N !LlMZ2}ch/ZFvDsVl=3&K,pg d ?s#_ #sV"Z }}\ayZN2$Pޟ#R`XOIFjRdžy 񰔪B߯W+w4 & }< ,ޛ|6ba{WYbM=70cFT 9fZk hD33`4||Ba\f d9QIDLnXj%f' `ߤ= 7Ui]yU<J†)k_13X7/Z $pU 9)W;x#ڠ/l$) d`>VT|k8pRQ&{7vkcnm "t!uyL ³=ÌukҡawHe5K`[f 3nkIn?($ [b9"YJҋS܀ F$s%RNyx8`7./CQkqC.C(ژNEe%٨ȇs#c4_Oadavʄ[sȮ^|'oʊVscc15b!LA.TE|:08&oכZ]U Y$O_Kv7OJP7 vلI Cn5%mzˬ? -أ0pr9urEB+jITąa2 .d >kQ)v>X=wgf 4$[2KPB!O\a:(Dhc=GC(DTzhͤcSH9t!_]ZEQAo~ ge;<njt{=H?R!43w4VY X.Rb"ղf:ovؠkT3c0(֫%4p?=ۨsl2]DZn[LkJ:hpOI@z cǧ3HC<@sE i :Ԙ?ĸʧ3<͉IA&^VV'Md\ڿaCUވX(3,NѬ{^mg<= ^f\Dc7r~}Y,[d67j7 W|6  V]+nc MyD V39uxa9M }I\9OMf:/RG2h} ڀy5&+5 9asR_ &x> {brqxٴwɗ0^}xD&UNJtټѱ)߽.RD]% mQ9.,g|]xBHbfp&1s$ʔR씿4q 7$Jpi&E]6fxݫ^ ;zJQFAZtgڋVXl1nW W1T^ZD0.-a0Y0aGDK(\EV(p5Y ^u\y@@Dtb@.|"dp/dӵxQFڷ (B<ݠͧ J`¤vbR-+"$ԥ;ߘX="%3y ѓŋJdS/篊0^(,wx \9P$WхFs`;=K"(Q ;o[/F!QY~,OW2ٛ0%h?8; +dSdJ?#[}OE@qs9@|P ԉXcDQځB(e%@t _{/ <Ծxah6-(і.ʼn*BxըO+—J8J!ܒWG!۠nX{*}'-D.8R~\qOa)܋dcRؚ7_x)IKv:l,H^)S*׋矂:h?i|Pa<իљA]vwտ~)aٸ c"۝~U:BBwmo, ƽou$Oh,/9\<=?I0ߗ {'DLg6h: c!!]"ywX x*E'f bG]f歾T +Y4 q\أvR'$ XBK3@##GfS*:a"kz.N#EKpoU#hX aVV Gy{!S2'%z9|~x'FnhB =Ղ#liZ_2E~G 7̞_E]iI{צ h^D,q)3:QL'VjZ7Ucj;\@4?RV \{('ث+@X0+<9[vJIȸ2چrF? 5̫ -Mg_(XA.q\شsf>mGD"e?i?JE&Dط>~ϵy% E \ ~? kb>rFpW:cCGIjF-WϽBGJe6,3re9Xn|P :s>uw_ <'"9=4Je\FL|)y"$$lA hp1<'x<?{q"~TrnnW6k}Jk mi$4OgB?ӽ%W9fwLBXKVT0EO[#ccعC?=-}-2As%M(,2?}6=?lofɓ ? EfbmNLF 0C|i>S w@ѡ0=0zRHյS_Ѣ)8?WGJ7 wGԺj9m8e2 L2]0(|̤L`l9W@XT:4+4|ߧLdBcdJۚ4Z)4~5*2[Ԟv3R]Ӄ:i2T&}˸sTCYe87~#¥ߟ:$|`JH$d!'AzGO%OAOM7DKm-/GQņNß!jF xQ$Ka]?@":xbD ϧTgL ƫ])O,1(w(gmiVD (2(|d ! E2N8{*M< 9ٞ\aF.JxL؇Y+0+@ L@&*s^E(T+AT$HO~#Jdp_e[iJp@e;*~&GZ3{\G;8$9ًTE !?D-)G#; wqsHxCyw"TKmcLRIE,aX[Te=ZUW?gC@W&J?Mv^uUEH Z*E(h9O|]PE{_b|VYPg^Xft02z\ZB?#o!))ZQ1-JơzZLOUJM&[2W !߹ DU/֣O@@utg^S~:܃qleOĨ83{NiKYgU<=-$+ţrgi,!Y^2n-w̎QOxE=ҟK[5.>!W'WW VZw;坻l:a.*4C:J iKMԁ?rlZPYQ q ¶ xC^(n;}%w90 d4n e(.G i)FLNԦ0*23N,<hz+F%OD_,S)bdH\ZwIBx?-j G/ V{,zuОN@Qn$^"z()^o78 _4Ak/__GNjVX KԞ7aNluPvM2*ik9e(ERA(Rk@iى \ꋰ7V [GҦRJTdH8ġ޲ uVA@81cEDUWLG{ro|2󁟋ggvU8C6o Y@t<}т;ǿ؏#6H'_OJZ[64LugsY\@8$ɺ@بzMastq1LO/W\=b醠(& z*֛#g:b,/}I L5~DpJ&7>MʀEk.TW Uqpe$FX>#IQ54>^oCA9Wت.{e5 ;̸,A 8D Sa# +68CުPi`̧$H{U` DHg0[Mǫ!eӘȝEl{1XhL2S~V˚<-~x 7GQV< x;m>CMo>MWg{ɛLFN_J07 (RxnQ۔vɐ/^odر(5a6&HhH`)kNÈioԴH$;-|:x,9Ѕ@D㰶8` i|uEILxi$x6LK51y\N #^b?k>>F)Ĭ@ P%^9hQnVYeNހB%9Oq5tzGi/bͫtA ڍ$:(!ШM$=I?!zm -G2gL0#cOpƊxTJ2;mkDO_O˻_8xz2A1{7d}يEn滇T+kk%6Ic3{?P/ҔmBY V2EpaXpAGbLrs"LI=y]h h*5ǓO> "+-cȤ-y]\ZI*UYAE\ 7>*`%y*3nBԶuk1~|?CAyG V@{ !ځECH-On5FHq`:!R]Z~n@''i s6 27OKawitfXK7DC63د,\A_5ٿ ϟ)fqw&zR+;𮶵c皻dhZT&Mnf!W{wptY7r:JȐv dH.ϛm0 2'6I5XR;H)E?|?j wj0xO++nA.?5WcT*^&FJbgՀ6Dٶ˃ CNO%.i>V猻p-E^ _ר IXYӃœoj aWeaD,H4;R6f:LsHv*E+ ; e)]1tj~'e%r?0ɅחnN 0 %l/S_LY/|b< ORW/ޔzƳǥ< /w?'u,z zƮYbZޱ~ JJf+B7ڻU"{Mhx>V8X`G ~YHfӅȊ49"%6^U 5kaNK524 6rl>I%P=J{E(Fbr^"QbKVfx~ڄ6\=6B:OGJʽ_kZ1Ѣn2SWXL'5P3g/zx:zK̾M`j~ը896F`P(GF!;J[ ژ0pzij,gØ;[-aT]ī48'?'_wJ m'Ԥޘx/綽w)xfx'kF[G)3AQ9QaI2/bjf%´i=?oC| G&X1ĘN ِ#M.-"7R>!rn(gd1.W)[Y Ƈo!r]{l<7ULi@q*XJ\|˭n'a!xXoѦ|^8i3(%.ؐe,V#ն\MF 0O4`)E]9ϯi$L2nᮩy!q93zFKaw@&u̞9Er A'&A AًdϢ ?ew\Ӳ͆%D!aQqgxgGrEiv )'sx|{0QNŒ`3(dů 4%;KD;A|8"iy5YAa8Z#jr odiD@n"`cavX[4a5Ạ itPk/(ƪ\ 1E`=Rr'VSn U_|" %#T& pVS}3||28Qt{S ̷H\26ĦVڵ Yl(Y2ձ{ I [Q t rזP0ypQ)Ez@mL .1(kϮG9znؠym#ȑMvjft[ ,UP?[vZ@}u{8z;b7}M3=]tJ zL g/~/Oa6=j:RxȻ9 j9`}k?#^paO"K43i8/TEڥ|B`v G2W6@K̚9ʬ4Ub) pQpI;:;MSLXŹ< ?@Bj``N;TDof`2RR3iG0ؒȄ1lfqnNdGe2҆p]@FkiKa?Ջu\I]la%)hv5Obg7^ل=MgP:nk1ݨ;K`Z`39  #j΢ o~Ksʻ6Qf:`U&H(@ONM 0Y  oot5H*r 3d ˣL*#BN(<ձfr<ۃz]r `+H!1uWo^ .kJO+θ" KUpر[G~ G]b(J{ ׊ 9 &Rb qh46SȜ}U-zi }y Юo9*k^eӖ$x瞍U2. ng6p<=G3Iq"y͵Beusz$ROZFMG`8&@Z\Ӱf$Qe:1soqќvjuxA{TNxY5Y'E,Ga?Ʌ2y%0dZ5QBY'G$vRo/-%B&11AIux~ۿ2qxYs&ي=ϼI? ? HΞut@:Q&3ihU)5& Xxx=WzhNC&H76\?q^bBE%WqD4avØFks|-! [UOc$@dC8t YȈ0Xm.sؿAt'lX.>k,2'zb>uSYͿcyP/a:m1D1%(B\݄(5F6jKj{ۣi=+7?/tmIގkYy)vBu,D;mŠx= `2vrPObe1wbbb\!Lh<}ϒˀA.~%|\jGࡴV_eg?z&QAPJ-Ϧ$\1 xd-\uyɛY̐y" M-aݕ z8f}uId*s& Dj CW/BCTJÌA-s8@Cjp4{u .C I v;$)}OuKrDo ~b8c;&ej]Dg663ew?&ZS}f#`xR:x< 1l;ScmѦlAI`$;p$K?ޓ[{EmQAO|i_?!.86;q0yRM+788(m݆ 1A4HU)cBs줓VVN$<эQu>JxmlMY7K LY܎܊_zR:x[ُ"\w <2:pBbIJ%a"q}8(iHqIT+lIm{% koPשbi7mu1 _qR|8)j`R Ŭ_^Z57?RGL)*"Pܟ0^-h뎓 H1!@*GHrg\բ0VS0gf]ޟuX؋g>`-=ToS+rh1jf-{cG~v ,mLDg\=&cxP Lbs֜MVWx[D8C)7K(K˦\px[Q1b=..`1C{7†-4jg1ߞ`-FE %x82V OsAC1 h sӭ¢/@C7Ĉ\#}HOu:p-J9RLn|InVSs} i)BW茊R@tV-rTbWĘt`UBͯPAw=843خN*@c)w !(E?*:>>V5"bUݣm;TďKp.k(Or9[ԫ ZCkk몸PJ!ddv{8ZDeDOgҧiFs2;Y&򛬀ː~S1aXZ\gB9^xH f,O~.{~Ϳfhs:E =9b-Yj! GŔHmP c5'FaӡRJU=̽M˲Ȭ#4:շ뉞8&c2j޴W΢tJ5E& &jFtK w41 ;%_۾͈]y;QЙxg_ hFigKfԕf|y6(S&>O@Wu~ƆӾNZ3a]OfOASJ*a-,Ģf@`c9~LX{=zxL]U%3O|3y6[+ۅx9k!Ln;_Ѱ<,T.@g za P:nQSgtM)JߡFF٢l1L|w=芲g:`K:L'b+D@xof9z[gpk6M/bגFԪ?ljPOf`mIM)&t{eCn\ƠNkt]Ne3j0TǟS_#eErǾ#.B vvbK_x .ڇ%EA) \yT(e|C -0/7!C%(%y)ᦱ pH*!njP ^(H~"J@~%d԰h*nVQV_kw*ÙӑoiH琦BSUM_ّht8/F5f. w.Lfu7<<̜N J"=h8Õq~33clܑ7畞YC h m nC0Xcx@zU?՗(9+D77#!5t2J5Ln\B׸צs[qrY-jA f Ēdx8ڒk7[ґD\ēNs,$@8b_I :R\mSp |?u#)g_{S7d(I]!]*.∾B8+u!aRzh5"|xJ=EpD RB1o͑MHoY'Mv"I7{qb?%,CHhM`t6;NrT jo^]#f85`XHoKpx@5dw8ہ@f0<۠=2IUsxXiUn$V A SJ)#ck1dP5)Z;rl;5oU1y5Ա2fܒ|,bma:nFXyhvg욦sT/oV<XR*LtnG'5y wJ(閖L#dR; f]]F0+ B"g< eBd I_ߔT&a *ls滱j`g ^V۾gj\*;iz7Yxyb7eZW*+}\{ n28G>Xɞ, 8s˚AԵ6X(=Rtĕ5j彣[X|cؤcԽum'bǑ1ve)l=$Y:m3 _pY.{qkJ%.ԠruܯN}x`֯#BĚڍG\ lOV'ц]S_jJm *x]W & P7C`b=-r2RBjt0X)7d=+3?m/^ aU7oV"tLw>ez()*лzfڴ8eq7R"K_g`|;u[x8g.H2HRz`h%vh2"Q% aYKCˀZ2txJttn ;U@D 4ԺЕO0EO?}x@#+Owq}q#ZD,AW=T;H BJyjw3N1(oȵh;_r,{Gohwi8^v0OnWp*޵I.d0"G, ? %f?oG&vʮn*0d ]f?=6 |ʨ34 @ F CcJo}ֽovEbv}OQl^u&/UFvb(zi$HSNPb)KF3RG Ew;|NJh9Q4 {gЋmr ZdbwÓ;zA2f;|y迲˗[H!=.ıP$D;׍7C]'8Ϫy|@XZMxN-&> .B W$T(i4RG'|0Wl RHɩG 2I){[?u/Gb5pq%R< 7Q r,ŏ Cpyz^vO܁Q1!C7ؔ`*gdg+%dk7fZ⊎ɂ($~e%t0Q;^KUxoWTbIEꀣI=FY7af + U֭c `4敫*0/ 5Ԕ/)f8%<4NwNmX8;ԶyCW%&#i.ܸtnXvrP)ϚɕЇpz(\.V\6F#`(D+]>]V%Ꝿ^Kc3.GzZ?[\k(iŽɯty 'J/Ԑ,jK@E w5-*^شk_{Ҩc ; !mݳgpoh ӖΦ5? ֦fcoj wAq@Xhvb"{V88%J5YƱ 3`uMn86s]sOerwW3X~@zpV5U12~nR՝D -A'Cg(̆ߤ 5 q8\{,*d0 KY3+[-wwSR VU-\Pԝ1\<*aT.#s<+}kJͤg.p xmGH<U܇;OmLKIƅ$Ed4 2h3z%Fւ![`^?*fEЭ&m*(q5śs}њ߅j1%e9j K|1_S qT XaI3.+ԘPTQxRc]kg49u66q_>G-zY{xΕvd5"<*8: ܛ4l;OUx#D2-#cʁߚZq0@pM|ЊL oOlFpH'ySv;|e5nmщ퇞+Z`ڹAfn98Kx[wU iԍufuf+TJOJ'AگOT"(ujM hBo-̍ûޣr:z#L)n)OCn+PL_C\Gɢ!,H tIIkk)CM΋r8WAbb7@^z=aJ<׭#C] B6zyYp,\[wJ+? b*ܗAg!xf oH1 ?]~棪gڦm@*p8^H5u8{ hӦTA%'1Yl/k3$C( hM,os+D.2s~,^>] t]NSARZ@dЙ:pbaB\&cę9H=crB.-۲= Nȼ7 [n'v)!g`|C"sK9M> C*IIC쩝 ?:y}V$ Iq7 =)#ATZVx"XdRK |Rbk%dT&Ҥ S4投~eE4{*?8v7,J> ]u0` rJ?uuě&u&!_W|aE352u,-v]|e|yZqSEg[DT.tZ[<ɊD>S[`9jb'YeLގԄRgׯ>0[a5X\iE\JP/M?`Z4CBjKYItuϚHpr'i*)j4 U4T9$'"#2v|w:3cG|$nVξxd`Md ɦj@D%jXT+ӠnsO5M>yW'2E> d6TzHroM'cJ]#,>9V2oa.ԗ*y.X]/6UG5=I[tH|" >b ^pbVa.VhϒRx I>2m -}z26Ĉ(xa+J Nb̽mK#FhmgK$YzN}>02\w ?tS%h)ޟ@`^pnYfjG[k򂧼.ƅn;qt>%tQ.)S~#J#97wnjvOi%NI{)]x#\FE㥻A :ck U s{me#XelJ6a4$):M䆌-+5Th[ Y)Rǩd (f&S-OY<8:o4Ri$_Q5>6YBrFC'g(z|O:;J9Ln5_yF$lr'4@0K} C9O_<<7ja8YIsiF,S01jk7dἡg+r;>+BM+)y#gT4|) :y&(O i`.r̩s jڒ?(ߧzl'Ur:ugWV\lO9^@$_hSI-< [##@p/ Q%ظ|| xhs%fԐCN'_9*qqG@Vit޲ȖX?`fDa(|x 4v@FׂFwIazVIو\B$Tl,K5KZ55l: =yls(>\P6U]n!=eڬ {gj/p |h6j| WdoJRa%oM*ĝ ѡk?*W)=cpԑBڼN# gT8=UBzKCL\Bᦇ|(]{̈3BĄ>=5likR9)J!>T82}S-ƞ|<'5O2>l)ZOxxE0kם_4!qge;BLR + Y6=2\Qga|]U'VCowẓ.-8[VW-CJVdP"u0h͖"Z)IT&Rh#+Eψd''VD7&%#Bw?SU?!"odzgWao1NqKGe x72"""Bz:f4S 2ë NLk!YXl_̐_jnYkLCWT.N սc:xlX@XAf4DۼұE9N 'Xs&1'YR6^pwinYp?Y?@XfP .Fh6YLt؃TURQ"䄜_Vnx %Sq C3֯QS_۔ ~!LIdG{T@G ~q ['g O͠!_ 0נf!=J:mZ"f8L &^e|QjhWH`WM勧P۾9{gF&tHRYiJ"z),?d9†,%Hd(wvh#LV,xhϋcWr0LG|)0"I8y4;H,Boڤs}`mouhejU\0`[ 14Xŋ6zM ā nƌv OH&g"j#>X 0֧35ZuK/V-nNer&ITބƥ=|R[Z[m50g+V[3Z SgX6AXQ@o QU_\K4؄x壢dɃ{MW1 9 8/}@[`Ѫ6}՜awhEZkw3 zZ^l/Dk)cp %3sc[ɢf! h$9^!j!u]6=p9Anc۶Uc>9يט Hwz(Pוk7=?wpa _]0 "WxIbb{"OE nPb|YJoH&9ܠvbdpsͥGMҊd9IuH?(NJvNN8^zwwW@ͷ|MKH;Cp%%g9@ŝmGm4^ǯWިR " ז9W[3##ɄaySܘ@?rzL|SK{fj8I (^nI|^3n&<6/sk{G8RYKxvKo,K GMj;!7 **fHNƚULCW!.5:{䖑 ʱhB ?1)n V.7{:_y E &Y{,xxаx8b؁-@Q#T A_C{yOIOX,{>f=7ɷo kc|@@:zV2['k8~B0^.?Sn o>D{oQEO(nx7DI 0")l6F^0 2(b 0G8BKQdo `%RqĨ GŠ# Xm+<º@ 0_a 0cFQƛJ[,Դ"k?Z^$6˧Je3ƱUײNt6f\Oߥlc#fN҂'W:SmK+6U0/u eh,du: _|ROG%gzTıJmƢa ࡫y1)H |}E!@lKJFNTZ|؀㋜WTopS͚(]4\/?mSevNY0f.DJpHUs 'FXE,smạ_AKЛkZ+k a*j沒T0,-\7HD%gV-6痒[VϜ@}tsHhJ€ ;Ƌd1LhQX8 #gH yu=e2?!#P!Cf'Yct8K<#(!hвa{G4ϳgDc#}vOGh*K 0?a:\6͓2Ҡ@?e?X'( T͙Ygx 'x6:LTc.U[U= }-|:HL5`P %JRT{uG^x:޶Ƒs$eOD)σ1}9gjWB ¦ͮ|Z +pi#{ ͮa!=G([\?f kihrVS(-I@"Yv \Du덈AS\ ]%,*a7u͈*)!k|k SV;IhDMCt{xJQ%!twD];)n&@\U4rϳ/.Y?7 4Ա*}e˅ϡeק+[L-s@b.QKTߩTYrκ S I^N\r/B6Q , FUInT/@Fg2+ wψĊ4kqHexлqF@^Tۈ"e B lb[kYd\ȍUnm䡙'x /_\zW~N g0+c*{v(ENGlQ=w{^2#.p,CG%Ō{FS{w~E#˰\r Q t R  "Xw̖>xR<.n>>C_pb2HXD|Op炨ӂ:L9Gv1**Cm\[$| jpzA]_>ATH)jhۨDz'ֱW' Ui[aK$VBI bߨ'KĺW(SgↄDj2w4YEXo~?*K'w3[wDb-鬦xmI4ݢy`QE70Sn}8m݁!R` ۄ ܞ(T Q*wWPЛKهg/<>- 1ϝĊz_WBPzw<R iKl<-4ټ2MKj r{kT:I U(B*=OJH6t5Gd S.q: )eҩZta$ݞd][B'1O{ߕ$܍'8I/OCC:g'Wo+ ,}VfbcNWlGư٨6c7TJ DL&.4U_@% v,Ty͠xHqB!j66Zs͕OfQ/)Z_D>XIըbǒmd=N0p<_j!nMެvSzhL9{mtcֵ>/ *Bzeq𧩔y!G*~pg{?d,E. mV\t $o*zmwdҪ^(W7Zyl>̂3۲:a!DBPI@vPi;6}4:P̷y.@cQHFhImPQFj֢m*BDfm9;`f| rjnISSW$ 7YJ;.Ir+jSSEw**MU<<v3D_fm :OMHBBeb]/cCsWONWfX"q}tW?8sY?BSVbS.h[1 Ɓ|+.pIJtV+1;ڤu{P9Nn[ A痌Ӂ87QboJrXt櫯px(D:ބ29`%ڼ2M}^,uIk9Qldtm2zzH6]}xdmc(ޛdfpG., vmA|)$1 QBS"n_Y}3⦉ckJʼH[{SFl"T30_l!.t4PG +D*bT{-ۣ@%8 KyK>D5AVUS$r R#bRM`Ns^n@ll}?=!buYPHu@{ o;,!k%(yu2' %9D-t9 %4m(6ie8YgH9Y{Rw 5Njն tsx!9`D!1=K.H^w˟1R L0*u;|ZZMH~7 H^bԶ~t6XS4f=ʶ$ϙ2c~5HhrS2a\_/?D|5Q91~Im+\{ ;0]َ Kst5JhKlEP!\뵃wNyۢ1d 4جtwD6[8<}00LQlY`6+2/t5~ O2Am4m;3#ndH/t]h?v jBq|=%H }(Gx]Z<2 YGxnF"[1bD(}=prig'u=L6Yc*yCA?.2Ft/N `ܖcVHtqp @ {iP㲑i8-+Qetl{QzBW |׌k{~Fޥ⡡8;aޒ f 72mSF 5x$l"-oZ2 gE3 Wڦ7;JU~sbl09ë_x wnyP;96=NkڡbatY< j/N dJS@NC7 9:14y,MHT[ķK*P2A1[+N'4L10 wQwQIy ! I7*a1 '_ťT>y -TTJ4iy(܂k&T[/!D_錙\FW8o):}RYřVfuT4^1TVvF[ŵ-M;xN#F+LvJKrhŮWYt|:=kZr ogwI%ԽՉW 7*x 1RG&ī$2J'zD7vH@56?Q;+in s;wRM4֞9܃ 7ؕo!6JeMƛʎ;"Wm !|/\&\ Q/u3E9*4cQ1xͅD3}t ;Chՠ/fGH:t0[ f+amӁ|qz= =)e{f*|@gXKƠpEخ2W#d鮭K-j\* yueD5Q,Kj-7gOLPIws29n DkɴiG*byj#5U ἨWO4P5Zeat+?hl`LY)0@O g/:YrMmޤϿ.{jVO.un p6Iye\\L)d[Vѐг1 ,UʉxFPlh6S8DNPaC!Q/~$; jJ>Cg\K9GE;st'Xb`-o+jUqPMO" T`&ykxLY z`fANleO?Y/gŎt~;'t$-%8 ac~l~ %ǽ=žN=gzJP^4 \![) ԑN/V:6cc, WAԌ-dLLF 56q@S J2]UWCc=@d"&sAӑT}.KM fn(@aAyܽtu~S8/\2W4\Zɕ\dP*7Z1Ʋ6AZU֔[&hղ- MJ׽99cFf6J^)4wI䆠ՋQlXwbE,3ohnLyMgjgwȬ*U/fo'Vx<aJfQ-R.qѩQzÎ(2QIm/r|\ꈓnYA3 7 cy.b!,Ӹ .?7KS]ܫa^f#tWCi[Hɽ>{PhjSt!| =Ẅ́2`MTPI(Nn L< L]2 CTw"C`J*瘆Ǯ@6.k#M[A$7YCbd>0pc.H7>.Vr.n)q^̥Pm\4AZbw6 ^3˿.fܲh-QSά@ Fzɺx ;`鑜 3s}-Jm4Uvqa[l/i-;OO&TqR3C3j^A~ >Pŋ::{H ~V'37屾f : vG{{VbT, s*/r2nD61Ǐߘ)ٰ?%GS'i>/z#e8sjThL6=icY18cV{`?ظ82_|VРښ pAtVG=\@]ao7RR4F?7t2E¾kAEb}76E ƚ"'wa2P 'RIHѡh|s:5 UVFaa831rdqcPzߏ]̓X&à]}n?1;a"#3;Zx^gF3S@pBN/]pvzb}~J$36H66kq_]+K{UpJ}IQ;Qy/;*gWo @:r''[ EjKX{%.vHqp39_ն"5Щ굲%ʺk]l"atR@pPIŧ^hL>\9">b9"073-23@/ho\6\?fnR'+Ύi392 SN=2=P&^:`zK'*Y Ή>0<%gy}k?xsW/Fô8-oUU!47@_rtnŷ{drQuce!EEpY-?ϼL9gI LbAL2y` E5 #Tf [6"@Oo Ma_C7U!6&'R̄EM@vg pɧ*zgo_]t(#RVZ\`'qq`$[d??Cw f7 Gw-\Ff?TFf]J2dIrl菃2xѬyHՆv'Xo=sd4K8fEϘQ/v!Γh2*j9d/3C _4ĠZW K8xGkCUXmL,HG\mgLLxr!:pq,̳і N]>"{ɿYWCmڲ3eO_9.iDR/jdAs\ W]86MFEXFiC ]) ;, < *@y\ Q+끰N,D{r;Q͜m;K"%u Iu[Q7J,l0(g"sc@p'Cc;1lWw^^OFY[;9..kh`w@wO D퍀$,%$/HMKfGG~m;VPMa(`u(S 37IyEI]$0YεpfHX$ ;S PJG@L >pQ5p,^&Jő&\`!8GJRR{AvtjKY 5n@ ܹFꊛ",d" rzC1`֏Ec}mvMW1g9R+;`;G9&%Vl&S͇0ÀMOUj, ƍ(>+(GpVvv T>T(@דNAW2Yݔ`x(*,{>w6eRpSan7XM~$0Uʹ,0sjѰFr|ٔ#NHUa E N jd, Z5Y31 o? mi6I.i鹝&ߠ|BY)0tž/P!ߊ-Lt;6:VT|(z OT{ұ.p|iBiZo.?x#xި +E-t 8b֜RqYv$dlh=r>N ^[V9;Ƨ귵VG,˯+>l)AKcv\^^HߋY,V%i]k-NQ ̼ANO -;wX!TSHdjQ/+r#`G"Ko9`#O{L}>x'& Uu5ҝ=]W=1 ׎ &͢}%Ή)٢qL{u{% U;u˫i^8WسEi])ctwͺQ&?Z_׽ݶ)1 ;s,R &@/6 :x\"?>OaDxTZY$8f|p5Mu .9:8 n?p6ЉB O+TsKȷ:1Z(ݏ&ȶE:ՓSЀuc5dJvӴ1i qЭZ!N:ŴO[UH]l1k_p+" E5jk@8V* >A7/ /l1 )(Yޯ"]HCT|  cdu;"ɄpS ȣcR 6U1j!V| kdg0\֜ΌTgt8{\v Xn5Ӗ.!{:S-ٶ ??hP+E oWc7sW%T6>lwxjkG[k yPR+ҏEp`ڜUjglTԬf ص4 zx~#ZvG^-ƑMa 44 c36T ѫ@%aLT%~mJ ;O=\)8jJ3'h_:yMeW֚eQ*OUndTe+I̷bCEdJ4$ OHCGބ!@v}w`l4"Rݽ2I󮕱X}iS-x_ <@h)nrj?ӬFhU#[8Ja1Y\<Q@^XyΓb0X;=3,F@+ZN "1}SJf~nO о?)r;Ս?! xtHg; rMGԚ>쪕J‡&}x+R$k[l1{WULh@T)B.}'&$^tPq.LJ\Їddsa@[jȕ_-41ܕip O7Jd4TLZɌ b9&WBOWEZL:[acl$ǰ~¢?x]ws~S))\̋^ay)Ԇ+v x0.׷IO|jMưE҉$] ?T` 6)i“"iXwf J6Y {gߣUK FOprE E5pйG1v!!$N$Awo4 %JN ^+: ԃJ:V ~ױcd /=u>' ֈi@\;v́=BćL} /iW ר`7~+)ݍVAJJOZ>lʖ[-Nh l\ioP-rIQyFHS8 ecTUՈAUC`E_tiC\;擑W@8 7Pތtk6cpdsmFu 4/vQG0BgS2bZ+cFO6 0 PY 2DY~"} "q8UIK#b=cXJpI< lR%RdL*.p#$#B8q'pCa%-gw)xpyO1E҉Ը0(Ȼ);>1,nmh1͋,W'=BnJk<}LAir(8_?oh!ԱX=N*ٞH]qTgYLs\}P6"TwmvT"E3YM\4d[ 2ɹwڣbrL7X=}UbmdFU~IS4Pўz3R שÐI#*ZDpȶ=m9]=FM/p?gA푖q;+ʉʵJDڢ1=K聆ƉK+i&mlZݫ|lu)|Jr8L|0uEzVwv? kDbh`GVdSqm(qC] kAxYX '-JiwvԍfH);+; 0P@ו, RicetMjVj5B8Luƕi5!haCD[}pD[ W>w}Ƨ, %.QݑLNaW*d} :Tmlqi. a lxQ p2#E5;-RQouSA_B>/s3WKNO/!S K䋷,vmlaf Gzz>~]-蘯矓N\$mr7CF"poa8m 5 QyfAyU@Hũ'z H#)\+̕n:Yaܘjfݜ%˼踋/$[yg^Ti|xl,Q&l<~ǤwԽdtcX\IklA $i Ykt$ORw#r\*8x#lUÈ 9:;TrGg xX|u] U,Y\Qj7uRNxmOI>P(`G"F;V1Qʖww"b$̕cN|J كfؗ&/Y(~r*ኢx8R`YZ?P9kt0W`]d^gl )Gg6vw7xc~ 7KT{1#xoa1>=MS >\sw4K$ ioٵwj yQ(W992F)OF?>j? +"2y&D(h rzm^Bv#0 *+vfNzCߡ:ɨV:-(Iqms}ʢ<+%yg.un,hq?&k Ip;.VI]@w%sZIx>zAІn|]ŻEfĪח#,Y7AWUqrOzX$]u h>$-WzU1#9=Z.MD45a؏;,lWpGGFy_ ~"3P@= nW>D*xHc8,Hk AҲ<)kzcfER 2?1}Nueu)\&0op`3"}`~_I9Y=)]LCPfp$vCw '%/\tJC>K ?qq}bB u4UM☽\/Uȴ!{x\BjGYʞ)Z!z兙hwȢƀTǩia)ڀg) JayfXgsQǾ${/zov` 0T9ycu~s}s{LV06OC0QR 3錈OϨ8jUv%bQ). Lk 1H<OL~4Ő"QF_/8ZT~&,u5}u3؀ZKаa&>яH7;c*=nMLb3 ǥu4-\g9"ɔAV|S/fNHٗ/it'SuT%PFn}\zRZ!2z_WJTX2eSY&5A¤KAϬ%Er5؆VQHJg}S&( sZ B*g2-R>LxVgG{ =nu\qmt7QFهdtS(Gtc' AK7v-@hv~,9K@ʥ_PI(kTA!inYx|Q^eOӤnkvִ5M%ݺ>ycX[s\P_NlS~w$"ȇ E@Sdԟ 4&:CfdzMKd~G^ŰD16OvΫXu1]cN|xOj&UimA%;>&g`K' FūuΤG Oo}PHy&_Ew~pJ\ALZk{Ok l%aF)5z%R A9cZWH&~h1P{AI0ܛݒ'qS1v,7}6 jL^%IA;w[-fu2D:vaN!|Xg q>c XS~x52F/t]{{t %X^Ayze=tm X#:"[@D$@4NNQ# C6{r8I=ǗBܳ%&NuZp 'Ôժ;s{L1;uy0MYhD ,y@{KI; EސLwYPEbM: l B}-/H5e Pq%фCtE ׃.bQޝ6ywZqs+"Dgm >-!²1oP%R!av@YM/)0OJF r) uQEAeE |;;!80x@?m0XM?9 핽D%o q~zY^ P`|yȍ F j*[!ȍ"&}w9k4G=B~h[iLj;Y |>%0SJk^JCe=JeyTGǑYؽ _#*j&yu@=2i(8]<]SzDr1GX _~ɜaoE3_.v__GQHCN)e ^X2;Z9%xd~uDg u.eAza嚻c\V5ʘ)DfTildd*yH5+DJvo]Q-o^GOoNe#@S3c@{;+xo{XaR:(QB/ qnQe.wb;7{^`zqZܩcҔXY]XY@(3--V7L*qLћ /TkE$zd Z,QN=ok6q ^@˓(؜A>q)l$uǰG=Ȇ/)#S 8XR=vUC8\"MX׫W| F8i] DceSĠըt7AoKò<w|(6kʢBؗz \%HSS$$'gve#I/ D5mJ$inpe cЦ0#V yc]?JVhESƩJ@&BFER>-CIhʱ[ROt`!`#_f66+Nz[1i%i䁲imaOR3%`(ket np'xܔw85{3E凉sJ2xF;1˦} ~t x՝'s/ .Č`'JH.P"~i$M+z/kTUǵdО:"++ܻPl::.58l=q1zBh"7lu'3S53Y-}g6ZF EPmtګ >.f C?RwbZ,9HHN>m468bX.[zE(]9Dypf S\Ч,=k9Fu^ ^զ+hjmv⓴DzMЫ;+@}P`4ױWYa©?یp0]m@kP5ɹ:#-a˼Ҩ]A핆{6ߐKsrxqY6KUS@ !L#!n>vc}Xi{#b3s d~d]JO3Sp-ct7PCMEM'914$फY Ehf}$p1ĥyߧz-j : -""B\ZM8ppx!ކXgiZh¶B$ux+ɂB)7"pBfTb3Nˣvо8[H_mw 8 X,s]/Hщ_'l >Q: ?\O::18q;9< &? @F6q 5/-y9]P\^v ! mN'w~CX6f4d60[4h8Kڒ1{fs|<e8hQWN+[Q<7 svr1W3cK^?ea[7o! Ƃ"NheE)lj'TgMY]%"}aK2K/Fk!^`Լ9d P3ŀoqya}ffwE[->8,)v ?>ڮWs?b;d%D nRwz, 7{.a@s mE|se1jA4[(/9OZهC2T0Ai~I+ImvbU'fDgeYgf9'Ȕf4Rs .sup2XQ jT`㝏 C8Tlv "1Wsn4+*x0 љڋun< Y/9-6vIJgY6vLR0V1O;4b? =l9vжFus{ɘ(!KӔ:oQ3m8~x_&q6 J1ڊ/o㉛, e"02sU M&ln?wC䡑'9/E쑳A}o*r`<}{Zi}psY{(ꢦH\ł]_N*?DU 25Fz[MULhYXMoCha'FzZ{h8Az܄z_u`߁T}iVZ i#1mc^A˙^NwFEeoI<%j_nnRT$G؞s-hd83\\QWd:*o_Yl㟸yD{,ڻYq5@RNE.EyT3ո$-iw5v AQXG}hbFkY;TTHyrFsSd/Xzu&NVm@XN0 \߆T!ΒJ94$sճNX Ymʞio_uXdJI͢3n^ .]? EnD={_f@oG[ wG4/HFu{ orޯ,we}?hwm]god f첓ᅴÑ;U%}Y] C>eW.rTtv+k0\:fKJ;{_Y,CS:`OUMT|HT;|R&@/HQ\`__܄_5'jWѐCQ2j¯ֺ2bʉ'D"ַߤ1׋EQv0OS6'* QZffg`9I-ꦪS0h'߁ԒV̒{S1-'c!vY+x+%;jS79XztSr}ǥsX9Ҳ*zSY nެP`W DC9Z'A2~/7MW˕:s"l ZG[>wܽ+@?L@]v'Fyhg~@| C.b3ʭa7@G7nkwBqV+!d/׊o͠x2"T/ؑ%`;Uj&,[ ^ 5`+zyQU,Ulv+zq̕beg.: Jr|Q [b,˼m7Yk\GThqJ] L@nϤHwY?Y*h3u\p5@MEo]k3efl<Ӻ3hfE.9q%OL1X#I,]-q.r {c0اɋu=K38M]ׅ%$d}d %2EI v4eI"^u[O(T6 Kb|L̼0+)P#i4|:#5bHT@hfW vC5m VVC\gM=2,V,iΉ³L ⁐ڰb|[_GNml-0zqs8QU0Iywdԫ5'g! 1sw!D9Zr Pb e%\ 2> Guρ߶xP#wP+&F'kqpf M3d8{/\4G1`/gNe)ˡʧt $\~әV96hW)Et@2Ri,jH 3a A 3 % ui ~tByI^2vROrB^c&9ov~C)五 w 'yQcolu@gl'R/yxH7Y%$Mm↝/Yp!;ͩ&j)S4hV;=xUEiwE$ȸb>_$CZImmfHB]W+d4 @fŴyc9(ǐz@kJ6l/OYA.Cc@o۳.^7 𢹹t3Xc. wC?OIkj,PJtmf\FfуRdnS0H!:>C dz䢶BEmo{Q-dia2UӋH!BCs>ɍݦ&U0¹aO٥ y< Zc\a=Ag7K刃3WjhAA8Yy!V o;/&Sq x#dX,-& gx"\:PYe8>3Eqn؛e,UI#ߎ$R? V&2l 뱊3 cPW7FGLp+?}3!)mL&!YЌ~qV^T[J}]w;[E!9:x A@f&XbJʰ۸p;rb#"ed¡V<1Jp4sZb dH{,1Gjb@B]m_h̥}m衊\.剃ˤ$G)AŇk?D%p] 6W|(?Dus} 66*gȀEYO| m G6wjF8Cۉ:}=>./g.7ꪒ! -nn;=09f]٣p5y0k0d1^]QGͥ`ln} 05쫯yL;+kw4~[3mySk\e , P Ar஁]kF۟d뾏o`pRMtz:DizC[9b~TKBP𢵧z _7Z)lYFz-H3/zh+Όiֶ є:iR('1d* @SWv,7 /!ش%[q*N /sW:ޣD$ۥ$7f4 8r;xXX~38KV(}ˏg03mLa寛d`_}S> 3i1 vƣ5?!j}v&"PQ%}#<|T57͠a{gA>\cq7BwK Ə8Nly]l"%x,ݵl,&N n4*0esve a+fAT37CU=Q6pˀɉ=xc]6%DgZ^Ve$Rږ1$i_0mGQGw> |0,n ?f֤t?DOX{D8sKqADt' Be^.v<\ǐy2W ],b*IW !Rc(>Zs\7*Ikt+zsO+b$3Y(]M/qrWIoIr}N&hc< صq QtP*pVoF?֍@XYk \3}|'Xǣu$@j5CULDYgcW,U)&uՄ/ l4UqXUrt`jY` mFrIpAzK!); 1(@W8D:^{>'8MrMU?W|#*+Di91G=pB֊aMm1Bvdr |6].W~|45 Inh7[GNWn;i2t4? !y6U<HY|ݡc1l;u ̰lk+?VVLLm}N* ROi.6{1C8Oݷwa?Ll~V]߁_ Ns2p29˃βU+N.~PN.՟}p #< f7 (,\,O)>Ejj^$^lnn*j+G45O&ZAw8+>R)z#zk.?MK| J//'1?KBMIiИxp "v0 5[/`ݹa8ʨYDx 光Ҳ*"8&Fb.D{uYo ނ){,XiUv8=L,Re @ÞopuT`.a _!mS+>i;L!{V- y<zRu饧F G^ys㷆y*kZ/-2U9*67:Lg)ƻb<:p: *Ef5hu@àseL>'[뫳 NJ`V;hI!5i]^Ilo $6[vyNROB7)zˌU*m}`C7b/Xgdz| ,65ة4xv(:[1H>oT1K%amMWYo#Y8Cqyěŀ{;@:"m9=-*M"Ds]!q9fmp:ű)Y\4!]5'4dwJa<,~ ))ݼ%Y-6Ln W{ZO%8(6x'DE>' ֕XN(&G[i{w9lQVdF=MD R rwnn;p(w(%1īON$S9V]?eFop@Yf]+_,^?3y@[0OdxҎSw #/mFI c:2DЪ%~sM,bdݭǽL!!{2'Kju>*-x(GJP|X>+$]ioN+id7Cc8!uQ"If C JClTYi?vˏ{{EҨf_ڜ7K..9~R#)`Tffj2cg I& t⭌=0D $,r=~e]b sV~C,B[ԓ]du3* u_#8>s&8&Vp>$e4C5q\+Z*nQ>rq8f>vg{l=?p2r`%O{X0p)?CEŞI0Xxn }~Ro? c`I(79NG!U$I3ݟԜ %9wlP6l۴"`lH$GO+(7YP>ampfKV*0mZĹtsdptzf{oa^S1Өq0|'s =&)-dzHi=/ /f@+( ńxJQW?7?(y?.rKmM7#`)kB:i k|p5ZeU&Bе8*ʔY>ܹ}Ef!@Ƕ穇GFwp:ıRBZ߄T5Rf5s*ҳnnأo-5pGm>ZmΡ+}dʍFc9~G[PUMsar\K/DGEhFk3Pi!~!w"~T}QTDpoTz܆mX JfUp-taK% u.8T7)0/n{B. \B+Eσ!CyD`+ )oax-Ug!aP }2> СY!^8罕iK)۶g;2U6MrD',J8= Z12U0{ee#Br1DSs׬LkuO-9ǼNڪ6>cSwaѰ$kZ.}g9R "s M@*>֣:s=6W%pSOxʱe~xKPH< B#{B,i:KpaK Y&3[ܕߣZ~F1ߋ,詟{i)0^:6s1)1 ЖcPt{)i K)5^ _\k9LbFJCۼK0TEhrٸ3x /& {Lp5uFQŅ`6E(cΖG7{ú(yB34!ߦ>&l)UրsM*qY͐^$J-O䯗yLJdqQc|aGb`cW\ wC]=lI ㇣1jEM7Wiqm6"u)e-WrtkwElhdq[r^ Bfoí9G0l O|BKmӈyۄg@0=}UcMO""Ż 3wjƎ6993| K_Cb>o SD[#Nr%G7n%` \Ќ77xז/pOzEYHLh#j[W4&\ 2t)bjuF/"'xb%dY8_>6o| _F`%Fjs )LDC 6rI7HcY1xf'v_w¦4OTq,f6Ԁ8EdBS2Їxpbp>:0fLRw",²Vcɖ\ȀϫvZ}y6k෸w,B8S',ǾvlmcV9gB_JlՍhn@VJ̆[M1N88v,# Bs:6. EW?V:hD} _F2Q1l4x^ozSag>Fo♊gQ+e? u=ɑf, ]ܥOh \^-\ەu p3#^c ]:. (zvUաY>'pkpbTt /4O9&YO,H[YB蟽H5+5wF/I0AV03WvH7J/sJ&`%:Nۻ f4 sQ_d}bc}ע 窠6Qa8x@O\v|@Թ}C:*+FK.ŀ.uPvm .}YYW/'2zׂ&yêCyj2=sUpbʥ.@{Apn/zUԼ?-f0!蹋3pYgOcv%ΉSs%'7-D[U0J|y%kTM֔pVGKAHnX [y!3ssj}X"7ڦB$094;6Տ x{ދPb=ʝM,]!"ScI![K/*z5 sw)% lXES?Zn r4f^n W:Gg2ͻ| +*cwnJY]c| J4Eؿ 9 Bm?hׁ #?ڭ7c"h`ΕA,,̻h"Aq 7ܠl 7^gR ~` >,cnPlJ1z ^Z/1*@yh̆p]miU#G:Z``B=^yHAWﰰtcO" 5P/Xpb`^G0g`i)q焭,9u?a eR9Q 5;o(v"9MX0 Hd4Y1g@ f&DKkKŢrM o4aE[Hl]pbLzMPN cQVԅtA5~O\7 *86b%>&c ,5{2?Au]g:X$FZAȝVL#+p^Y'Mۧ˝W҈)!dh"qX@yne~0i,hMmލktvKMrPjI;_eyaOyخY3";>sZ>w6‰,f 3W.RݒI lYN)* U20M\ySחʤP)gRO 69|졇JֈFg]Ol&k'YHYvg ΀O)y{&$<6LAgEp({N!dOPO%_4+)` tUOI+5a}X*"VOþm;$t8FO-l# DC%jQqf/wA]z:jzZ+"J+ @bCzPvWٴ\QH.B6E\\VZnc0zWi|Vv{..Rj1\1}hM(!(:Ya_97?ylQظH qe6U\T1HPAcJIsn6{%kxĺ@{Ŷ2`K"R&\=+3SFZ˜9'kj\v>掮GJsQn&a&ճ_AtntΟWiF]:c=KtZ7q>YN7d<Vf ᆈdsrWqYxej4{qk'h?F 9=CᖯdxjU  +\4dL@ڟ70zrFKIt}sowCBb pn?j>A&/1DPlc3Ǣf@@mXwW[ )YHc%&0u.+cX rWF#ׂΘQ.ÌgŀnVsFH'|A Agʺmh xw)ۜ> *S簱BnwukV/]dۇSO^U ,RM> Vʷh\TX4_"?7)p<"_t.ƞ ;z\[,QRuK?u Y< 5^q67B YGCU~qZ]mԗ7x+MKr+JZsO]⼒Iq4Eq<(Ұ1;*ƴ&DÙ<}0~H>2qdQXr鷲o" i4Y,hY#b6|N2]sz/? k4WIŵ >`$)KZO5Gnq+ L2խ3Jp%L/[< k뜤dqu'7H@V'a t#e9UM38Ȕ><0ob]F` x!Ѝ1b58=%ɂ 7b?TQnGxK៫i`Jf;[c*fI Y9q4 X&{P @ h)%ᎍYݤ!!Ŋ>fr ^sF.חoǼMD LJ)y/Tr<7Rie ^u1gvqq‰ GFɜ^Dq[_ᧂ2vf$>}(<'srў޿v0?u]TwvmW iA71.F{b|^,XIc/&y{+]3[XDFwD'" <%C$ѕhi:.5da3|Ȏ)[z"}ھ¹‚qVrg ɏ 8{-ʯ=i)<>-O ^ԇnu;/=ϻNTipZ~n9h\q^nAvPRT6f@>@oΠ&j^X2/d͐آ.N]RO({wỹx!Z'%_>Yc/*EUTZX_}j >ڙ՜P|xӶ$t7_~#D-eF>U`ԪѳR<"jYgP= z38d:0dnZޥ%]I|ꧨΛ;[HVw~MopQv 4+F?#Wa [x<*lۋ#  "aR Oc.}H㫇&_Kl 灟m,:%}< wCt^4jQ:diȃy`uDk@W 7-¯'o|X dGy.EW HoZ,ߟN^Ha.K"L o|k,Дe GM 5!ao)%wZ'0l}5~q"k1F"/(%׷\> '] }TȯP-FJu@zPQZ4""0˦A\"yW0yY,+7\X1Ub90/ &;A/ʶa"NRÞ 9pAw=XF{[Tj9 ..$dz$>CbW 5&ۥ&Sk rB_(bulR:J>A1'(X94Mp"*kQqlK>Ecx%)3GхyW/4toL9=*T>*,d̥)ƹ]8msd{;NTO4ԇVFgC?o|G2u'% Mg@%kکg}8$8ހt7&Ⱥo0^H&@FE1u_# qQj#/V!h wVI{&xܬlb.HjΙSQ=X1&V )JaVۈkaA`b$dTdnzX+QD Dڎmp ƅה̡oxL[yþ)EPb{k[ݤaH>] rf%4jNi%0=Ҭ=~S=_NP} Ȕ-bZrKV8"ph* iQD]]J/FA5E"c/V4 AS6U7YFrAyB Ѳ><. 3S{bč`tP`d10D,'Ȋmrx*"ņ ǭ֏V1قBr=ܲ>Aw'/fSp\oc!llq;2XDb9 `1Qst#皺lIъۏ ~ $xc"N%uS\/8ѐu~"]btALIco+lޱP.4.` {jLe)Dt/xJd\#ggr#Sr!UA} բ& [F\_V*O;!]GoНdm (b#`?  X|wRƛ'c>?d<8>q),{5 EdsZNUb/>Emv8DL)&`Jc K爃`ep s?!S&_dUXSHȞ>!UtA1tEyH]F+@'j8_Β-T߹rGd & @i[wߎ}D $cD\{nS0hKF,ȁ$IynZs vt.^KtKo:,s-(UEJiv [L~`?񅣗/Pi~NZ%~ 9CsR!N|P~T´ͲBk~mW.fk\w9"W~qTƜQ= fTMnd?66'2V B2bòW4eR}oס*Ojx@ç8\BןIF7xB_)K6;,.fpp.h|u+\ ĭÏRœzUovy1cIthfCOxsYP$(nWo=lB-he&ds]erm [cvkՃʰgBrBJ t8_B r/gw{l8U` M;<ɢc)HP48٤CBE˳IZrDwj_Og_$fnSIOLҊhHMb,""WT7 XL g:QdԹv%FתƵA)sJd8ΈhOmZ\3bh5%6RPa3CK"GHf_HcYi HIzyݰ9Bm&bEY Ef& ٓl{ @ +4W䍑ю{+͖Uy2r,@@JOuz h-t%SS LkXiġ*\H_OQfx"X_Ootb݈Qh //C9ٸO-laA2/٠0ά?*QAl)tUK#ZB7+|(g4쮑>7",?/K|^/@Ċ4WJS}מZ;mkyr, Fܱ{]Z#.}+; ɟ\p c2ϢRY;N;0#=ق|CP&tL020avNR*wg&% ¦Ʌ/(,f< fK^$;ϺB1hfE'g[XvII,sY6Q[tҒ$¿n ?^?b |c06Btd eL|C.bVt;=rEx@~ @V YH\I]{t '9A.韸m_@1^"~)]5*/[wŝF`р+mb͓Å:"ۺB0E3R]6 CWBTS]3.| %M泥,(Q,'_FCK VjKH &An>%W`m:>D\4]3koNh]\0[Gɬ#UNh9\zVvnBN`jmwnIȭȭT<ek)q1kp=UhyJUq^"t"aBfT;? G=aZ٥cNὍ?o `;STJ\QT>_p:3ǛJb,Vl1TQ.y!tX?ABzݟ%KƝݹwNYbuZ`(:fD=*nrX k݀?i寭D4Ne}bٲ#HzpS~~A^oBz*kmϙ,] ޶L{zیxl^!^e`S -\D,  -:2M|1cq-4iB 5~a~:3quX'" $<=k`o}Gh&$H=0[UF`F,#J0Qʃ6ñ^;T>8g^Lsl%,S\sϧQ ~?B2M$xv:lCDltJ(G"R(VGKDV^an}dUTP)j:$lvGGxp@T})ukhDM/5cGOlSھ# 4++Y"y̾M`)QX!9$sXxZPJ9&XH{i[nzE~ʢ̋JaMW<4NR+IY)*KU:Ʊ2N 󾿠jj,.ȶcvOV N|.&2BuZ&*xo4 O;W?L 8Tda>a0|/^2`|xzy[p@"i'&_TD%7P;S=Af5.BͿ;{2vfs73TY\* -BC,NgbR)9,pv`O^ʩ o_3fpHAH_% H,Q8_̧=o#<ĚՁceDlbrc?£~: X/!O(Goߴ:۱=թTIE.)-17Zv]5"`LupU6 9~<~zNYc(m0 Ph4 MRQ=(b! ?wb͆g[XYAbS,cq{B޳5d[DOM)lb[ݝĪ=)|=`$F@`r6UpqM<ݎ?'Dί)1*m"}Tz'pD,4Gm"5g"Yv+Ֆ>#;cjJtI u!8u/76J&vY^քe) [,wZxy:Wޒ!&k˗HH˅(ѫp#S$x(&+ 7ƺ/IOV?*=yUG?3UP ^_|bU]:e`̜~d/H^*ٲ&uwx; \Çfl)X誷<vx.fcab=Wb1nn~p#yQ2gQB%;0\>C ߚo(LSC@y < M_SyyڝȠ&4ͲGm?4~fi9' 4$vHΉ`M6qpqAD9`|!T[9#,'ɚQ=!dMbE֓ӗzq:_mlѓ R L[-0- }lYp4_§4N JMf42G&5 bN|X@t*˻hw|3*M2ׄC^`2V c7K?izr5Ripw^b,DiE6Aڪ pRmez sBR%Um.{!~azf5Sx0jWpzО2q/>VY/QG:)0Q&YSϷvWRDI(7!ߠIs[ZerIpƻnoUi#iҐ;7;6dFKn!o)T, /rh6f% ehDxh>3Y.ĜPpNP GC;BgB;@5\+g||ƩOolJC>k8+q.C1aDAlղ sIv5uW=]P&]9:eW'>>`Z cPkʂ/Wf ?hHRť;S^YTirӤ[i3ngD%wوzf۞<3I{JF^M\㭑r1~XΪ 8~r[D'N-@4\u؛ n7, %1ngfЭBt5B\HJ .^¸e}jzS&5а!#'UD8MeMR4W!8Kâ,z*>ѿQđ'fu1B7ZFu_lIġT=R%w[ou2:斨E4 `7YI vYത~c+"۷GT!uˬADE kCXYq? QԨջ캾n?pj]%D Av j4*Gg{#8&1h9F5V6'y2ؚWqe}Sxy-ֈ>X "-|UOE]zz}d;O+BeO&oR4Ux9Л~ R+8j>ⱄ1rv,Y$S`Y+)_( <ԝkwZr\PH6lOj@X_-ga)ixWnw"w?>ggqvп<~z>#]3=.?_Q/39$TUY 076<Gku,#6j2 h/*0rGTܚ͡j]O3_=y*td2LF>:o`2x (Ty T Qq/FΝs^mvCK.vmr.$)~6x:28?$<\ăJ\͘m""WRz! qs ]5lMciOLcOų<@i(ģ@yM{D i5 l9OܝVE*KS1L/iD =1+7>$K@a'.>J&0%۵5<ˋVRU/#)R!CFC!`N:tZ>V$3/ (h)y>eʐ<'D著 DUQv!7g`–=`=sL7ƶ+wN 6nݏ8wC]&E]a#US)N*Eβ/M|iy-/D#oiYM̓q w|%}b}{H{$:ɽ?W D: DW:?1~p >C)~o,N5K~ 养7+6>iʏq];V,@<|Q$F[&7q+@W6jIMle]aۡ](lXgQ&y~vNr?$iwΤmڽ6^a/NPR]j4?zs$>}M|F?&YCUxHI$/s髠B6)I{tM;Y؞ #M@F{p4Tgno~jY59bEU5 ɣЎg*qN~V\:r75X +FLlm/J[No;3=)v4mޠ\4dT;QÏ.u1 "PUjQޕ !4]d#t1B[ج˨0Wm?6ɕ <*Hի*MkmWR6\/t'k@7]ws؋+ɆvNgW{2"8W L,2y6LI@ 2qFeq..A*c8A󶑌4Nk~u0QsŰ6b,6Щ: HK&-{$׿ Mn pV(̐KUSeó|g& _XV]ڀ잊⥤]ke))MQ}9yq2Zt%3kp)qc(q #|IE1Vf#% ߕ1g+f[ܟ^UįCPA߃[ p(uPكCJ~KRyKYYVrT+'m^)(X&nƺ/{XC~hZ9{m uuJY:3t *q9b=e]0Ht4ľϹv 5!V3XWU Ҟmc jkU|cT~]Ll$ vYj wY߮U9/YT!VD.B}6sX[ (2l]ȍ`ɪ]0Y7]F;r/LJi&}.Py|3 0F]W]l/K{%X6ae 'H+ Cݰ$mUl *[UU*r>ULyH;fb|[4) <0.4mc3 [̢|,3vN }M=topzrMtylU_,8& 0JΨ+ׁƏ[[(!RIrbS{7H?T+]S6m_vA}/ X/T By+8s+NсrySm-L|29qkgh!I1Ϫ-Gf^մ[ȵ{[XpD&*̒6UÅREv`g Vna!% [ kh!{NK+kXz&N4V1P0l?G-'8M3@Bհ?C~{;uC,_-hO2/UYI!{idUO17%Sh>}0_)ykMpy=F_bs/pSu~YG!]O}k?Ix|daH5vetVOz~fQLY^/ |O)+,[(A`G Nbܽ"Y=ӫZ,Q) M7#{< 9efE,b:.B݇n4ZxEv@f+sgFw10dX96&s@ :bm gZ&^i2jR<>sO&cIE x.rKƘ9 eGǿ`]ɻdɯ&F˙OL9^/A[Okw??CSe;Up^0M˥?WkCbpAZ -K#w$g?;o**R2sIF]*t/Rf|[x. myKc|rQuϩ>mTĺ_n*߼.?KxѪJ|UZ3nWgmE`O,k2׮Ӯ-v3fڞ@4 mj(H&Qn:q2Tx0W3CrKFB )V^E *sc7iC4MN>Sjф/ү.Aõu.J>I9I4X|K|XP8kZMġzlvyPg {uaf u9-@%|?l;z[ F?!436( Y>/ _!V6c'T|vG˕( FѠ +PtKߣ2 Ji?3#k 傚W#1 tx19da]Т0%PՔ-`s]p49+dIH/Sh6EGoՃf5K.QZIIs?m]Wa|Ppe @+T͛) 쪠U }Y~ֽ`e ܳu9Y#-șudDG\yŴَrS.(wk?j3EaL'1rAՃ)]7)Ɍf]ϝ!xkj2Z<`d^K(nC BÛ_wDC;V"_.FB}2B` \ɿΓJ1aX"ŵ=ˌֈ x4 )fLz=Z7s}ި YIJސO-H9+ A`ci fb&&si(t2 _t2:RDvDY딧x TBUk>F<ʭVo /]s <붣I+nEٱa뻖*n /gE8T\*}2SשŔ 9>ޙͫ5YPFOIsG2P/}΍bwq=ڣS3lEyBZ*yIK5;Gԟ67JiLұH|פ:ŴSn3Dey1`neE'&;^ {b&0 -_(9 j NT&q˥̛{~[j ;Mwh5U'>h;ݒ YS|O_^/C+sՋ@Jp11Ҁ~zth[Y}'L2?Xb{oc$^MKNLfڷOy׸Yi=0ĩ2vg=p@ 7Uڿ8K w(X˘˛b1f~@(O5LJsA"SS(rg˝햊I&QyqwIah!JLP)ܪM4`׹hhJs]{fM~]GVlzѹ[-m FpZK`io($2c+-XaKAyԹbF Mqq=Pry<YJ'x oev%2;}38MlxJ[\߹).e-QN/Fmt4c 9u [ccA % K7Zn̫\;EQ@@?Muck]g\+5!*ULKw:ys<`{%# =:6{3lɣ\>hTSzO(CG=ѬL4Z>ݾ!]鿣il:AK`@Y%ycZ.+`#wKq9EHn4'; MDmNmyӻuOiTrנdFa{Hs p?*t['d˕@'g۬ dV-5E C*dRJ9 H kz/0X} (M6hH,|QKA8aO*,mtܞÜ^1#Oi*9jqɰX鰦6@n24#I a)A h#1,Sf"b L 0v\¢?t`̕,^b@ݷ7%tr,T'\WA|?)QL B[F["DbGbų`N{Gx8Ϻ}aAYRz>0e1G6;< 'ʼ\j9"O7X$E\^! Bqɚt6)_Xɻ"x@LR<[Cn&0WRy ae7yOp,·]WAvK~_9l q")T>1T:p>'II)T KM!)2e[0YRBqѼvzT1IܶP`>H&4ZטeMR~ }%qGҲ1fXzCf6W3zHUp.(y Rs\<7}SksPaM|A^>znWm#a8\r,;CerG5EӪ\B@RWCUg[=NC]"2s3\ ePkC6IJHOyYfV}+Uo[(&EItE&<V*BP 'թ1",U<6/'$Pك&zQ5~Ø<(YV:0F92 [b馳Ǜi,IZjo *f.#IM@H!ތ{b$Dd[( '}ܤ>G̑WA!}ztg.?.֠5RY0ښi m$$}" 1z=d{ =뙈w:6o_3'%#,}0'j~G_vy\$m{cNjw?d-> 0dUrS!_nsƦH4knvΟXoZW_veY[oՃ=c`Ywvd$w(lk)^ZFf,pa/FTrgZق"R6{~DqKR=q OH\hՓxEhq,P&Ma U e?XlS)%ۧBS~X핸 rZm~髒#8htV K;X]P1eIkޢgNYZő΀tq.TŹg RY0& 0՗gCcI6ZOEopKv 'ɨ "0}{ιz7^ V CƝP)]׌BD +ʾsߨey3d Mu :] We*R)z)}ueUC_*^EGH%fn)뵿&¡ܑQx8 ut'M(:}0'>Uv Ov}f:1.Y%)1$%F =dSf#W\%S !M!j=lVC/OYқ \?) (Fx# K)X\j/$r|D߁mCrC3+$$QYK%N9"_oQ`4Mp|z^`q7 0ϡ>bLYB>\NQnQGqe&~m{CqB0$[\AJE&FB|^8;+b ܶ .$?YӝMm[NpceMVghe niɶ=ᑥWjyvE-5S=+#$2^xAkesI;>K'.Bq:'!9kym-ҼMU̜*_R>&5@Ii1u3RA'5BPzfn{F.,1bG]@QJc4ڞZ(/tH"vk(|8✭o7m3uFc&zx% !쿛'}Df}F??e;̋]~vD}$Jp̝kI},]ۂۘ%{p*zӾ(/\ pZ4Dz R/-t)!6- -$]a!KmW/@<vFX1֔ 8[2Ngai_/S}@ˎts]=QLI|C%ثbҏT9}?rq=) iX4,SsjÃs\t'#ϞӾ ˔[=g l:@試їo:c2F$W121H% Ve56sL[ܖheXӗQ wJAim(Q!jfc|Zk4j#`^$8*"=9ECP_ݐY K3p]i2%5B o8Zԍ&Bc;6 3@>__y_*_<:敳>jJX73o8,ƖG_^ɻ#Up&Jj%lŢM}F֐@2ڊ hoK ; %Fm6:(*=u 3VT_'ī1?ʛi >K67+ X?ӑC}lD3vp3?|q䗄aDrEh)5pF{ɗr<mACq }O͇v/R/1@f["ܠbB - IKYoikL!m uS!M0!C,=BR p#0bq(Lg2h{wb'gSPip"Y30j@>Ï Z, Ez[c7bPbTb]e=#W\ń3Lգ"I7LzS5-a6Y$! 97r-mFSЖrl[`[d0A榙'@a7Q9o |O[;d>+3hD,# пF-ڞ>z$}|Vה{>ѩzKa [3kQnug}aSTSGaJU񯺰(& & I^g'7Mk LRJOUQ́9EIѻ^rFp <8p:@+8֍Q)I7%Uo¸b#<چ S .ʶo6kxM]Q:}Ց'+1 "3jXV-^~Qz6;O, cd)0H_D@uxΕ>k\J}%ӌHvS]1=?_ ) ;+lW_xhI,(|}p[D;Uؙ Y~COq>DT܈A.{['#> ChDD5HI- cWgBPj~xP*pb2*ݫi9{!w@umm5<͢ɦ\-"inl?hUu eɥGQ5.8}^6!(%j(Bmrj lOQ=eJ[u40%i;M' -zS GZ?/i5+6u?qq]fLiЕ$uc)ub0o׉ZK6v1Ug?W_~E'ficrUoZXnD7W*?!rre@,̒dÁ-ه24d &%j6hFQ68A(v][R^|!"YI\k~ٖhM Buٟf:{ LEy9ɉ o.رcl8{-jp AK,Dқ)V٨=fچǏDO6 v U)jQHq|55]ɞⷋPDlΩN v֙c aZO݋b Pکh-),urDKVo-SQen•0~sMkC`ߖpYr&L+fKV \ع v/ZdWvK0] "?|Z5LEdV8aUTA- A  dTmSkgdJaS3~طL\&*~2C5-Yjh7*QbRڜPm 4<ɐg DOG}9(xd%R8ΗiTW2"zk>Gl7 tw+PqgR 7e&fb'}w%tP!1s÷Sj("k5U6itK/[-k(@ΫcJ@'ŴT NΩ\r-UR }xOJ(h.9 ?( ?uL -6nL #ޒfBPBØf g"}`3e;PJ>W`c2ť[s_28E=G(IK%xH9*0CvO|Ki}/kXkU|ړ6e+@~ F=+.t idB L{9)/J\<-qG+.'RB,n#xrE3ت(^?bd,-L@-"l1#;SEz^s(U ̗?p"pzo/+ ቴѿ;%:4”m8RHR]+p1gP.W,[5g'4vS |d%U91\ JoX~[(Wg0'ЍD{YCcJ -N 8-mF*)YQ0Y$X$L8ӡ{f( ݊EBŶ0h#xk~$2/),yFcB&Gap /PtɀkDNpoO1lA_we|ZZzrima[$J\r/i"=5ӱuj%bF" R|b4z̹VCu0ٰ+ daj݅q*]"tǦ:8 4 k,&cbAhq8FHsZK&e ;JM[=I3܋q)F6 Z9%8.DE3[.y[tsXvN^GeiIԔ6]%=9$Tbk-/'3"LrAaw ;#ps.?QCsFV7 FLmBAj .m;}Lp=r700td-h6"G~n27BA3u40qJsd /KzU֟Ps@'2Dϡ~ GEnoV Ekg\ L2 2*^)CG¡1H)QTMٛ#-Oql`wll~JQ?oJ'e$1n{ WF<@x8?At[%2Nsw l @{ZSzT;VEb4 Q<^鱁S<+ 1qQZ#숮-au"Z~Y.l]!b=/2S0JV1؃,<\ q o.N?5^.ܹ~dfi8Sn=m;%fr@p1v 8c1X=86o{%*En条 Wt!R(vxY?>Q Hf>?o"5H3GzlUw'@7Hܶx)M0bY5غ 9nw*{Q[Zbh0ϥ:MS4~9@[ fowI!⁶[x4#%e f8Vbvh|rܐ}1L^Bzpp\h$dY _\ #Q/dhTlKW`wdo[#,AȅMr Zz)iAFkkJ-=6x*~;VΠeꚕ~y\ެK5ẢM)lL@6f?FNfpز08Ws"ށɶWACtPeVz>e SS@>y1?Uӛh~ܗ[i]qMS46WX !c_..f"^~]mr /+%?`Wx ]hL_udhÍD+"/N hv#)rE%pWNX2םq7r&BX-gb.q|'QxkkE̛ :ak kʃ-4ULYM좒iuBbBrP5b 9aebrdҢA~C{1 `ޢV2_!/[i6B4Q(Vl^Ɉ]"]#p>P>Oe[p$*F߷^a 3Fx-Ggxx1aA(֣$gjIlf6l@CX뢮?^^y0yq}`˾L6[/{r(b;)pfVP;Z[g; *<[H_ZS[P:/c\Ce+Y{D{BQ92}B2| imSL_>̩'4CD)V}.@̪"&-< PK^G T}}b gW1}7mޔ[ $"^'&v{lQSn⽙E΀` BF#-h$dIECD Y#_4so:z\%M( %(KT. h2Ԫ|IrM|oۙx3%My[P5>Sw~ ADͪqIptJW;OĉabinF.PuC9Xh,gj}%%%{ȓkB`]+tѦ`\6oܑZQ=`i43/֚!%_zI)q(?UAq}s ۭEdBGq 9bxt:۩aҼPUIɢ7yB8q9 ^˙ мpC ʜg 0>L&%)yM`-G\3 tqE Vf`v_]$3b',ex.i}NhMV+wEgc -6 (Юk[^sβ'>7ģSQ_\ۡ} ֍o#Θ\"bL#|t]laߣ_e"釶tWk|@oԘB0ϕ ڰ]Yl۷/JDl|]~5`,VE5W|pښܗzK>XŧwWf/^,_Flm0RbąNlYfv ,uXǾ/HNomoyi򙗕N CX8aZWεS/`Kat4b{)k+uiLbt6v []2:2]z^CjefhݎJ$VdYU0J-D¾4e]GÌr-5 Xbw<#Txd["WZs2jхmV?֟O-* W|61"){hwKB%@ 6y3oDo)ȟ?2#f$y̩FWZdK'4T֞wзkɃMFi*A*X)  /a\V1jo.4!:w`hA j+G4K~ ?ѧaجӈh>o7F)y^H52R8_d' ̼l;USo|̉mm zL!.sAh;*m_`PohGQܞYBf+,ޕdIGӚ9MPD)VڻNF[6 ]2Ta 8ݘX{Ź1#=Lh> u<=$Ӹ Swi+*)[EpZaRf[٨@*FPN\W KǰܡuI@Jhϭ.y>i S AU!>㙔)'W E=r70E%)DTB&v~ RE?Kұa} ͞qY}%2 |7|qǢR+"*a TilBݦGiB1 +$?CPIw0Xi ]Xw]>I}U]-(w^{]:T0&|k+szj,1ܹVϺ+!@gVTVF/fF8 L+n!q$^ULߛ Yxe|A([<FiA%^e{Stc쪡C Br!Л>2,&/GꝷTvm+]Ĥjz̉o.Va21B§?YN3K2DΩ7>U[Ƕkw^}ªMr~j4n}`3[yHʨ,41ÝTi<6u;o+ʖX 2Yp3/,̑zO ϟ{*Έ)Bςno-td-f YuB΢! ͷBW` _J.iKI'ԮH:B(Iޱ"5Yr#TljƉɝKqpdy6{ipPʍm!4 +P)+왊lJQxXB)7hV&Ul-RIKfeMyG~b q4@/< 6tF*V""N^7VT&bD7[Jj?Pl\SvSM?eZ$\)0'VubA<$o9z1ؙ1lB-]ly<=-eg9g_vVJ(#ηg=.e9 `Ay+!Itm,Lh*nɿN=SԶl=A. uN6Ztri[("V+R򕇨m=Fl҉PRc%MP[f䪪gE%đ}TSY>aV $'yZ= '6} -EH' rq0m>W <mPJQm7T QU@%o$Oƿ))k8E:!eٗ=FXA:Ú!GJມB' Mn˷R{Vo!ސ66y,t[hF$_aK~Zo2ö $̳%Xh*U=b*v/9%F2G.hcdtdcж&3&0BZ$o?loRKFS 9BTt>3v]` YW[iwiO|)\Ҭ4^;T;A[aGeiaklWtWN8S R!XԎ)id'G]wYHCBKi酹snVWHN犠ͳLޝ}:%33~$Wfì`j~3FjԬ".x"϶0[z%Uˌr \'k8 un47nޱܴav!5|F&$wpI vA8 yum-gX [18VqX Aspk^5*ds[Ȋ g _? ,f8' ֞W~,L pZX}8vn{ep\Du4 /J@h^h"|*WT;8>)EQRcx_xϗ3bG9v^To(r eN^Dp'IDnm]*;"+9f4ƺ^#,Hs5arBٹyO9&C}f[n<Vy Rs<^{P~:j7d=虴9J'SEc*3E Ffۄ,o &$L>hَ=C&3"5jPZ`;ot"n,"/x{dir/ a/u8\U1St⴮9 'C ;P}z . Ԭ `͟U=ٟ ,yV&/;@)fo1U0'߀k 7']-}!o0/hVmƵi ⿯ ])5g>"&9aU= S

*GL)HFyBL3#ЩB&+Z6P:yLas|bK~Qyۨx_!LaFuop)Ijcbj&ƽ8A_0&dj TbPIVﳬ{]9ͺXؒT2 .u!ޥgO7q>#Şɦ. w,+|4l LD~Y{4Rs ī y~N6)2 r9 b1"fr0zCl^{-ĵ`=D8niXV;EmGET['mY;," 9׌B g8xwECwo]VXqsDѱfxHM#?;l_/LQT4κx aL)c={?C$vqo\ hRv*]AjhY@>u`t1+ѩd묄ty^^=⟝ ơ{ /}s(CAP"Yݖ^Λd/njT @x^1=H^Ȫ<1~dY ‰Xd2# וY,p{SNG]˔tv]qۦ.* 8ԟ3/P{ t7wáə ;==wTY P(ώFa bKg,r/o1NM=\tJ $[}6:,\ QS'ig~Q @W* .iZ#XT.Bg\eeZ!E k^>B[K͐*\fcum<3"xu0XVM_ 3y%uJ8?|bIsRda2Ik(x͵,^ IeX*- 9qt+\QE"D{,*tC.KvN'dL0KH'] 6G?:4vl^|T%Jȴ*{0hm衋ܷw7nvˑ .ho|^͉t&tq "ff )),y{i ; u'pJFTJdeZAtsUv0r-" #Űg׍o?}=)boL;]@Z#&Ju}v˲-~iz V -kEGsW `ߒ7x  (Q!:oG+}2?:|63.[oɵp\dO fs˱@'c 7[VnX D+Hxil;R.TنmprN>]%(+$g!*ճ88y_P]o+Y61 (^B><'y4׾6F!犦r miD|=fSȖR-7eD_q;%ރۖp,EC/m>t8Yz1 "g `M]jkC,%ƑtfUJᦠ;G|+jl?⛛ܹԨ~S!ho&Nn`eb <5gvWn}8L ߳U+. Dv1zj!1[wJJBf?}Nw~Z#$=ӊۯ%G#j1V;T8Yի 58LHLMwH(.NzY7gC8?[);Ojzs彂i,k$0ǿ2qe-/nH$P4bkw֕J̯VE${QY3,t <103Ǡ#[&ɐɡݤۺW:dl0Eh 1VY`pBq0?&#N`P8[Vq*vrjRȟK|h~BاuaK;|FhN=* hPAOS[ BV]%4)P2]8x{c9:q}B'{|A  meJlׂ̔gϕxr\isމjs/[2ɴ8*P*5؈l *i9+%E=0ҧ4xCrQ .(bP! 3dKE#*[ 3m)qFmlɹ`~`'KLkȬ$Ȗ]hf:l#\_KSA4 0uNgVhD ù #]+`ݸ!|b"zƽ.ҏQS㌕jNUlbt@\RwhG+ h!] >Eh$]^E!q,^MnxpW=U,B fuG A~U^Ѥ"pxBWX#ߧw 7U]LhvU@`;x.U3;[8'\ȏ\~N)@DJpM9~3?`tHjȷkCgñB3[TZSz;NDUQjD5MKz6X f-wB:Մ LLbgxtޯڥ ,-LVݙ 'Oh&cWdxM`w9A,[PyѶEe7QN6Θob߭S0w EQ8+Ue]s" *Pg7୎uB_eNHB;r} 4~mEۮ0`:8^^L#`hŖBdƷ 5}+ %P3v .U^isj# yW{!U\OߡQ1P9'I * |&wѯeGxb{&i's~v U|Z%=-Fp&˵׉\ꯑnE8Yd0f kUN K[KDz乎 Cq&ZtPJ&XǩUʯ|mDYEk6[@^M3Ӎ:x!d2i(mKy謒 F +_0XH=jÄtC?u gYx{Ǜ~[T$׭4K*;p-T-Fj쓂"Dg5.y;uN(gyw{.vTKbURE P+Ĉ |& &<+6ɜLi)210ҩ E?<ޔc 8D7颋Kg Lf!fL>AeY~1.9T8٘MAؾj`^iC 5YO4d"G= yDu?mVI YskeԚm_OQCSxeܛc#w 6s!n\PW'4ۙM%8دTl| 6Q5yێByԉc:+HY%M*pKdw چQ8Η[t=f^n;3E*$C".46ܟIS`l/ʚ=&`TN9N-hy'< U}&87fs$ ot{VUECOJAez7 K1B$v_%>XT:Ys4&KbDXBsDe'8TF>9hCٻHN $gGB $PG(n찿-RգORvFW*('.Kbb5pAU|LgQnQ$ٚ1[{}#]F|8x?.m =`gWͫmv_6;VG0?_^eFi>k#5ki:m \k>C]/vRG^gߴEuׁ䧞w <ijdSLޱ$X+^lP&]q.7ck_dZǒ"J$Pf74<$ȕH8l|I08a^*~3sS̗\9u2Th+_1Jϔֺ;[7}i@{ŏѰi$(oص=S6)Yɉ͋e~r '܂%U I7!,g2\Uq)%5b-7ht$ b)!F5 I_VxfJ^ UOۻDXkQ4F?k rp;AjP<g8 +b Alm{ fV. ` 3z5MD,"L_}ڤ㉺(׽%f; n$=hª.iy/ ?vVlƪq4H}jL/|Že J5r}>D&䝚m٥KEf0PaB<-,%jF*^gXrNUb vFl:{wղ|9yN}RUt2eQV _%GBm dGE2z}%~X'MufBCvt8U n[i&|iڮ }zXS$"?"˻ ~Pt傺ڱ 3 q(>  GQ~󼘮iRT?N9.qAᕼ~[q g`cmSڳc$nm]3䴁|X;(dĸ#4'MZGAVqRC?lmrfd݆!D n҅q, WΔ N_ِuD~A"H?slYtNeNs2TZxbfHmw=2y#u`|n1(Ha}^>0~iIR) >XaR,ΰ]Xnbӷ5ʔ2/>dp9Eh@3ÌzCy:R|{uuֶV 6kL'iWF+ ͥkۖm&jPwS6XW5!ៅ:򻿹6:rKw[!FO{{u{{1e JC|XeO"$"1"V,F}%)3m2G*V&B.YP5̶Sh8wb[E?KHEO Fȁ:p F. ݒ$/2`TwWFTiSc=ȶVzL'-qǤzU+{9X7/6l%G}L#@_ [5Mۏn^ NíI*d z t1jF ad{x0 )6>ߨ|/IKVz(x-hYN|I% :f<0׈pmӞ-!T3"ۂRVJyƛ }Xp'`Z*wTSنPjHןɯ(ᴄ 3ZmaaCg@;` :"!$ȸan[ *|6_p͈ 4H:16m@+zץv5yyndyfׇ~~ܾ\D\ bJ;]3BҼ=mjml@wz9(m p7cwC'{Cį XvϵDL׺/"YdN u u_.OOJl3WUBlys䮜C$ jT+OaYMB m0wɿ zӅUL34Ow]^!"Y34.ZLgUϵ?\;I%')Zk4%11h;~,BSE&24>[+4V8>c.Uҭdٚϟ߁OI;$Mr4"ϩ_lWqY[VJq MSI|},NN\֫Av)H|$`eT!>/-1. d A0q\ khw2C<˵Œ~f= Er8 ٴثM9}_NrW.W+9XHWlDHc3O9&3v0$kg(L>'FK/wcЌP{\ JCwp[9߄|};:Nvx0RBdVPW Gux[Ѝ5˰S _qRɝ1f ) R]׺Ox[rvrկ ܜeP[<4$r߁׺(Xn@Ӝ"ítswF+E @p!lzw?ф?ߍĵ(;3D6)0[:eUa-~dBv: 8y% * 9HиJT8;fҢq}tʒʚ$\'*YQdRm9ɨRIO\vf<*u{a`fRw ~Fx"tkki~(s mR9&Ҝ5fG]# KSݍ#wwxT:[0ряiYcoƁؚC!ج+ՁzR1W ^ErB+9 {r)k$rs] W˚W=R:8. %p5U560D#r;RuDQڨ,g #MișْSnЕKg5>\p[- vu({NlJ*e]z>N"_,[SM3(>m<3Z_n>B4*A2ˌ7ugE͛.(WYw*^9) qoL )+o_{O y W9Džnoy3ψ6Z_$K/^>F}l; 逻N۔[Q_jօY7(]spwx}‰FQeT:s'hb[t/vns2#ޢK7On\9m,'\.P Wcg+\$ɘ߫H>.dRi3ӿc,YߢQ2*ijHF/{wGAo3Y嶣ɫ')\$7ɛ`^jhժ;JGV~7@M\me?vl3TnPRfx65wI^GgsIFb ԠjBv/Gd .j+dLD4Ͽȁ3;ۙ&}T& 09VwHv`hM"u(U*K;P?$\@%Z5+ `*.=`%s%G vԓ(NU@\ %\rPZ)=@`?:복4SH3+G%ihLB >NC ײw(Nú@pd$T W)F5#c]7h%4\YUPf0$A̍W1CzTw8[us$.(Dj59ǔA眊KCMkU3vI#)|uҪ~SQ9đ߹t`[͜4*yKv^ު duo:`8NE(Z  0KC Xiʿ_&$}p]:[)1w:ep:RADfus ΜW"QO'2a%/&WsF Ex|Ah ȟ\Kմ@SHM"oHʔ;ach9G $p(ŋq^V^DEVB}صO#VsN ,( w>R|#-&+JQ/"cI1$!։{WL}~ 7^$黠dQg$͊=lKE,˯Uh$z@B3,sazmO%Ҹ"u\: 6{ˊG!nQ$ҕGz7L)S+kW5>X]!i]7<&V=0rXS]/!b'BKN +4 Oߺ\`M{{j2t t cQao8kR)z_V@1䓒.o̒X凿s9 (L]wbbJ|x3|#Sh9Q/K$sI,25m>Uq?GƢ(#:[![z9{5fĎaG>]uGy %Yq1;+m 4,T=ۧSi[ Y ;&21sGܻ^RɼYgy&$EzM2;ղiB-[oh˫WYVa$0l*ʗ#qTiِX@ {#¿AlڝM^\,߁f$-ztkW7g jTzD4y#hi=>q`#՞<'l^:n\[tbujlcRa zn2 \e$ >t-. dZ-&umdG:oå v=[I8݄ؗN/j&M6VGj?AGh=H ?FfN3h@[L PI6-n|sKCD3DN.mr͑3 K5si ѓC:_,$ Kja楽HmFd.;IaFQ7Qc/L(i|x1'fݟ J>0SjbN 5ݛ1FN?J1*ъ5#n_R< j\5'WB .hOaR"aMICٷav秚3b 7JZ8C>B۸!`=* M Wv5X(2_B`Λ*c̩:2}~>$i6sQV;? q>N/wEIu%2$],Mn(YX32̩3Z?s ieܢF{s-&x̯~[vmy4DžôKX_o{$-4µn%\C%v<}mU6!߿y]' UaZ! Ԙ!*W1zWLV\(45dtbɂ,nՑJ> ѣ2zAޝxG%Vۙu RX8 aQ #)^6\Ve)fUVϾe?L=0bnx8zYd3%y%d- t}oSsXQ&GȄIKz+x8Jv26wvv :S:yJh9re8Ѕ[ h=1!?$q bz׏Q[+ L&S2ͷmDKK@|uQOP{tOYѓΥQyx03_J)%a.hQ `]3wxlA QN" MJfEM4Ldd@c)Kv9aNЪ%2f,q&kJtɷ w3s6g\$'h޸nZ9I@ \iv=Gdמ!DVCO@a; v/ZDV1P<(-Jxil>Y F:).dMHzGK|f='L&1f)6T%@Ot fA AioA ^WaKp}p}Uٻb^J*=xsVep| ~ X6hmvҒ m rE]u5q$Ҙ g ?ʝEd"bU(&f#vkE+C+™MKv x9d^4[܃p`$@1ьC'h= 䲷 {s}mA|쌹J372=idϔIκ)M)$*/ErDd}f޾c+  ,0Q YZ