libfwupdplugin1-1.5.8-150300.3.7.1 >  A d?Up9|?ꒈQ\Gt#dD>Zv0TO˱J&S`f}z" 1 Wߊ| V hcb N]8Haf,07(VP(}@,0\6 ¢V`XacdK,| /;L\eUsQNraM`_UH0tB AdQ6oqs:x06aa7e2d742fd193d97de225910b3cc3f0e01056e114413a09c47a8c3fae3d1b13658bcd930345bae4c9fbf73d12ef2b7b9a3020 d?Up9|Ztݦ^}, Gڝ(%VHk 0/Ac9BWUO>I?Y+ xh%gscG;-.c=F+^2=7dFe. u6dy,+.DGk;`Y3foqĤ#Ǚ7a>1CRa9in~p|QRu;o0k_V:M/VvM5ޟGH^"C>p>9D?94d % V% ;L_elt x |    (7 dB lBB(8R9LR:kR>2@2G2H2I2X27Y37\4(]40^4\b4hc5d5e5f5l5u5v5w6Hx6Py6X88890Clibfwupdplugin11.5.8150300.3.7.1Allow session software to update device firmwarefwupd is a daemon to allows session software to update device firmware on the local machine.d?Lsheep65SUSE Linux Enterprise 15SUSE LLC GPL-2.0-or-later AND LGPL-2.1-or-laterhttps://www.suse.com/System/Librarieshttps://fwupd.org/linuxx86_64ȡd?d?7f30a0e447b4e7eb749ca3990c9d848316132bce3d68a8bb45128cfd426d60c3libfwupdplugin.so.1.0.0rootrootrootrootfwupd-1.5.8-150300.3.7.1.src.rpmlibfwupdplugin.so.1()(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.1.0)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.3.5)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.6.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.7.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.7.2)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.8.0)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.9.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.9.3)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.9.5)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.9.7)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.9.8)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.0)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.2)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.3)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.4)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.5)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.6)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.7)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.8)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.9)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.1.0)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.1.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.1.2)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.2.0)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.2.2)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.2.4)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.2.5)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.2.6)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.2.9)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.2)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.3)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.4)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.5)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.6)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.8)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.9)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.4.0)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.4.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.4.5)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.4.6)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.4.7)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.0)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.2)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.3)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.4)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.5)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.6)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.7)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.8)(64bit)libfwupdplugin1libfwupdplugin1(x86-64) @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    /sbin/ldconfig/sbin/ldconfigfwupdlibarchive.so.13()(64bit)libc.so.6()(64bit)libc.so.6(GLIBC_2.14)(64bit)libc.so.6(GLIBC_2.2.5)(64bit)libc.so.6(GLIBC_2.4)(64bit)libc.so.6(GLIBC_2.7)(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.6)(64bit)libfwupd.so.2(LIBFWUPD_1.3.7)(64bit)libfwupd.so.2(LIBFWUPD_1.4.0)(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)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.5)(64bit)libgusb.so.2(LIBGUSB_0.2.8)(64bit)libgusb.so.2(LIBGUSB_0.3.1)(64bit)libjcat.so.1()(64bit)libjcat.so.1(LIBJCAT_0.1.0)(64bit)libpthread.so.0()(64bit)libpthread.so.0(GLIBC_2.2.5)(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.13)(64bit)libxmlb.so.2(LIBXMLB_0.1.15)(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)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)1.5.83.0.4-14.6.0-14.0-15.2-14.14.3aZ@`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.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 (e.g. NVMe-over-Fabrics) when probing. (bsc#1193921)- 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/ldconfig1.5.8-150300.3.7.11.5.8-150300.3.7.1libfwupdplugin.so.1libfwupdplugin.so.1.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:28661/SUSE_SLE-15-SP3_Update/2e46a5e15e311dbd5cea4f259879c068-fwupd.SUSE_SLE-15-SP3_Updatecpioxz5x86_64-suse-linuxELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=468fb04f437a2265c67d6339156f0b208fabf983, 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/P0P0P1P1P2P2P3P3P4P4PR1R3R#R!R"R RRRRR/R,R.R+R-R*R:R7R;R9R=R6RI2rvUh0};t6٬Fw b8j` сtX6϶Wa %x; UX6W#UCJ+TVf&4XW=C8%2¨&HWM?lygM#6kIJ[֐e$x Z{5 wef~x!~R,믵"`]'=A,*/O|^49%=dFn̘0BN] okM7l!6 )}J) ` e^R iNsL[C̗毳wFUrȠl8~+z=u/aʑL&.X'N nC` 8{~sxﶶŠp,Ϭޥ$-.vS0<"ઙ/b$-83~"Zfτ1&TYH2TbDyEIawRiFV3DT [ ͋y$ J7ܮ<4u(^Giî|.`qZQԖ8E'֢Mof%!2cEeZ:~ɱ1Q~;XʹH܀ҁ͏w}sS*E7?&\%+Ha3zSWa[`Zʪ_LfXycv~kr87;nGH Bh0C+ *`zdg-8/ᚌ%6u,ː&Vp uٛc槖C+riO]yszJSxH>(8< azjC)\Y}+޶;n Uٜ;:zZ_y炨~\t+\Խi2q¸^V L湉=`i=^tU3~#GB 돳;'|&mWo{Afdwidѷ/#I:abu, ,/*/ H !PqyPIʂsR֊KyK`%Ēiv]EϏpHOShOƂՈ3O-%A2]02){}U%x*Emܗj~wxtЄVC;StPH?C\}.׃i| 乂V٥^1&9I%'K&=HF;Z14o LyYP!Hs6o+_KD.kdZ?.&+agP;C07(n8]\ZJksM{I'L޽8p4}%kF`8eyٚY%63 gF1%T.rnOs0Pvm݅c7Q1_1_pgxm>͗R=<~(ɳ ދQ1*V x1 DLx[\_RюtC]4Mݮ I{Ï<l|/eP1'пܼF'2_|륋 ~H L-}=WK? Kc'O"vi֩F'Z@ɾ&ӄh$;b=[+Tߡ"W3 Yeleu`vU&7.TAG44)OՁ>< x=LCgiHiVE/YIH~3e\~pŐ<p:dT8+pm u% XhX^ 5WnW i2qd g;f3!E(XrV᧿}zQ2_7Agz;_AA'^(fA؎DP9OG6a#@g<‚&4qF(#-vxr7E*c>Ա1Dga2bʽ9siÿ'1=Zڏ G~8\#oag_D'hFFmEf;Tt^[>\;<Uo"O(.%s'8I>X$y{L~:LٗC@.5: q9 d }qof;2OKzȅr=)!N26xz_wfsr)&w GdiY4C,5({{7'5E kT9Su ;k#Y. hr|ͩxF?tΉ]+QHvN60sYyxqi/%(psn%S67Ϗԩ}Od&|t)o w,0}_5~;MO.o;Tp-ȋ)'G{!Gժbt#A}EF h65wgfjJAϕ|0_nh4`brkS>d ajiPJ Fk6%҅O1w 4Eo xxcUOFzqU譽̀-勧GKH;W%ez) =@r9p * TeD!qH3? _Y\(c)Ru~}y5h}4<6vX^ XgVL؟'I\#M'{T?HǓgH{C%ꍓ|Gw 'TN(I dׂT\{z%TEp4x6ѓªFxDzaaS1%ϛ iv Ob}|Ng~v7:/ >+)e8Lxcw{f("6dc-#  נ?F*!\Mq(Q*V>4]-#q߯ ?gTtTby٨k-Lͤ>p5okS$xPA9rv& bc;߇ͫ k)l0S%o89Zf ӊ||\nhQn$xQ\@Pz>A\|(m1v>;|\nd',X5M"=ᮛt{ַ-,WF.}hVEQ ueMGbmJa長`F:F/),qdU[}IiE6lGL}=f&OǟFh/;l|ks`H~|b*W-^ERZÔE4agڴhy{|&U$gIh$1_nҀI } !ȢAV{`ekw2Q@qļͨ|dN-~Z ,ǪtRb;(bJR !?,I>Seɭf9/4;Ykd8wH@SaO'@ #` l EHR:m/- f MErMj&G}"A`Ɉ퓞+jtc6QYh?d(gsiu1%g4*T5.RG^7w֧IDBp R+O6piѩzX['~$|]d #Ө㕼I56@#b 6CQlN(SUɻ)u1 fS=O$3i1oRy=D G :3mkyD @x }J*sejś*9G<ãd1&6߶GʻhPTftNg?(P9!GOQ\C}/#gkrqvSVP.E4nwr;ɵ]V e޼p˓tNw CY6l}IU̕ I.>԰^ܴ;C^2hc& G!Bt?WR7q>(^l m1[!|/k̛BWVHI݅lZ,IkM:a#%[8_R0[=2.?F 0kgm'kJ ^󗴑#YX2O!ɻ[W4+8_6R@ - ӎyA$y3C/+ap=Y` }@00.B[l??`;?{ Lmn5,2To[g47fbz s^g XBuG *&6uKӆe+VQb?4j|Q@B .њz k uS>Se?T2P(*{Xvg Mw$GpqB̄ޙh* S"Й`܇'$DHPl|EVS4bX5(j)aIϽ K6GdM20KBAN|l]haXC6;v& ~l+z>4?p*ϱS>GyՂ0[V :FfBemzC@0雮\ЙM. ]~;VѨT%? VqbK+ȎB1<{l1GmWnHbW'`0_,Hth/`l4߈0d3|}t ӏ'y'n #,3FS]^߱Scu>0Wv`F޿PY2osmzu_ũ\W&IvW:+ ۬?)%vD~ׂJO;V <4՞GӍk{"()䉗I@7XUo". #m*Xf!z CjPEY1ira>VO4( 6^` hu@"?P~[D**uё첢 |x6YD˫kz.״P5l|'$z?%ԭS/Fř]Yl?Ex[:xwKPY'P^cp K rEw6YRc[5+4RlqS"*Ep@eC1(WJay.0)KD_R;˦$g8IkRG@=7Qۥ}ykor•PXv%t7rpp ]1Jژi4N}qWDԒ NCk˺KCe§g>(n|c1Bp $:]V۬YL}hHi,bEGaT~mN*Ia罞ò^Â׶j[QSA1ڶ*~fA9d^k}<[9:BTNҺ-MkBX8pQ߼Nmi"Ujpr!#C {F]|'+A[?M$6,IϢsW=J„LȎNKDG¯tF=D^raC;_0g-@϶.OmdL.儧⸵bhz } :eI2P eE# [V|Hv\*oķsô smY|á9NʁUi9ϕڼO*76zVc0Q1ڢ_Εf \b(d,u@7OHSɧSQd푪\uLO6ߋzəsJ{ڏUnf%η/g&n:+]`a${Nw1}rvj6D;EQ5;mS5}Klj&O 5r0RۯH-4%+&}}kG{I`|mdRᴎx"$A3=蛒 CNAƟ@-ƪ~Dٲ*^6z H'WcA],WJU֏{;qǨ\eaJ1R..aML~9kN)c Pqd(M¨ޣ(- bsR飙a_pp .Dfknh`[*\R7E^ʛ!'[)Ya+R{»Aě!=Cpqxfjg&& 1CDpC9cԛpL$_!Ձi ;SdP*ڊd1p1 叜ՉyX{ m@GwkO_ZWk99DKfb*?LBxYR 0:A`M!sD;50o5'y#=Pü){CM<4`;LjUNeW4N| B?f`,إLSUO# ť#<1L w8t% ղaejFd֝#<, 0~ԹVxRG>KYЭ$ˉkh܍U̅10_UB%~-T oƋ}&VU 1YGc4.`38)EхthM멤iNT3'dF|.z#)6//o9EZ3EbsDhvϰH;!Vt'V"hSdžs`Nlݲqʘ*l|_B|#Z[ ⟆?GeFQ Zao!֜reY"gqڎ.aڰb*[EmAD!)W]{oWMt -H[Ɍp%{1 ū _t (8SK \I ԟF:e98(^̃V&[+v8ՄR sw2k+ӑ2z@DđrDE$Ƹ3"H冭ǹM11=b}9 ]J>8*rK*dfۚNf5K  UMARIݺ zJ69Dj3HfO<=?,4OHػ7D4eqՋ>SLc 6-j8b dU24q1Pb< *&"%9N~w򉅩58}CdC&Mp!c8җ.9bۜ6GHbfwʹ2%=0 h-KCLQuc+xC2=Xlc/ <ˏjturٞ`VϞeZER;հ/v8# 3qVBqLpw=9 ?%B/; A&?V/C +2Ng!Z)\{q\oHp6tY5N>eitUq˭`c]`#-2UqɡC7?y'!IpGZj+V>'4}S*š-Pb{Z:&s;U\N ./L"rKHH. 1oIq&mZ捐[LJ`U3q.}ܛ| /+48ZpSG)ڒ"*4V|.0ҥ4SfEz0De :d -^*}{u^'b֗hu}\y4VU\XР" С h5Vy*yHBXqnB5M#z 6 8m7Doy@>!>v8yQ\ӾF8ŵٔcnRA-H\gX\:w#e> ܪ*9_: 7!h& M֮EKIմy͖( @6 ]~Rm|r!JD!R|Re65]}8@ 05 yvLZn@ui胕*R_0`9al@X]T72 9|`{t YL^zilWg`)Z4F:awEz=:ɢ:-PN{ًU'}t4c5I#숶AQxc% P9A]?`t\88S~iҀ7D [omɼY2>mwQld>ibBtѵZE񃢏FȭKcg5J0e2o1t\H0>`F+ FKڅvn wc ~ܓEZ'pۑ5H'6x́:A%oWj}TLFf5%n# }N'Gy` k(2ק^= ߟ82Auh]>N'RS۟:\1b+@9 l;܎m!ORC# ,Nkl:\sѹ,)F{ɨ߇ĕWWFXΙ-',`T(nnR-֟M{|+e)m ' JJh|q`ߠ-<5M77z 4* l,vrx>/-^=@Vͧ$K #j/02= D'БaB30v;[QAa^b:Q^\뤇t/R|c`c+L\z2hH(QLv}kCKN&jcۙE FE&љ@$Ȟl{.({l̵m -!+;hcI)\Aêʣ$˶:В8,նL"Z >!)G ;9 9Z$)Q'|K*E[owATk:pzf[j"]Zwy/],Ad: 5>q < :1%NjI!$F%ƾpTdiG6]6exR)#>)cf=t\#-"ĄTB'9 D 80=T:bw#U6$c%~ yI[B!c2TrRt'֫"j*?~&c~INwH3xA`w\qdgx=Sol=hiA.B{T޻["vyoዸZi=lFXI5z@D(*I ۣq(x -p37N+@5Z99Sy,7w!,ǷMRcqUuh<{jAbWGs8'[(0ɏeLB󡘜` 2hgrR ŗE/ 3`4zM1~\RdJAڎkym3jsgV]V8 r麧\@f<Af~t.-T{(.8Țlޡ9ԗQ@/v{P gBZ t/0ȰcLTfBS1uZ2GB@DNF{XUD*d)GSi⧱ `D1dX:% ϦC;Gt4ޙ*նL9h0em1@iw<<{t"DOcX8)ΙP찣vvm2+Ah̀ԨmŒ\u#{Cz~Ig-*n1oR {e,ޛ_17Ґ.&&td~Z{Xs~Q[% xj\9GeS S\uc k~oM{.9q!9ZRĞCkö5kpl{ca_ך@MgԦ^u}M6sw`pK?5c"H?)AҎ_oT^W((X]˂ڋ;SL* 업WQ%~ "zj,985 s?jle+wTp<.$2TZ)1PK brTc)ٝU?"GoCz?0-|no^N[_ x?n\KL)yr}ɠfF%9ha.i͵ }k_O*iVt /"FXفB"YO )j”VЉQ١PO>[li$Љ!E\LƵ .1 ܥ^H19~ZWZ!'D&%\N݉)_Ku-.m (HR:d_P"N9âV%ܪN+Z?r&;MwO,bO:}jj~݌I+4|Je?4t cȹ4XAb$Qg`rx5BtPwb&]d*u3))oߨ (E9kJ!}1/7HAڵF{+-QMl?WEc7sư i6c&4~Lj!^d;{B4)| v2n1s]`zȣlys$iSy:&"g 6Z q1eR ἞M< C*QKG\|,Cz +%EF d0_cg f3сv E:-sRUմA}J&a `mt2ʁ0$0=SGv-^ն<%xn¢uq̃L&.c] CA+ {iPZXPF2#f:g##xMїV!^qq$-׳nlZ]bIf'|vY+C"׀һR%D$)$#g ؋m]ҖʧT]Mq@mVQ>>Ճx)8Gns=GM,9H[Ls4;7NڗJ) ^&U1UU4a۶"pmxcˀZ߽u= CsBoYN8XS #.>f{ ᘩ߅'Rq+| |>ѓ1HBSw78++|@8ߦo.r'X|4 T+sR_?`ciw+j棱eS; Gj*%ޯbɲ9۰X=|NdmQy붕п;[*>F iΏT|,mkH;ȁ`#䷖ݑ{.2<A3zM<_ s5`RMH&uQq@BPkN8vzYfkDoDHܸ޳ JHw2SHIը}qmP %U2s0ϹHY7뫾^$LMlSF{|E!^هVcG$Nd/W%F=ُ~(#Ze)}@AamW'"d>EaC~ 4wou8kaگjLêu{,,sih:M+势J BM@>2zS5a#c|W`=ĂoBÞV_۵P%f@1G}$OBqkڲv$g M#&ԃJ&%?t%qWGjhYtGGmUDV(@H:X$T-o#f&mjWO=d*)l ) \!8%z`㞩Q~knaXN۞ÛK⯉oh cW|w LKdto +r)=cgڬmr偭]4kjrSbxv)t_j|%5[HyO4]R4Xq0c+]()da1-njex/ݙYsc:7vu O"++~!]00<"hgzyt8M^{ĺz2/Do-8_`Ţ&Aˈ ,,DC,x̔r=gg[SY/ dXhG / 8ªar wgfA,Ж}]Wf򃂤me,ߴ5OwʩGI w\${zXϑ*eHk׺rV?#.xS|UƢ\3mVcULԡY2LD,A<G筸qв Kd}-V2=Gᛜ|.o8?qV3ady ֙%ƧۜW/lAQ^=F.7Q扈o2'>NsCk;fW"v/yxjf:V$]QJ]秲߹,g?RT^PR'e52AjD42BϺ‡f̵G&扚Bmnzs}(H-5a\.ތ114N]@'ʤ .gbvţuT`XU(6{BF:v -0}yEC+$s:kE kᇝ_6JU"JnLs-/{J*X |X.Ib1&nX73'NycS3'>F@Z$w<u}>wR&noFEƪoKk+NY-{hsc\]Tlw?\Oʸ?G/\cd~}!5w6J;MMpO!R]{X PNMRn%WJԯI)EmF+ֳWw(^ۮF`YjջP:1BӝWWY&ef*AG&b1c(P7'1F#=FB^4;|Ñ\0{CXbY6p-~7us dm[~ݔS2,Ek  LQe=w8-,`4ㄻLKr,swLZtVp6 e"/pGMIjUnDi%6^&#]Wۀx(+wxN׍tJt\"d=`_ȄӦʊߊ˓N)@Y]bʽN].WKhökKCtT[5ZD$тt>eZ:ff7|&wƿ ,{_ݸ7 IKE1JugnJb oNafzjʃ{ ߅K' -2t^|뾦(-SE#b!W >КYiB.Ԍ4:6j9kh( yC9,WƿRu9k*QqK6";{esU(SOX;dBF?1):4Sw48v!{UpD&>,$G2 {3sҙKʢkv o_owTZ`8 :%Tk7YQLR3 OۑU x42FsAԲ:~a h0W6[T_u}SmAc8:WE>`ܮ\_dvta-]Mۋ$wWex?lb:7SkBv)/׌/NLb8 A3_)zEN.Ϯė L@:/Ɖ o Df/Y}G )c*!gt1ԍL#,`NEh%]i⾆9o%#!c %f!ͺi$[Lcd;za{ )"*9 "5rd;$Ep ؊L5^ydR,MpMxBG2 ,8nOj"[ &U#03eaKp nPʇǡ5RMCWڶVdPvۭZ0U.VcqO:sV` 4ohz="_e|QVPgS0gLцɯ?OUЋtPy?5U+ÄJZtcʭ@ J+% 9&S=94&/m )XhVa^:ALM4X(|xlm:˸edC R7;"Si8cqH=̪z*ƒ0pk]5;eI~q7w{ڰ#!cW,G, q6Yf'2rw^v^<"aT@6 NhMC9n{InWFB0Xt# YS-q8o˶E^c;C3M3Xj(SS:ìzp4TJGK mbPҐPh@D^5 k<9]3'a˔~ Y&OUZoл}:ReBVj8/:$n# x%!}^`?8J8ÝBTE}O=f>%P.8]J;,$]jVկ;y8C!]ol]m? % s}v7nhQv`pcw~K 9FPDEH< K+mhە*"M=Yڴ8d֝1'aY9pGHuO4w|&]4ɚ'ҍyLwv!*u)K>y1c%\ NcRUĴ9sx ~ҏmnQ">ψ= */B!N:Ԣ0IoD7|9V`O-bD.|;TkI\0_.Q.Y~DZ5!-D&Iם-%VT{ vYK 8nuf(y9xQTyȒQПΩ[DZ!hde\@<̅0ʶ"2(P~nEЍSDF`C~̍TtE:.}rqf~_¶JI 2rO]" i)p?NLF8clB7}֯˝7FСxrLr約ԟt="xr6fJ֬=>cU O ,DU  <c- d/ݡUaHyL{3&Ͱ,Z ˠq\S径)0ٕP%䀆 %S/!FYۦU#\q,nyRΟwwyS*,eY)Lc8F_jeEqZG}t4g $1!0(^HR 94ꃕJ² 1,k`\剮ҏ@&M0y,8_ѥ<*oj7PS MN% *=Na 4SW/P᫁.a尥sb͵D3JN>YW)/ %0CT6o r_pvs*+)jp?3 "jDCIg>,WC`HZbM;_xV$pThгdjZ<3$J|bRd«j O*qa*D&VK~ [.ou}#v(~pT4M *x>*2$N.!}tW|⽴=hE&Klq~`{T3S b&[ ._p-;7vLߣ%I؞FóZcGT-;^r0KO@¨.+3Jc'i@Ԝ? ms2bQr,+t gxV \=؂[xˇҮ|x_btSeAF>zzGIH4K $Nn4stG?I}eeg ?u:(Ѓg6xN+Di^ s )h3C3x 󅝷0%Os~Ç I1gwdq Di[MSY˷D;A yZ=3Vٓr`֠ SaO* }? _<{,_ X5SuhxF y)ά&ʈR3(iϱS+Q J [F|a+ N4\G$|?',pC휚'TǏʀ?2Qh)P5_Q ͥ%97ik w-P# !Å@">w/)`mGGWbuF$$TۋXȋAAٰ. e7 p4_SNSBGwC'XY|r8;B{rQ36g$ Tjɮ˪3t .<ڕ˨f,ǡ=TV%u/tk0W3<u*T*)&C؈e'AJƭ:90ʈ9ɕ%o9c`1< jLL*:Ǽao* 2~vKW)@bʫVqZr8#@rzJDz3(!=󧽑ʙtkb4hH/dZ7Ȅ3GIVWPL$g+  >u kQ+MiS˿oXNvT_\PST e|21KX{^j5R Vi_Ҹ+ MHRlm[׸ S֑ԡC?׮W C!Tؔ HJr>姷M7-eioe#u>a^ɛ=~bVNH2jb}Ot| slD2vl86%X)  e{.nTKO{n|! dŒUӄ3+,]]UPn%BJ~AczrgGdRwPg.jdh7cX,L>hIi5%oD)vWRpw46ECK@>^І`i(ͅ/ Y}%l߮E\8(yB]+MzqmȬ#v81%~*tſӞƺuS* rA#roB( i4$ Qd,^$\l$tn2s Ur0>Xuһ֬/AI:^Xk-gaFto8;[Z 5 7Z?yV$T"Ngxp'X_RX|+J3~#"Βݝ˺ǤcG'ZmM>RkV_kȼsi]ZCEʂzF:So.{A Qwd;7PDV6,=>‡F8Q$UX5nɫK_,.}9Xحe 65Y47jYJ&PtzzG7j)lK_s'%*.y5mX+ ._K ouA m? ^QV 445 oS(Ɗ\сnoO6y<9(/q pyKtmi#:%**qj]zY{YҵqdO٧5$(_7u-Q$~?mb23^]N3\xvWlXkX~RKh;trq*+- ݏQrѥGQf8a^ ҂ ̓042ݥwqS!e,>,󐈹Ķ77f̐X MV}e^n7]͙trV0 aDi07/ Y27Eɩ~/o.`a@Zbch A8Q6b*oF ٨\҃Q@wfYq'ݦ3tG+W,hPڊ3E|*0P&1cը2<WcuѰ۩#*8/s8D9\fj[~ŹCmO2jٟ|yZݽQ@#F=m\؀[D=V)%^DJ몥Gl9 ^Րs*.q+l6F*馇yK"BjzO l7Xmuף+*.jy| , `Fz hn+OkT4&fQ{际y>M Jx68?vi2a9F Rx-LiI+3HGVx%ZM՜tHʖ !GflL1Nތ3;=%8,N6AiH^XEHh*xb6/d\wp&"2% 3X0uek_G`=`19XJ=c@ jݚHtAڏ@"UEl%=/5-~ K5DcRxT;>*xiT3#jd3_`ErWX]jZP #>#'_i"DSĵsǓoY70!oمAmTM K`"(Å2bm~w]x)iw*yrvD}Ж&B͸ֆ;ua+sבmEԋ'Ҳjdh -[]T7{3W`ѡ ޵?gФ+lyOb2 KWClvŊƫb%nxьNS%vhyܲRտbӰYM>#q7n vVMB>=SWP&Ã/8DODy Y;,>Or%٢*BtI:CX0kKGL+7 f+Q&sbtvgD`Xf1΄ "tge`V.C),!z"5Iwl? ^UB\fq/cԏϬ#dK](KZ0>kw?0u}٠h?16f%&{ʽuD4fO`o`*b2eᶣ6B)$~T+NTcK5M*cS2QVӲqy;7<Jևّ?nQgsgq e%zo;DHwpN6 {#Sh|osj 8<p(KPUK%d}A c_" UU˜{090ꎩOb3. mz+ 0;KDĆ:IPCXqll ] 5Tg=JT "v\3˯iHΞ \n&tVmGZ9}5|^lyӆD_)M0B)N_,(ӚW{!p{b-s)g3r;^ 7sd5\lͼe/vȴ}#ꐛ8ݛ=ZS+].dt$ -+2pwI~ů<-ܯ*$^l2wx|.•Z:pֵ<57sF)Zmk<4 -eF_f2>jQb $|6&ȋ \"\2+猶_)d؞!'ny4s\L?F>ŮZ(([i(1Tlma'9!L/>Xt$N﹩!J"Ogg=W#LKbU&k.TwBI!=2Ӄ[Aԕ-\ v@X--.نp҉^\Y5pki Fo6.lŏ 7;T T tDz eN/U96xn.@m_' ! m7A"0K)D'.9|T gO# /T&`O* qŚ8mIs%>0"QU#"Ivq􅴌7; 殣fMbPk5R1 ',uFkQ?[+-] MkRjmQ[3Ow:J+#L!I_M8 T3%hF)2%V>rQ6=M9LJ:s_SUgGB DDYœ@)^GyK;,K¨$3dqw mQٱȿ<:ZFnZ`Bx2:Dh^(؛߼T17O Y K~)j t9Nut"EfJ:j{ҷڇ N{:-8"XGyd[\DGֳt[ dqցW"1+\;2}C >)!=-S$|S*E1J"<)u69Mm }ÜeUCT͡ԿaOQ#˭Xӡ%xUTX5`ZJEDyښ>h)ACP}&:!;0&G%a V== zuJr0Ok^  9mwe$&Su"LY=mJҜ>rCX5o2 hv ZړBZC?!';|>V I2Ĵ kPup TNo8sw&R ZNRك&,aI]KΘVeS3~ Yt@n~{<1@H$yp?Sg^oWXJ]&'dԷfblq&sJF "Cvu,Ԩ}bo>DMG6%cSl皭s\/wªJ1sY8 'vQW6 ٌܼ[D M^&d=I1`vz O0s'8Kx( pf0:2xnv1,WP`L\ޠtlUj&}u{W'R}IPd3azb޼:f[`crflJs&1iNw2+JQ%GeCqӲ9FS )AA1'lKZ97a}ۣ;lϥG^YѐE`UKF$)5C嚼z~J0e(W_NSޟ:ɖ)w7%Wr26&k#/Qe$7<2>\ͫ4kIӈF3Q/#=F?Oܙ](&|Uk=<(!CNd;) G韢4A׍xWtq|Zo|D~ܨOV4?7Z@! ŨɊ&-'%"bԍ L@5qJ}S #$ e R">H"XN"ȋ s%F4Npݾ4Ŏ:>;4>!u"~TuH{0R)ʒ" N/o%S8^JG:%B9^Z,*@ p 8wf?̅R 9S1"i 6m hoo\6M(i'ܥaTϑ%YaMrV$8syIa%OAJgK5$s(]Q  F|)ӯ٢zJ@ ζ$c*y i^d&R@T+Hˍ0QseM=InX6-|`Huh0SV^[EQuG1ߥs 'v\;vɡ6fqn?2c%FQFYӕN'ZRbM~̒93_d ZN7&$-tC5%!Qّ6QP9Ō2a>EN>-vY3^Lϡ@čO^(>,M[Wu-,99z"a93"pEJ' o1ȿ70E}bSj%og_huq~R͎nX;<&lYj8|) Q`@ p+N~- $ms) &a ]'cPGJiMp cSP/H=C_WLz(,\EﴉY+^.$p~Ƥ ,s@q1!nk@ʽXsۉ>K"H$KRp=*b}vop/}!?D<>O'ߢUOKm=4_6W\ikٮW؄g:Us;@ojq+.ԮuUUh&! fE!G./@!.]WkW&ސi/73<{m8ũoCQ#zF7q5R_1PcQnh z7=?4d~;,glu*13>0!d[r6c%-je~@ZtFۜ [vE vn<, ً%}Է|DsŒ";Uձ9Xi|C^\p3k#] 4|B߂M_ۢ_0_1{-e:<*ny*aEYȭЋjB0oU2<G@Byz#p}Ё6g@:bs*îp/ 6pA`Ztxf"1R"+v Kpkޯg_K-ԅ?RΨF+y+Dw.V5уi)W٤ sp*OAԠRqkpުNVj̯^ Pd/E nվJvK8Fjw' e K= N]pZ2׳)RmEE%b1qN>D\ń[_]Yrȋ8M8SbI ZsU.|AD[|Wb9ּBN='\7b=Wުj?2vDO b_r(k\qY"\xӟah+"6#_X J[qoBba;XW'v~w+bkpWNq_"c,+NV):G`mq:6(rY7?u=Vgn"<?z;'+[N:gK=pz7~(-X7~+ D0p!ZrHzkAvg_Qzda}p|cŭn(,% 9 Kz,C;} dj#iHl3tں[GHjzkyw~s?W򷆌g:'::a,!" YaU0q>\o\ah`&?&n[xHgJsE1*MĬŬ4'H*$=8ФJ-4A B\N]_‚ R)ntp!`! ULĄ t}/Z91A>fJ3qvƯ{-8o3jd^d )8^lᬒ-)qiZzD r m1.WIs EܢW-'ȣ{o._r)CX4)XwC|aaNhpb<U4#'Ѳsr`(W|?)UgIj{]@ơj]8fLlV}8ה@df1Q{3cx*~5D ޲>,HH.ji42(al)|U"UQP_525IXN6óνz6(;NFT,Isk%bD̗H?w3;'{vW+H[CӤm#-܀xj6KZ!TC(|b~a}&RдR\ L8! ,z%,\04NShvrZA2ILqJ2 ᓅߞ:2)Wdn5ȉ][\\̚؃Q<wz){p<Ι96}fk$nZKSuBJCyt}k(fBtDFTOzaM0~K 8ndaڝhoկ"!W#`C>|hoP wJlK7B{!pǐb݁ƙ,E慭KMG<Ol1ܙ |8.3ʸFH'w|k3,(jKUǎy/3 <#"t4?SeV$ ,3;É{ nw`QB3ޥ)IItL3N|Fڰhdّi#z̓A.v=$z'7 ) d.3za A#KZ4rA[dMdM.𥻽h(ۨw^[ ", URg3u4 տ;A XZӭ~;L2uPL ƏL`<8'WXq8"YdE+MbcRS'f=VmoAKʿuXdU˶0Jo]*T5 }$rpAĮ8LS*_Ch YzD=*|ʖj"6; J+ЁI9U͂¥ĭkLL~]j}k]ԑ#? TA!ϒ4pMʟn:)_sObǰ&k/GU8Z"y*-R/s7y {~s["AO﫽FVʉT|2$$G 9GD;P#1k(kMp \I1Ac|ި3;P--X $l,'n|ʨhӋa"n,hY=ʒ9%%`"S$,v"V7b#?&2BA"b?1kAj( zp <]J+]8婰9L`nVL4#4ef`Uf&3'wU빝~N]:ܳ/aӈK*h<3B3_.3ؤmgrCX~|36Wp9j[x(7Ib|ԶsoeɄd.?;pIWEOvGYR?PʥʙrTRw7_"$k,SwBW#3VJ3;emś91l9ewh S@C΁i4@#c$#0#`*wL p兾 %P] 4LRv\mo'\,(6O ZS"y ƦSvЇBbCŝ$=`.BBss w#Y2n_ε^) %b/{M$>E7|5ǂъ;?DVOqقig`l~#+ JĠ1j-jW| ~HA}S}5ҟTs4)sGӍKkw/͞_;mi/Htwm Ja357/.v0]QbkORv/h\X-nc5s^?Ra.%9:Hm='|L w Wɪ% 8籗ಋt4,Cb3 y]s(oRXb^ȷf'DROٵ"2|J& k֦Mk_#:H]U|dGJoSM'LѧZ - _ !OvGdi.$sش/N5ep-"!'O~1=YdqV}Rwʦp BJe SJt({65ְk#H8 IڄYKt7F00>_2=S |\5rA5~ ;8pAC 5sN?3l>[[#U(---n',M%4KYZ}G|n妐usz+28bZ  43Ӕ!RgDzJNS$}r?8QB?|@ .c @[^GJMyV4PLiOlA~+CwGF—Jp1u5|0hTR3NY2E@( m~"L'+qjw|nAj03}" It3~ϓ)+eoP^{R|NWeT-3e`?F .a'З Vy͈vHEwag0m.tQCU"8sOR˰la=>BJ! ( <Bug1V83{MnEcn%}Lq^KҒĜr XԲg&qUtCGv3e:.D- `c :KĠ\8$/<6 3^eo}s\ )]&Vٔ1AGܩ,;in.-W[Ԩd}2YUq|.OC)QYZ-j7$:V ZU_<.;@jp*86VHiXG6v>/I,pfY$MC+GNB83} 䑹I96hJAUW'7L H-g(0xRI(8;P} w"ЏxLSt`K,VG}EˣJtXG܊Cqac4Rζ{jQ4Dz! 9F490,ۡR}m\MDRe,oI]ou#zۺcys\Y"ا\2V{~+w {@3fߓ\T/t9D7dRc'jޯ.IW<,HTi^j{WU+W3T5C&PEC"`Kſ[ MQJ 1oOͳCo(':ʴ`\_X`Nt9WAy NU Q{J^QBEP T:Vź5}An8_r# ۴\5n5k i4$R#^B8naPZ4}!4ɷA{yE6M70M ˖12LSCso'X#wO!1G]1`{5jgsJj|$MptGb{] ƃeYa]r[iH-qNCֺ1XD15E J=JSF)N ,'ř+ (}xr,qvbq8wD(YBms Pv|Y#um34k1G^J9̳bI|jLNR '\=i &׿g_.J zԘG 5&؜^N&!Pb<-XWgИ3o %TV18wϟ.(jG~zUwtf82Ԩ*Z& 1g6nʺA-' 9M1NBUBM:[;p9udcB !I @czqk3Y{!*>J^,#rT x;}wsUT{a& Bo89cg@R@j15<%}^nZ[0h[JyhRDsɏI[\ot6&2xL$;JҧOB5x݂bħ뛾ͪG~}D{6uF|ՁSAd!NQԜ$|"^]Vr9TEfNfmdL~$kiu]{醍bO⭯7ϟ:@p~/_PhG Uw":o$vDxaf`]yy(cuU8 \ȫQb轼J5fnUu69'uP}HfC"P,J!cS:> o4(L$g˭z9Ucq^"Aܮ/"D/GCӺu-)Ù wON?Fw:~Sr.ىoׁ/|%l1,.U8 } )W>Hu'CT/;q-Y# CV>: ̴bRu a[B~";ksB}wNă ml%<75QmQHR1/vD4dաW: M9X=ظtvd#kA_jq`Kt"ÈaHItFtq׎ 08lM62C5rxKB|{\"G:p')*Nj/ӽ5`!װO E1m]A?Hb IfZNƔd|v VcSs?yt@=TvJp+ |8Vf5Z@Hr9(NL~@>J90:34Z%kg1 M@Hbk0[zBT<ܡLF#xCT fr?RvwZ[7,hvNGhWo{j5`5K^1X Q:A0ccNȱЈ< l8BB1Ssןb018ms~: znkppwjTt^BM3*Nzٶl_*Sb^INϦČNh0 QKa1ЀCȰ7'!-'f{m|!u]3@ A)#l6 P!f%\>;r3##X[uAbQ0Փ&]3x$ ;oY 7BT<ءՐJlO$lj"+_EM}Wm=`k'& ̻*;}&t \u)ofV#]QgD5dx\ϖ#g% R hld2A[pCyQM֍8wO3'뎣Np.0ݥe.A[k5X'SsŲ@kb.S_܋l /ɨ6 dʲH xیXc<(@5N=X%#wP;89ԠQ׮&X +h.j^"(DQ\3OIW ѱF^4 ½tK_1b* 3I+:t: Jb5[_g]ե4_4-KߐBd)~^hXr5X04s. ̯S4MLdB/ v+1лtT\FGAgr(h%M  V=Q8u |fс^5ԝϝ׳HZ_K5t~O ̩{gUCWd v{soƗ}|s̢Uk ]Ƒ;_(z4SER8rRv@}BOgu*"O/)8,f"T2uNoIec5 |\ (Bt~@{)7}5,yWK)fka^䐸W G&\/4BRDUW\ `qQa;M%@0!W7H6#{{C~dq"6ās6ˆP]vxJ/rܴ͟ƭn|բ EW6ukR/D$_{i5Ԍ$ U.Ҭ>TJ6۔ 2(a 2Sn ƽ>*:xfr1&9_crC ucxމu~D TD<ijРRIbnjQFtDzgf5 3-a5@/:wR+ka*YyR2T9?h&aLKoך?FeX=u.37IRHx*TC;]l Bߥ~^z}xtG ѡh[ |6- `uL5^Y3Y9+yZ p@E{g\{u?I.9-|-9B ^!Χ-u,0tՔ!붓xzf~Wn=| Z8S""R>Xf+u!/H(\D2M09u&DJ[=ɚɌɌ4HV+[,@nAρIaRn_%vZN [#:xH3huyqH])Fʲ-LJAl4eh,)֯Z GtDW<[B"P1{6aqBc=qA:.6C9,Q~7=vd}9{k'vVaPѫTi5OOdI@_,QkaO8i.,(%9vrDI #Q_JB˛:H흂ێ#H.\]).8@ܲR|ѕPl6WĆ/UAb%OCђW9醄?W?i G`|tހXcr+Pe?dzs^K]D]3se"EHkzg4sRz}"2a 6y.wՎɗt}lbam kwRvasWC$u3C+nȕNDŽ'3Qdl 8|w7ڶPC*O/X&dYprKuO  W3$T\Qc ;5:%> ` ҇58\0*mK>}|zt^c `ooUBHNYr!ǂ=ɯޚL>B70'SErQWffYS/_N{D5dQlKY^kB?|z)V _<[QWUtxjb,xy.z]@-"z]xqUx)/(6\ZҮ{l%0Zvb .Ly&T)yksðZ!bMݏ'O \!+\b$]6bH2]&|w8ojkVЬ-Ofo19hm5"qQ|ʟtele9畫\z"A^r|*b) %tjҟ\Hz ڠCkЭ3xYFzA޶Y=|t&4ՑuJ0JeR^)޽BD45<'@y/"N %M,Fѐ5pؤ{Wﮄ}aSJ]DܘE<mKcwSR-p[ (rY{/4a < 6b PO'h7/jVO$~9lPFQx?ޔbdK4kFrh0J^u8_^<7(\$9۰- ҅U?*i\dŘK͟pdDz0PyFH夠@=X4PȮ[KԱw|r1Zکcދ]RΚ^]KZ&u{3KBLq7Fu&/dt,"^.!`ҳX$j]H5@=׃#вywَŪ`{[`˸ȰA'd}٢5\V\2I)`Sa+mB{Ew?˼$lv"!i%}^h,ZJL,( Z LWd]'4bPL hbFN-Ey^:5m UG܂':I7q,+`Q#M/ d Bp%uUd&7UTA\r@~2iAm1J!dq ׅ b^ނ= V0DM :3&*69sy=EߒQFfc~AP}xVۨL)Uq."8r~f<㙣y`o]90˹%Hx%<m2;>ڽ(37d2H?5RA!҂`@ njőQ+3tU?BbKuiëhT\tai|^guHɴf?pgdr.7QLQr  'X3 ~ q㛶0T؃8.qϗʺ Ne`{m?̳݃O-㡸mW/_ akbB[6eA/Z^'~ eK^lWb1TPh"5uJ{`$d57AKkbzsoCܵA`B׷)%tu]1?v?m6= ܮvKD߯?VZr>'GGY!.io 6Ahel5ԊRP.5np_/ܭTJuY.CX#r5]H6k$vN 8 kO9o1g-g>k TWF8ԸYqʑK$ I!WLfc+^Gbqƴt'je&\`Xkύ㥋 W2? !:&<5XȀHAH*R,9uQXih ړk} MrʬeI[E܍pa xOjZz;XEj$% ּfR%ڧ ٰ]LNxlq,7>K<9Vܸ 2p| c/F'D 3a&;'m?#-ejgÙņYp5k~Y5}y.H@>C< ||:19ׅ6e;lԝ\qkN-/Θ$>~ӌ#=w2[ ^)\>vI(@9~O*$@'l PAazMV4lsGC*X<`\z@mHBaj3r`H,a@bx3gό@CmnK.l $Ёz{FFD[STz]؈f]r]j=A5#1ۥ߀jދ̧,[.H7K֧ch\>"B3(:3x/a4N \z l/Ljc 2p.%^ϰ]gn]sjK%ۇJoh1  q n}e:V%ΓGԄ񫕩&/߷59Je n]ڏjH[nx[#&]:rp ?equ 7+# a|*p+HhʡVݹb*hy.G桲q`zUX䉦G *ahkeEmP"W!鳀Ckǎ9 ȽB^UaԷl0ljuscXRW:c0y3ż-+U>OgϱUe5R3`$2lڣʱLX>F7pzox4ii9zgDi̮K(b\T>y,/ $Jt6 \9جT']sÿ`$_N/s#n"psTsz}Kg9v:gkie'!a-7|v`Vzm/BWk(ʚ1kMcHhODQj/ by7i K,f/ ny:KN %K;*iuxc&:'Zb[Q/qe^KƦX,%b r$a8~uŻf4|)QD",oU (>pqßzZKb_.IT-((h$\94$p۽!-FEh'Ȗx%8Y|x*+D<"C^`~dPٸMi:*D[/c7x<[Ό8 eٷ5d.u@#hѸFjCc;K{F;Hs_ ;Qf&$Ί!'*Ju :f傧RbK !?@&r$(Elو U ,H4T:s,=-:b o6 -rLpR pv"iGg+ 87Ixj䘭cF;I)[,"7)N 9V[~2{X\Li]^ lIhKNp~ϫ\"ba齛"Q[(;jӯ`j5v"&܁nc뎹fݕp8}/B@Cw=5`s9}"@uw%SgF͌@y7"{Z>;"ް;Rw3^tgaI`*z=!l ADҕ~5sNe- -^S!7CR JW qt1{JBv"Lcc#\DIZJN#5` i&>M4I11SMFa@Ʀ/Q *$GG )aj䐸򽪇 UGEG~3pdHj%!::-Y37'K5`⽢/v7 h#eԍ z n+O ]~-:'uZ qÓֆ[ +XmCKqÙZ^X* r<Q̩~H}-9Kl.B~bDEwm_q+c~C&t?=_Jg% K5LG .",AYX? m/Z(]d.:h!ܛX2ܗ4ѽ-[R';3 0F_k+P..Rt+ޝuz# /ddmQoS=;(v $s]e%F}Ny@*,#iْh|mI3{J$Wǎ6KR8X+@)~XMf1*w1C4$VCȁ蟢G{A OGh4?n!ڄ5%&;mBdh@4!FL]C]o'Qڲp}~`.C'1{ .f(7yG~V9Wct#AZB7VXB#0 7s-Qu2>6;}͜1AO#1UZ"W޽*7' @2̭}ce;"Cꈓ+Uٮ֎W:ӚDJVELߪ]MYRDjaxwk9z/>:MϺ &{\) ,u:*O,Yw*4 C#mD꭯G8-0wępFmBEU&_Gs#р>y &Yn Rf5$jK-pxbw7HC}p6a|m~>kUXR74N\}_]`q*9*}'+ >I1:j4|ʫe"¼۳T@,ߍ7ux\4{6iTVa·HRkl`9{Y^yp B?Uk& K֎.TpIcQEd㐯l #gSre\ԦSaavp_]G RZrAc$ zXFm,ԭKp`@Mʢ;|XN =OjrHdˈ7g_I_EQ{Ēs_PreNoW)#n'PFтxRd}{|,1Bw t X+:a$7;x3X"40!NeNe[3lQ GBS41cez5@'Z؂[ӇE$Qq!{XG H>ÛRt]_G4zV"ĽẔl=6we] ~*Elngʻ+hV@s-@0ķI,ewÊq`R @ϵG d FlKR%:Q20?6"p1Դ ~][N9Kb^B{gH/Mٰ vA\907+aG"jVu6!ͼ΍}4@l.ܟoaP8srxlcJcG$ȋ>`KjEA0^孯ٲkگDz'gH-lv!Wv6eN 0-}dRPU/:V͔d\ ;'uQQڬT)2<AD*Yk/e+~Vp+u{ Y"iP4bUhd陔zO~IپBؙ#hm( t 6:pBms%u.~^ΈݗRV `4%AN˚f9 -K%oXZPEnFsb)'Cnz@΁m/m)(NWdn.MzdC-o}\,g$(Tb=O!T_] JFP`%%t?B3OhˇTg;Ek#g!i>-CgBEјd #Z[LGQ?kzj8A2: gg4/>>V"6&&w%/b+7~HI_M'@NG,v# v-E!{l ?\(OΙ1Z&*س oMM1s{[7?B+XnV6F~# 9Cq]C_.[TC3^BNhJg6H#M \@951 N) AD\4B{BTxdr4sSlc1W?rd_T3@xI6SA pMdr?xhU@oFQ Cd`WNՎ@WTeFcW-BƞH,.vwUvN͹O@,^ в}4\ a.[TDbC̰\=-Vu|(']h+X-TdyK;]>axFq-4Vr+!\2Sv:{N9'f(vg7>[4@B%-7|̡vuseVFz6HQ;Cen/~ʕ^fGюKن&FO fNXZ04Gdl4BA&]JQ:|ĆW3Mːyp+"3u0 m]' FL O #D,:I>2"NjCtnGXKluO|;Pi߭27pf3Ya!v5meij?6.QGR_c~r$c&tsj*iMޕYhjeGnâ]Q;39x1SΘO$cvmN%I5%403hL}6Nu|oA*L,u[% 2+M,j#ɀPD#8ewwHOsN:Y' .㜇B v$^Pxhy,_04,wʌpon|G!EǽIvys>0G5cwsm0wDXaSP5)x|c^J[[ӇkR8Q@6KDxQ#VU}ݎ_j0z"Ympg2#@A9d٠u`ӈW)̸"ɚuYe8kyrB}5T=r~%M9)5uTijPjdz)HmP(D>c'Jp 3"&_>FGdAEMY ~Ț># #* &]<*oyv0o)a?Ԛ4T,?;e$hޤ_ KǙĻm?𓎩s6H2n0x4~~aj>{ g,X !P-)(-;HS9 V5\&ـlju?{}|Bm.w}VKX:w+} $LVZ2|*-(ʳQ R7. -vtTB/LJGxub:W\uS&i3 .ޓ=fpX CQ9U;!e˷}*,t92m6q;Y(<{+͊X%3֊-ulq ԸeqdY]0o>b`+䌾Cjj ?Am{Xk`!Gu 9.U<Գ SF!}0*YS@F:,A˫dp7fdsa6Ƽi 5YN1ԕm}m@+{%U\X 5Cu*dW^4 6_ iM\s򨤽,q `R/ !YZj-;2`a(- kC>Jp ču 7*#o_޲T䊷^S'/YIsvKS/q1:!+6#f)>\ bVr=Y:wI8V7o U%f;: _7$=E@LŋLd-t҅n?jx5M,7=^#o,T8 M4_U3>`-@ӳuohȧ%xc\H|8d2,`WHԜѭ$w* {|Uv\5Yll@sPLxl>6\XzH7c*.r66c/YC_Ys8C/O( x5Y*+;t)-*J`т2[;_&zx:c[~>jfȝm ̡G[_軫 EEGPObuȘw~FbD%qpPzU+^xSM9:4rZ}^֭GZ"T1!u3: !kS+Cq/k4`=[Nk;Y? ]H,ZFٮqFp{Lb7|ˉI @mwkz.;'O&0|.L/}f"0hBr ʉkf"Ggv=4wB@t!Dle <]#QL.*R eΊq:҈f=5\f7(uD<3'WvG(fqط,ݬZk wE0VzWMK֨^|^IQ*5!1ixBίjyÖw#[rE; ) L: jDqӳ} fsR]㩊D@}KR^(FDLWAB2OBb;1xÄW!ʰ?F{)>6&=(^)+aVeŦhzC*w+3KE¿5le]-2SԻWQ}9ޕd-5>ZP(ixqxE*Hq-S.p\_Z5~}_zef+ Tt@@J:,bW7>ufk9]o[Ͷ[ *ͻeQ`'EO̐>{_Ь̀cՎX˝o"XѫNPFp?ςD`G.V BB~UEm"~×Z& @O~jO/>kp`G (&97F_3-VWrLNcH$,KJTC/0ZSa~U" m|Y3ҤMJlH0֛XDh #i.L˜SS8*| Kgɫq^9^=73V& 51ڝTDG@6Y#]OprjyY!e=l8 SQ{SQ9aZ l@^y,o@ էe݂SWw,k4H^}R]{c<}?$ϮCD840,U p;r o;Rx\XWo;)fR}k(vx/RvqO2}q*$;|yTwRBߺ8[fhamCeIEt\Xc2Qf D2.j dne"V81S<ݕg; px R:ZNܩt6J0"wq_~-HtwJG5IDvJcr/ ,\uJH8U%q'-ԳX0c ݩ>=ʖ|)Xqo#,ZwZ'[@>}YרBbzH_+ۨ\4yFEy' J֒k4cXkȴ<# Ҥ9."Y.?y0R2 V£j^A:K/HJy#]zW>ӍYW8gn \y=3 9 e͖O,G׍BQBbI89fŸUWa#̛x><գZ R˼4nJa Ȃ /ߏQ 9f< >_,v go9xݙQ.ꅗW9X}xj4\VZ}71;|mFdͥX'Q^BÊ2~iNvx=Z-)z8PWv&-+eِdHa)% W;P?#igvGK`Ujcd w(H)<蝢1Q x LihQT ҅i)%dw⃍\ c ?/h`wTj#5U Ez^f/a>"NO)֮rX Q+  —Lq p^dp- ; um/m_0̺zk)o9 1 fُg\AF.ϝ8c*pec%-Z%:<ꆿ;8BV˃FҾbw~ AsY}fτ_LMnr,Wx7ҏr %Df _s)i†}5 #1,X;lUgu'Aʷv 9 W #~pœ}l PVkR,!e˛;qiq G9ݾ\=ȚӮ3 B[LFSǂd' l36B:igo\YH^TԮ "dr>I"FB92:rU}Ƃt.q;__TW_Tz^ WjuYCFE~)K[d Pi'EP[_4Sdd8'] EP0[RSWGßdCVO(k><1N #VN]qNւzԥlup{T|ldUljxCƎ0N:LEoIHux1鈈^qx6g0a#3bET[78!_jX)9!EBׯLk˄(t%{m_UWQ*9H=]5'Ҷ6ݳE\ KUR @Pib 43̉Zms=_Uax"}_WKgR}U7Om|y)s+K&HDW` Pq*(t{lߢ=-9FQ ^@k,JCN*E!jV 3VFM{P['2,=7f ʪ&yԅ[%d;Q15<{c0>CGX@- wp(.)ABRcJ0/GcLCH҄&de۩c}%~u!Sc6& OxshhtT6Ƒ?|CɉR_yrC.]ڗVuu7 MjꁱkzIu~"%<2dĞ?1Λr &WLn6^GHrl<OŰ:M ֞]j 4485_CDWPX2Dd |TG;O[I w< @g`yj}I9G1̩[1qf6noQ*j(pY?8\]N!M}/$L3XQ[$ns>bi8*\g'A%Fݭ+VX-O[9ԏg3X}cv*HI+H'I"Wra R.L۔) 'GuβsY I}".9!Gx0 `3iZŠ%C!Z尀>-gͬ30@vhaa*n+#cǏr~@ϔ`}hːwPInjwZp2sM Ng((8wiҙ[E|T8=vw:xހ==5cCJOvHTPB=&_\RݧbN`^m$ڧWI>iSyou>c_\:wʆ䖾""Аk-- UjDLWOJJ1BwI)3 }^'.za=_ ld< | XBBb~C^(VP)6?j,k:c2+ZW|[50n}4e2s|8ziDBNlאص%~Jռ?)FCr,OLJ]w< M*cJ.ƽ۝;¥E1ky(q*;;,’xۤs=K-!y SCImUn1L};VDܙ;mx;"eA'bU |b%zKC8 FQK}gPi9IKx=|.<>^B P ٸnɏk1!Wuvy8fDrW8 ~+VI] !\/P<2O1_.w/)$̷Sh. Qp:"dtOu5.²HR{F4XS\{U !$ŴQ&xLkyy& Brc н0Icl%TRPݍ&v:)Fw0G.}e1EhPo8oV1t*qf\L)uRQ@ .]3) esgU0zN:;<[7:}3) 3 trb@℡)˷,iogM]!hlG ]M:?84^2]ߵǻ j& H#HLGr1m^lfj-k~F)U2DOʷu*gTC)aΥp{^nv9a|q6jWнb䅙U(p1gHI (ovU`ArNB@C|vc[|1LS̍#1hְ E OAv}GH@$3)5Z|*>gV@Ja?Ohz7@#8F̕w#L(yʱ?V2`~MM1hb] ȳx?Ggw,vgAՖ!Yz&NGc&}ҢP/2+"3 [=&\IlI8yz$Jv󱲘=n+hJ"3gOSYT6)pɸRv靎izr9,cad!Q7m*q 1` *Bl, a:/A 1tgRtĔD)ɢ35Ƚ' 2PY o\3Dzk SV 5qU6o{)6?Ժ//pm)ŝ8|>':܁5'0b /=ZsAT,G[ϲo{[M}(=Guw&hOr t |qZ3l Kx#C?]pqVތJvR;trmg=7rjzg_T,1ϾjW1pQ݉xr0!vlR0ǘc9oV*mGEv6M+nN8I+Tt.0EUye|9)`s [=`/b{@/On"N]qql URv3U᛹W8B&L#_67Sk$Oe6 3`Q,;AYv' ۧz|^M졘V-}GK?0N,䚡i)dJ*S<omR^u.·-jަy&+K*zEC+20}E ٺkvr91'8ָ"e5vgODfs#m>OXQ-ĮPhLÊ#{CV4}GkȼwO6@r6B?.J^ǽSTZJ+PLrG|m}f[' notԁKPM9]_#ig[WL\j\|]Cdt2:" 5hAv΍Ȁ.ֆ W8/)9:i7M"SMnda6魋ԦnN{R\yh'|*{:%EPgycĤĩW!OHV̾le ~oˤY.O[{!v'Go d`ƥFwS$~$aUĀt{.'2OoTQZ"ƛ}0^4 mc %ɸWycLurx9UL5{8wm+%Q{|ǃQ:vvE;nflM.sX?یHsKH}WXJYQU?];dfIܻuq'0K,[MrYkeJv1erbL Uss?b$wQ=k sintS$FFl!xnևŊDtnߍ,mxl;!XsMNiVAi_B0:v80\_yx:Z,xap`the7b;:}QUH0^@`Fj"%6$v'6_K4^EաcK][hfKi/^߹ԕDusUP;*R=Q8Ļ*4T<8؟JO8xW'kKQWĉ wX];{ d+A=>!٠2 3 ڿ z8 р!Ωr2,D$ 0>7(G'`rbJ(@ItbFud+F~e[@{5v.~;Qje^XOEBӼjo ۆ5TY쿖Cz ֓v\ 3̭dߧCR ;6SWδE*@yr\@.cFzsjGטVJ pȗYL>#PE-e?@"`G+~eWC/p,ǐ+ a`BD !IcyPVls?^P%FryUfϟ$5:~~W&}0>e_'\z`b˜gWj|>q:eJ}[ҾU_lzMYw'v-+佩BJ2^w4؊VJR*CcΑϦ 4.2UF7m7xf`ͦZXP [k\/L׏>W4eWROnԱSl&J?^Ws z$U4gs?4OY$$buKT2fg G%ؒO#^, cwq U=k؂4{VGyՂ ) (blalfceph`_X|dU3.2&wz᫰"e  sSVúąU)En"nyC3GWJ/V: Ľ3<$s `dݰ;79?YJI6& 1 L\7iT0PFydX P3?+3J{[CKZ?['>-]8@ݒ'X^֞'\(yqP&7E03+U3x"B h^ScחrRvPpcbxX%+vtS~5Vsh<{Qk%i]cX3gu%OB41B2;eZ}̓"2+ƀ8LdE n|RD_i#goozP\7fc^ jcYN@by8AJ|aTizQ*BC%\\i lpc!@{cO8uG֠3gOa:drNv:HQ+34U@̐RG+wrʔ'rRYaVs&tym?{R˟[aYSBR^V-b7^jz.IFϗr寴6'5btMwK([cVq)U.5 v \["B$VAVgOclNQ?(U5yt$R(<фDމ72Xj>xFAgifZ`_$ev34oK[w 18kCqy}})rU;%d`x*䟇x˂u1&0т?T}g4A{bP5 ]׬VΪ6}&-8ZN{F^pG So^)`BÕȶ8Uz/{=#\Nd1r <餵4h낦FĶߊ԰͐U9Hl?+68nFoYV$3&֗3NgrZH!DɔsFR= $3D0 _bbIw 3~_v+V(q]Y3)RL!۟)?$&gl {]r0o|xI}(̓@eQQ7#>Q>Bgg3*|5G?UT\w`Be`{tvh|ӈm3G`ABID6;g'. "v4bHb?' %|8m59g!^Kk(\ A% iSmG#^6>_}~pO('5aiz O |K@% PTyOxeÜݠ}g-.Jؖu]~gOh?c|u}׻@Z}5ȏ LK/<4M%v]4dߎP8Ki=T8Ȩ<ëWzҀϺŐRNVzިTM2)P! P-a]WxC`'Uvc&\O{rF; ?rmijVQTqU+&r=3$VC'D9oy핲Mu>0̝ȖC0 jvT̠g΅g؈VeJc NlѶ&gĽn[<Yղz7BP4'2HxH Yp8_#c,Д)#Х`i=ni4Afbq*@17zK 5A4[0+fsRu,PaB!pǴss Uj,,E_N/yeIFDvl5qvTmT);=3d:sEًu}<~0 h0kh>հ.߄#)`@x;l" JwE(3w\x>x 4% Emk$(5R=ey}v=NҺ6UN=-Ôvqf^שS~P |DQ mM NqЁ~Z`^ '?Aq+*V, dT4_:=}.2j\ʕ_]~)@.>m 2PF @*cuf*Ks%o)҄JDr`8y\p|gV8!'x_/;󱯬j%L^5soM 3CL:Xg:P"<_QmçpWB8j\vi^Yih ̬\Yz88~gIWc_,WDp° &.j-j'ږBF iV3xc[x>/*i!DZ~Vf@`HtͺEg8+ Ƞi~_vx~*i;ˤNl9L*{gˆ݈XvF? cVL w_KFͺ&m9"UoV u Riu5p& D kj|\׈ksfpW,FLBГ|m=˯ ß4P&]N\xѾ RS=)_脸"bf9՟\\AUC;5x4΅~΁=ald6g8,cmh?b&@r7Ӑrȶe;\k _Mhj1P)c+^տq Fq$-I6.{!ృޟJC ,puU 2M jqD9c]1a$, R |&^UPܨq͙ 3\j 8 <Z8vjhr IqBNrq`f6Uٵn>j\LOѹf:e>aX'6y29z7buCb5;fjݢoCxתڦ{R?;W6= X촦 rNZ,DõJOϥ]9B1:CoM|Y.HMP\(gļDRY|7hw++\CulF3ּ QVJ㝽fy}}aSpڗob nE * -1(.ky4O:fԩSjT>ڨE^s407lmXDP2̂'= CCq~ebiF!û^to9Ng.$q(+ao;Q5Q d]1j$5dts9A%(FǒZoL2N@#MWWZz%mT}!}D"ygLz%mLd6&P7CR_"iTmϣX{9Ry6;US2i;St,s۬o=qH=]UӼOA\Q -!ES`;:tΓ*?R+EwZ:+ɭu<\ 1Hʨq%Fe'W&@ߩ=]6W)iu0i$lYx /Ɩn_ƺGm_Kz*nW.UL3(ˠ(H:߃EK:ɒr6_s989]%PLtX&jY7 5Rφ"It_Ga⢵4,,q'36ڲ|y5`ij/DCņrOx-f f~! 1r}FZֽ ˭˧6" zPk$iH^:"&κ\Nde'!͊fll#H!$s-¼ Dyb/Jm#leJDX|3LI]3\}eq%nĚuL)K#lH%^F8'{%e/7̹k2fZhrפ~U{As2(t<m=$񏌘a,kMfNXx3(rgaE-:2K nȝ懱ׂg^,w`u:2%u'Jfk5Hh(%E!HC|̴ի3<*9 p> ^>| ck>)SBC8&"MFM|L\ҠSe4h)D\L:h? "ߟ=`]{piGaG,^GuV=&m( A̕ImX0lpd ~pKԖ[=b :>5w04)g'zň e˱ üd$j3 SԡQy{CX;Έ¸,5L*~AߡM+ײ lo- ѮTX;PgR [ۧB2 @Qdf?''=ƺNJHUP!7 xKo35z c 'Mc;;lDaw/s}OMz}?\hoAPJe@ڝv|?)MDԏekg;3TvsűtgSXXŃXx dOUPe,,Wt)4V3~̳:e-ҙɳmlUgwe\ht(*o_=+oUlm"Z~D_"}ŭ@,* .&=wh$oKgPR$șYȐŵ^Dd{W|h t!QJ= XFSMː<]$4Ygec׽/(\&a5V.SK0 7ܔuR ddl:g|s{?6do昤~s3LHʺ[qbӭ3n4&% @$ 6ԻzYf7cmaQ , ʨ|M&$J1ACGN)RvJuQ5 0@eNbϳ377*scИ{#` /$ yFu$W@}Gۆ0cʿq(U>vJp֨:j7 -͹YLLؐ[2A|1R렗>.9*#i&o? #Du4m0uNJL.%Q(^I6u7_iXe'y:{-մwC*UwVQpU bVOՇ{WTB8 SaЖ%ͱ +M5cǗ \DUOYvyQF< J`Z(@8V:)m,ő>+Ɣa=yJTd|6(jRsYG,?foY+FukွFhyLIbWGfV yv MFb@qنz o,s\F+qB"rVc{^ Ql'=] f{SQvܿ+&+(Dw8dR.&IcLmt| M@7r ~F&S3H` 4B-`'m&i26F+#M@ڙFLhkIOziwv,T^=HA%1=T9Ƿr>_@EډRukF ->qf)S#5.#o/I/rFzg&,oLL =StӕIn n/evO5`UaՖM5]ElF3"{ S $cix*q"uK<嘈<Ÿj܅|dH`J]5jhShY=@[F#&OTUe40Qb} ukޛ!NX h$%38QP~/v,D;ezUD&%{-ЬVx4`|| UO*_HA%}VFgOFTYs׿cE@mypk1X֍TamϪ\{ޫyrF%ҼbX:!N 0zp"p:ArH  ͱlĠݫ@ޮi 2-kO Qw2贉6xa{fܳ.A]W=.8ǍdlvFphb6L2Ι}hˑ+XAAxpTҡ)AV-3|U(|+kbfIKhk'uN 7vg7٥R>*L[:@9qol5%ȭ-1Dc6!5Kg ף\ȭ/pdM>gf#3rBIp¦k1oRKP 0 R3*o6]T,r*ɬ^VVc8ӃP+SA5t=຦DPe6e=7 )v7<vScgJF:C-^.[ޜQ-~#R"81L)QЕGl }ZE.*G &0 Ydk%Pӏ?KG·Ăj %V;ͅN#~' |ᧃ$/ePQbFSg6twJzU6|F@BRi;i Mc\|dǖ!-~¿Ȏ|OFT$FH u^Ezo%35?Z8 O8"#Nki>~C"z1d_8;eiKLEPġOl`;κhuK쎄/zQbg( qe9,* B JV?\׸%I!Ei:3}:f*xͱ=zCKcxMM~8dJJOd zpR b"-{ʜX/; J~~/ \CJ}ơ(rp ccM.sOb9,54d'qSTaN,2.v/bbe#ZL{ϲ9I( gGgxϴuٜMM5]'a7dS*7],LBYc|ï*$AGIG~@yu?#.VDo׈W/\a#޸V j κc馎&lʛ)#N}f l!![m*KUvw"@D"w}Wrf֔IBց-{dbCKŰ?7)tBlTy?0x$X)u+K2ϋ=E5qO? m EVH!Lcg!s|"Q=*~[x?|iZ;̣#aS=:`_EPWur0RopL :՝´B&+,$y4Yrd;8e_\α /fƗċ'NӒ |paugG FbAp\|WQW܀+1ˍQx x^_4h?gNOݚDv/ IaJvOoy_@J!LH+E個%̰U~>Ur_CF^ a$UAD+_Gy)2Qe=w9*H5ğt5G[ n{X5iR gkj0LK^CŌ 3HB)05XM+=RsWvJ{YrJC ^Vc w;ƳF !oXڐ9lS:՞?:`F`teԇUN,p8dgEZ]P>Z{/EuL>³ iMVQk=hXk"e^<&8*UF>4i|E-"ԑ ).!-3O`adx5}Jo'QFt咏`aP~kbEeR rǘ:7AH]30m(̻ u߀_@&`ۘL՛rWxdw.[&V,4ܭK)= %"ijY)PBQPhD5GGS_Ft=iK?5Je.1큦X=E 7K,'H>blra천ڊ1E/_5"33EP8SHFx` S-ZߍU:;3dLnuKOl>Gy KM8& z͘tOOٳ2 Jj}MpSDnp9ɖܭu(0 %zD%(I]4 0,۵+y(trC_B!sH!,o+l_ŏ߂e/^& "b#MLB(3 ֤PmuMYl5i>2mni{ WxWq"=CJUʥXGw36h\NZk#WV@p}8KJІvI~'\`O݉H#n{m}?b}\xJA:ٖ s鷥Ny:=1mGBSf(AҾ׀2Ҝ[A7p> ټ?/»yY(djjEgFѤٶ OC,N 'vhK<8g2HᑳHO qZ55KS{/q7V^=J;k^g?H E,Z#[K@E$־%P`!1xA|'Y%䷧ .o*}h;?&|9#^0jưobeAiD3}bJg xeUXwf}>o /Ri@UܽbC9GHƃ& ?{PO yYPuƇa+QXϛ. z?^U6H>-N;95']3n_dD7 txERgwGjWX#6'ߋc阞\$j3Gk &XB_-_8jAֲx$Γ`QVbwF<#ϳ,okFm&JH;B2!wCOj,UHu`*\6Sb8Σ)c,"ߐ1sCsx2A.f'# ($Fԅ(bLrFٿ輎6X{Y[ }}7~F&QUAGg.'豴v>!{{2 AB憆*Iśg v)-;dbE*d HgHO89\ίW-^mX왥{ǬuVf! /I 0=ow%j+)' K41,NZվQLEŹmU>*i|ߖ5!7kZb qi<>!MQLK7mܱM6aJJ}kj2)놁[vL6[ҿ;ztpQswTH !4mtp,BJDMT &WX>MIZ|6H#F_;űV-]T,HNH-ʮ"NI's?iJwx5 '5zŌK>xxi\K֚(+CK4tB->Cԥ,w'x9OE~^7VBlyə%4 1伎hRM"ShKw@rt5֕ ՈExD{ōɑR-eR(k9K#|l@a* STa'M|vC8mU3h Cs^Tw-Ɵ27 /[Qj,.e\bouH֍'|8aA?SCB~m?w`g?:@vNjVA"A3H eqf{!aϭG15.dN=%8p8"mfu%xP֏Hߑ /3jl ;h)mk0Qx\7H/}W;{.-lD~ؐz6]E>?s.*B h|U n&F~5#r+yor 4Scl0wݺ6i7&7e'P5|f$>XX^E-L74Ҁvf38g9M6o-TfҰaLOi9nG+E7TeNסCbcHǢ^%d9vJ`6eJsbRHOhVMcy _Kby``3k! _xNl܊,cr>w͏dvLb)~&\d6݇0e 㤶h&۫ϑk\2⼘ w-A\[Sdو =]^枔͕۞ѿY5_vK u^Jyr3 +=(6 N+?w&e^(+G*A\9f,7e* }i [ ۖNW $10dGԣmasW'8phh2-ʎ!LEy ֲCdE?VL靂Km"JjS{mG˟H4j:2IG͵+?7ĥ4ګiS@vM14IFc0%dJ#gƧxF(~Sb#HV̟L 6{`:B(% >\A<2yCii&pP9C^ZA/툸:knkyM8aۑҩ;7YuJ<ګx`.Õf!? nSn4KbpddGL|ʖ+/T°*]@}zEY<"Md-xR#03Tq°,CLoM6\H^C,t7B, ᛺iMtuEɥbd[Hlj,v랧_$4ڥoD%a7 Kfgx1⼷wn&!zRA*$PR 2/|RAБ0i&^U:dg⦑R&)3J_^g,2_6$GVfFՌs' !#^Vecz5n? ̧ؑXф`U$wX|dgՈGn=|QeD-'SuY.]{[. r" wRB,p@)~u.)>5@]/dG2.ρ~3 enY_?}?\2 dD,xzehH{:Oxl񤸀\U_dҏ5>H)OT~ KӄidКdAH*̷)C9K=lg~䱘e9S{@l"𦇪\uvxK~ ݵUo8OS^'gflCiuJesƶKn ^RJ>(hݱcnV%mZ$aV QUwE жu1$QG<ƗSB/Mbc{pTt%OU<|vDr6sd`MDY9d LßevyTW3/IW=}x9}꽓X0ep~e2egZjPB+3>L ZpF(]ÚA2 sBt 2Od^0Gj3+f´.;K|7ʾ+NYٽfΡ4w6s69ѹHf%.[ed y&E 0~>AsKj; hN㭼#$yϬLh aH}kfSLXPm5-8UgM?,댊1ֳDcC\{ɖ?S6X7c*A˿)ئ*13댓4v[=4V"q!""J 2*DiE]@GeTbޜZ2pSآi9 8HsF P]s?o;LJa'y{Vh7Y1Gj` [=H>:!O@sX[8ew߼ 椎bc?,樂4'HgdX(鞆qn)UXk2A\#AE.[P 6ޮ_'֘fY#Ru%r8ǽpt3@v'SÆ:Bǚ]rr7TJ3.vSbT,zO?kzlbF Hc~9񖅯?G AqXSH7vpube,ʃ V` @7xa;pMk&v|Coh9<(*]PpU6㜖j4J5f ~RO .K5$$`S[ɽ#9ռ 7&Wqo$VG}ʗbX-ڍ>Oe`tM|kr4?'Ky ߉5$\RVx* N S<(7" !i0iLP/Bhw(N9#ovKˮ#Adhäz wz6Ro{ՌKuuP+_̽ե\ۢF.c01ccqNxmeB HPCv,dt-(mI'4l/1|>hwa!]aCmގǖKn/5S sny"GÚ~#Zsyl7#ݯRɨ`œr`Q2,֍ 7VRJAc}/R޶;; 0yK!%RcX ͥe S8jD&rm0|.~?dGGu<">L=cDr3|0!Yj*/ (ch:.T ,*b+SU`CH|pJ*~[\ᔸ?nH콜©=Ngu hcn+ssKpgv zRJ}mq ;F_@=bAW9Iv/=?3.yc:ud]WKm/ْ=Y[I#ݬ>ٵ'@nk~arJy} gЙtZS8U%WpʤT5g>NnG퍢>u0%^ 73YR,Ӌb4+: 8{L@g57<^C2≯&k~dNm9L?ee&Y psE/p{{QaN#/F!cO =uK}ww6ȗ̞l?,KZ̏QEhk)y>XS+Ÿa#ba%9bHRج Lz0kAВXc۬@[iι:5u# rSS/׺VצȟwJJ3dfÕ+6M niy ?h"ï砐 8/A+QH϶zF8'$[APxm x^UVi_V'/R;>UF1/Ràr*%קPa=6bO$ b[6_е#No+3:v6?AY//\^ 2WF7c 0=N ^ +YG/um6_g(*ef2"0rBp#|0*y8SljKF~*~Y ؝E.j Ɂ= ;6N,>`>UF)Y#`5 rXNfݡgfe^ZYBʟWǦ~ݒ1[KF j uxXY+G;,"lFA |.JQLAb c{2K1Q5Ėl9C$1Q]Y M6g^GB|rCԵ N_vC~g!}jjlzx"prR:@q%qw*O4rִe1a o[:.ػoC!H+!S2~2eL1+;Ӿe*K=NIU~BkU3rc|4zOJ+ hcS!>{K?m$rE/L{?; ^?qٵsJ?坅WO֖.;,{CҒս.s^-c]5$?#^fZj*~F/dHɞ^dʊ4c3\.~廷3nMS;TQ$V'!oǰA͟lC`<ϕrϦ#&"ctl|5:zHadًsBV=cacoyZxPsԊLrsvyib\l:]/ vWu0-{ȿ Ýg#G,&$Z]n u%fh\p!&VwU*e^w|R*Zm 6>ܒ/sf|v9m !*8(ǨZAS88 N&ZW,voh,M,(z~}Si1E)FߠWcG\ΓdY{onLgnL`Ʀs7V7ZBFS=3νoH!suj.w7LNFEQfuj)5nE` v3+?>GtM!%^x-osjWf?uA 'Ϲ!+*[>9mJzP,-upk&!/"ly7/wE4{sځ d8 G#<8ޙҥ_gs_ou>-W᎜[t|;v#f=$C` d# ޴)ji$5¢MhQEs) 5_H"kӅo&a6g&phv"lyP[ ZwVJy_yg]-^c(+If!=9(M{T )0ÕT=?3ygE=5>JWƵA\'6'!묳0b7 iƒ!,#ɉO)=7t7B {VT+؇՝=L`,ic?؊%@LWxO}(<ђ"P\xq2J'z!!QH)c@Xcr͵~9͓ T?{LZfsW1FR4zY\m S%}hY˄7h޵)Q=U.wGxK_U"Y~(nNaog'TN?4"۫1fZ]ה&mMiØ'BPcD _:B˅:A5HE@zHKVm_ť N4SL+IǧB5eͲF!%!z;hF: ?K,^N$ruHN)" ,S/!V;Ц#0h!8%7Eaο5yAE5ɪ |W=loUCIW!02Lś3P_K%JcR֔s8L|f4zhS^W2 ݅Q򟦢 4!r :WP 7]NdOLOW*>U0X?c loBp`(.\sEQy_2DcjsKL4"k | 1T-Ƣ٨\i}v~}*eahL+lw@S5Dd<'_~0`)= U%Jeb:f,I+Bt/($R||+}yhȪwɣ(Tji< I%76 _-Wa\rQY9E47g^& K'3feO `.WbspC4j{_;UGM'o!L@Z?[7 y< 0okq 8n c:hL _wD]f?wWsnQ{i8;/J2bGu8y,fknBQOy175=J&^hK#GD@y)Ho`[X{,õ1wB&[K[qnj5d-Tg#4g_gqBiZþt1̳Ȗh챶utuB%*L ;\y(,6鐴@wְ?Pt{am4:!]hpx/Ğ/)Y|*Fz-x __$,O߻9`\u8c\th<߭H}51AUrY$>cb;}y3Ȇ!ߨ7*-I_QopY4l!z)@Eb7zs\Hiv be-"j(X,NhbYh^v tNv2W;eM<.DRY6>6YIcF5/zWmBM*"P+l+sXUwV|הM>M1QW5g3?K$T(?DBΣ3WOT.!gA`C ndaJE׶|Sk|ѫKA΍pՖp]aS B'T=8ZE=(~t=CK=F8hr̽i,Uї2x0ݣb^m4M]|n鯙O'&} }e {\f{JԋC.O@cY *wڃ^,3SRvQ4D4Xfڼ[Y G7^{o#`om \ Ȅ m <o `JXR%ո߮oօ=--:vrNI'%5 L\NzI}|)[4 K<'>:Ga3DS;S¢JO+v5pSJ#u(L{*";xD65M  @gU`N$7 9a*;_|j= .,r :xs QFr m Vfyg& l:PZɼ.?Ks*≜Nx)d> =#w$CW QxIHӛ*e)zT7%MTqkgAo^! O+kH1{z0I /g֔լ%xlkq _m"ͭM p$!zV>((+SM#u WRDL &dip]BPNCZK!zG0hX Wd[ Ԥ\6 9} jkXlѼ~Ȣ$S{jZDwٳ 6}2 r.>}:pCYi6Ynl浰j9czpg/oz>7`薳*mBh^i WNވ #e4ޤ7a$t,@_ .1ڻ:Iudrj`ˆ5Mv #=Z'{Pב F^QPvX;( }m٧TFO `$0Ū>R0#% !L9cV"Acq6u%ڜˈE4\ Xu* izR$Vs &-[UW!N>Ӳp)&o|rMHsKwncgձ,W}pn>}BvAΟ 7$" [jN;pʰ9#YEkvbgJ۫d]6P$K͐n=DTcu; ky3•j`ŗ!WukE*xX?=Zv`b!o\-y@=%~;PfNngs2š햷R`p`,K^*!WW"wy*TZҗujQUKBKpp__4>p>dC7'ZAK>\ԋȱER+f -^n4 "H޽lڰvǞ,'dDiJsԼݏVeL- ^EߟL|HteH4{s{K g`[1J'_!1 i4.5iሠ{h%%X1}ΈBun[YwOmS`usHEtۏ0jtZR8wOX0NBr~oKPsNQ5L}hNɌH!y|ݵ^-x\ٟ'S^=^81AMײg=U:KkC6L$D(p ق<]k%?ӘNC6Ó .}fFZbW{q2MPeMouPf )tVq\:C#sZ]Q+N l5#Ϲ8F iXP3K %Jg^pU`.x_}g10w )>BCnu'Oxb]PQO0N}Ӟ43'y+?ל ~Ij&mgo\rضZ |ۀ;9mT4K ;Y%YCѱP >st,@=ǯC7,7(ߓ.U9bG#GRbcw}dD Z9Xy#R]?c>~k#JX1+.98)wZ9Kpy*_fKuYO  ڠQ[_~!40Z<{ ^BvRݺV[M%SIeZރPizШyz ey=~`WM!㱟 +heFKǭ`"ؤvW=i?,!/в)qs9T'ʗxNZNf0lIӇA+,QWN6P[ V.akpa3%8~Q(_wx\cFՠ)aUŒ>"VQx̯wlˁ%T Eh)nſBd+wdFƹrl;A4yݗKnU;yM̺9]VLBюCĴUAjƝ%ܥTRL+( E*Y +' O<]O͵XzSGm;T$;?e|3xbvAa{' rcBԍt Mr^O#•іt4Z$ ^h{486?Ͽم1B#KAzYH_"G!9o!IL5!OTB4Ndc%#7Xnv /}y Kߝ5hܸKW]D<Ax o6tP={(F n GxJ =f*h"*UC$Li[l|[1gzʘ0*w$i{hDV#هgd  >t0p@XD!5S\!œh}oלfrlA.gb[;Kp}<,o #jƘ}/I1SJc&Ku!ˤ„H MAXP[L&zG4ca TNmgf!il1Ke5PbpƯ]gIb(oi5Yio`<[*0Kp1;[QCarbCcgSX^E-ڥD͢ϡ |f]_РBEN\&vjyQ/'8 + c|q`%[1m8> [NSijkŮT-R6ߔ}/.gB'{CRϴ^9?.PvjT_+Z])+&.}l?R2B\}/;8m؈1F5=\NQvر\QW %z$vsb]J1Ö2VB/xvgDԁ,^ PX2`~ Evs^gID= n@B@2βoeD@m laVI)mnkk+eFO}d{ 1ecU3GjvuN\4PHұF)x(yFipu`t XV zGZyc"x-Ajϩ,.서=(ebuv9dKں87/\Iw t?EΫ% "e}zHm|8!};Yә ks~1_WW9,j-x5s1;&j ;M>ٴ}ߔf*TTYH_NWYTmL`(we,Zv*b7FFYtX$Q\OYgb4^VD)^EPCm]npϧd4fլR kS#Wx 7ŭTY|/GA0"UVR:Lҭ=m?(,-ƒ*T9_~@O,7^=WK1,6fֱT w^s:J%od*/鼝1 5 ԼR=+ǮM](atZݵRI۲$. >T}&4{O/-T&]J ynco/gA,^ o/;x;XTFB&.ĩ4)3|#c؃aĖ-Q ɫ d^v` Qwu8߈?N^YH-ڮTYι:Z#OPWT/XH`G2ĸ CWQD]TPy~0|( -ČmkgK}^);=M挀eU[93pW!LVʉǰ%03m K}L\oz.i"+k]i0aSWvcIՒ\) l5G %Ï*JVЩE0 ,/B&f>3=(y&y]?ؽ2]DvKnwV2RQ[LC~ylQ03##2,S~G%7mCmZ"}1p{]8<ԔWΏ5Ƈ8&ܻ8ȉE^2)RDRƦsmv7=-ȃQs=e/ fZl}aڨVӵ ^m&+26K=E£J;~h[0?:x= Wzkl-:&!x.k9+H_J3^P@r7',{`jh*ߨ#'&hg6u8!VfMFXhFc P hTZxإi{ Yߍ(Xxiv%J2M[BmaYo5THޘP$D"R&DX#x킚#@ E1f8 }%Qlb-aܿ2Nj"ca,oRuC4+o0F0hK &S+jL-݌wI3%V5,h(^ 'MjZ0u<\^1pDNA9v`bEBQYMqdΖq gI01:sq!0LYi 2m6xq4Yӆ+Xqw9׎P?2}o[KYr/vrHjF`.#fv_#8Q'ɟ )1I7L pM>VĆE9\GjdB wiEI&9r(~ǩ> eN>VjMbb0e)i<),L c.PMQ;13ԖBѓ>s 6=+5\E̙ٝܟLY`N)@UH(9C64ƒt7^oȒrKX8OK"?T> T֬kv SA;GJgyL%b韶(c1Gi* %:_cS, bua MCRx B5",/:ffq,ǷY5Y&umx//4SH*;jr^z'?dnέBb9\bTzxAz}7 zHE7g =k{ Ǟ2 `a3sX 8&q4눀kǩŞbh}u.l-:GD? z1q,0;,xJ4F+ œh%Bgy!l=HDrM1g|ScTןбE3q(-b%4Tp0)m`״h]uq9^3A܅|uR;]Z? jWiF11v-5(o.œ|s<𓀔OHo\Q9}xaޤAdzO葺% HYH Hp~f:*0r/_'w'gLh>-q#ϿV&]xTB1q0WϑR~l"X381ƞ51pf1kNVGz~ݒ@b7B:e'zVMsG2E0"aH|М%H:TךܠQHD lvbn3Յe~O<'7fUO+,זz{5 9K<|$Fy.3.znA<ׁ*- w1O6$6׶R3.l|bO4`!;Gʜdc'C MEXud٤ o*|0g?G\l6Y2j4jLu!NH=uB :>{9?`b}yѦxu@)1_``r#0+>4um 7Rsۢ :u0l. Zffd`:^gQ6,E C (2ToBisٚdQ>5X3vs* c+15jI! klnwZ|Mtf8%K5Pver0:,6CԊ|Uli޷ 6k 2 0hSX{T!H[G W"TbqQ Tx't?ϢT)WtBYu3p@NC 9x%15k%i:QLV*d|6[ ,?e'޺vsbޥINTID-ݵS&m4dB\?.p늮 VZj%tV3\!\`ܖ%f*-D,3,b>=Me(Byʞ4! J mPvRnNY^xBDNۚHFqzn=+ω&VĢ׬`8)1*loձDG `em*$91=`֚NtN8tuҷЮ[g0<< 'uu# D#\hp 2%G0|IlKORFs%Q? ;,1rLsi{w6+8_: ~Y=3(`TñMIOj밲Bhȥ 4O-z5zYo~;E` hNӱ;b2zdx$?C%%de" ^ /,Mxee݈ƞMd TL;$i:5ãRY98P%o%8L"9zT¿i0٪:y_8xQ:9" 04ZyŚ'Nk7?̪bmyZ&hDlԾ8%JC5|, [f+׶hڴN}Y}U\-%LOྡOG9_et3\Ώ2mMs~S?<&Ϳ]F& G4APɾ\4Peu&S&(B3fZnR20'S*1pl[ wڻ3wH0r2(``p=u/ajמ7} Cʊ- ABwobĬ_yɼh7^3fgW>S7WʾN)EE:C_C]ؒ\pAEBuϿУi`Ե>-v*f)k` pHF1H]|:2Ij9&Uޤ>qUs3ǖ]8LsdsIYղkf>2U/vαq^E$.]\h^Nn1K` #1)# +L.g]x1r4ɳ7_HHhg@ayEcU, ۱}O\J";4';w[;o(ڙ ]qXRdo)FtR}=դ[)o:߄&po6s>X UDREQ#xykE\!+XS۷=.;'I 7t" t>ە_ #92hf{@gq}*^n0'pL0g;\EyJA[p~(ğ;W%JФqy=IL}j99bSNFXn'EP @&k%?y?&}UdQ plHx 8W*:#/~SI?u< F<7&k3cOs'N'.]O-$yj@3{/G 5${9Ue7Ne ú"'`Ghl@!f#tvSd!ELЂ,t/3A.I~l>2,Za98zڪhQG1W*‹zA.֗Es)[l_I ĺYyLTm1ZMeΙ/==eJ6kq _ʬS#Ϋp8$C\ŎԆy¨4qP-[DcaBOB:~cpnY] 8:%Ћ`<4ı%Z:T ͺwW8KS k\`,VTcs@Lz0 lo:0cmp P[T0)eOC#Rk߳ӳrKbb<cq;_pyvI=0^*{#q SY{KV&n鵩ZXʼnސt;ޮR"t3R719#XEAQ!XU4]%jSRc~Tsĭ!1p,q+^G?."- y7$ JO^Z &ؒJH&_ z A5BvI1>_Nebp@wM\y3$ V *EBS9s(i")4[3:(iϋCF#Q^O(ȭV;ލO"~UeЛJSo cx"g۪;"!-#<0!$ITP ]? J@Yڟep1#Aʡ&l".및Yxecmwpc'4t^-fw֭>.?r+7Իg0pNDE_v$njֱ$4^ cSR~L:tbtJnJJS'\EPHD߷9d kTTsM b|>·$^19R0fAZ*8o0Y )%h?$E' < 6DrBEo8FTV. hc vd̡q’K m9uEyB%6QCXYS1i-2/G U\/l'+9 TYGi +Vq<8=Km'y)pi[gbm\~7+sX YV2ļ?RokV &IW:uɗc<q M>Vn>p "2%F-}:XrdYIhf_;1S.wZCn8!BdE80M|cϨ/e[╢!,OK)V*:61H&[TW4`ٙ?"ﰳX8{4|)܌ku)$\pXJ؃v;LbeRboA-s1EzTXA&$s8#!+5ZC:\_1S CVY䏪jE=i'^__A9w&m*3LG-q}Y)2 %b:UפKnE:qi3 zfLOI&tςBE Pւ֮R)[`}\ 7ԀDċ=FkrBoX2v 's}kjyߜMJn +Ixwbm\)"pL:o䶙*~e<8hXkRQeum jZ:0C8iRQD!:ahD=ԿX]V*2\NGҿ 3ŮF.;P 'JZ%{2lWPw"89r;J+7ME>1@ZtL*#;?mȹQ,g ~] Uŝ{_)f%*K19mF!7}1 ՇxSewMx۠/^~ך,V.a'UwrZcMq w"UDAnBg:zn9dIUA $'-ڈ[t߳_n%'?Yᗉ] !K=22ҕ޺WѺA@G3ȌE6.5V\ VkP1UBDT^d&s,`I _F7G:csX0"jE1)7f+Z>lOIIA"xP!zsiVW~j)#=M~G|Ä]"% ĮXdobz>fX9'N!,Jw;F W"Lû0 z^{'A>ր>פ\F&HJ,)gcHb>_v|K9 N^/}fyޛ~tkw'zV˼]n,Ekҭ: Ew+"Ej1kMYPJ^^_ TKE+2$Ԃl5pz6kOwntU.F E9Wwv0[:5z hw:Ei5(4z41(Id qIV}MLm#/8CйZ.Nh7X=]ϖwϹJmsgccvT9"P[c{8Y}!{$oD 66vQQW5uÎ1W͛&gZW/i,^@ERV\ڛ:7cT+ۀ!\GMfĖgu_#}E)HB8פC;}lȀE@ZÈ_뎁YABRH4cl l$T!m"JIvd_[Ti0ǝZb{l?ڎDg!#R?9rs'a*3 41pRBˌK 1(Ekv-: =\\7wߟ*9] pPYEDrR^ oc~I%F $=F,UjϙiZpˍ#Ji$"*aF&gjIC\\sa$xe~ AU1*ꬱ3gAjn:6 ?38ʦU((=N!t;R|k~,kHaA C}5]]lYwY[Be|*ÍÞ Q4iW=tҚ6 ZCL(S%6c+oEx98sp-CꕪEW5Wl,K6`_OI"VcF VN)XAEzK=lBkz˜ (V{DمS Yk]% M{:FyFW.> hPty.лLR:a:WC`< L8qMaa_ %h)כ%`}|:Sg ţȕbB8ϽI-PwS:6`=ta%<>Ɂ(jW6u@C>(ÒPg<.|!ÉO~/!@oeoN"5PhS<=d˿$Qckxz cљ :>{~ZNK@*2)֗ٺ'zPm {6Y0A2J|ASw9/F"R%E n柨NYs]3 sV!9# D.ѸvOkWޫ{rBςk=Ef346f=AJ/)OCXCЀ)_TQ΀-/LY:_ k~pDٜ)UrCX~.oޑ-w%-Ǿ3Lġ"\d+ˍ+C"E҈INj2ND.+_ `l\t?0=kn옒\^>%,Sw@Us3ɕ6ށ'ӲEY.ɕWLBqLJ;P$mu^ įe mʼn[(bGMWICHG@TeWPj߽ݩUÐo.apy`KK,E;X0KMe~0fx@Q^C wyM!{&lBo?Ѭ@׏:u-@Xo<]Ǘs1y 27/@E,HՑraj-ɚ-MkJw;+=XߪraYtk}Ph/g pm[3Nq)H&Vz٧AIK5v%&rw쫓|;m;襛w7bv g+y&Mcڸ r22s/g)1@B ӕN[ٌQXW:)1Kʬa=G76(Ce';ܶW%~ CO:/Q ։f7?b>vIKrr_zPn),hG/% C0ݲAy -eyl  ʞj'Qc:D6"[M Zհe cGkx)nhЦ2H( qIK\((=Ħ=V̞Fn#\vD]DIoCG* S$nW 3iѕ1" y*%CZprvD-6Kuk_/g `t:A5?\ ]u; CxѲ+xQ炖2hbh(CX ճjmb~:6L؏.6<nkmwԒ;bGC L/n'5s^C%#JGJv0o-Wb Njģѹp?Ml,pi  W:Mĺ:ᛔ %ˎ-$5{&z_gݑFB1C[֘;5 I`ꁐ=MfvBꤧM rg˯X)~܈9Y/zۆj;Ez8lRRqk>cV DԹ}&.>/]e U}׌IzL{?eCbޚARj:_CWE夜w~vBtC8А1@j&hYBjhpe( $eh6TB҆D.vbG:oHU*Q0Ѯ*[ _[yi 𭸨cTS" T xNڷ]:Bs/G„^ٳk^v@#~Ɖ۩_Q1 />w.ID{YF7JKSA =V> Ѹlh~% BW'2afeMaZ9Tbí71=X1T KC B-Dp2Hf -*5dB ?!h9DJ؎U/&C+ɾ~ܱV6!,A `0g׼zca9Hq;~@ΧlP5w0J؜ :F ц&|E%dk#d)l*#22.< dq7YJ{PVܵ9S;cGC+Ifb,::u#>uoY7&(o'Yf1B+ ][o@5qFb!\“mWgI 6kb7#ło_|Q K)_Hۿadk{2~F̅l?ʡ# 0@wN]!;Z1b,G6؟|A) ֐#Mo:߯FTRتQ"(^`<{倣+3*E rd"[' ۬$rְW`Uꋙ_"%nJ|l?ONM[O8iJgQwYú ;*x7rÈ& }r {m+A@çXc(;)И6듊CMϑ(Wo 6=+e[,j~DvL.pVƒEğ$zJyҢvx)1kgzjTѴ82uZ_ѯ\A3-z@[&Rj/Qӱ`I2ZD@ޮ9 hsڡ]П B NA+KkQgBq=)^^p固Жx6 N6vnyMV>[&$dL2˷nṵna"?8TmY7FiQBPڽE zyږ Y8##~XD5 q$JܱX©]IaA7ݩ>FcS:7iv}WJk6l_ėRJR ʼ1 '#ܨ!# A*3juP)]^@`(cCx.,edنsStC?v Vv>jE6}D.ʉ3>t ȡ1, nTKx ͮY6=0oe~o$q5{Y(|ΩRaӨ9 !+U?PBHi!FAh=_2drN װLޔzP8SQLw1SI7;H k2z!}hc2 a%kT؏)$ͶJ?F׼)uKJS,$4ԫԞ9 YC1_X;=1?u v嶚5agX}诘 U_~?'ƖZAf%^. f@Qq/c]d+uJ[[g8{`%|mY5@1vR|pE2psVvB V|W 8CMH! c `KR2d>Wn5#7e2hB>}ѐt<%A`ȯ̶jY+.|gY޷ZC<ȥ}%B^uP4ݓ#+k