libfwupdplugin1-1.5.8-150300.3.5.1 >  A bp9|Nn6N>²rϽ 3f"G(9 s+ У d؍*_Hإ(38 wKbc o/#C遹V)R_o `G{]j7ðRzcw̌={_,giEXu9B6)áu0[붸Ui'YC}Z/1b9 Ż5iR@ E?V4{Wܔڽ) xiv*d2fc79da28a845b10f187061f387a3f89183a74fb30797456f18c1c8dca275ea2a8d3f17876ee819bbaa5fa069c9b5a0caadd8257 hbp9|Zec3 NH/Τ7bӶ<Ǩ %ǿu`t9g=jL6&J *kFxW16`MWvzZE1a VI?ƴ@j41AR'wwDg+*^nd;ψ[3?9 w[ d jp䴋ܵ[ZfJR/R: ]sF]FOw4yVϵm6;kVRRy) K!Di70 X>p>9D?94d % V% ;L_elt x |    (7 dB lBB(8R9LR:kR>2@2G2H2I2X27Y37\4(]40^4\b4hc5d5e5f5l5u5v5w6Hx6Py6X88890Clibfwupdplugin11.5.8150300.3.5.1Allow session software to update device firmwarefwupd is a daemon to allows session software to update device firmware on the local machine.bsheep01SUSE Linux Enterprise 15SUSE LLC GPL-2.0-or-later AND LGPL-2.1-or-laterhttps://www.suse.com/System/Librarieshttps://fwupd.org/linuxx86_64ȡbrb42f2248681eb63976251e1a19e2f83cf1c8e1eed228f135cf41538324bcffd0clibfwupdplugin.so.1.0.0rootrootrootrootfwupd-1.5.8-150300.3.5.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.5.11.5.8-150300.3.5.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:24641/SUSE_SLE-15-SP3_Update/0e9319e520ef939ad798c08e5b308527-fwupd.SUSE_SLE-15-SP3_Updatecpioxz5x86_64-suse-linuxELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=db102ef54392afc5026ca4a2ebdb80f4329dbdff, 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=R6RWg<-x+> K*"TR"^wz{T1c,BqIOruGOoqyQi_5s [x⭴)C? 1!E#]UVjUwNj_n@c Ь^ "+V4~F;YUyr+F LJDNP;.U ~V R2IQPm_TBn\7LvTK@'pƦ ݼ Kǚ 2՘ㆧ=a9 xdKH9:U$òwҲ_QB ‘ၞ@tpߨKqSЯ]2P[{Q]D%/g u5sYFm7!HÚ&W}/`.E'*y~V[jQeK$# ax,_4lR+{j1 G6d|h9#;bv,O0>ֱŒkm.j.PӀP[{E%;R]Q°qE BZ'D7dKi^VOл|^nv !!% ~<֫v wI|v +-?+ rf3SZ᯻rzKxdc0ǦژGqF< uRBuO Y!kkOeZK:U,Gw?$Y7 /8Ƶu6+V-4R%܌2i,$v89q#XV+0ul<[^/Q1p D|0.y.iunfS*b5sf}Mc3#\4ÿŠ-AE^"Ԫ ?R f;۸;,jy{uox^lG2V2w* QBf_DMWר@ݢ!Rfs` W8Lr)fkU1}hR6WSa.d.`U1pl _g<ˠI˘ 7l\|[ܓ;<r&p/R|{4\h_5'[ޣf+N!+vXwYd74seߚ$@(,un fU`\'8ڑ*Tƫ>WKHMzI>%s![d5& 9l9ka$6vNjC.ҘmM랺-@xB_Ig_nD]D#`X?gQyh1gH\mAW!f"}L,OK. Ģ|ŋ/|`MpԂU)?* lYF -P8xrD]}|r^Yjʟ54 Z)^MQtAorK& S_q,vqsh-eUH;WU4 |[gPmz"tYwI(A #q*Uf$@#,5XqҝP'<L;%;S RoN&ݛo:PJC:u@ZV}5#q{,UNn(JML]c?GD;XwC d8j2ζ8'笤HI$0npsG;);8`w)/vBii)y>cCȟDp97\ܭ yQ'lmP٠X!LzU0e[[S/A]8^Z܃fp(u`ߕIxѲ,~t(tj ޫm?X妛SJf F"~b)/Z_Y;6rckn٬#`(䄫'{9Z(mh4h։hQ+C,lh7`͜˛+%v~z1XUl+x#y^RT$%&xˉR<=W Z2zy(pm1|n0U|7S)kΝKZ[s \TH=c&UZp ;@bT۝Bl۳3Ճk:/\`5E{/U,tʅ)dϻi+ɖTHYH>P[RHlq‹v9.y*VwxbwuϪ }Bgz3Ԧ|<܄Ӳe@B4":8I;X}DTy_T뚂JiIV]nM 35gZ^ME,m:OdrCIR@}la5Ou_CW1{HJq$cqP tC {x,߯Kxel8X nݪVM˸YBy`뀦3ʠj&XS?U<**yPHf^B&}a#+کF5") 7oK 2e5M6Y)&oG&H<|E5]!qJQk(0fɁezNUR ,j2~REDb RJ}ba|c_Rf^1!6/\VwȂd{y@WhbNl}6osyUh|9`1B ΫM郞fږq^H>{/-#.xUEm>Y\~r1]F].%m4ӲE& 1KJ3ubb$Z$v{Wooۣ]OYbVdx z&NRHY"p喹4]t 7Hi?R}'6sl7D!PQSw_Tr)3>]yy4HD iX愈iEM=WjY,9Wp3]<ϺNCblPY\B J D*6uIw;,Ұ!~Kz>mILw/ynҪrw?p}-GY6r SNwMܡZ,\/&Ď ')r n& .>)Aw&yeqf&@0%}uQHddXN2Uj?$ɒOCԩH*oqoyQvwYhKg9YpS*, 6e\}^v,KΡz3P*CO DL?*e#Fw,j݋<{/LK%=5vgWY,<6Ll*6keKi{{v:ORJ'[z EH씡2KuNP}¸0h4 `pIMܺS>(y!̊Mytf ҝe tR~Uz {Nȗ$%KSݓc:ȠDZͳ ʂSvFeqQ#!#^S&y>:=v}0qŜMiiٓ^Q”DrF] ?Y=7z0+Iri.iis-CxZH :M }GAVX03Б[- '=Eq}(CK$$s))6ǭڛ b(w||bF$sOasLՆSi*F!C)oCݻ]@^3=#[$'85zeC(gΠ|#[ <jw޵_+@`s+Mow04N;Wo72&wRT&u$>&-Oum FT)#,]3gt[YNBn~ҧ)`@.:~\7#I\?k%*av!g]ZE7"G^w[a!Y =`rd;bP] l*b 2gݏH[lɯ|b3tI($jA9@;!}E]W{9_sٶQBFgU:6#Vڝo:x_xT"}mL=oWoك*->/?<^Ga>_%srѥ\1)]X^H >/Oc3*Ӳ.>Bd=+;h+Z⠖vWon4B#7CIi@;1=tkt 턵=E KģAH>l}uU:G?!ٕvFnTp!pvO^Loy<]wFE^ wf/Oa遱a T8~etGK3xcX_o%5ZA/m m)voKn65e}~"y#-$_GZUb{`B|y_3hQ%=m? K!)~1z"tvA?n/PwW! YN7RՆuSSGsUs3%y8hlL<%%8hpB~Wa!%/Ad|;l~4gU?/kixKo +#2V떵tVSKJ'9"--EB.fs}¾tD̡,2CU8ე?R7zP*ww*LNG%s6`12I3X ˫(7MpI>rS^̜0ĭ.v n1Gjk`*䧢 Qzb4P/JG*Jؿ$'Ȥ_^gz)[J|\s'G[{ X|kV=$kp-e-W 59+QJ&E4e:maYVDF e hĄ(o޳`sA\@, D rښ2c}rR1x]@L&mdӣXkK3~l6iv~؍&Ј#ԹNbY]#I"Q`ʜTaJIuƛ`[cSyKrpbcbwq$_Q3|5 =KU2RbU)>NyXܱGZu1 m8 L)SU"Q:v+@5hE I-Ŏr-<9Ɲ9}ǒǕp H .sl} ô G_r_ۺ p!\%d@U#A[@gc'㑑;r#P=| K٨pOjŖ`Y/΋iEw9CuokuvU-[۷}CZvLOKnzuǑ<&*nY ++aǤXdۊVh駆޻ wרXx-^R|g\~4BnnKL8^RnIB?ػYݝ,EZ^]JՒp ijwIWLܤgWx!0d肠x%@R{eǍ5=8ǫ"!'~(ΛL*@f)Wg>:2XMd`wO 0Js]E8Iwиo PɥȄG,G> 3EKf;/3,aזR2>b1%Z&k-4 ΤƨH'cMԱ{[IR~c]gr~a4J'7F,旣KMÔF4_fnXn({i drNfwlKu+%8PwabSʚ@<E\. 7D9 Mj3idbOt/uTO{p%;>8XW 'wT^9MJ٢I{NUK)SD-qX*Io>p&F"Eyki>Й JsI+RGO3X"2axsP01惧/~k~9pN>o`]֊/camx|\R>D"4)m~}.sC*Q*"FM)H 7PQg3P7q9VoLKFRݸr>T) `u9ػ"F^[<3y+Z+{tG|h05F LM_R}[epDM$Z >{2 FLs&1M ~{dMqat\ђaeznSdH{@\}(N<۶ZICw~e*۩VhK4,75t & q5 5f!elmw:{7޾9g$ p;As=J~8V5d/RBl弊D9; :z%[`vnNԲEPcvN3(Q|h7s{_9 @.蠬H)4: ZYz~d+'ڪEP#|]ߦߡ#8fRhbK˭Ԭ=zь !iܬpp. P -]h_6GS* m6wt5ҿlI)-uq;ӥZ(c/wcuhm@&K +n9E^t-1M\fԦ r頜;SPөQ6ky$MF[Es̮vsŏT$}+BK^ ,}Ssr),nzJ4 J`~}tͰƞ[W!/e ۬H5}1=Y7Z !M0k^v.EV/Q&"@yRl[`?= s$h! sbD]X`o`Y_Jc_nWf&|$~Z2&FddQ@)}.ˏӊc&pmRj j KLG@f;ݨCr vM- i;%wз{^'nပO]9ӑ!l %{Hn@Ku\/`)kcTMX < BC{ceY&z%m4+rKރ=: bHC`+#j!ѠC%wFݘWܸ9|'\*@E+.I#(z1p~6}7pOgsNedCZp9e@j)[ef2-c0’SV%ٺ'Q6RPZ fCc͐O ER鋦Re#p%zt;S}aG2(P˾C˕mpdKG~|X0sl Sz x|_vl]fY4иA|;TtD+>[rgZR|ZLԔ&ʢgo&.:Ah >q[en<&]y [NCکo~нX.dPvdQ_ ̦UVLJqƋG<(^1rfOByBa1/3'9dZvCՄcV_SHghF5q=s 24<7zd")HƗF↻T@mi''<]J-J^KZp=?{Yð9!yƣvÔ͓|>֧Q?Ǽ8A^VLל)``/-"]b`O]QY´BhFNG%!ҽs9(vbItjuA*+糙YzAĹw||z,r*/_1 ;ݒp-CI''x%>7e qU-1o6?" o[Wja?nL1] TżB,Q8ն$CѸ8bGwDse4vNXՁpSh߰<Вv[ S_=`} "K)xk.((ǂwTExJ[LDX@EqNoqܞc!!&r4L0ƁP hme#Z͟WUԍDD=AV+Z‘:O [$+Oyʋ:%NeCdmOꃓtn7"F"3$to½lOk|I͸5"-_tM$Y8mCzzF)Ve'M:6 ljb_NGbԺ쉔RM4`NC-֯Iw0wg>h >)a?2I,g:u]Bߊ6Pd-`s)M#_AǚzʯLGO)5 SO ]*[,r顶U1,&_cHB"},a \k*zT- 9^'%L{&r}#ˉLE+S a.[؉+I%pS #U|#e*!w @+~14%f/h /N /5ogy²u.D(&:*}N ėV?zӾ% -XC~2b#ҲOsxEE \3o.s<؜Iu[U;W13j [ <샇D͉], zrݛgtɞa!޼Z-2$өvb e ASHa&,\6nTًⳫ^!seys-ixat+d=9C4keI,%Ktl Wq~joHDh ܀/IWV?5Oҗ_Tdg}Ybt(. OfEwBT:j UZ4SwёoeȚDDo/i3`9kaBh|1 iGdU:["f`ӫk32~7 Z7k<{nUBzVP: X5GZ45KSF屻wRnvwn}!\ؙih(93â5dVfS=aܚ6 iV\Y < n@XblP ]_oGAtшL¶8ȅHúuXZVnY o"H9(98*d1xKȩ`qW?4OӞ!h^nYcχԴWx67&)l!bT9-m\~Ko-+yQ0?QH o.wl7al&PRm.Bmrս W1x݊ sdi~b@Ge/LJ2UugGnp-Ap#O%k rucM3 2kŧ9=xNMq6%iw ڛoSǴ wBç'H<r%kByӦ%JO,Չ$ܳ+ΩG06V^x-·!%3}wf8hSZM?a:X##xv M҃@}; =aAc Ĵͅvu90Ts,7EP=vgmSW.JGw)ퟀ(c {8#<Å# EJ(`ᔓZs߳$Ҁn\OIR9ҪV'}kb!Tqd^ʯkd7GYzKкV9f&2?i9?$K/-$7!@mr0'9р~"jL jv&AN񬥹RVZVe["Oq7)HRj7Ӥ4Y L2o\a9 Ap g7U kjI^ĬR7cUY >ZԖ3#xI`]wޒ@N_r,$7@Jh-\`\7 PTNUul߻xllзkP m^_{QG|g.\{EK[e&ܭNxD'OkQYH1Ͽ!6Meɓ"ckɑC ەzѯ"WWڀњd\kP ,P93d?IVt-:2rTªp0(L+B >ϼY\t1V.h5_WteO>3~g+Od,IuDŽ`5ԡߘJg*Rj!< )/pY+Ģ+h\ab}7O6TeQS=/EICemi}ȷQ2hG;+ jbB/ykrvVmy7W"_rC x'=O-HxY*f#ɊvaM/,G0dH_#R'.feu#ظcMg?B@z>+B-cdm BYǯCy ڌG:۸RɅ=Q ~z4˫os|wK5aэ=lJ]jKN F ; SfsvabL1(!}𧂍x%4*o|Ҧ\Cw|ejP4MX?;#M@w^83nH:gCL@V/ze%4'Ɗ}M$K}$`Fri|(sIHh6F-gҫi3DjGjgq86{ I0+ջhRs@JkhㆬdTFq6)Q!2''S 9nU?mk4]$SEmb&Bo$I{-T ų j 0  D`d|:?$;wS2m~iA *ඨNp$4RvlVMFyyNнᴨ\o1 CC߸>2}O'攏7%Naqe{Az<xMa@|\(&AXr @hKkO`n9kyO'0yN8qܕfXoFыtL↸O """#zrШqZ/[8({vnJI3J*Q|Ven > ߃lxlsE|y(:_J7ߟ@j\q >0B%z`uU#{T'Ui7R5#"M?C}#JՁ9-i?T=/]U;>V éC}Wl/p,(tl|S z8~V<i*3F[ctv ie |@P;SMrҧf&r&ѽ&t)4r|4v2m rV7B&FHF roM l{beݼ&R\WPYT4O!ȳzxmz<K#GNl2Hep<ܟ9"/8? ::OBS3rԺF*lʜ /צ s:籤?7ijdHb_B1)R9AF7L#(.Ch:? q\J,X3חQ`LdMVu+/?C]ɎJ+@4Bq\47>?@-p@ܝܽ(07ڱ?7wH 6َr"z> L:  .$pN 0(xfA5)1Re!A,O} xQG#yMME#[Q,LxIِ&MD֏˿1{- Ȁ9M̾2)?u03?W G[W}bV9 hލ׿v;RY|fMuҋUB-jgS+S0p:`TmL_҂TA-ޯEmRdzkw`! PHr/fCݕgfvPiRTQ;>H;ґaFB֗RK)PNHWLFɲ;oGNea=+iV%,rΗÖږS´(٧k~>'9-:IQ"RPXk [v0Kk'w#!Rv_>o~uZ&N_ho|}*VLAk`$n>x.psG]Tq7s!Ǹi ~í Ij놖f!!V҆&m1Ф"r8;.7"`Yo|z`hYnpIv$|C:9jK($x63To×vnȁFb9bCv", YDUC޸=,-r|uWzXnс]ہL!#tl<#iw/\9f2DV Pa9!a|0V7#Y陏$YK4um?i[&p[6Kdu̾X+=Oq]Dr1,=Ԗʖ]jICobeyb|f7X9/:f*i} b4>e =#tʹF8_Չ6Ͽy9L*"> ^=aCY@ӝCqĪNMvJfst&qݦlW4J;Hzޓ_S[gLU#PxOd7FTF{@pO%Yy+xUjBhG|. Оk8&6r.]4- ò";HUD6vLx8Z+n8[W@d-v;!ֵ~11pKT`7~b@W-ݐvUiAQnv2%fʾ yV(|jdH҇B3vH] %1Z| ?ր+j9B3"k+}Amž=ʼnԛ\-+Et(oW(zlҕxKN[K_Ӈ2spYr:z'$^eqTJakԚ\̛m-z䰜5 ZC2;Gof]׿aϊǑ=eixä@<%Ƽ_wH^->kmG%U!l.dq-ӻY ϸv\SygQ.HNq[䭜܊HZ*:˞Jc)'׾}B2,Xg85.834ױoO&e"8g!H+ȓP&!Y7Z#0 Lۍ܃JҿűM$rx?V{nW+pӇ %҇{ q-V"^Єyʭȟ4L jA^ ~ |*_@R{|쉁j-.^T+`)_Ŋ?: F%Ҥ xM|e1R`T.@3І'@*/ʹr,W8񿼋{=M?E@v\cD=+IigkuᯋFƧw*ҋaˣVoUCOY`7wp,x^u'=u )|}{ rCc|n.KҜ_T:cz'NÄ.$D󽨌hR=/fO76?3|w,YΡqKGg$bw;u&ǞWejPk۽p"~i.؟Ѳ_2K~}|q՚"7 Fcg:AcK,6`x*:]n=c{#쉢X|[1DKʛEɱkI.N `A39c:9FQx4.n(9ykU`G50I}+3ଈ1?0L][4A-`(sǶliʰ@$6_kAmGWiȎs;&yV7r$2;ήo@QFYC&wv⚲N 0sr4`q{:57ߠ= |<\̓yxsc1&,k>4 fvf?I1w/qg2k4ƭbT.b3+Ly<'vwMBc:bdpj &3k,l5&\5JPD>8P?9]_uriL=:-5@o^8r#dY&! ȫV_h\Y<Ex81*>x2y&Rx7sY_X#*"2!UMXl@|<!wbx@hrձ҅ $⧟ȮN\TC74uSݤl.{$HҕܑV3/)}tథcǎΏ0 ЗUfxu0Z3Yf&j:cwZ_Y|Chzjы6f@3s~Sr?LhCnD0NPNtS9 N9Ia!?渿VRK"m2 ҽUvoRЖZUTUjHe6Y5SˁH я`@|0 ͖Sq +32L3ʼETI!M :5'i-vO[U4)J"EeS2Rվ ^098, Qi9oDAWcBᚥ_|ل@,ncxjȹW"]YSIϦZ'22 vZ}N ;#47d.xŮ{Rg,`K2Ta Գ0G2N|*y;bGXz*f'ɡȂ PRh‘#v@@6t !ͦ{4-LQr:ψ^YW/q}]g qY Hti*lJdhMP-&?ob/qf$;塚PNgQNy`'19^a7*iHau4RELkz"퍓,E,^)kSrB7w$Wh*?·G0,5FU4c%^t R̠$wy勏uAÀQmCXb*EYOi\ɦ&Q,`rТGcnt}ZƃL-‘Qt7]ߪk 11`W*0H͏,4:U^Bw-쨓$nø[ⓕ>$=Fo%4Q:u_+ ePb>Z$_ThL4cmd.o{ v,,pǝ͏]@b$R@!yPV0b}#v}dAYI}/q P zdC*՝jr6&:Y.. ۥAN t* һGkgSǖ>&|ˬ/ .;tArH[Ϡ&Zj3y ͙j Qd~0t1{fD,ies,j& `q!):k2b\ܼE#mTS).0;oCZ꼼C6Rf[VOκ9Xz0>oj-x-1(a!ҳj]׿ 5/#A~Qݯ#U?fR{5;UU+8 {v+6XQok@,Ir5@i gsmUbbľ61ғ6fJ*п8SE zކvBHWySӻyw?yxʶuU04VTr56]ZG[uN7E9暁R<uIqLMĿSCzGy.鈚A4)|aCI2nl /dzmahp_' Ja <0[9iMIn4 Ïd&}^_g㋃ \ '_PӰfɥ_~bX_?P3;IWڱErP_50&EUb#lP/ `= =Iu^Y…YAQ^.=67[be- "p`3!b(5_GgMxntL|ZsdBQc4:- p7w &S6wdYy+zdD["7^\jKk8CB!:#%Rėg֍^"[}T ymM#ڈzƙf@p(y~JdDŦUAoydk;Q)~{*xHǡHiכ$h@D/w`daym>,R㉄&KʞΟ0yz3|iszKL߮!X;鷗ؚ'$ZoxKQN@xCs̺>SF^7$ 7k+^ӏK K S/T p9[qrI97|P`|gL4dlYZ;'4ٺ@| "|ej:no~_cێ̬+) P:pL1kI7xzM߻3h.K5u,tŶP{r%L eu fK#Մt"|htL\Ŗt;MpNU ` (eLqY2;1hA6za^@jMr:}x}`v^);-~I@x] /&"۝Kŗ[yALpwu)7iNјB4gP*g7rzbh]kO%GTWgB.x-PB_4XoCūK=J꽆~/ZS[lˑ}i m |[zZt21Vf,cJZ+ 2)߇A 1SWQ:8nN>'o-($JGRdfE|Y 0ez38 EnE6" ַE[mASz-x jqsxhFl  G ?X tjnLw%&xr5$6}a|n$ne1}s~#ܻqdR_i;VDOxFbAdsR"K»-`}R?2Z=>1G*9 [8W!1hA+[w i] )L@ 7JsG șb4UY/`'o=!d1aHΏ+(j+%`bQ7VeNL g>*Xl$0dK $peH?OS:~z(CXD:ůeMU#^HAK Bu %^7N&ɁxImҹ|^Fk4Y)Z4v)c`|}$zdkTS|`{f){sM'z^@))ѕb ),i?[zb< OsFkPger=n| n&fgOb:cQ'AόVl~h񰽵䑲[gRDZ.7J'iUM0 b顮?5ݛkJZƾT7%`L[Q5la?:oxx)鯪q\)`G8UR.Pq1 s9?=e͏^O:SHw4:ԹZer0'!ZkOOv6!;@:ͳ}Pa@ YvmӝL֨qzYڇ%_`&zG`m%W\"[ beݭ.@>70°55 VSԩ]+Fs4PCKwbt#C`Q}f"6(f/bChDA*26SM8#\g) 27>{aeG²n<?߸֊ՆvjNbGCq^B'lieVtlq\zYc0 '}s.l]? idMdgcNl}tfKd.7oMeʟ.ey|]I}ڣFde-R"n͙c*>SK~9Tj]_W ۳=.Iiيs[a!PPX4OaWc~,CMKg$vs$oY(rvtdLxST tLS_t;`oe2 %Xbm[y{sp&co6qt7*EpZGUkp[z/+s'Nj NbIZ܂ U$G4oV3y*Aw )\QSmj3ƣ_Z 7q/e3`nR[ٰԲ7/8!v7?5Ba6[8s\}<lgU},:VcmLC`ǐ_ctVCtF(y )xR^xO^.ZH2G% <$tCڊ>}g@RvO59:^to<>EL'Y+X7њ\bHtL cˍ\q-HKd={2366Q Wu}|_Ψb w޹.ML)dAAT<)Y!$0]ks_DqۡBѐ>j=x -G=&#ۙkjM  ;R癶fX@ o{_n.QNP+{wY?V'^aR},o*-bJ AܾI273 Jo@\͵Uᑁ@66P5No΃Ta<&!B8Dt|8Fھo 2'秚B()- Aۛ::b*o _? ..1mSiR@ SL_[d93]鋻VM*4kiסO%W XvzJ  kgɉFPҟ&n%]F'_;7lZwp.CsDGr8d}nNψ(*ɷ9 UK~ -ea1XBo巤蠮>=iW~oMBm$1C nKQ˼523Ea$]ejM2l>W>H/<쯜b'.qs2kOȤP![Dj)T>$,ZqFsu!-NG igϊ_#nugP-;_!E.I2@(ΪJ:rC49YUKqߝ6(mG(qI}AG߆aDd[=i!^[Xg:]Lo0; |&uHS7#0&)vJR`\S000w<@ zN ֈ^pyӽP=1F%)d4 }LZBy#`EZr}AF̀B4+> h ]G'ZX pS6iqD.As`HG"%jyL<}xn6[ /6dQJM1dhcrUp!WfˑL &rAEʁ)'>ºJgGw鸩Z *VT/IQ2.jTJ'.FpؐR$~iշ, )JbN785|S)a >ʰ~nkϼxDuj$wM쯘{=Ey7" `="uv0ğ (el[+ e YZ0ʏFeں潚9sDHSk7a.uZt9ó1߲'1d' n~@m3p9PgU$bYFQ[ǡƀCt[R;R^`:y1jL:WJt<{uߚ}6ǎ*L4*bwuCZOO!k8@n]c8h"eMN˅vS_؊DޕաmsW`Dڻ{ۓ*8~ \uq,i6 hy!O<̙RAD)8p"dri֧aci#zEXSb&͚,#L| f}徟)<fS~FCşZ8,_8oZpjJpLD7PE#9U_,&nkueU @I9%Yx V*c6/RqVy9L% L*7{V\k9hA~^3DڎO"6[h/ja{hy1 L_'V/+/I E4G*[BW+%JW *%u6uCQ@ ,(e+?ˎJv+pG?{k;;/m>֪iV*k2{ʼGAjۄM*nlp*ᙲ!͵ibމ֜OHݐco5x\Kf*~ ~־,;_ Ь rBGZI+U4 ܝ@pRtW#E|_bv<~=0xN^ (i\urP(|>}L BWwG(oW9ny=ٳ6*tØ)[xy,Y |N9 ~UZ,pRKfY;qek 8#o`-!}wcb rxZDr"2i}f%@̟f@&]W0cpɝQ}c2+XΪS l׵[5ThԒ(hz5s阔u79-Z= &Mbu/Wm =4| .mu8{1zhKF' REh @^Elg( q-G7}?}F?b5}FvW\J5KC ʦ]!=_,yPwsު73LC2_C[Lc" AWfO!?FSg3WP⽯2uۼ|AM ɇq`N,YpLSFwπɘzjQXBN]D7=F8I |1϶:%n 8wkfI/l;~egmGS?Q1L-œaC8EQ==O0YEh#AF7t$C¤zBlC998th׃ ׿}>WC:"씾cd?P+Z!TV vɝ@_@ ك.5 {06Z*`%E~;S1vރЮɞqPԝjR If.[YR3| C$]ԗO[31֒2[[b8 GMXc蹒) 'KzpJQ!O媝١XxHF4|$eU+IhYǫdQdsj"V *bQ?k' ]+9}bԞD b?} ^ytpDjÏtп;}".UJ p4/n'' \f5 Hk3ar$ɓf>dX;tg "?Oly ],TLV5~K1\voU ܬ~|L`IӱpZ rZrVn]6ޟhYT)YQ-d.ҳ+Y 3.xҌl%Bg #[3aK,ޭ~`S,Am׏pүȎ|;^ Ζ6d.G>P`vϜ {+S}Q%vfҳGpko5k,ߔbChDaTP1m6lؕ3$ Uu&:'j5D`K)yZ~"N%Px/Z|dJ%⽢t{.3|&bggC獭£%vDv NT !$L|*B]' 2Ž W-06^]oլ/ J"lcr1U&ܤvҥFD2Y\GzT"6VEX^mۼ7{<'4A.3:\Ht:5\]lymdmK˘릷x`M՗Op _}P hWZNS 68#+#._Z2ML+dQ .uE\|S7L.C͟ /"ՔX*:r\+Kcڴv  ,VO/D?UrWڲ`VS;0io|F%\eqTM,iG) WeBsuR9k!. sCW`;"@~<cQEFvY -/@ULevθeV:`H>0}c}4mD/&ձ] /,y~˭noa^ms P6J +l$Vx%m@zj '`~T҉^$S_۳|7dQE84q%dݖ/S䊸eBZUQF&g<5 d6?}Vp`U@2ڦNI6|zw\x:eΆ&J4N<# |5fYCu':ýc{G"aH'6㿗߬s+>=k]t/EmmHR\8WP2*O<8Pm~w!y#aP'RH9GJX^K'nnD|Kӗ*l,BUOt~jX|W4^m0Y?G*aYhҔydߛ(Yg"7 {5ad"%4@I9?mQZҕbLnX ~vފK+Y _IpӗsI/P &U)sjTJczT_A{BO"j@0Cn[lr] NȄYI߯iԾpyY 1* wB6D$98+R'E?cgg%%Xʺ]|WIr}P/a?6 'mq+AZJ<~R˝vDUd*Ȓ X4#RQӦCՄscqOgZ&Pr. ^d!F0ەbՂSm[9`a'I?7,N[rnkLz~ G V&!)~=.)qUCAku;!#SlK4:0pρ-d9^uluF1xGdZ 0{ NQ착J.w@ֿE׍%jODkG (N<5_<6͚i4弦0V0&PsƽfyGVvh(5q.tR1Za=n+zgNls'lp݁'x1ѓ ì֬K-L0o_o| I &7 [ⲳDžU:5|[v[noRY啟$LH %abpjw5 T${͚ٙlYE6]@ p6"vbZKL^FwF{ǗZvTFO*N@xw G[BT,UxB,jPf+D^m<#Qz##&8Dx؜ח\Qޒ M!!KDI  7o{i{ɠ`q5)t7#Y8Z'9GlJEX:?DyUb9ˏϔ[q>?)Tg;r o g2z ,0#(WZ1²L96 ѨhJm r@H9 $ҭMlv'@*P(>F m sӦߵRj:5N/ AgcbT{HchRkvjR; Tc 貗Y-aq*#8+*f]/y|+cQ{e[+[Y__GwMeipץ·ѱLߟ0D{aY ܡզ"Xawh AswqP8o 8~RY5Z}ΡP '3B!h>gx%3wGJVM_3y;KiOy v`7"ăYS,;#gFE%^RU wdAhjx S%9>/^5ߡ \k "1 ɜ(uB{r($7Yp0/T1Zzh<ߘcЅ0 V7:8+肴th%!f0;[y#}9Ѧ[F,^? [fMZ1&gϬwmxCvEv=7хzcS KPL)"iӶZB)fg&"_| C-*5|6s2ѬJp0$j7 y=+A1w>rH3X&kcc^hc^"5mء9]̾Kڃː)[y)_7ܢ8qAՊVtFlroD4K:&] ʓ+lI_1M? k5N}*7<7=;q!٤g|0 dgYF_93]DZ="춢}w:S]K\K(#2fL˶lO:/gXM:2ix\px1HE{=3N'-} \$b4fFg%a.ḳ%+pJ*(_ n|U:|x+pՃ wt nʸH3KK6"( >ga*2A:%"ddՋ5דO4zpIzF1o5is#%&E']F22Ǹ#3;ueb`ePB`9s SGd c nb/$݋aOvQ lzOF}Zç4trM χK2^$r-]Et,z^DgUѱ[uM?%]\Of׏}p{gG\~M ,ѴbT,^H7n6V 0JU/Mә$=k(jwʉ]m&JXvDsTU'K;cA2.<'Q00 + }nD[-B5H=4}חâu E mͭ4i{>F_/ɻ_e!$Q_s䘪z<+2bE$ R\8U7H PtjI;C"iQa1BU"4_5,(d լre]gF$*wx 8A~tsħ5mn/hj)ڰj3 #SCyFXRsNyd~j:o1-f;DJs%3 gMRw?__cv!y۠TY+,v7o)1[${Fϣn!۞_D}y{%,RįG(C#Q90f4`s)4d.R`PR9^F%d!E<@2! %iNs')!/BTObF5C` 9nGDk=MdGs &?[hWP܋L([UW 'p:d\ڣ2Q,lw=[RZSG; vw%3胵>>ifRN"OW7T] cX 'Jxk8Yn|&Cэ jir^߮5U՟/ZZ~c8WhQ΅^BrT,qڧ)w յI9u9ھ\!Ư2_m< .)5ˆv6oN7rL0Z"8p>0kU|z ,fGwGP/zĦR>DϹժ詶_s]@/߹myXPŕsћ6'妢W(`v7B0Vf"!Ay.UǣZ,1ϋ%͆>"cVJf6-?|?*k,3fG7[<,}*3] >nv|(|kԡl pG\nmEH|EPkb3Srp='7>euN%U,~]$e2SsQNM<^ǏiPBMAGS"`~Ic  +4>6H;(ݹ)k `~peQJŰmeҶ(lZ-Z9y.䉓7dF,ubo{D_vGr@^ 1v {#UlmD5&xޛa8ie~u@,RեE[xJps//4JQ'6OWAR:)_V*-sY3a`g1*L@Ԁó[ w3՚qXyiR{G )괒4}Π_b+[jp`Să˛Dž.cݡQoƛ_]^uzXl*0`iI`ci(f/c8Wzq ' > IEFq%Zt :I> ZϳI1OʕEƯLn#Dήű<<o'Xz+^ŭN-:vAR]Nl]Z(Iz y6=d:5]xK@M/KW-+5Ӌ8h04%j\f|AҴ?20$Eͥ[zb 9fpzw ]X QU^\!_ oni@0ʓ~}syep5 O2hde/&XK~ ԅf'DGҐAdc8#um*?  ĒƪYTݩ-an5"5Ѵ(#y>?ͪE[wRբLw( ơU rLc}.TWVaղp2N$&Ө#Cnh%9/'JӬU~7thᮯ.Ňezt0{`l@>܉M&<$ hUU\\9jS"J&Sds8+"Tpt?`Iczʽ+ rF:ŏͭEf<}HVbڎMո"W o׽6$tVQ[3łMg-kHh@璒vi-V8c՘N*t+578;|&Fՠ]Pvq`$eCGkcP:k!ck~+/k1K^B†whP,Jr#aI7-^0B ѿȢD({lp莭 NѤ|U<2ӧRy ӵZ߽Q*ޛIkИ6q+y@0z < ?Pz' zC4T>_̦8ނꁺSUYHh3^>sؾxTz輂vF`"fF^h5R.[nr˄m} ~s1DKHlsJ%d2ji#{APG4u V4)`a;JfQUK\X&ݦb2:ox-XJ~7Xx<{ a?~tz_@ζ[21Yc\J]bZV*w}k_fc͆LMI&cTV5l%w>,y3dz+%#e8#p?$S{"IXhS¢eehmpJ5y4ڤV-kBl<]ODb 1j'\H_ kpiY Va:AǾp 2̯CB%҉F.dz.G qԜ!%Sg!Sռ{ck4WFJlx:˝̉KH0Fy . ﭽӛ~S EW7g2oY䃻7kNQJ)AGqjl3?U&p}|?dTskr$BPz^WD&/.w|xO]{c GFp&V=o9RDUȜzYIAIT3FF- #76 ^yD1*<3.0 i'NU#^JR2pi.L*Kdށ rNlF]owL2JxNKZpڏ0(Lm&,kJ% ~L@& Hřݤm_ܾp'Od@m4Pџ˘AF̂v4"p3[)@d#z1U 89'FmU" 9\_Oqiu+sh-hN?ym{Ykh[TjMQ#;E ,n5h=NA'l`8Ia:;,~ך+9LrAAbPw~P=@?XC,H[^a럙*ĕ"OjQ;Ř)P,5潏7*BX>|#cy<.Mj[{Zp(CKޯn IBbBѝ> 4:07x(D\LuvѶu"{EkbwF#HVhƘ7 ,C]lD(4bNۙkDA"P"\kK$OV $VpFUkxʀ0m`/9I= b貁Kmx{ $-k}W U寳bIR |@07I]uQԼQuYs{ -棲]liFJlըVSJR:klf pJ/ڃ]¶WK'f !$]/xȎRh7?` HEV<{1Dc>Ig bK*OjX9je6[3Zԃf 8#tts:?^)ZnTGq~t4+)\u)u}pl!;xf,`~j)Sj[ wSk{?<:Go ^r,04SS(ċ^VMj(yaVI;.~7 s=5俱;kѣ6Nyќ`;\l چ49ßl>d2[k-On.O_0W2 KY4D3l6ј[v{NFenr#{嘂LAAV+ Psk> ֝h%Tjq`bV7m;Hyx4%h܊5vP18)/P@0bjZ~m9>c{ik4 %KbyU;z~q'>6<3^̡bh$nUe`x ݩ*Qr?R&ƷmNz:I7v p Z(@?{@>Cwc%Xnޘl0L>F uG_Ov%^~ڮ& /Z1rK[Xg ]m|7ȵBu3pMoR8{ r<[V7a_M[ՇAnи.^ڽ]X(k wq5 DU)$ #t2[U G%LXLQh AU SE6Ưc 3($"Jjww @>VvyM@c *^k h}M6#]@VbE-AaerHD4:oa8GYÇg"G4"nJf Wm_k6{ `iqLi® vftڠ!@t/1 0ܢ{kXŨ:#fPLjӴqܕmb"XoSmk )l`qwқɇŔH@ԌBYDz^_-Ql3~&PD]eyf!Pģ7/f{bx^rIH!#<5UBϣi"Ź_|?~gJ/Vҥ+HkJ[3OPF[-R?S& + 7 ll[.}:12N<Λ'\;R] ŔW~uU^(OYP(qE#tP_I%?4\Vpc$=w 1|(U̴~9E5Lz턿SFޯ;q22ˍۊ]Fh>KCnC[id49> "`#Jɬ-ۂ+ 7hٕw,䍾iXvn*-F*<oVu<"m2$j|*9bkĞ_( 57:ScWf'|Q g^X/h!;Fh/EB˧nj"abl{cFт8{ }(O"dIf/J5p\+DžqѤf?-NcA0+\ZJML%C,Yv@?!P1Ӵ C%v]e:Ra6PFa`  OJM0WIֶ3ko [݈n6 L :i,HR3/f/ qus{+7[j]Pk΁mi%"RQ%J@kͳ xb.RC-$8Rp%\!o>eh ng;I 8sux2~i vy1ƒ[Ƈmi{Pg܌o)Wj*RrI +W0ײs>Ε1N[Wp&~ln(c̒X;YR@ Ҡas=Ri[|rabI?U+ʾ&r4Sm'K6?&"> Ab~Y&\@nhC n ݚ "Ahtꊰjj3BGd8C;ab~o_~ dB;9rlS.jN653hȿwX/ʟkLi-,~7Q!цS^闢{o舼5BlmH^AwHr+^D i'IOo]Mx7:nCJ{o2R_VΫ|kiK3;1.tvC=D8CeT8,V7sz/vV‹k z# >agG+ 95h[==A^̒Ou,%r 큞% LXBf[&~:($;I-6FK!q9[5dNq ig*:pV6x.OrVqKԜݮ0^ ^i#㳭 O`C6 Aڼ2۲lݙӗe#[ȏss{R0BP,(Ѝ&~-fBݏd5ɩG} Tw:}yk½/bx[Ӏx>g_J"?)[['ͺxrZЄ.g1<{3>pzFͳ5&\58Z>Z}O 0Pʯf2.(V!:{'ۮZ -ӫ}Rr6ufTҨ6_1H4ox2UCYTK/-c{^R\V4u/egjnxZ-pA\ۯl񶶸f>a/[tETj6I`7ެq.n|^7^)qޔ !e4}9Ά 6M\&0z}8i"gX B֔ 4X\ͽt ɿv :%(kZpIۨwqX=_0X ZWd۔㙞)ѳ}ojE$t!X ~;p]k%S-4_<\ NSŸ(תsvSd[`[p9_d_MD@@ fE3(=ar^x]0߂F&+P:$D*te'Hn5c;PT!B@5] R=Wu5dz;5msgPuB[=8$viUMޯwIomqΚ4a+ / oBzL?ǻd#i  }dz-qiX߱a|PHx\;J5ByStH.'rg?u;"P<@ 8[`~rp*R,etBoMު6{y{r3 p+٦ .aςE*뮴>ޑg24Uϼv ]b&zP?YLjj^6f иy3]d1b $([5-}~@p+p,J5_XG*XRfyf#[:ȣ{ũ4.w?xt)+9 h޻uÚڑГC oH[2պܢCt Xq- &(_'JG?5EJكF-UIQXڇ(Йy0{9v\ ` uYlXD%ʢߍD#[h2n!g$OnjUQte &;:MC⋍Dg戡%-:P/&[T-@B HV!z]r4X DvⓜdgrFZb0L:hb&S|2nLב ^]BrC*[~~H߷"NB`4ޗE $BvpTrL-Mw GC{)$0n=3+W3X FgƊu# ̀_1jSC~Z)m%]:c<1bEDR3 爩;SDr(ѢY1"逴-CK]'|BMy9n{6vj$7!r/9\}S\W+ O8[e?LA"wئt?+l®`j̘r &<5ܜםy"pDT|rm]("i=^#GLK7Y!g*/a vD]ME_b)ltX';`|]_z :% vN\| @a`s,65u )h.qB4d#>,.,z5̤7C? '!IIE]y=zY? HW&V:H ˎ37<M?lsFGd/p4 w44Ul%; 3 I{<͑3;ќbw.^笐hC8LT%|=&n zg4藞L4BأҦ(8_$@<+$_NLmg[EG]?Mvh3M趠v}ۙ0a5$<ٶ"#7Q˗"P/xD,\Cgg-_1d@ɷ5U'PEłi¬9D7HRG2t ˿/O*g9bhX%'xLhȸc-u]&z="Hѝkcʷ8U4T\V^hPQLa_7hC%5PLJ@ 4>s;O쀕m*HS'CU% FW>.[汦#=vǣsJ4~ÈDvX`)+lZHw4@ىSM?ڣQxOyG-[g2$5!%+'3\  Мih%k<a/3*r;O%ђVz2 R+R'} `ntsEH>lmxॶKd>@>ԣѧ~<`:qBQw뽫/d_p8aEcx}@>prԸBªʎgw .1 6R?J鄅GPڡ]ኑLGtt4#f5Ӆ,4`a𬥁N Pow>Ӊ=?@ (!YȱvDO@9ɮVXcхKq׫khSu(ʂlDշʹUA.zCRD0tz}9"+c)1HZ3  p.TGQWtO#3o&c + ЂD*MixQ(oSFGH\d¥+ n,Lf'Ԗ+#4E^@ 冀Xm pdq [uRʚLY_4pˡl* b?l]_whMI[>o?D=^;;oP|OTyooH0:Ÿz`3@Au ?jrorҪVi`bZp畴mtVOQ^%+5$'!|aeې<"T;~_w}e!ߴ%l]M֫A_܎#Uck;5bi_PHT]#-J#?Bx\4g݁^i}Ęȃ]]՟ p ܾ2{hzҏx\]'0rlvE[췻{YAtVU,o~<:0:P#v}}ݖ"q:l[Motm2M}S82A򏏫<+I{L# A@=;!#_$ W?eoX5mOˇ_% F+3?Uݏ_ȣL{s/iaA[&Y< +6sVիU- ;:V$%4BLB[LTT+.0jwNZKᠥ< WN)IVyu󆷢6rZTH#Ł'ԭg7Hq$}} qNV1(1! *y2u+T \E\[jy nYښH ΰ'g6e+QzSv0v4XpqJS&gxXnj\2aL2t*u|w㫴SՊH%sI|UNQӽ pe$IBp t#fxAvX˛s|U5^#Eۓzνmv9տOR_ #fNeQM;,׿:)S_u$SPG _opq1oELvlD / Dy`F˜ U*%tKauv yh*UjFJ'1_2R&z6q Č!E*4y϶#xe 63(Asg} S횷d/7Ca+=`#ZE H#|)n?߄ǚ8e Z[ZҘdJ]RGupk2Rf15֧ St5 AptCnJ̠}ݖ'-T"|?:'P~/we0N59bģL 9Vṟ >;2 /g}mpСh WU4H rCbF ];ZYvZMge+8Jq_u .*ߘ nBy]6C,=NjϢYVzlr+Cewcks)dLM>P^awa^l^΅ӁY ?6! -WHk2Nr|(otJM tj VDUl鄠j`3U`]f4mΰG)y у2G3s\ٯG"_ SN',ұ{F ~JQj_ 1I5vJ~*u `$7ӒtX~ծƄ/y'S߳^B Og'Q6 Y̦H`\;ZMSוYIjY6;]z“#ZnmRƏS:C[Yuyr.x-ODDb-/O*.'+pGSc|Π-R{E(Whᱚ1ti"919nrOBB6(!{Uf?]|T2{S4%l('(nF[U@qʢ'1Uu ').kQtH"];D ލutq ۇhl1_ӘR}m:ޭDn{ ӴˮTI=/Z U.aPZ-WhS*3:,ͰMD\7V\b71jM:iEg5 dY0^O Fy%U|{}b@0P/vt+E&g7%o +L O,vO`gvX>7C$g< -4(_Pb R`=WCqN!ggKP0-xn.u(>LQ7GnU~h͡e3uX; mɛR l^MpΝ[zo1'_\h@9tZzSt4 hmiJ+ @$uW/Jv$3bm59gl2l`A%)ﰮvM&l8·MIbn*q<"8Fc⺎zkR\*!{6Ԋ 6?vAV輒-i#b,*9`,FSx> \-{ÀdGW9?E / A ͍rccʆ`|I3+T /&3pc˙zԚ0ne(j#F[|I}E40w6L@}};:am!@ cF$jtH*?n4R -?P i?18!nqH9MѵܚT%2b,@뿇,У&ƶ#o[$o ։bϯl$[fAn?. )ġhQ_ȲŔthVI@pf|eo%<(P_ȹ/HDlJ/$ϑvY(Ǟ惋՟xIo%Ve^01ntYH$ BVSP♰ј/2O@C"y?=T=$ {Oɀ/־vgpcs#\ڌ;`5@8e_zU]Mܰ[/ V!9c#|3-~6!m&_`=vZ.T1r~͵pf2hLV8#5Hc-DaG.Z2!-OBT>)CT]bFlNMi`_yYهb>*!=qr9 :M U-#yg0H7uȲ q:~_G"Z LU(‡k΃1cLE9:6] -#ӂdk L{X- CR5kWXR\S}8zT޼R૖B3iu<vC))-G0IblxtxWtu!r咲Q4ѳ~K&VWd>b-!ϯR8?Dj_ީnmS UU9+![;Ym /[ ġcKO_m7JDXР:Ki+ښ@Z0 UJ:Dfw5,PlV,1( N1yEܓ!uq 埫+Q$\6 BQ2pp}Vtv]nFDCxJx]7|Tv>2u jnQ!_Qw^W/|8gXIF[W+1#F,+5ƝVSV-)D1g>}6">򃞛SK]W\-)X>XOhjˑ @5O5{.41RIo-ZZ0{Ka,%5:H9_tXH@]|^ S3\qIJ9I|DhY'ՏԕŌO'ןB+ѹo][m_I$l'?84!?J (\S IAqto ɢdsĆecE5½(hLQB*%c"l.a JG{@ c2jg>*?~wMFJq5:} =g1*4JGG}@d*iWJf:K9b'=M)|q':6na: ;siiP!K2vҶY(v2^C]( M~w~ukGg8^ SBʾJ(KQU_9ϷQАn4Lzn@Q\c* N`ba>E>*o8 Z?j6 PЀuzJ" 4/4K86r5!5{1r[ha_eN܆}t(v&Hӷec'aDOzL+1u)U#0Vec_ݭB-9(Lܔa,?ܤJi{m͕+¸AtIv:k~V>u&sQsz>9uϰ$mm@19&LAC:I 32^4&RG^ aHi~{D~Xvio\=ӇpaJ%2\bm"y S&;>A]H̑{Q `[*E3{^_nwF*Qcg!tۚB0PKbq;;ڪ **/-݃ B6:8zݱ2aq=MB"GH4$M-E1cK0wMqf. )^,4__]c%SbQ>窡H2524!jA;I߲[p=e}~H:)q9 3^E&z ]Ȁ ܡTd3Sx+,q6a);ُ-(]j 5ʡ_7+g\P̧ %%t`ޘ9An/ >Ө&([` 33&7ŝ$uճq{>MyJw jZ5!*()6g-hEr*bRmV9`.G*qL5@ k .<3g ٰEtqu SA+z#\(z+8,ADp(!ꗃDVPGX]puP dKn˥8߄ϭW 2Kۏt *ch.HGL)=qTM[r GuӅ*niQ )?jtk7gVlfAeʯSycV& #<ɣ|tGḭPq,5OÎ%*ȉ{H6M4țpFhOh ]3CݫCd*0*Զ~syzUgmܤR+P .M"nM$Bƥ3l瑋W*׃K8 9uN5̙>e{,iM1$`;@9a[ NPvn̴gaզ9n.TJ|ʧKfl7Ik?n-r]L W>ׁ#%&c=uQUBRH͉-{6JMiF^7"t0lVRr7$ZR0 &ںؓLjTd}A B2;LL9jY,mug\2EmvfX%ol])wtS ú0gq qkU %竃`NeBECMrS  ]my B2P(ePs$h!riz$_+I#lrXX#<9Į:A-jJ~t$a`p@c#\UH>"Nf޳dkiQdAkH>e6Qshx *Ta rLBԚBbm6DC+C),97r^`OAv0(!JDkK f(n"@;0/:L׋}~\qy7{R?xJdͬ5SjK^gf~@,>>^j<&M&:j&9II\Fg֗[@-|I|ID{8 {]Dx:}=Eo* CaA}!)W8 #a[κ5Gpac往P<`;["^N˴~ZF" ¿k ik `+gU^N"p QB\P ֈ^~g=.]gIVuxi U\?tfϕRTfUz lٌCZm^E l>Ji(w=?S}3FJ%2}4lce<1CD۷?(G N9i>NУ?#XCxDH)!Z|UjPдs{&mC zK :0?'q>հ1!V␻I^_BPnvGkmMDf7OkhT=r! yJܽR4/0$ExUŠlRvSuC-(3Yb,&CgbHycLE)3ZmoQGu][" }!\29g#Fha<1N `4/ ;} 5UH`0KumLG7\QRkzئD؊ W!AjFXQV.^X)ENTEn`U6(iDiX6P@@D-թDz:jJ|CA8|}$]/!nဵbf#Smͺ$/u% Z585ʞ`̞}v؀6uS}kHaE۰ +9_V:yf_ A'GMV|L;r{!}LK;2 o)-a  L?wM8P@D;pq#/ۍp)UuYg2E,(W>adϓ@Vbpc[c@NoNߨ{t:\Y0 LnF+0)=@ Q|Wy4\k۬g FBFsccTrXf`Tyc߄UgX/1 JAa z0HsDcqP&/`_6k|D󻦙'*Mp4?}l+SȵDmЄ1wAqxfx}ȂU ` ȊGG!(&"g'JzоYL!U}1SIV891Hy":ԇ>œE O2[8ePi:X5p$4ң8?3 nd FP" !s:CBnʆ|(C+&0 @gĔ~ r=l(Y lc ?Į}*ҫ˚궾;q stK"3h 'zN-aHУ 7NbaS8wC?Wc׵M)6Ë濉"> ֚PDz~ؔ///MԎʚ#=/ΣHkis w3w/#Q !}?CۊQ_#ÄO>Yfu%̯pyPq-5›Xl骶4JKX)GY^g+,yJof%p8#\7c :i= `Z^[(-BXB<sj|<<^[ İe' ,/J9҉d~Ny:KDw4uvu}Z>Fdw`$Cm(7xIؑIoWkEq^WP=#RL^{lLggtقݜXFA]漕oh): .~/Њ[s@NȹU#FY-xH!=b^[J%QYT+^]Ү3r3l'*X8p0;w-atr#04ˈk~JHea;uT]S*'R*j¾f|ĐܰkdZnZ9bVB".@O-6c66zefIQnxq oyi ]c5qԶ# $q?pQ9¦y;g͖EW"6eDra BȯC_-.*.`@JKĹRLA``Ruv u:%>=x-9LRY}4'PL!WUL&!@9;c[JS9r"U}LlRVgogܰvW+#UϘ/՚IU)rF*})I&W),rͽKS^9ܟU͊8J㩜״GbЅ-yDNj5Iuj%"bqQmFnvcb*:i$!ijx1`2VP-n''t+E 6مJxt'=w'&>9OxBvN H٘4P#nG-E[q#Zz`O34 O\]PTEfڢبI̐}q|(G)lfXۨ6 X`I)7^ɰmf0?8%;tPwZ^,Ys 0H[5#:kfO$n tw̬'%M=޸.!^oHj 0u5"PM +H 4_`NaF4P ;==_J[~.URgLmgoV+^`v@3{iM4H"tOrr=5&

lx 8k:'Cm-gX*{e7"e<_C+8|{BOEAAZڦ<ԇd\Z94YD-[`_UwtHw Wvy.9hr;l1Nm2 UR4$:jj+3WsAw:W"] }JRPk29M6Ї<)}CJi+T*LA񶋯 0T5TIB͝ WHom$<2B{>œ <1\!(K nM DQLY(D (\/!(^Z,_eΤyQF?]- `|q "$*2"::J9ojTBdC aJM4h7擟6讧D_}={9=84+Έ]+p>nt-PIf1U!ȪcoKfN_g9hpvaa&1}`-Ck{휛ƇWrҘj)5 j{!uI>iq)+/u'H,;[.P*`jlׅ^X w: SX Ԥ pTF2D0쨻tؐu/<:؟[iFr=`nc<&e0'GK܆La&c>x%\| T&W++>@ڴ4\ɼkc{ej^)ߕRK 08=A 4N9oU~.P5{'}BO&V 3TPX/Fa*ܠW+F"MŖ4J_F0̙t kVD _PeNaP?bVBSKE`BF}:,;vlf ;6ZB+!bFr ˆ(`ͺ&zw;F'XYY"z>DOf <csd)a?>~Nż*͂[T&y1S LOu(2E:&PH-X8 x '劘Y&G99&mh/!oFdXljۗ&M~Sf%=g q:D2'Dor=kj$Su6Y ֆ؆W%b6׈ض!d {'sMWJ&-+@Fu, ݧ׻ѡ#:MәMԉhl}Io;S>9sK٭bM>LB'l&-y~/'ȑ娈KdXmY6k͓'X:T1;ξoZ0Db,; %PE0́MpaFe!7A+ |$`![ʯ\݂9(a tQM*VMgm@{/C /c_QMp9X!d*4oR9pw2,rPV2, +3)[G33Hj{+y-\.7"Otj2#ݣ鐥ѓU4kq/EcloB@cηC~N 9/T'?/ĢF=+:4F5PzFA&ogxAnpv0~U7ALaPM=*3HkD # $݈Z_5D?{{5wD=(ib~acjF8kK5#e:U1XYn } YC$V x5V VA!mls]rL0`W=NZ)t\҇piuYv9<V`+^a'Ӵ),Y)ԣy86u<(k1 y$nD4cD2;L>$Z3&!Pz`7t蛛)ׁ3ED-:3z[ca a<׮&_bA,U#A_NGﺋTID>e4?JB>(n$7$eI=fm/ya| ,-EQ=8#=[ O6L̥H0oՇW>p =LU^'S6^5M+{Gs E ((ŧ 㼠5"lki8n]f4c N Uٛ"J$a <8|C;\KS?8K +miG+bjQ}r¬O|i+3!& Hw;BJHlYm#4g 1`MR bo,~k!9) |.;r\ ONx}tOzӪ"q~rݬR!hhɹɧ0@+Kȡʬ#k;=`;\}:~$)p.[P J4uiՙ5IF뷺~ 8{$#jR=8k3QSF n됱zKb{ImExMW/lthPΉ#*Bz;nx_Vɔ\K,\Z3MиNF_ \I*E;Gp6ҩCTkR1XBtodK)B qMP5%8+ ӯ(r ?}*`ן\wPM:PN$^<}˞xS7#xфJ!~לCxtFk kĥr83=S,=Ydl8׽s"1vIH4};V~-px$+h+3ݪ} r;fsuV0lHb X0}É?-#|߿ל >mr`M7u1nO:ӗ%'W/:k-x{Txvmdt8W(3E |V"j Չj=g[ Dz{B5 `ї[1 gj0+'?PM0Nzh@kcjժN~,:kJZ7DV3U 2̿4Qk0Er&x`]Cb6w:a4DEܾxZ%7ZHPiR0xL&ݸ⟸b4 Sc9bǶ ~rf1t!@KiKҢ5tII=VƑ*@8ㅓֿk<8!92s.͡LӁX"3(Նqݮ~^=l*,-/Rʎ(6GMĺP(J~B\;Rip(Ϯ@j&֧glAdy#}4|`& \δoQ$boamAa)--{upLuiۮtž5)Et۷ GРjl-$} \rH3K?V8mCv4{V $ಐc5Ԥ@׍_LY kkE%@g׍tPD!iA'WMz\-ww>xJ@P+vnpxɒ0JoRMgU}N:NBaL\VB"ZSwD'hv1Cz"?w:6RhzI%5qWc&)늭OuxIaGCAx$yh_U S '[B -~Fq>X^χڳi %ED.En;3q S]0ZY/ /I<>T/U>X d 1 .GHLf)勠 z숾VPCu\zl3lC5]A(Ql(O:{Vفz'svTq$*af{Gx+B{q|.(G6?n'‡/gS]x9%IT*\O6#ΡH.41(oK)"RhJ|w x y~O 5;=ވazsI jEK&".\7 X3h&޶7(DpPz9AGˁDP,sP.}mO|<4j!S+ >tp"q;beíaO:_++LDU$:nÏg>2x5;wNwB7ȗћ[TLj(+(8y-nUEgs(meC;)i.Җ5>?Sd3{Z` NrU+ +5lrO1ꜨKd2xsD]fN .vAu1;C)첫$!qxApӆ\(Z' d+v!YKxee+n4#n31F_J{ǾҶP-Ql(0&U\Q88򄼮ІNMYʍɊEt|B*C$ҡ.-+w:,sƴ/|vWg hШF/cdS?+(& dvS7W'8)Q#Gκy-hi`y;Qg?Q L=C?l9eË6au/O{"\Pn i0fr[i)G 14qH`T xY2}ES&vl Q7)Ts6ihTQ=p 8vPN-5oz6>"HKqS-rř"" Eo/X'RĚiZ1̼:1f܏'arQ½ n.6FqMJz ȳDEt^u݀" [/z0ln6mN kT 1M`a!aZsJ b1sY9O'6Z6/j P;!fi{/Zj3OAŘY* ԘpQ"O7'br=䪸KXa%$t6(nplY?"uNIy4櫯 /u'z+~)Ρ=U}F@`f-2[+V³/jt3T/s=P4oˤ9+nn&7-DR2/<#e>,䡘fa[ q#7K9ksEjߤ?\ZC{=A[)vE1ϦY'O=[H6G>s{p|@b,gj'YeXjAQ়ܚnBw</Sˣ9za}xOKlqZ >:pG hN7 p|Fa!nonLo3ߵv_R )"q + lQQ,^%^umޏ# 8LgΑ9 b*Ruܔ4IWT\>Ii a6NVr/f6M$%\wd =u wu/1k~QIVYuĮi+z\W5n2"S%^&TQ] d17X`m)b11Q2v@]7p5o.a5krbyZʟ6{![Ougu&?!jTQhzny讒\-, 6lVbHVp߼cYon߈' :JٜQeQxMdS\JB- 14ha|ֹjp;b'"EI?o!jRR`PbiR3Qkek0]j'1-A/eoԱ?2œJY3#|-gO'ʦn~h]v:Ge4F鍼?q8u NZU2 އBЊ] xT0#o&2`Ẁ׿Y‚m4y hFŴGY.˔)w*[  }2L܊$ R1|6mX;?` oe yWk/Ո?0 |ЊkJw=ߏОˋ>YSlI.x,Aè%j *pKk>.^/(KEyԯ02d"IXΧݕAvz5pK)4I+@06wY NF*]ΣD60zσ(izaopG6eG4_:D~ӅٿKI ]'GΗ\ӚbWr\juhw,oJQ$5ByqgyT;8;/՝-WV0(r&Lh׶]O N[׉qS܆ҿ@yRqWb _[Kf"}Rt,TA$ vPR,g|  D.-c:YeVo )$D *8IbZwF3? {.MjK9l%@iu12@~" 7 76*L5 V=`JgZ8ǜL1>%ِQg8e`obAwPt'LVȆ=BɁvbOhɌm"-7ڗלɄQj@U~1׸@j 86U\ϱG' aviPvdR۩mZgpSXMLgX_† s9x?`Yޔ̽~q<$2WHDqRZbyXgԗ&k=GkGP&05& ! =df!=NfPDߞal: s|mQ00NP@ aS2ru:B3eFcQ45 Fc $ Wj=6:)͕N+ˣG:TSֹ=pbFhK꬛%! RR21գ76Q*ri?#w-u5 0m+klZe@t<||"[( ACJHi7=SKh F{{d'~.@T([Z?=>Q@Q?SJAEڞJyWGX?@0#v&6c&x7eup6%W&Τ!ө5"Ԟ_X@I$~2:wt.-h-eG1E1:@sFhއy5|#܏nW/hc}د[B8}wC[e!C1>J +`/08 c CV <7,P@aËDt`S 7'n&5~f͎+E㗹 ɦ*x/N?0=/n7Bcx痢# OPRq^iFS8tv;ULBMѐNdy_L7r8+ I;rEP{@*\#6̒Cg9 A>kWBn5|~}f'7=f"͑4=BY{w12m9o |KH5 =ri"g ˘&^{AOJf=X_ch- 쏤HuNue4l<()~GBsUg1s‹ &MȂm)pb7kj RD']X(T!ѦT,&\,L*.7x7&J93k4׆|5/l7w/B[a bOVMw,OzTHH'Bwy8J r#nA+Gn9jY)]ɦu ?Ojn+/A^ƞny0c啑L j-1˯^\%n̏wk;g]5|KʘC rp};uMVS LyըV;95Ckc8u0@'WqkC(8|$YY8b#LXdJT&t$+9pXv);V_ھ Xa3%-eR\jl8R~R90k ;07X9o)y5JP<DXf' mlfILҋdds1F4hg/?_c6[m#3zuBo:&()E"Daʟ5i\ZOY74 Fod^Dݎ+RW$bkX>K[ԋܵ=P= UF[N7-:Z U`5_UG_kQO=$nN,H5vNciV5ؚ#s Pbkz"Q@Y@%24|Җ ,!.dJ{@cHGu;s1hC4\-{L23q9#`fb$#:&>`Q;|n˝36ܸ+4^ vGr^tۗ&<tm6%Ug?q,;4K&7God.Z؏zNL(us7Mg ߘΤ& [;RUCW0o 5ןRQ*SvHgT=}G[^Ɏթmc/e ĒX427o2S oþ_&k $1Տx/c3brv9ZWWv5sìдV=*^f%bRAgQ^Slx=;;$jiHײ FTSV:yޒ̝x82d#O.d|t%=dؼ=&^A0j%o9lsӚCR nshd$e -] ,ggVrcR_ 0!Ѵ,b6,G$/XKW*deEW[d( d^%zӵ3r3E$+&~{x\ٺ40JԶúuD@oξ@Mde~/i3'PmHԲ wv,~.$h{у(V&L9d]e@Pw٥tRPa[KI"FB_&XH;pyO{3WԞ&HS(nD7T)xD]'Dk~ I^ijNSm=שrߪ*LochZOeތ딟foM9Xe$Uc0Rb)j[k r\Rnl#Q[mcS.ba{mhФ F@iw7Į[Ұ߲0bvC{‰\e*]iI5sɲBT>Eb–1%#X!S6stc`VRž$g9qj`=)Up3}%1~vp$OtA ' %^% V >gZug{7ۡ6U[u @ @&N 9͗|[dbS ;3M~)VGA4ʂ.H=2=gz(eHArtLX J%Ҏt :nd ;N* Xw&toQE儡Q5C-'x(Fwe>wGJf&)TU*dc8dMs|C+6-}b213zBN KkIѫ[@@=E}"dO,f4Xz6˂XG8mΰka7DJ<܌ĹP'ͺZv{PyvҽF2+U!wfwtvZQ<J)ST#~,CL0fiMz9F/[BbJBIQ_8`y;DX|4z@0(_^pF G@z&+;\yH}Y w9.$w/}rfTYU:Ѭ46lMn=gdW.M|Om֊\TP /#+\4|4x]#Pͥ+~y7 j;y\—~KeNq 8;"A.~ [R}_GT,Sc_(XY3ܲϗdNL`ڪnMNyOŰW;&kouFh,^;d@h]#2-{"<<@b_;_kSbRATw\\\? 75ab eWZnvb,ƒ@$In$yxy|qc'ysDqfKܑǾ;EM;wնgq9u K!1A`>{@ VSri4\դ -:.6XɳW9QkIyNٜze10f#¹mJGa9/zT_oiB;90(o?ui 0D U?\:ko"%lҮ|ޝ@Eb_iFC~ot"2D-s|;Mc0@ `kHľ }{yQȎtwGAVe"k7e|`z+N!Lե&í\.m~H?`I0 Sْwՙjy6S웎4f`ɑ$ϸ2n&JS0 9fKhP0g-AJ%CaI (^ S xQ̑LcʓOvvƇD ޙUjol,]O*b|D)̅ ߵU! ?}@72Z;=uV=>_Nf] 1_LrppmOnR +̠h-UΕ?EH&dpZ >sZ(3h|5sU ̜&hi\zM";+^@ wwmz"98Ɨ]g*1M`wʁL5 _&&Gs "S ] RL+r۬Ĵ=<5_~`O.oJD^3Df_-q;Y&ų$r*h P0V8!H0[ާ¢S%CϒK~GY>V7Q).,sH#aUwl] HS.vHҟOR}ӿuQfXUMBc((+bZIU͓TpDhf/yXɟ81&=G0V@z:VƖ(!*%j@jM6m+hbLbPͬ =Fn*wH0{Ij <xaq~>/dn8ΩXsvRs6U1I_VRnUJ_eACc_D>X!C0C uf ˳p؜*g:B\VOjLّo=v\[(d*bt)I_xwy6&3G^`XVF2EHD\[6w3W) cðD57EjR&I–22-Btkɹ7bJnKsэV-Rqlœ g  {lVqmb}M:­a/9+d% jNQW0s4lZ"Z`-5\\tgz % pI~q Y1 Ĭb0-f}]:82Ln&mN]8N[[_^Dk8`g_) pxF=,]e,lœ)2^@uϝ"NZTd0:]xo՝l.tھxq jk1&jG)ܢ/$X۞[#ugdq2/.nj7.wA5VZѹY(C'!N]k$6{`2Ly̲ 9yGhl XXe^g2 Py*B$ގmWW˞°&΀]6>Qo]BPmj@Lokd^*nE^VZK/J#)"[W<19IkWI5GMpPK\S6nNb++fs AOQ 6R%>[7f`E% IίCjڇ6|^6ϛ^&2ΒbPnZ4RnI%MK*Ȣ3fZ>}`mJ3CYV`#&Qlk` g f?p-P_4rv)F:Ĕ Ec]$boh;;ќz#?OKl<&EAi~C܂a p-H.F -sU]@98yO۬N V G"OSi`̄0^M!i؜s :7ҍ\HI,)3.+4\cِ"vʁ|8J}IР?,0dg1e`d̗ hҖzCÄ ,);,m2ǐ"gyIAǒb>,8jUyA%aBbҲWC)n(R;[~3=XT )!CKd8l r#d1CumTקiz䐖bg_* ̐/F 4Ԛ`S?3 .srf̛N-dxPΐB]2^H-Ӥ)4!WTUl &[ _(.= o 7@]6= I =.I 8Q_do~W!nZ?bU|hdW\T_t+W(qB aN;%`Z);U m/r_X(X)qӄ4TsQEp3^f@i;n#荓F.5"Lrg1AdQv2] 3 } r>TZߣ#{ UU X4d ߁?71!D4(aB8u}YP !n;.0)b(@1]#/_&4B ̙ya"t 04Z`3c͌Wm. + eȵexQ%p[>Lμ~3pvs5[>scS-6k@#9QZ#'*cyZYxox1[>*^N ,7Cm K avDwRm &p8 t5-@xT{ Ϧ AcC0(,ssxWn]$ bqxthqT|h6⥙D͊֎y9C6GM"ImH X 5AطNX NWyyKZ?W 3a.iᤀK-$sMu0^\Q* v)"~7ԪS>]Ǒt Ah)em)S§8gNZfH}0n4wEr0oeya*k\\I-y KЀrPw87wB:c73YMQnqQ-H@T8`G6@f]n] WTBUOe,/'ܾ+ir)SL#xL;P8Jc[@J1f\I3GXfϴX~ktX]@ct˥/QFeMh`] z4:"8`@W|\mN|Y̥WGn|L;eVr[ S{)7lG@"Cf*|Y_2?9RqyٯeQݧwݱDdv-[C$1q)xvPNal"ڞ'5 S"4k_?GL#o/I+v͊tH_Q.G*qz0Ɓy܁k#0@Ff1A;'厌3LR4ɵ!{]bh"nCx <1Dȷ_i> j}F΃EyoteOϒ8;BHxC?[;(ED&LtP;x̙#q o7Y䱷y( ڵWKŤ NjQwXy񷃥͖%:6WRM*$^f'Qу<:ڱHgL"#w4P½Я.1T:45 dU:ۿX̓]%j2.0{YUr[xpo` +T*ZGG?y I5@CČfV|D2u6.\P1h'OuɔtqN[R]uIAP;*rzٽ7Ke*LJO Ա|nڑ/ȭmT<3>屴(2. ؋:b:z~&s7ЄeWN1}F1 b6Ta(R <`x,޻R۪M};9Huy)qo˫ygE-IAН.tX" c幷l?WEP-> sdL[@V=5OM3"[:"2o]$& M)M*|\Ȓެq{.ő5vR2!v}p-Yx uUj} 0acy)f[!,CbN+Mx_j#6]/D4joܰj\U%r3\ۈy, 'H={|v-Hn8bڦYμ ;:<=Q$eJS\,*_DJC3spܴ<օ!pUyR?ե8ùI'%hʶ 򞿃,?o !ǫy d3nIb߂щeOhW @d}/yg2JǞ1}JX(剂h9w⯃\8@mn3 $> -ԫDPR< b<41!˯@3Iƀv~>Y*8UQ (tw]Y]Wi;:z-#n0<_6uv_kW%{Iezbl9ʽCW({ .>flp{mD6-H2dFڊeBK:6`D (rկiy8F_+G䤸#̹ G)9A)ql" w'W y,#yߋQڙ?ŒXB{QW黓rh>_亗r1F7N1'\$2-9)Ao +dʫ[-D rXr#I` sOrh_[\/pƠŸ@@bo6T#h!  ԁ %Q2na $$ jz\Z^15!M6®/Wkg|2,XK A߸I I>.ޫd: pMc ʴ>o|kzIҌ1/}OF ];SMj2ikBƓSuzTYِr`f{lT]4#QH$̠*N썯҉*٥FJg/m(ά DǺrj6AƤ Sj"W3dՂ`A(ԩU<i"iA_?Gp_oB0?IyVg0QgaVNm )+CmkLE/qNEK ׺R b~g('MbkWdg82m%40HsP+H}t-ŠpVyM9"!3-KDU{Di/pPȽ Kf5RҶh k/}:pG ] dKڬ C`%Х͹qo[W.a םk0<@xۍ]EJ-xmdPLR]ܵ%\G \+$R`5]-YW;4FQvRx;!ݐMn<!odl-^ü`mH߄A^hr͜\3 Ku (YEg>DXE,B/oM I҂TP5~unmuL-dS-.tFEnoTGK ʠե cZ՟/YA:^F*䶭2IAyʠ:'g)d8J\KW~!a.-dHk%2뚝$= Gc 흀)bTE;+6 K8}I][Clŷ3 _x(Դ$C=:ȇa:Ѧ_@ |7yZרJ})~j41lJIL.פ߯%\[R}h|3+[.@Η--V,3[vpnlcLPZ2< 6Ow&TƊ3]E [%V8n:V7UUd@~WEʷE]Km㵥t#0-Kþ Zkͳ,jȱe֋-AbfD=DXnYyX5wѰ'®:'}S.ҠE{FГ{זX[F ž;N7#SL8[Ar0oG̺~g&Z%S)7eٽgo_9e-O G2J^NCڬ)8cUCαPfY0 ȹ _+usAtQ64SRT_i@o?vb8v N˰ `5xS"ӻZSZpЌ+}$OA\E. F<$ [JީCaQ!cHx :SFY‹ OZWpO 9/c}΋>Q[,{2[\ϟƴy4Sb~R 2_Y-E+qdM3X<7_g qē"e]5*(>+<463}=OES8t/ݦhlHHK ?R - 2kD0{4֔PNg+E#;upt 3aMU3IgNF(2FWY2 .L$ډb!"dbH> s[{5.e8Z "hE r;_XLթULjώps=yX Ӎ?X0SJkӀ^KY6&˲6 k7͈ zeW7*(Vz0H[2W}{LT󚕞`FBUU e%YBkGD)u"3A7Bv 3PF9)gbzy!jvQEމJT*o D~,7 Q5K, k nbA~~ _X"WnVCQEc5T~8U9)Q0Π$d&l[I;'xa(Klz,b$LSQ d:ʶc?*5NJBMS'bwrDV:BN2Z &~-NZ TB7GDcao2F˙:Fz)DZ& OćbEV1.=bp"m50X`%l g?gu|cPYsݧGFoh) $a1:s#As$SMUƢwqбbL~ LovGɊAof] \ƃF#9"%OaAӠ IXp-HFݾI7=>aSp ;"|@EVpb&xIn/Ȣ/&czaPv\iQ22y>B~RSW:Dv_SƸ/;҈f*hrjøE5/T ƈ +LZD #GOAXч3@Z}l9I;yFJk`x\e- =RjvUP?NjwB8Y@8i#]X/ڠ>RQt UT C3AuUh"K M={8Q bL+(|@bC#&iLaߦžy۰lF^8wJRhy?TEBtDxl>/CSAל3؃f?|qiu[c4؃0NٵJ:rͣZhH6>VjehO#Tt>"YYTHz{  !-[;uX3e4Elԗ -PtV8#oR/ D?kaI&N!".px,t~͞AL65fc=tbڥ|yN$xc]‹% Q‚hS u'ҕG9K>oQ4^ռqҨNHIC LUa'>X֊o0爧U$l/8JxDNPW56ۓ*95DO)?:ż&K13zygܜ#'Sm::斸mqDsWu3ڂJ#>ų]@*\3|cf3\lW^ T=5e$>LA:etr5I# -~4S3{Re͡6Mt\X> WBg Q(yrU{ɡȅ.!]\34^% sa>k)'n62;@x[IqQ, ^bqh}?'>rVfQrL{vzzj-*[vo]rix8!+QT~^ˏ6ZrȞB'O[gL_u1e ,ڗ5"K#GO\$Ad6lt`MHcIx!38cVمVYDAVZ%SBkvx~+'Kq۩7!ְd#biaxd>Qoר ŝ8nC|Sl} [p>V$P-&n,k"J88ESc*ի/ :S[/w@ɲ47'd g6r`n>{΍SSMv&7~N_L{~ A9쮔?"),2)x``A[Yd]e4s]ՠ{vL>xLQ{_ 0G*nV >}+{oԝ+,SJh\o?KAB~`w ib냣A KwQD hYt+|d~8Y&X6!nlNHR^tuO\h|,!\$n*BA8{mޝF(˅2SJ[Kf߭:DBN݁*yfIe3" z +rwˆriA:YݥUhT.l( +MTSL_3?*0X^4 :}n OvmZWL?"҇-SV* zƅd&>c<*Mr>OD9itt@h$*5$)Ewl^`DtTvYrGp)kX_KBmY j8pW_4PWlm);~!Gc/cy((}w6= UN|82^ [ץut **ȒߓP3x=~v?-1f!W fB(WNhv|Dzgǚ ;f|YK69odG7~(tllpHJ#`ֵ7 _oMgd;.yBWo7F~G0ϭWȭ$Z*)Çs*˷uW+1lFͩԈՋo{\?F ` Ţ.<42ivmCfPK$ͧXe4{&:o9JM=Sh{#%UZ$Es>";7&-(䌚ʀ/^ suW-u˓qCLGU1)7U9S?Ar |fzB6+_(YiP8syw=ʢ\L$2֛ Zz%*#CP}tS{44G/~4`oBV~ěWk?0*iY +Cz,ߍ*i2g!qgpyRhY+]nV4\n>8?4hWtFvy N !#Ѩq_:'%rEj$U@{%ଶXSW (!lNؼ! y; `K1GC?iI pj゘sg2=^Jk0lK$ JA(cYO9lS|n3qk[`g0R%Tx5f rWx#q{< 8Z<o0v9S7Z;*!  h@vK4!~\ބ%L8+'3;y< rۗ4e]ek)R|~?b; f( 30qUe9Rg0wW/m0l-yy /QF MwV MD_o}a:}0Jt{r.41?tΐ AN[ o\smgnr%x,&4Ӭ5i: =6b5yk=YZsOKw6y 53t.h\LN LaVm`+291lуts);i#z2]MwC_6ifurh|T[m8sɃSF9W}|}ذ"msK6eXcP!ݸI_ox8/eYWRa0_ChB@H>FpD8.~t~' ;∻n|~&9,[ס@z 2പзY=J*?dvF~بU4֢j0Q >ui@*Ng )- j"NWxn@9ޅLG9K _eeP&%}U'LL }H0=@QJH`KNzN8}ܭ{O^dŮz#1  h/l/sP_(Vd+Ӏ&(6tNaMChYP8xF}& ](8( :G5[]S tfyi8O`" OY -=B cX)?)@N]JV;> @i ǯ`U%a[$H:sp̹]O(1l5UUbSE|XI2uV+Occ>:Nc&^ 6R'fΚXjXXb8HaIZv~޿qz6襁 /iPsX)\r. 2d_jw8i*ui}y2 ߍ$;Y UF>Ʃi!u,EK0҅ 2g3>\+  0%o Ζ~!^r2IðW|Z'0"dPner=i{B"N P/XVbER7emD,6 s}9Y vĖDGpVڂ&M t8)T&̣v_*6-H4sTF:z 1m*(cWiSj4h)mMў2Q՟B6i~zI>l; :I_[n@wx QKxF/w[ Aj@^ֳiaJC,,3Vla2~G*#ׂ߳66o*YNIVN{9`bQJ7Y-r!_ߐgV/V#iT^KD|IVFeE&WC%Z0BNi%"ἷ.,/SkP(›#n5pM BӁ wzZai+1qw- bI w D]MLx<З Eڥ,րզWY PubS8C[}1Awuȷ (aH+,J;Fh?1tcͿ9鍸.ZB%>$ծ5W|jrJV)g<\3V:7+㒩6V}nJiD6/SrT RV*(5Қn-3i8*b/~`ᧄa,U2B@n0Z`mj>O;MT2(1XS AK(W>Qa b~dO\$,;& A:L- }:6q%_[>4e:qQ85&:E\[.U5fUqbn&H* $s>ş.qe{#iOͿ`C|F92U)\t0ϺS @hZx/'3hLEĜXUeCbI(1AGmd"GlIOznel+.=jsU›/h9JƤeJ.g"tl2X̨{` nXQQbR8,阄HJ ʶ]odAYbMAJ LQK!U!!y+-[ ;Al1,#z̒!\BXjiOhC Ayko4 ^ze tCŐ%q?{18h&2w)n%Xx\?;ˈ zd̠ KEbO\xEJ# )5 ՗ț,ɓ2L`߃"Pu 8;LxT>(8 =R#JP"IG(T b/}kƛAZ† a܀ 췬uB95<5%j!SnOJgؓ  G-|&kƃzCwݰ>CqwggdCElA&e&X,WiY{_菕c=A ^Vb"rr yo<5NhԼ[q򞓩D}&gzh itPÕxҏ+ 2\eFp&%\$:c0P%5;L 3mǡ00C]Yv/hUf2NwՁ.TBZ͈+9gKWF Ih7 xh1_0Yd?i4].Q3z5}GMgyZS̃,:#x<"5@E5VL|vn'7 J/NUM/8TFVo,U5wJ㈩gRIvsjCȦy.t} +7ZG2Fhe31"Ôy+dq-8On5 a`ᴫ>lr4TTm鄘\^dzY}0(to dTiN~d f}T{kwiTDAhoںk\;@Or8{3W Bny>b(-[QAʜA>lh{3nBsg!-F^ 똝Ova"V4Z^Nz1bSMR9834p+΋Nc5KuERjC '!et!_DgU:5ʣpip=ք)lDm%Fi_hHX[z[܏V=UY9uR,F|pbm{#Aa>ۘoh7v"'t{B3@I 9%_Q:yt#J[q.I5[£-]{2ߵ~(+ {1~.m@rdhG:ti4UVmZ!2$܂ ]XD?"+1}*>/JH+ˈܩѿ9;3̦5ZF&R|р)G-*n;o?qFIqى%D?#> "E@JL+.U10=w`0ȧ&dtĕ|#rqxZi5yJҷ֟Pep)@U=(}5Ϊ0S.!}b,[ƨfm4 d9i3iVԣUFVXKJ$5QLAVQ]hb? ӮTXuƇ'~0h4^M)!oCntzaIaߗ T{f*8sG86O}Jb1B5kV'm"%[3K!u (}~YYR^yyM7fmaqKgs .@N ݼF6];fQW88^y=쟸u"kO]ݓV{felc 1x =Ylae f_J)j$ \C >REE?a'40B05 #7?jLb76=seRd"%ғOz6"yCߢy9cTr7|r*E5 LONCmTJB& ?To#|pyt-NV @>%i5|T; b*QƂ8 iH9^8bj:Ƹ¢P˂w]ߝ7n`+w9z|{δKZm c$Ό>ljGa2foXjKJ4omuL1xL_қ1˾5c썪=\oB;>/} X= '>*ײD)t#gô^F3;7dҶoW /OtrqЇ/XV`[! }84VEY5 ܥGxkŻhZK5-<6\l&cGHXgT|©+R^,y? Cu泑F+оeh x]|7#P:r iݦmi7mMtH=F#`koL6$zF(*"v HZmn+@gs?Pȵ ?/0Tӧ}l<=A;}b'QqE"x4Žte4 `yFٞD(9s\\L: M`^hM=d Kkfk]"a}l20!7˗ScQa2SjPWTvi8e?ZZCb&RD߿R눑QZgA<>KA+,Cym}⵼HuBvѩ|@`Sț9xFe]ptX|ݐ*MQus2 9<|1ɀIK$$vJ0rT,u4 c郦)Þt!9{-_rD\Ku0,gġ?*krNBS d8P># Vu%`I N38E4.gKQ;@&H8OE&fySWd@teI\kЇ")u}:LPS$PZI eYW*7X1 t}/$QϩZc@Z v 9B0eYiaz?M2{|[܀?۵-&1 ˆ$WGg__n1w =ž:L@,]h$!D9 d],WޱSoM9e p+yJ4ZO( osֻ)2$^v 7mk3T`ϡJض1?Ďe̷\*Y/(8,/K$hV" dEɓK8`_h-Bd/oMNK0Uh4r@M9YXw%E;l,[E1٦o| Z7솷FjV;R}jf=6u /:Pzr7k@3=:3;G#үAg3ay+W1M'YFӇ`er8 >vgB TD}A h 驩FSy5xJKƺ<{\Ng%4;)_.!kR$]eN#H*P*y26E XхzjZ +|#>0Lx&ws4jm5:ƒ 34~F_>N;i4]:&<,_dԻ5b.<97oY\Q5x͸h\9 þW!ff0G_ :0oqqǷ! BvSR #ew^w0jRmC~t9Crca:ߐ3x We F9B*#6h*4eIE!Ǽ|Z~r~Xmu nj߬.˵ҏXB^P\3JxB>,Q9 syպ֑Z?xcVڂ1#m t v!V$?9U<#*| ~} <eԁRi|J&)< hy('1-:\HUߊC}Hæ42==ߝB3MRc--SqY%9 f?e&>DDź>~Sג-hںH*}t,^p=QYi76n;2 9ˊaHQO yoUۄc Khk6SjdC_a~Z>„{L=V hkZw"\ͦ(b82s',p˵>Y9fU4; N1pr)rx_^+(t*lq|PQ`*[Q6VJ2Bu}¹I2,,[,-6zlo rm{vvƐ *z#M4 Up6^buJvz6n?K.N4OA;}f5너?$Bv$9,pg״-+}?"~(xUpL2lu澷$)Ǎư$p#80!rc/} z]+#cy cx#ҳۊ,'᱗:Ĩ QѽC!J" g&,8}s3d.nD4|󙌇lݼNiJUD}MB\Ye@ $2P'TE3=(l.H+5Ss8XW!Nܵ\$EpHnli k%;_u4brϣ$4ǀx|.⣲ ~`٘ړ ^,&քR%I6Z?vUa2 M?V?4d?kImDO5,-Yu,0bm=۴`#}:"!6?֩V:Pq|$oX6#߇}DBr|dq] $Uv QοCSRW(Uj #dbۣ|c5r-! kV##NY_O)7V6:À+avr md';aCEe2P`*ґі 枃id 9"ȜS__Ps  Νo͋+g*Y A Si,nЪ cķNk`݁_݄z-5Qf۸U^2=ꕊi Df3b4.08 o& S !^rr1|T%~7~)sQ`32/f[AA¹Vbqv0U`S5іvMO™I*{#񮛐\t)#W0oG{en50Fk~3(>&W>*tIpaP*x-V;ts& Tij=5\ hi`bї^'atGS+e)JDdbw'e bn- Ѓ@zUKp3ET*@ܐL ^˓(zz2p]ƈ>%)8 Bb/Ǹܜ~Y+MYL =p1 ޱͩ3k5nrlC]z&|)QIOd O\}gBlᗏn2ibEV#,U"CR7SJrlϗHICֆA|.B>ܩF)w{v=}  qHi;.CᤛV-%bzzBs !ljOm{s(Z\rŒ记ĝ4Vۦ:KZ65<ı  rHD-ں0 O2{I\" C{+#z[D dњBtz 8Wa6]yLټFh4ՐRr+Ɏi7x081[.RcNY~m+I5n>JF c^r1;XUFSMyL]d$S3ZP@^ ")%j~DR'Ly#ᩰ{o(C-&lQ;[yN>(6+pPً7 obeۏ͙IwZ^Txoq^?z;ܹ8_!֍بMMŽ4%c>xGځ<,,1ƛ rFJ_bTЋDO7Lb'2C,2gC/.[E6E1ob/ءFՈ!(." RQ]ّuB krgjGЂɍZ !D"\})kY_.`afGד1z_fҊܮxSly_crA݀r$~_e\MEZCOqi)x]qpI iY_E445BOYE$7b#'0RtYͿ ̲^mᠷ%7UNA##UxM-t$w>]N'B53e63 &|}x <= h`?+!rڕڲX}Od!55>엠}"ϭ`aG `Pσ (aNz߿I`( /2yG)֌TS87ҎDG~>]DO**^%/[bS% C.SquǩbWp 禔Uӧb"R:lul؀"P݆E\:/ʺ#_p!<ؗӮfϸ9 &X!9 *l;2zhh5JJ_dIB7Y8kG%S^kzZiXf C>]^VeKA)nqU L4*&15\rp̌hvy%2T8XZKn1OZ<q| 0<\զ:S[Dj?5m\S-(_ar^H@Rt  o%-H 96H²{7#Uf[`_R.B=~;YψO5#[py{kj~ Y&ˊ$|sAʆ\a#OOiƭ˹-]Tcj _B!RTG#Db!yq,6gHӄ"gCy'2y+^9*X<ژAt|):Āԏ6wQ;'E`1sWU>SB0AjHYF< %:lGF*i/vUHdsOERVX2s5'~_W+ )#ػv^iﭿdH`'Y7~uȦwT鳉u%<3VQ ')xW2#g1Dd =Tzi,x kEyCQ|؅Ԙ?( &'wp"G`h;p])BS.D C],vZ17@Z)5Imڴbx$CО/]#bjUQF2$}+P{sг`IJܕ@/JvAկٶ]+NfBi$ɅpW;BLűԤ қzMOd.Dcv 9)"w5Tۍ3ZOh8\}5)̓wݕ/Hd BF2V;5bWLOeAcQ,bWGf@a@?_-rlA2C:B_%*6,ř/ERNZV%-KL:o{$b{޽K|4TX.(G?x|-z"0f*iuCL 8>'M1iEMKwsďJh*>4Uޑh۲I9ʮ} }qK|rKO_p-<L2{T3U-tJo]8d} ͥ/bp̕H8n?Ȍ(sPPpxrO~8*W5z6c'!0Wrfd)ɤM./X)CX?2:hI^ffnΪ1R&J QM^>tg3US6n`W$ VF{$M*0* PNS}5B{]mZv &x`i,ޏP@,Z'Cx?H 61MqLcs|zcOkN.]@Q.)Q" glY'Ň~qp:DIUwdjgeR0Ŵ kԿ) e(lp>ߖIL,;^`6:\,Ʋ\ @(25ƟAW@/7p4rb2O;!^mn x?(sڵ>kV)<631Jl-\1#dvңQր>>yDu3L& 7b݂_]톁zÊGЫpNafe3+Pl3Ǝd%KKj¼=)x!`$Bhq W;P O#w-NxՓ,̺Hqgb}Q⵼~ }/\mAa&ɹ?-=yNV:.KPCU>eƏԵGܕߴ,( gWŴݡ5Eo!@VXtK$W#>ZӇ'PiW.!Ukv"iK( Dj[O7qZs{NWH׫j_&@n9y7LJrݾ&<\?MOԼT&1OlǼvə‚ ɮ*M(e _롤FN"_'u8]6ѴiLJөqzP9ѤP0x[X5݃znH7U6s_+ưT*(*34#[y.,pDG)Ã`ޥV;t+~mC%nvo) e^@vڌc=p(Bb5(٤Y ѱ6n?rXCZĺ3Eϊ+Qb͹IdtUA[(]ÌU ETчs/d:h^DQb!vҖqU\yYOEgۖH~rSPǡ1AQ;kˎÓz-[kZqKGVh&[ypFH $G7j圹#0OUȊb#|72B"v40LSd R*. $O G21pg1L7 $ xF䬮.;~~Dܞ{ht**>ݥ,+g߀SV$$-\9#uMTN!@ EUY&s .0%@2=3kXTAoVpXy'<)  LyOq,~KL Wo={ԋ}J&HpmH ՞yvQoeɀ-0 >69Zeu&i#`wlm@B'K(4K1g DeOj_Oew2sy>'=&ZAL/K#A*2D2Hֵ\aC~w)hXTngLkMrEIw=44Q)QʇIHz78/H#m;YZAgz.^v=TX,TMT!w& 3&N^^Z?㏺'S,QʈT`ѵģm,LnzYseeChڅ\}0f٨mw/%%>yL{I; \bg +FIs?Ug~m:hKg9o+q36\'Eˏ-Q(Mq6]^Uͧ{%ws=%Y\z_^e0P@rԩS1tK,HL-v/!}=r~ 7&љj 菭 [E$Hpgɤ6aud`S ۖ6-y{ޚA*A*XGs'+=S҄Wk<-P̖OK{pcUzOisJ&D tl뚔UkZXӜ Au@V,P}xDp>w1#&!}vg$ iR8q_>V$iY{'] !H2ȲXA M5P4_=%bMVr]`$3|Ţ\Skg.1? u -|1/Ƣ\=h} ^m̭SZ(Q]h aݥGW$x! FQ1qM= g7*DʺH pyV9_/OCr/ a)"`~Q<߾U[|yXt+ t[uI!BaKqSP*; +XO\SU4oq?0Q…c\m{tPKbx:H(a5 !qA9!tfyD3Ȣ$'_Ei+cPIx D/Z䃑^&2 fl"^h7 k2H{QW5}(ښZ վYXw D-}jTkߤ\ 0+}>l( ߨЛ_!FS4 BX7N$qdɔBսlN4$þPkqD[&ڀYt_fl.ߍL{ H1My@Do[l,LV=maD#c}A_#PT$ dDN^SIe1'Ck g.0 Сvwbf>f.xVH4L zK̨ΔGtHB wbLL7M3 ܏{]V8fi~"@ؐOWo {_V?*> 64!|].9Q!><о,Wi&cіzW*39>V6.*  BWОv$SX,bIbR֘M2O-/U6z`lJsdʟo/\B]??͓df\|)g :[+]rͰnCdx^Yw9ԶU\USپ[U?fyrB_ Yձs|KǬV %A'ő~8dŝAtVo{](Th}5>^f2>g5ZfoCU2"n dﴬuiKw7po Z& =b9}U\]W_e Н%ҽ 11^CN9<̡^'h]J@-B[YOZ$`Y]21-_A )UN1~¤'W$ VPҬgṬ?᭞~&,}:NHzO@n2s )`q>HpϧuL(Q UX_zh2[cl@ŏG¾(Z.AK6} &{K:2&[bp7,`F]&0ޖٿӒ?4Yplm B/9&sta2FL2'FXzT !bʋmS\PR ~$U"+QƩοiQI FDΡ<VޓKp:R;3Đ*)%AY~&Hc9+"m Rʑ86/GCܶgiM_D\U1QSkdGۯJ>TO}`VDFe"2PdFwwn:FzYk9 bGy 0V kXuǤk|j¥:l.6lUv*x8)$1 it$d#ᎡCeazjBB\ C#}A$Ns@zkG&r}Sì;i?[C7Z%<2&|4r7,#uBTiFE&f9퀍 v1fd;f+̔6\UKܠ!N΢;v>Gӏ-~3z?Kɞ@kۨTelHS)?Q_֜@?#X*PK"VlհAߗ~X1x~j߲aa~5FxI=y8xJ wh.We8i -~\ڎhXZ$/!7cZƮ4)DH!4ܘGؐQQh8DaTˢ೶z7O$pfk(`,g]OW^E4pejaKE h,K}Z:̓ɘ f&_INz&E#.Wv7`Rnz4rn1\`XMFe,jE*+PeaExE$&P!Ngd.Y I N?`@ߴLy|-[B:/re9: y{3e|ו}dd=r#nnOg眖n>XI"]!9^@Xfk i`k m/˄'d8?[*VL.n%e{A{O. ALF'dƒ[~vr"i|g/3fJ~z )(&NQxsӽ^(W (Z l[!Dvk--ĪȀv-I1` :~=/ު%f zۂlٮibSiX)(S&̝A>\/,l |؁<] #C".OO^C*`w!%#^LFWǗ1qp SŹi?Wu4tQggF*Q?NٺMIHdMkR]m$Ae u! ぺ'.F3iRw5[n310ΠMJ5lC*)>كxhiP0=\Kd8C<O+hG?rsq+b>\|pcI?%M iON:&D:>`Nӊs%h'gwJ O :tv u[b/c~nxQi+T9=sK>B{w WE2\إ]f/f+ Bq(p$ X^UҫAh ˾ߥbr椆8rBAl5U]8^,LHE2*L3Ơ{).s͕7v_ǧ9.y3:ŏ-19//]"l$ji6^ мTNOS~!P'q -*tL?zZK$_[L{쏽 ͢OE=Yqͧ2*oɾ_w{̙n\ȴ% ¦ yn Lؗbʏ=-d$bNAH:ģQT~{LGC#ιlخ9ZгGfv;5ׯm~"4ԽwGn8Ur6DѹXU\0-0g+A gDv*E+2}cKa|W[% W cQl9z}w5U@?\Uĥ[1u!trubP=OC SS٦׵I?SVZ$&fwFqhW* '3N;A_I&g̏T C޹k +$ĩdw>AVCqq}X}r;2D`ᆚp~oNU <~Dž.F⑏3áPt5n1MUE0q5- aE<,Km[XBp]!z%Z %JP#(4 7}"m8 {2%k':$:< Yyҙ"wg{!~Y@;ysO_B2SN?f=Tcjp>DZ+A/F}_+P,ƳTD3+CÓwz$4.Id=h(ѷ2%s<yI"ģ/IS'T̼MpD8&Q^|X'| cz O}=@Mw&LB)87 YZ