git: ea5a07ded849 - main - deskutils/calibre: Update to 8.0.1, add UDisks2 device mounting
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 21 Mar 2025 18:28:29 UTC
The branch main has been updated by madpilot:
URL: https://cgit.FreeBSD.org/ports/commit/?id=ea5a07ded849c996ed435fb8932bdda1690acd75
commit ea5a07ded849c996ed435fb8932bdda1690acd75
Author: Guido Falsi <madpilot@FreeBSD.org>
AuthorDate: 2025-03-21 18:27:51 +0000
Commit: Guido Falsi <madpilot@FreeBSD.org>
CommitDate: 2025-03-21 18:27:51 +0000
deskutils/calibre: Update to 8.0.1, add UDisks2 device mounting
I submitted the DBus/UDisks2 device mounting code upstream here:
https://github.com/kovidgoyal/calibre/pull/2694
PR: 258224
---
deskutils/calibre/Makefile | 8 +-
deskutils/calibre/distinfo | 14 +-
.../calibre/files/patch-UDisks2-Device-Mounting | 288 +++++++++++++++++++++
deskutils/calibre/files/user-agent-data.json | 154 +++++------
deskutils/calibre/pkg-plist | 10 +-
5 files changed, 385 insertions(+), 89 deletions(-)
diff --git a/deskutils/calibre/Makefile b/deskutils/calibre/Makefile
index 1cc46f203efe..50790983f9bc 100644
--- a/deskutils/calibre/Makefile
+++ b/deskutils/calibre/Makefile
@@ -1,6 +1,5 @@
PORTNAME= calibre
-PORTVERSION= 7.26.0
-PORTREVISION= 1
+PORTVERSION= 8.0.1
CATEGORIES= deskutils python
MASTER_SITES= https://download.calibre-ebook.com/${PORTVERSION}/:DEFAULT \
https://raw.githubusercontent.com/rhasspy/piper/${PIPER_VOICES_HASH}/:piper
@@ -69,8 +68,8 @@ USES= desktop-file-utils gettext-runtime:build gl localbase:ldflags \
pkgconfig pyqt:6 python:3.11+ qt:6 shared-mime-info shebangfix sqlite ssl \
tar:xz xorg
USE_GITHUB= nodefault
-GH_TUPLE= kovidgoyal:calibre-translations:d1f8b5c:translations \
- LibreOffice:dictionaries:762abe7:hypenation
+GH_TUPLE= kovidgoyal:calibre-translations:288b823:translations \
+ LibreOffice:dictionaries:1b8d1d5:hypenation
PIPER_VOICES_HASH= c0670df63daf07070c9be36b5c4bed270ad72383
USE_GL= opengl
USE_PYQT= pyqt6 pysip webengine qtbuilder:build sip:build
@@ -105,6 +104,7 @@ post-extract:
@${CP} ${FILESDIR}/user-agent-data.json ${WRKSRC}/resources
post-patch:
+ @${RM} ${WRKSRC}/src/calibre/devices/usbms/hal.py
@${REINPLACE_CMD} -e "s|#!/usr/bin/env python{py_major_version}|#!${PYTHON_CMD}|" \
-e "s|#!/usr/bin/env python|#!${PYTHON_CMD}|" \
${WRKSRC}/setup/install.py \
diff --git a/deskutils/calibre/distinfo b/deskutils/calibre/distinfo
index 3aad78af58c8..d7c25c38d081 100644
--- a/deskutils/calibre/distinfo
+++ b/deskutils/calibre/distinfo
@@ -1,9 +1,9 @@
-TIMESTAMP = 1739518398
-SHA256 (calibre/calibre-7.26.0.tar.xz) = 0a9b36c77655ebc8da67e7082604047a1fbe186f3563dc97ee60bb58abc57027
-SIZE (calibre/calibre-7.26.0.tar.xz) = 43633708
+TIMESTAMP = 1742549723
+SHA256 (calibre/calibre-8.0.1.tar.xz) = a2937a9eb0fb394a92db570496b2ea5b38066a01735385e46993bbd121068d2a
+SIZE (calibre/calibre-8.0.1.tar.xz) = 43932180
SHA256 (calibre/VOICES.md) = a70bfdebf2f35d077b26a00378a8903509d26db04e97a9777caead04415a320d
SIZE (calibre/VOICES.md) = 38861
-SHA256 (calibre/kovidgoyal-calibre-translations-d1f8b5c_GH0.tar.gz) = 47cbba8816f31d8d7b9dba5ab6e7e154b66706f455d62fc037116ebe31a8c46b
-SIZE (calibre/kovidgoyal-calibre-translations-d1f8b5c_GH0.tar.gz) = 74295920
-SHA256 (calibre/LibreOffice-dictionaries-762abe7_GH0.tar.gz) = d6585501ebfec22b3feb1faa9748b147db443d0a9720ef55f11444e3714a6457
-SIZE (calibre/LibreOffice-dictionaries-762abe7_GH0.tar.gz) = 117870256
+SHA256 (calibre/kovidgoyal-calibre-translations-288b823_GH0.tar.gz) = e09f3ff8749c932de6bb0263413d98599685f12622a7057ee0c07c6e20affad0
+SIZE (calibre/kovidgoyal-calibre-translations-288b823_GH0.tar.gz) = 74670184
+SHA256 (calibre/LibreOffice-dictionaries-1b8d1d5_GH0.tar.gz) = 5ea31eb76245ea30ddcd8c9f3ec149abe7b18cb0de9d878bebb66efd3a850934
+SIZE (calibre/LibreOffice-dictionaries-1b8d1d5_GH0.tar.gz) = 117894352
diff --git a/deskutils/calibre/files/patch-UDisks2-Device-Mounting b/deskutils/calibre/files/patch-UDisks2-Device-Mounting
new file mode 100644
index 000000000000..ae54d9a80b3e
--- /dev/null
+++ b/deskutils/calibre/files/patch-UDisks2-Device-Mounting
@@ -0,0 +1,288 @@
+From 6f3987721824d02a425578561ee5da49a4458607 Mon Sep 17 00:00:00 2001
+From: Guido Falsi <mad@madpilot.net>
+Date: Thu, 13 Feb 2025 17:46:43 +0100
+Subject: [PATCH] Implement FreeBSD support using UDisk2
+
+---
+ src/calibre/devices/udisks.py | 70 ++++++++++++--
+ src/calibre/devices/usbms/device.py | 93 +++++++++++++++----
+ src/calibre/devices/usbms/hal.py | 137 ----------------------------
+ 3 files changed, 140 insertions(+), 160 deletions(-)
+ delete mode 100644 src/calibre/devices/usbms/hal.py
+
+diff --git a/src/calibre/devices/udisks.py b/src/calibre/devices/udisks.py
+index c8e5ee00b1..aadd031f54 100644
+--- src/calibre/devices/udisks.py
++++ src/calibre/devices/udisks.py
+@@ -5,9 +5,12 @@
+ __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
+ __docformat__ = 'restructuredtext en'
+
++import json
+ import os
+ import re
++import subprocess
+ from contextlib import suppress
++from calibre.constants import isfreebsd
+
+
+ def node_mountpoint(node):
+@@ -19,11 +22,18 @@ def de_mangle(raw):
+ return raw.replace(b'\\040', b' ').replace(b'\\011', b'\t').replace(b'\\012',
+ b'\n').replace(b'\\0134', b'\\').decode('utf-8')
+
+- with open('/proc/mounts', 'rb') as src:
+- for line in src.readlines():
+- line = line.split()
+- if line[0] == node:
+- return de_mangle(line[1])
++ if isfreebsd:
++ cmd = subprocess.run(['mount', '-p', '--libxo', 'json'], capture_output=True, encoding='UTF-8')
++ stdout = json.loads(cmd.stdout)
++ for row in stdout['mount']['fstab']:
++ if (row['device'].encode('utf-8') == node):
++ return de_mangle(row['mntpoint'].encode('utf-8'))
++ else:
++ with open('/proc/mounts', 'rb') as src:
++ for line in src.readlines():
++ line = line.split()
++ if line[0] == node:
++ return de_mangle(line[1])
+ return None
+
+
+@@ -37,6 +47,7 @@ class UDisks:
+ BLOCK = f'{BUS_NAME}.Block'
+ FILESYSTEM = f'{BUS_NAME}.Filesystem'
+ DRIVE = f'{BUS_NAME}.Drive'
++ OBJECTMANAGER = 'org.freedesktop.DBus.ObjectManager'
+ PATH = '/org/freedesktop/UDisks2'
+
+ def __enter__(self):
+@@ -78,6 +89,37 @@ def iter_block_devices(self):
+ with suppress(Exception):
+ yield devname, self.get_device_node_path(devname)
+
++ def find_device_vols_by_serial(self, serial):
++ from jeepney import DBusAddress, new_method_call
++
++ def decodePath(encoded):
++ ret = ''
++ for c in encoded:
++ if (c != 0):
++ ret += str(c)
++ return ret
++
++ drives = []
++ blocks = []
++ vols = []
++ a = DBusAddress(self.PATH, bus_name=self.BUS_NAME, interface=self.OBJECTMANAGER)
++ msg = new_method_call(a, 'GetManagedObjects')
++ r = self.send(msg)
++ for k,v in r.body[0].items():
++ if os.path.join(self.PATH, '/block_devices') in k:
++ blocks.append({'k': k, 'v': v.get(f'{self.BUS_NAME}.Block', {})})
++ if os.path.join(self.PATH, '/drives') in k:
++ drive = v.get(f'{self.BUS_NAME}.Drive', {})
++ if drive.get('ConnectionBus')[1] == 'usb' and drive.get('Removable')[1] and drive.get('Serial')[1] == serial:
++ drives.append(k)
++ for block in blocks:
++ if block['v']['Drive'][1] in drives:
++ vols.append({
++ 'Block': block['k'],
++ 'Device': block['v']['Device'][1].decode('ascii').strip('\x00'),
++ })
++ return vols
++
+ def device(self, device_node_path):
+ device_node_path = os.path.realpath(device_node_path)
+ devname = device_node_path.split('/')[-1]
+@@ -101,7 +143,8 @@ def filesystem_operation_message(self, device_node_path, function_name, **kw):
+ def mount(self, device_node_path):
+ msg = self.filesystem_operation_message(device_node_path, 'Mount', options=('s', ','.join(basic_mount_options())))
+ try:
+- self.send(msg)
++ r = self.send(msg)
++ return r.body[0]
+ except Exception:
+ # May be already mounted, check
+ mp = node_mountpoint(str(device_node_path))
+@@ -130,6 +173,14 @@ def eject(self, device_node_path):
+ },))
+ self.send(msg)
+
++ def rescan(self, device_node_path):
++ from jeepney import new_method_call
++ devname = self.device(device_node_path)
++ a = self.address(f'block_devices/{devname}', self.BLOCK)
++ msg = new_method_call(a, 'Rescan', 'a{sv}', ({
++ 'auth.no_user_interaction': ('b', True),
++ },))
++ self.send(msg)
+
+ def get_udisks():
+ return UDisks()
+@@ -149,6 +200,13 @@ def umount(node_path):
+ with get_udisks() as u:
+ u.unmount(node_path)
+
++def rescan(node_path):
++ with get_udisks() as u:
++ u.rescan(node_path)
++
++def find_device_vols_by_serial(serial):
++ with get_udisks() as u:
++ return u.find_device_vols_by_serial(serial)
+
+ def test_udisks():
+ import sys
+diff --git a/src/calibre/devices/usbms/device.py b/src/calibre/devices/usbms/device.py
+index d4b79e9f26..ee61182b5c 100644
+--- src/calibre/devices/usbms/device.py
++++ src/calibre/devices/usbms/device.py
+@@ -20,7 +20,7 @@
+ from itertools import repeat
+
+ from calibre import prints
+-from calibre.constants import is_debugging, isfreebsd, islinux, ismacos, iswindows
++from calibre.constants import DEBUG, is_debugging, isfreebsd, islinux, ismacos, iswindows
+ from calibre.devices.errors import DeviceError
+ from calibre.devices.interface import FAKE_DEVICE_SERIAL, DevicePlugin, ModelMetadata
+ from calibre.devices.usbms.deviceconfig import DeviceConfig
+@@ -696,12 +696,14 @@ def is_readonly(mp):
+ # open for FreeBSD
+ # find the device node or nodes that match the S/N we already have from the scanner
+ # and attempt to mount each one
+-# 1. get list of devices in /dev with matching s/n etc.
++# 1. get list of devices via DBUS UDisk2 with matching s/n etc.
+ # 2. get list of volumes associated with each
+-# 3. attempt to mount each one using Hal
++# 3. attempt to mount each one using UDisks2
+ # 4. when finished, we have a list of mount points and associated dbus nodes
+ #
+ def open_freebsd(self):
++ from calibre.devices.udisks import find_device_vols_by_serial
++
+ # There should be some way to access the -v arg...
+ verbose = False
+
+@@ -711,18 +713,80 @@ def open_freebsd(self):
+
+ if not d.serial:
+ raise DeviceError("Device has no S/N. Can't continue")
+- from .hal import get_hal
+- hal = get_hal()
+- vols = hal.get_volumes(d)
++
++ vols = find_device_vols_by_serial(d.serial)
++
+ if verbose:
+ print('FBSD:\t', vols)
+
+- ok, mv = hal.mount_volumes(vols)
++ ok, mv = self.freebsd_mount_volumes(vols)
+ if not ok:
+ raise DeviceError(_('Unable to mount the device'))
+ for k, v in mv.items():
+ setattr(self, k, v)
+
++ def freebsd_mount_volumes(self, vols):
++ def fmount(node):
++ mp = self.node_mountpoint(node)
++ if mp is not None:
++ # Already mounted
++ return mp
++
++ from calibre.devices.udisks import mount, rescan
++ for i in range(6):
++ try:
++ mp = mount(node)
++ break
++ except Exception as e:
++ if i < 5:
++ rescan(node)
++ time.sleep(1)
++ else:
++ print('Udisks mount call failed:')
++ import traceback
++ traceback.print_exc()
++
++ return mp
++
++ mp = None
++ mtd = 0
++ ans = {
++ '_main_prefix': None, '_main_vol': None,
++ '_card_a_prefix': None, '_card_a_vol': None,
++ '_card_b_prefix': None, '_card_b_vol': None,
++ }
++ for vol in vols:
++ try:
++ mp = fmount(vol['Device'])
++ except Exception as e:
++ print('Failed to mount: ' + vol['Device'])
++ import traceback
++ traceback.print_exc()
++
++ if mp is None:
++ continue
++
++ # Mount Point becomes Mount Path
++ mp += '/'
++ if DEBUG:
++ print('FBSD:\tmounted', vol['Device'], 'on', mp)
++ if mtd == 0:
++ ans['_main_prefix'], ans['_main_vol'] = mp, vol['Device']
++ if DEBUG:
++ print('FBSD:\tmain = ', mp)
++ elif mtd == 1:
++ ans['_card_a_prefix'], ans['_card_a_vol'] = mp, vol['Device']
++ if DEBUG:
++ print('FBSD:\tcard a = ', mp)
++ elif mtd == 2:
++ ans['_card_b_prefix'], ans['_card_b_vol'] = mp, vol['Device']
++ if DEBUG:
++ print('FBSD:\tcard b = ', mp)
++ break
++ mtd += 1
++
++ return mtd > 0, ans
++
+ #
+ # ------------------------------------------------------
+ #
+@@ -731,14 +795,13 @@ def open_freebsd(self):
+ # mounted filesystems, using the stored volume object
+ #
+ def eject_freebsd(self):
+- from .hal import get_hal
+- hal = get_hal()
++ from calibre.devices.udisks import umount
+ if self._main_prefix:
+- hal.unmount(self._main_vol)
++ umount(self._main_vol)
+ if self._card_a_prefix:
+- hal.unmount(self._card_a_vol)
++ umount(self._card_a_vol)
+ if self._card_b_prefix:
+- hal.unmount(self._card_b_vol)
++ umount(self._card_b_vol)
+
+ self._main_prefix = self._main_vol = None
+ self._card_a_prefix = self._card_a_vol = None
+@@ -786,11 +849,7 @@ def open(self, connected_device, library_uuid):
+ self.open_linux()
+ if isfreebsd:
+ self._main_vol = self._card_a_vol = self._card_b_vol = None
+- try:
+- self.open_freebsd()
+- except DeviceError:
+- time.sleep(2)
+- self.open_freebsd()
++ self.open_freebsd()
+ if iswindows:
+ self.open_windows()
+ if ismacos:
+--
+2.49.0
+
diff --git a/deskutils/calibre/files/user-agent-data.json b/deskutils/calibre/files/user-agent-data.json
index ccde5990a6a4..a85aa63446a2 100644
--- a/deskutils/calibre/files/user-agent-data.json
+++ b/deskutils/calibre/files/user-agent-data.json
@@ -2,112 +2,112 @@
"common_user_agents": [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.33 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:133.0) Gecko/20100101 Firefox/133.0",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 Edg/133.0.0.0",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 Edg/132.0.0.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36",
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.3 Safari/605.1.15",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.2 Safari/605.1.15",
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0",
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36",
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.1.1 Safari/605.1.15",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36",
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.1.1 Safari/605.1.15",
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 OPR/115.0.0.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:133.0) Gecko/20100101 Firefox/133.0",
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.33 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 OPR/114.0.0.0",
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:134.0) Gecko/20100101 Firefox/134.0",
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.3 Safari/605.1.15",
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.6261.95 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0",
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36",
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.1 Safari/605.1.15",
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Safari/605.1.15",
"Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.19044; en-US) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 (compatible; Liquit-SetupStore; +https://www.liquit.com/products/release-patch-management/)",
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0",
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Safari/605.1.15",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; rv:128.0) Gecko/20100101 Firefox/128.0",
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.1 Safari/605.1.15",
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:132.0) Gecko/20100101 Firefox/132.0",
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0",
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 Edg/133.0.0.0",
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0.1 Safari/605.1.15",
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0.1 Safari/605.1.15",
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0",
"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0",
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.6.1 Safari/605.1.15",
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
- "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36",
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Avast/130.0.0.0",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Safari/605.1.15",
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Safari/605.1.15",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0",
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1 Safari/605.1.15",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0"
],
"desktop_platforms": [
- "Macintosh; Intel Mac OS X 10_15_7",
+ "Windows NT 10.0; Microsoft Windows 10.0.19044; en-US",
"Windows NT 10.0",
- "Windows NT 10.0; Win64; x64",
"Macintosh; Intel Mac OS X 10.15",
- "Windows NT 10.0; Microsoft Windows 10.0.19044; en-US",
- "Windows NT 6.1; Win64; x64"
+ "Macintosh; Intel Mac OS X 10_15_7",
+ "Windows NT 6.1; Win64; x64",
+ "Windows NT 10.0; Win64; x64"
],
- "timestamp": "2025-02-14T07:33:34.619955+00:00",
+ "timestamp": "2025-03-21T09:35:47.732952+00:00",
"user_agents_popularity": {
- "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36": 2083,
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:133.0) Gecko/20100101 Firefox/133.0": 18138,
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:134.0) Gecko/20100101 Firefox/134.0": 12517,
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36": 26430,
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36": 2159,
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36": 3184,
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36": 5137,
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36": 96509,
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0": 4087,
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.6.1 Safari/605.1.15": 2349,
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Safari/605.1.15": 2019,
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Safari/605.1.15": 5042,
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15": 15623,
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Safari/605.1.15": 1951,
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0.1 Safari/605.1.15": 3265,
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.1 Safari/605.1.15": 5119,
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.1.1 Safari/605.1.15": 29516,
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.2 Safari/605.1.15": 45961,
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.3 Safari/605.1.15": 10689,
- "Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.19044; en-US) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 (compatible; Liquit-SetupStore; +https://www.liquit.com/products/release-patch-management/)": 4920,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36": 10251,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36": 3174,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36": 3415,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36": 3990,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.6261.95 Safari/537.36": 7862,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36": 2311,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0": 1894,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36": 3118,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 OPR/114.0.0.0": 16343,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36": 2506,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0": 2198,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36": 13449,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Avast/130.0.0.0": 2025,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0": 4781,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 OPR/115.0.0.0": 20418,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36": 540241,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0": 275898,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.33 Safari/537.36": 18050,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36": 180872,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 Edg/132.0.0.0": 123703,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36": 36980,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 Edg/133.0.0.0": 4070,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0": 7405,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:132.0) Gecko/20100101 Firefox/132.0": 4425,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:133.0) Gecko/20100101 Firefox/133.0": 173799,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0": 130629,
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0": 44652,
- "Mozilla/5.0 (Windows NT 10.0; rv:128.0) Gecko/20100101 Firefox/128.0": 4488,
- "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0": 2862
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:133.0) Gecko/20100101 Firefox/133.0": 18535,
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:134.0) Gecko/20100101 Firefox/134.0": 13800,
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36": 40561,
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36": 3300,
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36": 4633,
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36": 6052,
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36": 102141,
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0": 4268,
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.6.1 Safari/605.1.15": 3540,
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Safari/605.1.15": 3201,
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1 Safari/605.1.15": 2817,
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Safari/605.1.15": 7533,
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15": 23319,
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0.1 Safari/605.1.15": 4311,
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.1 Safari/605.1.15": 6721,
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.1.1 Safari/605.1.15": 32669,
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.2 Safari/605.1.15": 50304,
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.3 Safari/605.1.15": 56115,
+ "Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.19044; en-US) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 (compatible; Liquit-SetupStore; +https://www.liquit.com/products/release-patch-management/)": 7550,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36": 15837,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36": 4893,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36": 3838,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36": 7088,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.6261.95 Safari/537.36": 12378,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36": 3272,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0": 2645,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36": 4624,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 OPR/114.0.0.0": 16671,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36": 3299,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0": 2870,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36": 15076,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0": 5800,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 OPR/115.0.0.0": 20659,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36": 547227,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0": 280269,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.33 Safari/537.36": 225956,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36": 237635,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 Edg/132.0.0.0": 133780,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36": 275088,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 Edg/133.0.0.0": 142066,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36": 70797,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0": 11016,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:132.0) Gecko/20100101 Firefox/132.0": 4965,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:133.0) Gecko/20100101 Firefox/133.0": 175447,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0": 134988,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0": 168049,
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0": 12497,
+ "Mozilla/5.0 (Windows NT 10.0; rv:128.0) Gecko/20100101 Firefox/128.0": 6752,
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0": 4139
}
}
diff --git a/deskutils/calibre/pkg-plist b/deskutils/calibre/pkg-plist
index 066679ab6eaf..453624a937cf 100644
--- a/deskutils/calibre/pkg-plist
+++ b/deskutils/calibre/pkg-plist
@@ -154,6 +154,7 @@ lib/calibre/calibre/devices/kindle/driver.py
lib/calibre/calibre/devices/kobo/__init__.py
lib/calibre/calibre/devices/kobo/bookmark.py
lib/calibre/calibre/devices/kobo/books.py
+lib/calibre/calibre/devices/kobo/db.py
lib/calibre/calibre/devices/kobo/driver.py
lib/calibre/calibre/devices/kobo/kobotouch_config.py
lib/calibre/calibre/devices/mime.py
@@ -198,7 +199,6 @@ lib/calibre/calibre/devices/usbms/cli.py
lib/calibre/calibre/devices/usbms/device.py
lib/calibre/calibre/devices/usbms/deviceconfig.py
lib/calibre/calibre/devices/usbms/driver.py
-lib/calibre/calibre/devices/usbms/hal.py
lib/calibre/calibre/devices/user_defined/__init__.py
lib/calibre/calibre/devices/user_defined/driver.py
lib/calibre/calibre/devices/utils.py
@@ -218,6 +218,7 @@ lib/calibre/calibre/ebooks/compression/palmdoc.py
lib/calibre/calibre/ebooks/compression/tcr.py
lib/calibre/calibre/ebooks/constants.py
lib/calibre/calibre/ebooks/conversion/__init__.py
+lib/calibre/calibre/ebooks/conversion/archives.py
lib/calibre/calibre/ebooks/conversion/cli.py
lib/calibre/calibre/ebooks/conversion/config.py
lib/calibre/calibre/ebooks/conversion/plugins/__init__.py
@@ -479,6 +480,7 @@ lib/calibre/calibre/ebooks/oeb/polish/hyphenation.py
lib/calibre/calibre/ebooks/oeb/polish/images.py
lib/calibre/calibre/ebooks/oeb/polish/import_book.py
lib/calibre/calibre/ebooks/oeb/polish/jacket.py
+lib/calibre/calibre/ebooks/oeb/polish/kepubify.py
lib/calibre/calibre/ebooks/oeb/polish/main.py
lib/calibre/calibre/ebooks/oeb/polish/opf.py
lib/calibre/calibre/ebooks/oeb/polish/parsing.py
@@ -493,6 +495,7 @@ lib/calibre/calibre/ebooks/oeb/polish/tests/__init__.py
lib/calibre/calibre/ebooks/oeb/polish/tests/base.py
lib/calibre/calibre/ebooks/oeb/polish/tests/cascade.py
lib/calibre/calibre/ebooks/oeb/polish/tests/container.py
+lib/calibre/calibre/ebooks/oeb/polish/tests/kepubify.py
lib/calibre/calibre/ebooks/oeb/polish/tests/main.py
lib/calibre/calibre/ebooks/oeb/polish/tests/parsing.py
lib/calibre/calibre/ebooks/oeb/polish/tests/structure.py
@@ -739,6 +742,8 @@ lib/calibre/calibre/gui2/convert/heuristics.py
lib/calibre/calibre/gui2/convert/heuristics_ui.py
lib/calibre/calibre/gui2/convert/htmlz_output.py
lib/calibre/calibre/gui2/convert/htmlz_output_ui.py
+lib/calibre/calibre/gui2/convert/kepub_output.py
+lib/calibre/calibre/gui2/convert/kepub_output_ui.py
lib/calibre/calibre/gui2/convert/look_and_feel.py
lib/calibre/calibre/gui2/convert/look_and_feel_ui.py
lib/calibre/calibre/gui2/convert/lrf_output.py
@@ -808,6 +813,7 @@ lib/calibre/calibre/gui2/dialogs/comments_dialog.py
lib/calibre/calibre/gui2/dialogs/confirm_delete.py
lib/calibre/calibre/gui2/dialogs/confirm_delete_location.py
lib/calibre/calibre/gui2/dialogs/confirm_merge.py
+lib/calibre/calibre/gui2/dialogs/connect_to_folder.py
lib/calibre/calibre/gui2/dialogs/conversion_error.py
lib/calibre/calibre/gui2/dialogs/conversion_error_ui.py
lib/calibre/calibre/gui2/dialogs/custom_recipes.py
@@ -1745,6 +1751,7 @@ lib/calibre/tinycss/version.py
%%DATADIR%%/images/mimetypes/gif.png
%%DATADIR%%/images/mimetypes/html.png
%%DATADIR%%/images/mimetypes/jpeg.png
+%%DATADIR%%/images/mimetypes/kfx.png
%%DATADIR%%/images/mimetypes/lit.png
%%DATADIR%%/images/mimetypes/lrf.png
%%DATADIR%%/images/mimetypes/lrx.png
@@ -1917,6 +1924,7 @@ lib/calibre/tinycss/version.py
%%DATADIR%%/templates/html_export_default.tmpl
%%DATADIR%%/templates/html_export_default_index.tmpl
%%DATADIR%%/templates/inline_toc_styles.css
+%%DATADIR%%/templates/kobo.js
%%DATADIR%%/templates/lrf.xsl
%%DATADIR%%/templates/new_book.html
%%DATADIR%%/templates/new_nav.html