pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/security/zoneminder
Module Name: pkgsrc
Committed By: gdt
Date: Thu Jul 30 12:36:00 UTC 2026
Modified Files:
pkgsrc/security/zoneminder: Makefile PLIST distinfo
pkgsrc/security/zoneminder/patches: patch-CMakeLists.txt
patch-scripts_ZoneMinder_lib_ZoneMinder_ConfigData.pm.in
patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm
patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm
patch-scripts_zm_in patch-scripts_zmpkg_pl_in
patch-src_zm__rtp__source.cpp patch-src_zm__utils.cpp
patch-src_zm_signal_cpp
Added Files:
pkgsrc/security/zoneminder/patches: patch-src_zm__comms.h
patch-src_zm__remote__camera__nvsocket.cpp
patch-web_includes_database.php
Removed Files:
pkgsrc/security/zoneminder/patches: patch-src_zm__event.cpp
patch-src_zm__eventstream.cpp patch-src_zm__image.cpp
patch-src_zm__monitor.cpp patch-src_zm__packet.h
patch-src_zm__packetqueue.cpp patch-src_zm__regexp.cpp
patch-src_zm__rtsp__server__fifo__source.cpp patch-src_zm__time.h
patch-src_zm_comms_h patch-src_zm_logger_cpp
patch-src_zm_remote_camera_h patch-src_zmu.cpp
Log Message:
security/zoneminder: Update to 1.38.3
Upstream NEWS, less bugfixes and minor improvements:
ZoneMinder 1.38.x Release Notes
TL;DR - Key Highlights
- Role-Based Access Control - Enterprise-grade permission system with user roles
- Modern Streaming - WebRTC, Go2RTC, RTSP2Web support with hardware acceleration
- Monitor Function Redesign - Granular control with separate Capturing, Analysing, and Recording settings
- Enhanced Protocols - ONVIF Events, MQTT, Amcrest API integration
-Event Tagging - Flexible labeling and organization system
- Server Monitoring - Real-time CPU, memory, and performance metrics
- Geolocation - Geographic tracking for events and servers
- Hardware Encoding - GPU acceleration for video encoding
Overview
ZoneMinder 1.38.x represents a major evolution from version 1.36.x,
introducing significant architectural improvements, new streaming
capabilities, enhanced security features, and extensive monitoring
enhancements. This release focuses on modernizing the platform with
support for contemporary streaming protocols, implementing
enterprise-grade access control, and improving performance and
scalability.
Major Feature Areas
1. Advanced User Access Control & Security
Role-Based Access Control (RBAC)
Introduced comprehensive role-based permission system with
reusable role templates New database tables: User_Roles,
Role_Groups_Permissions, Role_Monitors_Permissions Replaced legacy
comma-separated monitor ID strings with normalized permission
tables Fine-grained permissions for both monitor groups and
individual monitors
Enhanced User Management
Added user profile fields: Name, Email, Phone User-specific
montage layouts for personalized dashboards Improved security
controls with private and system configuration flags
2. Modern Streaming & Multi-Protocol Support
WebRTC Integration
Janus WebRTC Gateway support with audio streaming capabilities
Go2RTC protocol support for alternative streaming RTSP2Web
streaming with WebRTC/MSE/HLS options Configurable codec selection
and stream profiles
Hardware-Accelerated Encoding
Hardware acceleration support for video encoding (GPU encoding)
New encoder configuration options: EncoderHWAccelName and
EncoderHWAccelDevice Human-readable codec names replacing
integer-based codec selection Optimized encoding for reduced CPU
usage
3. Monitor Function Redesign
One of the most significant architectural changes in 1.38.x is the
redesign of the monitor Function field into three independent control
parameters. This provides much more granular control over monitor
behavior.
Legacy Function Field (1.36.x and earlier)
The traditional Function field was a single enum that controlled all aspects of a monitor's operation:
None - Monitor disabled
Monitor - Capture video only (no recording, no motion detection)
Modect - Motion detection with recording on motion
Record - Continuous recording without motion detection
Mocord - Continuous recording with motion detection
Nodect - Recording on external trigger, no built-in motion detection
New Granular Control (1.38.x)
The Function field has been split into three independent settings,
allowing fine-grained control:
Capturing enum (None/Ondemand/Always)
Controls whether the monitor captures video from the camera
None - No video capture (monitor effectively disabled)
Ondemand - Capture only when needed (e.g., when viewing live or triggered by events)
Always - Continuous video capture from the camera
Analysing enum (None/Always)
Controls whether motion detection and analysis is performed
None - No motion detection or analysis (equivalent to Monitor or Record modes)
Always - Perform motion detection and analysis (equivalent to Modect or Mocord modes)
Recording enum (None/OnMotion/Always)
Controls when video is saved to disk
None - No recording (live viewing only)
OnMotion - Record only when motion is detected or triggered
Always - Continuous recording
Migration from Legacy Functions
The database automatically migrates old Function values to the new settings:
None → Capturing: None, Analysing: None, Recording: None
Monitor → Capturing: Always, Analysing: None, Recording: None
Modect → Capturing: Always, Analysing: Always, Recording: OnMotion
Record → Capturing: Always, Analysing: None, Recording: Always
Mocord → Capturing: Always, Analysing: Always, Recording: Always
Nodect → Capturing: Always, Analysing: None, Recording: OnMotion
Benefits of the New Design
More flexible monitor configurations (e.g., analyze but don't record, or record without analysis)
Better resource management by independently controlling capture, analysis, and storage
Clearer separation of concerns for troubleshooting
Foundation for future enhancements like conditional recording policies
Easier to understand monitor behavior at a glance
4. Enhanced Camera Integration
Extended Protocol Support
ONVIF Event Listener for direct camera event notifications
Amcrest API support for Amcrest-branded cameras
MQTT integration for IoT device communication and message handling
Camera Management
Camera manufacturer and model database integration
5. Advanced Event Management
Event Tagging System
Flexible event labeling with custom tags
Many-to-many relationship between events and tags
Improved event organization and filtering
Event Automation & Triggers
Event start and end command execution
Multiple event close modes: system, time, duration, idle, alarm-based
Section length warnings for long recordings
Filter execution intervals for scheduled automation
Event Metadata & Analytics
Event data extensibility with custom metadata storage
Geolocation tracking (latitude/longitude) for events
Enhanced event reporting system with historical analytics
6. Performance & Infrastructure
Server Monitoring
Comprehensive server statistics tracking
CPU usage monitoring (User, Nice, System, Idle percentages)
Memory and swap utilization metrics
Timestamped performance data collection
Optimization Features
Monitor startup delay to stagger initialization and reduce system load
Enhanced status tracking with update timestamps
Analysis image channel optimization (Full Color vs. Y-Channel) (reduces cpu use)
Improved monitor soft delete with logical deletion flags
Monitor importance levels (Normal/Less/Not) for stream prioritization
Wall clock timestamp synchronization when doing passthrough
7. Display & User Interface
Montage Enhancements
Expanded grid layouts: 1/2/4/5/6/7/8/9/10/12/16 Wide configurations
User-specific montage layouts with personalized views
options to locate/hide status information to fully use space
Playback Improvements
Default player selection for preferred streaming client
Enhanced video playback controls
Improved event viewing experience
Optimal mjpeg scaling to reduce cpu/bandwidth use while maintaining fidelity
** New file explorer view **
limited to defined storage areas
** Watch and Cycle views merged **
PTZ controls improved, with toggling of visibility
8. Storage & Recording
Granular Recording Control
With the redesign of the monitor Function field (see section 3),
recording behavior is now controlled independently through the
Recording, Capturing, and Analysing settings. This provides much
greater flexibility:
Recording modes: None/OnMotion/Always
Capturing modes: None/Ondemand/Always
Analysis modes: None/Always
This allows configurations that weren't possible with the old Function
field, such as:
Capture and analyze without recording (for alerting only)
Record without analysis (for compliance/archival)
On-demand capture with triggered recording
Email Notifications
Email format options: Individual or Summary
Improved event notification formatting
Configurable alert delivery
9. Geographic & Metadata Features
Geolocation Support
Geographic coordinates for monitors, events, and servers
Location-based event tracking and analysis
10. Development & Integration
Database Schema Evolution
The 1.37.x series includes approximately 79 database schema updates
from 1.37.1 through 1.37.79, each introducing targeted improvements
and new capabilities. Key architectural changes include:
Migration from string-based configuration to normalized relational tables
Introduction of extensible metadata storage systems
Enhanced foreign key relationships for referential integrity
Improved indexing for query performance
Upgrade Considerations
Breaking Changes
Permission system migration from comma-separated strings to normalized tables
Some configuration parameters have been renamed or restructured
Monitor soft delete may require updates to custom scripts that query monitor data
To generate a diff of this commit:
cvs rdiff -u -r1.104 -r1.105 pkgsrc/security/zoneminder/Makefile
cvs rdiff -u -r1.12 -r1.13 pkgsrc/security/zoneminder/PLIST
cvs rdiff -u -r1.28 -r1.29 pkgsrc/security/zoneminder/distinfo
cvs rdiff -u -r1.4 -r1.5 \
pkgsrc/security/zoneminder/patches/patch-CMakeLists.txt \
pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm \
pkgsrc/security/zoneminder/patches/patch-src_zm__utils.cpp \
pkgsrc/security/zoneminder/patches/patch-src_zm_signal_cpp
cvs rdiff -u -r1.2 -r1.3 \
pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_ConfigData.pm.in \
pkgsrc/security/zoneminder/patches/patch-scripts_zmpkg_pl_in
cvs rdiff -u -r1.3 -r1.4 \
pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm
cvs rdiff -u -r1.6 -r1.7 \
pkgsrc/security/zoneminder/patches/patch-scripts_zm_in \
pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__source.cpp
cvs rdiff -u -r0 -r1.1 \
pkgsrc/security/zoneminder/patches/patch-src_zm__comms.h \
pkgsrc/security/zoneminder/patches/patch-src_zm__remote__camera__nvsocket.cpp \
pkgsrc/security/zoneminder/patches/patch-web_includes_database.php
cvs rdiff -u -r1.7 -r0 \
pkgsrc/security/zoneminder/patches/patch-src_zm__event.cpp
cvs rdiff -u -r1.1 -r0 \
pkgsrc/security/zoneminder/patches/patch-src_zm__eventstream.cpp \
pkgsrc/security/zoneminder/patches/patch-src_zm__packet.h \
pkgsrc/security/zoneminder/patches/patch-src_zm__packetqueue.cpp \
pkgsrc/security/zoneminder/patches/patch-src_zm__regexp.cpp \
pkgsrc/security/zoneminder/patches/patch-src_zm__rtsp__server__fifo__source.cpp \
pkgsrc/security/zoneminder/patches/patch-src_zm__time.h
cvs rdiff -u -r1.3 -r0 \
pkgsrc/security/zoneminder/patches/patch-src_zm__image.cpp
cvs rdiff -u -r1.5 -r0 \
pkgsrc/security/zoneminder/patches/patch-src_zm__monitor.cpp \
pkgsrc/security/zoneminder/patches/patch-src_zm_remote_camera_h \
pkgsrc/security/zoneminder/patches/patch-src_zmu.cpp
cvs rdiff -u -r1.6 -r0 \
pkgsrc/security/zoneminder/patches/patch-src_zm_comms_h
cvs rdiff -u -r1.9 -r0 \
pkgsrc/security/zoneminder/patches/patch-src_zm_logger_cpp
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: pkgsrc/security/zoneminder/Makefile
diff -u pkgsrc/security/zoneminder/Makefile:1.104 pkgsrc/security/zoneminder/Makefile:1.105
--- pkgsrc/security/zoneminder/Makefile:1.104 Fri Jul 24 15:48:18 2026
+++ pkgsrc/security/zoneminder/Makefile Thu Jul 30 12:35:59 2026
@@ -1,33 +1,32 @@
-# $NetBSD: Makefile,v 1.104 2026/07/24 15:48:18 taca Exp $
+# $NetBSD: Makefile,v 1.105 2026/07/30 12:35:59 gdt Exp $
-# (1st-parent) commits past 1.36.37 on release-1.36
-# git log --first-parent --oneline --reverse 1.36.37..
-VERSION= 1.36.37.10
+# This is a twisty maze of variables. The plan is to edit VERSION
+# (the zoneminder version) on upgrades, and have everything flow from
+# there.
+VERSION= 1.38.3
# Distfile is ZoneMinder but package and tarball contents are zoneminder.
NAME_DIST= ZoneMinder
NAME_LOWER= zoneminder
-
PKGNAME= ${DISTNAME:S/${NAME_DIST}-/${NAME_LOWER}-/}
-PKGREVISION= 6
+PKGREVISION= 1
DISTNAME= ${NAME_DIST}-${VERSION}
-#WRKSRC= ${WRKDIR}/${NAME_LOWER}-${VERSION}
WRKSRC= ${WRKDIR}/${NAME_LOWER}-${GITHUB_TAG}
CATEGORIES= security
MASTER_SITES= ${MASTER_SITE_GITHUB:=${NAME_DIST}/}
GITHUB_PROJECT= ${NAME_DIST}
GITHUB_TYPE= tag
-#GITHUB_TAG= ${PKGVERSION_NOREV}
-GITHUB_TAG= 5ca31d88f7069ec4a4cc758e7ea05353573d3304
+GITHUB_TAG= ${VERSION}
## Submodules (from ZoneMinder's .gitmodules file)
# We use a specific commit on each branch, to avoid distfile versioning woes
# and to meet pkgsrc expectations that a fixed version is fixed software.
-# Beware that RtspServer might get updates and should be checked.
+# Upstream checks in submodules but this is not apparent in git tarballs.
+# https://github.com/ZoneMinder/zoneminder/issues/5010
+# Check for updates every release.
GITHUB_SUBMODULES+= FriendsOfCake crud 14292374ccf1328f2d5db20897bd06f99ba4d938 web/api/app/Plugin/Crud
GITHUB_SUBMODULES+= ZoneMinder CakePHP-Enum-Behavior ea90c0cd7f6e24333a90885e563b5d30b793db29 web/api/app/Plugin/CakePHP-Enum-Behavior
-# cherry-pick https://github.com/ZoneMinder/RtspServer/pull/12
-#GITHUB_SUBMODULES+= ZoneMinder RtspServer 055d81fe1293429e496b19104a9ed3360755a440 dep/RtspServer
-GITHUB_SUBMODULES+= gdt RtspServer 2719899a3f74ef0a9bb213d34998bcc74cc1f17f dep/RtspServer
+GITHUB_SUBMODULES+= ZoneMinder RtspServer a071599575f60a6f1f424e1f9b408dad7da734a8 dep/RtspServer
+GITHUB_SUBMODULES+= chmike CxxUrl eaf46c0207df24853a238d4499e7f4426d9d234c dep/CxxUrl
MAINTAINER= dsainty%NetBSD.org@localhost
#MAINTAINER+= gdt%NetBSD.org@localhost
@@ -35,10 +34,9 @@ HOMEPAGE= https://www.zoneminder.com/
COMMENT= Video camera security and surveillance solution
LICENSE= gnu-gpl-v2
-# ZoneMinder without a web server does not really make sense (and if
-# it did, what is omitted is surely not right). Require a webserver
-# (until someone wanting to not have one provides rationale and a
-# patch).
+# ZoneMinder without a web server does not really make sense. Require
+# a webserver (until someone wanting to not have one provides
+# rationale and a patch).
PKG_OPTIONS_VAR= PKG_OPTIONS.zoneminder
PKG_OPTIONS_REQUIRED_GROUPS= webserver
PKG_OPTIONS_GROUP.webserver= apache nginx
@@ -48,6 +46,7 @@ PKG_SUGGESTED_OPTIONS= apache
# package supports mysql and MariaDB, which must be handled separately
# because p5-DBD-mysql is (2026-01) mysql only, with p5-DBD-MariaDB
# for MariaDB.
+# https://github.com/ZoneMinder/zoneminder/issues/5008
PKG_OPTIONS_REQUIRED_GROUPS+= database
PKG_OPTIONS_GROUP.database= mysql mariadb
PKG_SUGGESTED_OPTIONS+= mariadb
@@ -114,16 +113,19 @@ OWN_DIRS_PERMS+= ${VARBASE}/run/zm ${REA
# NB: Startup script must create /var/run/zm.
CMAKE_CONFIGURE_ARGS+= -DZM_SOCKDIR=${VARBASE}/run/zm
-# ZM_TMPDIR might or might not be used.
CMAKE_CONFIGURE_ARGS+= -DZM_TMPDIR=${VARBASE}/tmp/zm
OWN_DIRS_PERMS+= ${VARBASE}/tmp/zm ${REAL_ROOT_USER} ${APACHE_GROUP} 775
-# In some configs, ZM_LOGDIR is apparently unused.
+# Probably, one can configure logging to ZM_LOGDIR.
CMAKE_CONFIGURE_ARGS+= -DZM_LOGDIR=${VARBASE}/log/zm
OWN_DIRS_PERMS+= ${VARBASE}/log/zm ${REAL_ROOT_USER} ${APACHE_GROUP} 775
+# Remediate cmake searching for rm in the build environment, finding
+# tools wrappers, and assuming that is that way in the runtime environment.
+CMAKE_CONFIGURE_ARGS+= -DZM_PATH_RM=/bin/rm
+
# Choose directory where zoneminder can create shm files (for zmc).
-# \todo Define this per-OS.
+# \todo Define this per-OS, perhaps hoisting to mk.
ZM_SHM= /var/shm # NetBSD
CMAKE_CONFIGURE_ARGS+= -DZM_PATH_MAP=${ZM_SHM}
@@ -219,14 +221,12 @@ ZM_PERL_PATH+= scripts/zmx10.pl.in
## DATABASE
-# In case of trouble, see files/upstream-PR-3914 for p5-DBD-mysql woes
-# and changes to address them.n
-
-# There is no reason to suspect that any version in pkgsrc is
+# There is no reason to suspect that any MariaDB version in pkgsrc is
# problematic, but most have not been tested.
.if !empty(PKG_OPTIONS:Mmariadb)
# 2026-01: 1.36 works with mariadb 10.6 on NetBSD
# 2024-01: 1.36 works with mariadb 11.2 on GNU/Linux
+# 2026-07: 1.38 works with mariadb 10.6 on NetBSD
DEPENDS+= p5-DBD-MariaDB-[0-9]*:../../databases/p5-DBD-MariaDB
MYSQL_VERSIONS_ACCEPTED= mariadb118 mariadb114 mariadb1011 mariadb106 mariadb105
CMAKE_CONFIGURE_ARGS+= -DZM_DB_TYPE=MariaDB
@@ -235,18 +235,23 @@ CMAKE_CONFIGURE_ARGS+= -DZM_DB_TYPE=Mar
DEPENDS+= p5-DBD-mysql-[0-9]*:../../databases/p5-DBD-mysql
MYSQL_VERSIONS_ACCEPTED= 80
CMAKE_CONFIGURE_ARGS+= -DZM_DB_TYPE=mysql
+# WARNING: Omit the mysql hunk in the CMakeLists patch, if wanting to
+# use mysql, and feel free to send in a cleaner solution -- omitted
+# for now because there appear to be zero mysql users.
.endif
.include "../../mk/mysql.buildlink3.mk"
## PHP
+# php-apcu fails with 56, and there's no reason to think about 56.
# 20250103 1.36.37:
# 74 has not been tested recently, but there's no reason to try to use it.
# 81 has not been tested recently; probably it works.
-# 82 and 83 work.
+# 82 and 83 work.
# 84 has not been tested, but FreeBSD ports seems to think it works.
-# php-apcu fails with 56, and there's no reason to think about 56.
+# 202060729 1.38.2:
+# 83 works
PHP_VERSIONS_INCOMPATIBLE= 56
.include "../../lang/php/phpversion.mk"
@@ -277,7 +282,9 @@ CMAKE_CONFIGURE_ARGS+= -DZM_WEB_GROUP=${
# other random cgi scripts have been installed by other packages.
# This sets the path to be used, and httpd/nginx config must alias
# that path to $PREFIX/libexec/zoneminder/cgi-bin/.
-CMAKE_CONFIGURE_ARGS+= -DZM_PATH_ZMS=zm/cgi-bin/nph-zms
+# \todo Add a leading / to avoid cmake deciding to make it absolute by
+# prepending workdir.
+CMAKE_CONFIGURE_ARGS+= -DZM_PATH_ZMS=/zm/cgi-bin/nph-zms
.if !empty(PKG_OPTIONS:Mapache)
.include "../../mk/apache.mk"
@@ -324,10 +331,9 @@ PRINT_PLIST_AWK+= { gsub(/^.+\/examples\
## PKGSRC PHASE FIXUPS
# Copy the example config to WRKSRC because we SUBST it, and files/ should be read only.
-# Avoid conflict with C++20 <version> - intertwined with patch-CMakeLists.txt
+
post-extract:
${CP} ${FILESDIR}/httpd-zoneminder.conf ${WRKSRC}/httpd-zoneminder.conf
- ${MV} ${WRKSRC}/version ${WRKSRC}/version.txt
# Omit patchfiles from PLIST if present. The pre-configure step below
# should prevent this from being necessary.
@@ -340,17 +346,34 @@ pre-configure:
EGDIR= share/examples/${PKGBASE}
DOCDIR= share/doc/${PKGBASE}
-INSTALLATION_DIRS+= ${EGDIR} ${EGDIR}/config ${EGDIR}/apache
+INSTALLATION_DIRS+= ${EGDIR} ${EGDIR}/config ${EGDIR}/config/conf.d ${EGDIR}/apache
CONF_FILES+= ${PREFIX}/${EGDIR}/config/zm.conf ${PKG_SYSCONFDIR}/zm.conf
+CONF_FILES+= ${PREFIX}/${EGDIR}/config/conf.d/01-system-paths.conf ${PKG_SYSCONFDIR}/conf.d/01-system-paths.conf
+CONF_FILES+= ${PREFIX}/${EGDIR}/config/conf.d/02-multiserver.conf ${PKG_SYSCONFDIR}/conf.d/02-multiserver.conf
+CONF_FILES+= ${PREFIX}/${EGDIR}/config/conf.d/README ${PKG_SYSCONFDIR}/conf.d/README
INSTALLATION_DIRS+= bin share/examples/rc.d share/zoneminder/db
INSTALLATION_DIRS+= ${DOCDIR}
+
post-install:
+ # Remediate bundled deps installing things.
+ ${RM} -rf ${DESTDIR}${PREFIX}/include/jwt-cpp
+ ${RM} -rf ${DESTDIR}${PREFIX}/include/picojson
+ ${RM} -rf ${DESTDIR}${PREFIX}/cmake
+ ${RM} -rf ${DESTDIR}${PREFIX}/include/CxxUrl
+ ${RM} -rf ${DESTDIR}${PREFIX}/lib/cmake
+ ${RM} -f ${DESTDIR}${PREFIX}/lib/libCxxUrl.a
+ ${RMDIR} ${DESTDIR}${PREFIX}/include
+ # Config files to EGDIR.
${INSTALL_DATA} ${WRKSRC}/httpd-zoneminder.conf ${DESTDIR}${PREFIX}/${EGDIR}/apache/httpd-zoneminder.conf
${INSTALL_DATA} ${WRKSRC}/${CMAKE_BUILD_DIR}/zm.conf ${DESTDIR}${PREFIX}/${EGDIR}/config/zm.conf
+ ${INSTALL_DATA} ${WRKSRC}/${CMAKE_BUILD_DIR}/conf.d/* ${DESTDIR}${PREFIX}/${EGDIR}/config/conf.d
+ # rc.d to examples
.if ${INIT_SYSTEM} == "rc.d"
${INSTALL_SCRIPT} ${WRKSRC}/${CMAKE_BUILD_DIR}/scripts/zm ${DESTDIR}${PREFIX}/share/examples/rc.d/zoneminder
.endif
+ # Install SQL data files. \todo Check and fix upstream.
${INSTALL_DATA} ${WRKSRC}/db/*.sql ${DESTDIR}${PREFIX}/share/zoneminder/db/
+ # Install pkgsrc README.
${INSTALL_DATA} files/README-pkgsrc.md ${DESTDIR}${PREFIX}/${DOCDIR}
.include "../../devel/cmake/build.mk"
Index: pkgsrc/security/zoneminder/PLIST
diff -u pkgsrc/security/zoneminder/PLIST:1.12 pkgsrc/security/zoneminder/PLIST:1.13
--- pkgsrc/security/zoneminder/PLIST:1.12 Mon Jan 5 16:02:44 2026
+++ pkgsrc/security/zoneminder/PLIST Thu Jul 30 12:35:59 2026
@@ -1,10 +1,11 @@
-@comment $NetBSD: PLIST,v 1.12 2026/01/05 16:02:44 gdt Exp $
+@comment $NetBSD: PLIST,v 1.13 2026/07/30 12:35:59 gdt Exp $
bin/zm_rtsp_server
bin/zmaudit.pl
bin/zmc
bin/zmcamtool.pl
bin/zmcontrol.pl
bin/zmdc.pl
+bin/zmeventtool.pl
bin/zmfilter.pl
bin/zmonvif-probe.pl
bin/zmonvif-trigger.pl
@@ -2206,6 +2207,7 @@ ${PERL5_SUB_INSTALLVENDORLIB}/ONVIF/PTZ/
${PERL5_SUB_INSTALLVENDORLIB}/ONVIF/PTZ/Elements/VideoEncoderConfiguration.pm
${PERL5_SUB_INSTALLVENDORLIB}/ONVIF/PTZ/Elements/VideoSourceConfiguration.pm
${PERL5_SUB_INSTALLVENDORLIB}/ONVIF/PTZ/Interfaces/PTZ/PTZPort.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ONVIF/PTZ/PTZ.pm
${PERL5_SUB_INSTALLVENDORLIB}/ONVIF/PTZ/Typemaps/PTZ.pm
${PERL5_SUB_INSTALLVENDORLIB}/ONVIF/PTZ/Types/AACDecOptions.pm
${PERL5_SUB_INSTALLVENDORLIB}/ONVIF/PTZ/Types/AbsoluteFocus.pm
@@ -2924,6 +2926,7 @@ ${PERL5_SUB_INSTALLVENDORLIB}/WSNotifica
${PERL5_SUB_INSTALLVENDORLIB}/WSNotification/Elements/GetCurrentMessageResponse.pm
${PERL5_SUB_INSTALLVENDORLIB}/WSNotification/Elements/GetMessages.pm
${PERL5_SUB_INSTALLVENDORLIB}/WSNotification/Elements/GetMessagesResponse.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSNotification/Elements/Header.pm
${PERL5_SUB_INSTALLVENDORLIB}/WSNotification/Elements/InvalidFilterFault.pm
${PERL5_SUB_INSTALLVENDORLIB}/WSNotification/Elements/InvalidMessageContentExpressionFault.pm
${PERL5_SUB_INSTALLVENDORLIB}/WSNotification/Elements/InvalidProducerPropertiesExpressionFault.pm
@@ -3053,25 +3056,32 @@ ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/FOSCAMR2C.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Floureon.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/FoscamCGI.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Grandstream.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/HikVision.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/IPCAMIOS.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/IPCC7210W.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Instar720p.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Keekoon.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/LoftekSentinel.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/M8640.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/MaginonIPC.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Ncs370.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Netcat.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/ONVIF.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/PSIA.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/PanasonicIP.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/PelcoD.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/PelcoP.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Reolink.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Reolink_HTTP.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/SPP1802SWPTZ.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Serial_HEX_PelcoD.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/SkyIPCam7xx.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Sony.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/TapoC520WS_ONVIF.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Toshiba_IK_WB11A.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Trendnet.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Uniview.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Visca.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Vivotek_ePTZ.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Wanscam.pm
@@ -3081,19 +3091,27 @@ ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Database.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Event.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Event_Summary.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Event_Tag.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Filter.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Frame.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/General.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Group.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Logger.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Manufacturer.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Memory.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Memory/Mapped.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Memory/Shared.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Model.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Monitor.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Monitor_Status.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Network.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/ONVIF.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Object.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Object_Type.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Server.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/State.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Storage.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Tag.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Trigger/Channel.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Trigger/Channel/File.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Trigger/Channel/Handle.pm
@@ -5289,6 +5307,7 @@ ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ONVIF:
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ONVIF::PTZ::Elements::VideoEncoderConfiguration.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ONVIF::PTZ::Elements::VideoSourceConfiguration.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ONVIF::PTZ::Interfaces::PTZ::PTZPort.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ONVIF::PTZ::PTZ.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ONVIF::PTZ::Typemaps::PTZ.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ONVIF::PTZ::Types::AACDecOptions.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ONVIF::PTZ::Types::AbsoluteFocus.3
@@ -6129,7 +6148,9 @@ ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMi
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::FI9831W.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::FOSCAMR2C.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::Floureon.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::Grandstream.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::IPCC7210W.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::Instar720p.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::M8640.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::MaginonIPC.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::Ncs370.3
@@ -6137,7 +6158,9 @@ ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMi
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::PanasonicIP.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::PelcoD.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::PelcoP.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::Reolink_HTTP.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::SPP1802SWPTZ.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::Serial_HEX_PelcoD.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::SkyIPCam7xx.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::Sony.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::Toshiba_IK_WB11A.3
@@ -6150,17 +6173,24 @@ ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMi
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Database.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Event.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Event_Summary.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Event_Tag.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Filter.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Frame.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::General.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Group.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Logger.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Manufacturer.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Memory.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Model.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Monitor.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Monitor_Status.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Network.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::ONVIF.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Object.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Server.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::State.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Storage.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Tag.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Trigger::Channel.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Trigger::Channel::File.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Trigger::Channel::Handle.3
@@ -6179,6 +6209,7 @@ man/man8/zmc.8
man/man8/zmcamtool.pl.8
man/man8/zmcontrol.pl.8
man/man8/zmdc.pl.8
+man/man8/zmeventtool.pl.8
man/man8/zmfilter.pl.8
man/man8/zmonvif-probe.pl.8
man/man8/zmonvif-trigger.pl.8
@@ -6198,7 +6229,16 @@ share/applications/zoneminder.desktop
share/doc/zoneminder/README-pkgsrc.md
${PLIST.rcd}share/examples/rc.d/zoneminder
share/examples/zoneminder/apache/httpd-zoneminder.conf
+share/examples/zoneminder/config/conf.d/01-system-paths.conf
+share/examples/zoneminder/config/conf.d/02-multiserver.conf
+share/examples/zoneminder/config/conf.d/README
share/examples/zoneminder/config/zm.conf
+share/zoneminder/MacVendors.json
+share/zoneminder/db/Object_Types.sql
+share/zoneminder/db/User_Preferences.sql
+share/zoneminder/db/manufacturers.sql
+share/zoneminder/db/models.sql
+share/zoneminder/db/monitors_dbupdate.sql
share/zoneminder/db/test.monitor.sql
share/zoneminder/db/triggers.sql
share/zoneminder/db/zm_create.sql
@@ -6368,6 +6408,7 @@ share/zoneminder/db/zm_update-1.35.25.sq
share/zoneminder/db/zm_update-1.35.26.sql
share/zoneminder/db/zm_update-1.35.27.sql
share/zoneminder/db/zm_update-1.35.28.sql
+share/zoneminder/db/zm_update-1.35.29.sql
share/zoneminder/db/zm_update-1.35.3.sql
share/zoneminder/db/zm_update-1.35.4.sql
share/zoneminder/db/zm_update-1.35.5.sql
@@ -6375,12 +6416,84 @@ share/zoneminder/db/zm_update-1.35.6.sql
share/zoneminder/db/zm_update-1.35.7.sql
share/zoneminder/db/zm_update-1.35.8.sql
share/zoneminder/db/zm_update-1.35.9.sql
-share/zoneminder/db/zm_update-1.36.16.sql
-share/zoneminder/db/zm_update-1.36.18.sql
-share/zoneminder/db/zm_update-1.36.34.sql
-share/zoneminder/db/zm_update-1.36.37.sql
+share/zoneminder/db/zm_update-1.36.20.sql
share/zoneminder/db/zm_update-1.36.6.sql
-share/zoneminder/db/zm_update-1.36.9.sql
+share/zoneminder/db/zm_update-1.37.1.sql
+share/zoneminder/db/zm_update-1.37.10.sql
+share/zoneminder/db/zm_update-1.37.11.sql
+share/zoneminder/db/zm_update-1.37.12.sql
+share/zoneminder/db/zm_update-1.37.13.sql
+share/zoneminder/db/zm_update-1.37.14.sql
+share/zoneminder/db/zm_update-1.37.15.sql
+share/zoneminder/db/zm_update-1.37.16.sql
+share/zoneminder/db/zm_update-1.37.17.sql
+share/zoneminder/db/zm_update-1.37.18.sql
+share/zoneminder/db/zm_update-1.37.19.sql
+share/zoneminder/db/zm_update-1.37.2.sql
+share/zoneminder/db/zm_update-1.37.20.sql
+share/zoneminder/db/zm_update-1.37.21.sql
+share/zoneminder/db/zm_update-1.37.22.sql
+share/zoneminder/db/zm_update-1.37.23.sql
+share/zoneminder/db/zm_update-1.37.25.sql
+share/zoneminder/db/zm_update-1.37.26.sql
+share/zoneminder/db/zm_update-1.37.27.sql
+share/zoneminder/db/zm_update-1.37.28.sql
+share/zoneminder/db/zm_update-1.37.29.sql
+share/zoneminder/db/zm_update-1.37.3.sql
+share/zoneminder/db/zm_update-1.37.30.sql
+share/zoneminder/db/zm_update-1.37.31.sql
+share/zoneminder/db/zm_update-1.37.32.sql
+share/zoneminder/db/zm_update-1.37.34.sql
+share/zoneminder/db/zm_update-1.37.35.sql
+share/zoneminder/db/zm_update-1.37.36.sql
+share/zoneminder/db/zm_update-1.37.37.sql
+share/zoneminder/db/zm_update-1.37.38.sql
+share/zoneminder/db/zm_update-1.37.39.sql
+share/zoneminder/db/zm_update-1.37.4.sql
+share/zoneminder/db/zm_update-1.37.40.sql
+share/zoneminder/db/zm_update-1.37.41.sql
+share/zoneminder/db/zm_update-1.37.42.sql
+share/zoneminder/db/zm_update-1.37.43.sql
+share/zoneminder/db/zm_update-1.37.44.sql
+share/zoneminder/db/zm_update-1.37.45.sql
+share/zoneminder/db/zm_update-1.37.46.sql
+share/zoneminder/db/zm_update-1.37.47.sql
+share/zoneminder/db/zm_update-1.37.48.sql
+share/zoneminder/db/zm_update-1.37.49.sql
+share/zoneminder/db/zm_update-1.37.5.sql
+share/zoneminder/db/zm_update-1.37.50.sql
+share/zoneminder/db/zm_update-1.37.51.sql
+share/zoneminder/db/zm_update-1.37.52.sql
+share/zoneminder/db/zm_update-1.37.53.sql
+share/zoneminder/db/zm_update-1.37.54.sql
+share/zoneminder/db/zm_update-1.37.55.sql
+share/zoneminder/db/zm_update-1.37.56.sql
+share/zoneminder/db/zm_update-1.37.57.sql
+share/zoneminder/db/zm_update-1.37.58.sql
+share/zoneminder/db/zm_update-1.37.59.sql
+share/zoneminder/db/zm_update-1.37.6.sql
+share/zoneminder/db/zm_update-1.37.60.sql
+share/zoneminder/db/zm_update-1.37.62.sql
+share/zoneminder/db/zm_update-1.37.63.sql
+share/zoneminder/db/zm_update-1.37.66.sql
+share/zoneminder/db/zm_update-1.37.67.sql
+share/zoneminder/db/zm_update-1.37.68.sql
+share/zoneminder/db/zm_update-1.37.69.sql
+share/zoneminder/db/zm_update-1.37.7.sql
+share/zoneminder/db/zm_update-1.37.70.sql
+share/zoneminder/db/zm_update-1.37.71.sql
+share/zoneminder/db/zm_update-1.37.72.sql
+share/zoneminder/db/zm_update-1.37.73.sql
+share/zoneminder/db/zm_update-1.37.74.sql
+share/zoneminder/db/zm_update-1.37.75.sql
+share/zoneminder/db/zm_update-1.37.76.sql
+share/zoneminder/db/zm_update-1.37.77.sql
+share/zoneminder/db/zm_update-1.37.78.sql
+share/zoneminder/db/zm_update-1.37.79.sql
+share/zoneminder/db/zm_update-1.37.8.sql
+share/zoneminder/db/zm_update-1.37.80.sql
+share/zoneminder/db/zm_update-1.37.9.sql
+share/zoneminder/db/zm_update-1.38.1.sql
share/zoneminder/fonts/default.zmfnt
${ZM_HTTPD_ROOT}/ajax/add_monitors.php
${ZM_HTTPD_ROOT}/ajax/alarm.php
@@ -6394,6 +6507,8 @@ ${ZM_HTTPD_ROOT}/ajax/events.php
${ZM_HTTPD_ROOT}/ajax/frames.php
${ZM_HTTPD_ROOT}/ajax/log.php
${ZM_HTTPD_ROOT}/ajax/modal.php
+${ZM_HTTPD_ROOT}/ajax/modals/add_monitors_import.php
+${ZM_HTTPD_ROOT}/ajax/modals/areyoustillwatching.php
${ZM_HTTPD_ROOT}/ajax/modals/controlpreset.php
${ZM_HTTPD_ROOT}/ajax/modals/delconfirm.php
${ZM_HTTPD_ROOT}/ajax/modals/device.php
@@ -6402,6 +6517,7 @@ ${ZM_HTTPD_ROOT}/ajax/modals/download.ph
${ZM_HTTPD_ROOT}/ajax/modals/enoperm.php
${ZM_HTTPD_ROOT}/ajax/modals/eventdetail.php
${ZM_HTTPD_ROOT}/ajax/modals/eventrename.php
+${ZM_HTTPD_ROOT}/ajax/modals/eventunarchive.php
${ZM_HTTPD_ROOT}/ajax/modals/filterdebug.php
${ZM_HTTPD_ROOT}/ajax/modals/function.php
${ZM_HTTPD_ROOT}/ajax/modals/group.php
@@ -6409,16 +6525,22 @@ ${ZM_HTTPD_ROOT}/ajax/modals/log_export.
${ZM_HTTPD_ROOT}/ajax/modals/logout.php
${ZM_HTTPD_ROOT}/ajax/modals/objdetect.php
${ZM_HTTPD_ROOT}/ajax/modals/optionhelp.php
+${ZM_HTTPD_ROOT}/ajax/modals/saveconfirm.php
${ZM_HTTPD_ROOT}/ajax/modals/server.php
${ZM_HTTPD_ROOT}/ajax/modals/settings.php
${ZM_HTTPD_ROOT}/ajax/modals/shutdown.php
${ZM_HTTPD_ROOT}/ajax/modals/state.php
${ZM_HTTPD_ROOT}/ajax/modals/storage.php
+${ZM_HTTPD_ROOT}/ajax/models.php
+${ZM_HTTPD_ROOT}/ajax/reports.php
${ZM_HTTPD_ROOT}/ajax/shutdown.php
${ZM_HTTPD_ROOT}/ajax/snapshots.php
${ZM_HTTPD_ROOT}/ajax/stats.php
${ZM_HTTPD_ROOT}/ajax/status.php
${ZM_HTTPD_ROOT}/ajax/stream.php
+${ZM_HTTPD_ROOT}/ajax/tags.php
+${ZM_HTTPD_ROOT}/ajax/trigger.php
+${ZM_HTTPD_ROOT}/ajax/v4l2_settings.php
${ZM_HTTPD_ROOT}/ajax/watch.php
${ZM_HTTPD_ROOT}/ajax/zone.php
${ZM_HTTPD_ROOT}/api/.editorconfig
@@ -6444,40 +6566,58 @@ ${ZM_HTTPD_ROOT}/api/app/Console/cake
${ZM_HTTPD_ROOT}/api/app/Console/cake.bat
${ZM_HTTPD_ROOT}/api/app/Console/cake.php
${ZM_HTTPD_ROOT}/api/app/Controller/AppController.php
+${ZM_HTTPD_ROOT}/api/app/Controller/CameraModelsController.php
${ZM_HTTPD_ROOT}/api/app/Controller/Component/ConfigParserComponent.php
${ZM_HTTPD_ROOT}/api/app/Controller/Component/FilterComponent.php
${ZM_HTTPD_ROOT}/api/app/Controller/Component/ImageComponent.php
${ZM_HTTPD_ROOT}/api/app/Controller/Component/ScalerComponent.php
${ZM_HTTPD_ROOT}/api/app/Controller/ConfigsController.php
${ZM_HTTPD_ROOT}/api/app/Controller/ControlsController.php
+${ZM_HTTPD_ROOT}/api/app/Controller/EventDataController.php
${ZM_HTTPD_ROOT}/api/app/Controller/EventsController.php
${ZM_HTTPD_ROOT}/api/app/Controller/FramesController.php
${ZM_HTTPD_ROOT}/api/app/Controller/GroupsController.php
${ZM_HTTPD_ROOT}/api/app/Controller/HostController.php
${ZM_HTTPD_ROOT}/api/app/Controller/LogsController.php
+${ZM_HTTPD_ROOT}/api/app/Controller/ManufacturersController.php
${ZM_HTTPD_ROOT}/api/app/Controller/MonitorsController.php
${ZM_HTTPD_ROOT}/api/app/Controller/PagesController.php
+${ZM_HTTPD_ROOT}/api/app/Controller/RolesController.php
+${ZM_HTTPD_ROOT}/api/app/Controller/ServerStatsController.php
${ZM_HTTPD_ROOT}/api/app/Controller/ServersController.php
+${ZM_HTTPD_ROOT}/api/app/Controller/SnapshotsController.php
${ZM_HTTPD_ROOT}/api/app/Controller/StatesController.php
${ZM_HTTPD_ROOT}/api/app/Controller/StorageController.php
+${ZM_HTTPD_ROOT}/api/app/Controller/TagsController.php
+${ZM_HTTPD_ROOT}/api/app/Controller/UserPreferenceController.php
${ZM_HTTPD_ROOT}/api/app/Controller/UsersController.php
${ZM_HTTPD_ROOT}/api/app/Controller/ZonePresetsController.php
${ZM_HTTPD_ROOT}/api/app/Controller/ZonesController.php
${ZM_HTTPD_ROOT}/api/app/Model/AppModel.php
+${ZM_HTTPD_ROOT}/api/app/Model/CameraModel.php
${ZM_HTTPD_ROOT}/api/app/Model/Config.php
${ZM_HTTPD_ROOT}/api/app/Model/Control.php
${ZM_HTTPD_ROOT}/api/app/Model/Event.php
+${ZM_HTTPD_ROOT}/api/app/Model/EventData.php
${ZM_HTTPD_ROOT}/api/app/Model/Event_Summary.php
${ZM_HTTPD_ROOT}/api/app/Model/Frame.php
${ZM_HTTPD_ROOT}/api/app/Model/Group.php
${ZM_HTTPD_ROOT}/api/app/Model/Host.php
${ZM_HTTPD_ROOT}/api/app/Model/Log.php
+${ZM_HTTPD_ROOT}/api/app/Model/Manufacturer.php
${ZM_HTTPD_ROOT}/api/app/Model/Monitor.php
${ZM_HTTPD_ROOT}/api/app/Model/Monitor_Status.php
+${ZM_HTTPD_ROOT}/api/app/Model/Role.php
+${ZM_HTTPD_ROOT}/api/app/Model/RoleGroupPermission.php
+${ZM_HTTPD_ROOT}/api/app/Model/RoleMonitorPermission.php
${ZM_HTTPD_ROOT}/api/app/Model/Server.php
+${ZM_HTTPD_ROOT}/api/app/Model/ServerStat.php
+${ZM_HTTPD_ROOT}/api/app/Model/Snapshot.php
${ZM_HTTPD_ROOT}/api/app/Model/State.php
${ZM_HTTPD_ROOT}/api/app/Model/Storage.php
+${ZM_HTTPD_ROOT}/api/app/Model/Tag.php
${ZM_HTTPD_ROOT}/api/app/Model/User.php
+${ZM_HTTPD_ROOT}/api/app/Model/UserPreference.php
${ZM_HTTPD_ROOT}/api/app/Model/Zone.php
${ZM_HTTPD_ROOT}/api/app/Model/ZonePreset.php
${ZM_HTTPD_ROOT}/api/app/Plugin/CakePHP-Enum-Behavior/Model/Behavior/EnumBehavior.php
@@ -6557,6 +6697,14 @@ ${ZM_HTTPD_ROOT}/api/app/View/Emails/htm
${ZM_HTTPD_ROOT}/api/app/View/Emails/text/default.ctp
${ZM_HTTPD_ROOT}/api/app/View/Errors/error400.ctp
${ZM_HTTPD_ROOT}/api/app/View/Errors/error500.ctp
+${ZM_HTTPD_ROOT}/api/app/View/EventData/json/add.ctp
+${ZM_HTTPD_ROOT}/api/app/View/EventData/json/edit.ctp
+${ZM_HTTPD_ROOT}/api/app/View/EventData/json/index.ctp
+${ZM_HTTPD_ROOT}/api/app/View/EventData/json/view.ctp
+${ZM_HTTPD_ROOT}/api/app/View/EventData/xml/add.ctp
+${ZM_HTTPD_ROOT}/api/app/View/EventData/xml/edit.ctp
+${ZM_HTTPD_ROOT}/api/app/View/EventData/xml/index.ctp
+${ZM_HTTPD_ROOT}/api/app/View/EventData/xml/view.ctp
${ZM_HTTPD_ROOT}/api/app/View/Events/json/index.ctp
${ZM_HTTPD_ROOT}/api/app/View/Events/json/view.ctp
${ZM_HTTPD_ROOT}/api/app/View/Events/xml/index.ctp
@@ -6582,6 +6730,12 @@ ${ZM_HTTPD_ROOT}/api/app/View/Logs/edit.
${ZM_HTTPD_ROOT}/api/app/View/Logs/index.ctp
${ZM_HTTPD_ROOT}/api/app/View/Logs/json/index.ctp
${ZM_HTTPD_ROOT}/api/app/View/Logs/view.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Manufacturers/json/edit.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Manufacturers/json/index.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Manufacturers/json/view.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Manufacturers/xml/edit.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Manufacturers/xml/index.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Manufacturers/xml/view.ctp
${ZM_HTTPD_ROOT}/api/app/View/Monitors/json/add.ctp
${ZM_HTTPD_ROOT}/api/app/View/Monitors/json/daemon_control.ctp
${ZM_HTTPD_ROOT}/api/app/View/Monitors/json/edit.ctp
@@ -6593,12 +6747,39 @@ ${ZM_HTTPD_ROOT}/api/app/View/Monitors/x
${ZM_HTTPD_ROOT}/api/app/View/Monitors/xml/index.ctp
${ZM_HTTPD_ROOT}/api/app/View/Monitors/xml/view.ctp
${ZM_HTTPD_ROOT}/api/app/View/Pages/home.ctp
+${ZM_HTTPD_ROOT}/api/app/View/ServerStats/json/edit.ctp
+${ZM_HTTPD_ROOT}/api/app/View/ServerStats/json/index.ctp
+${ZM_HTTPD_ROOT}/api/app/View/ServerStats/json/view.ctp
+${ZM_HTTPD_ROOT}/api/app/View/ServerStats/xml/edit.ctp
+${ZM_HTTPD_ROOT}/api/app/View/ServerStats/xml/index.ctp
+${ZM_HTTPD_ROOT}/api/app/View/ServerStats/xml/view.ctp
${ZM_HTTPD_ROOT}/api/app/View/Servers/json/edit.ctp
${ZM_HTTPD_ROOT}/api/app/View/Servers/json/index.ctp
${ZM_HTTPD_ROOT}/api/app/View/Servers/json/view.ctp
${ZM_HTTPD_ROOT}/api/app/View/Servers/xml/edit.ctp
${ZM_HTTPD_ROOT}/api/app/View/Servers/xml/index.ctp
${ZM_HTTPD_ROOT}/api/app/View/Servers/xml/view.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Snapshots/json/add.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Snapshots/json/edit.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Snapshots/json/index.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Snapshots/json/view.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Snapshots/xml/edit.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Snapshots/xml/index.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Snapshots/xml/view.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Tags/json/edit.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Tags/json/index.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Tags/json/view.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Tags/xml/edit.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Tags/xml/index.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Tags/xml/view.ctp
+${ZM_HTTPD_ROOT}/api/app/View/UserPreference/json/add.ctp
+${ZM_HTTPD_ROOT}/api/app/View/UserPreference/json/edit.ctp
+${ZM_HTTPD_ROOT}/api/app/View/UserPreference/json/index.ctp
+${ZM_HTTPD_ROOT}/api/app/View/UserPreference/json/view.ctp
+${ZM_HTTPD_ROOT}/api/app/View/UserPreference/xml/add.ctp
+${ZM_HTTPD_ROOT}/api/app/View/UserPreference/xml/edit.ctp
+${ZM_HTTPD_ROOT}/api/app/View/UserPreference/xml/index.ctp
+${ZM_HTTPD_ROOT}/api/app/View/UserPreference/xml/view.ctp
${ZM_HTTPD_ROOT}/api/app/View/Users/json/add.ctp
${ZM_HTTPD_ROOT}/api/app/View/Users/json/edit.ctp
${ZM_HTTPD_ROOT}/api/app/View/Users/json/index.ctp
@@ -7735,18 +7916,30 @@ ${ZM_HTTPD_ROOT}/graphics/spinner.png
${ZM_HTTPD_ROOT}/graphics/transparent.png
${ZM_HTTPD_ROOT}/includes/Control.php
${ZM_HTTPD_ROOT}/includes/Event.php
+${ZM_HTTPD_ROOT}/includes/Event_Data.php
+${ZM_HTTPD_ROOT}/includes/Event_Tag.php
${ZM_HTTPD_ROOT}/includes/Filter.php
${ZM_HTTPD_ROOT}/includes/FilterTerm.php
${ZM_HTTPD_ROOT}/includes/Frame.php
${ZM_HTTPD_ROOT}/includes/Group.php
${ZM_HTTPD_ROOT}/includes/Group_Monitor.php
+${ZM_HTTPD_ROOT}/includes/Group_Permission.php
+${ZM_HTTPD_ROOT}/includes/Manufacturer.php
+${ZM_HTTPD_ROOT}/includes/Model.php
${ZM_HTTPD_ROOT}/includes/Monitor.php
+${ZM_HTTPD_ROOT}/includes/Monitor_Permission.php
${ZM_HTTPD_ROOT}/includes/MontageLayout.php
${ZM_HTTPD_ROOT}/includes/Object.php
+${ZM_HTTPD_ROOT}/includes/Report.php
+${ZM_HTTPD_ROOT}/includes/Role_Group_Permission.php
+${ZM_HTTPD_ROOT}/includes/Role_Monitor_Permission.php
${ZM_HTTPD_ROOT}/includes/Server.php
${ZM_HTTPD_ROOT}/includes/Snapshot.php
${ZM_HTTPD_ROOT}/includes/Storage.php
+${ZM_HTTPD_ROOT}/includes/Tag.php
${ZM_HTTPD_ROOT}/includes/User.php
+${ZM_HTTPD_ROOT}/includes/User_Preference.php
+${ZM_HTTPD_ROOT}/includes/User_Role.php
${ZM_HTTPD_ROOT}/includes/Zone.php
${ZM_HTTPD_ROOT}/includes/actions/bandwidth.php
${ZM_HTTPD_ROOT}/includes/actions/console.php
@@ -7759,6 +7952,7 @@ ${ZM_HTTPD_ROOT}/includes/actions/donate
${ZM_HTTPD_ROOT}/includes/actions/event.php
${ZM_HTTPD_ROOT}/includes/actions/eventdetail.php
${ZM_HTTPD_ROOT}/includes/actions/events.php
+${ZM_HTTPD_ROOT}/includes/actions/files.php
${ZM_HTTPD_ROOT}/includes/actions/filter.php
${ZM_HTTPD_ROOT}/includes/actions/function.php
${ZM_HTTPD_ROOT}/includes/actions/group.php
@@ -7770,13 +7964,15 @@ ${ZM_HTTPD_ROOT}/includes/actions/monito
${ZM_HTTPD_ROOT}/includes/actions/montage.php
${ZM_HTTPD_ROOT}/includes/actions/options.php
${ZM_HTTPD_ROOT}/includes/actions/privacy.php
+${ZM_HTTPD_ROOT}/includes/actions/report.php
+${ZM_HTTPD_ROOT}/includes/actions/role.php
${ZM_HTTPD_ROOT}/includes/actions/server.php
+${ZM_HTTPD_ROOT}/includes/actions/settings.php
${ZM_HTTPD_ROOT}/includes/actions/snapshot.php
${ZM_HTTPD_ROOT}/includes/actions/state.php
${ZM_HTTPD_ROOT}/includes/actions/storage.php
${ZM_HTTPD_ROOT}/includes/actions/user.php
${ZM_HTTPD_ROOT}/includes/actions/version.php
-${ZM_HTTPD_ROOT}/includes/actions/watch.php
${ZM_HTTPD_ROOT}/includes/actions/zone.php
${ZM_HTTPD_ROOT}/includes/actions/zones.php
${ZM_HTTPD_ROOT}/includes/auth.php
@@ -7788,15 +7984,53 @@ ${ZM_HTTPD_ROOT}/includes/csrf/README.tx
${ZM_HTTPD_ROOT}/includes/csrf/csrf-magic.js
${ZM_HTTPD_ROOT}/includes/csrf/csrf-magic.php
${ZM_HTTPD_ROOT}/includes/database.php
+${ZM_HTTPD_ROOT}/includes/download_functions.php
${ZM_HTTPD_ROOT}/includes/functions.php
${ZM_HTTPD_ROOT}/includes/lang.php
${ZM_HTTPD_ROOT}/includes/logger.php
+${ZM_HTTPD_ROOT}/includes/monitor_probe.php
${ZM_HTTPD_ROOT}/includes/session.php
${ZM_HTTPD_ROOT}/index.php
+${ZM_HTTPD_ROOT}/js/Map.js
+${ZM_HTTPD_ROOT}/js/MonitorLinkExpression.js
${ZM_HTTPD_ROOT}/js/MonitorStream.js
${ZM_HTTPD_ROOT}/js/Server.js
+${ZM_HTTPD_ROOT}/js/adapter.min.js
${ZM_HTTPD_ROOT}/js/ajaxQueue.js
+${ZM_HTTPD_ROOT}/js/dms.js
+${ZM_HTTPD_ROOT}/js/dms.js.URL
+${ZM_HTTPD_ROOT}/js/fontfaceobserver.standalone.js
+${ZM_HTTPD_ROOT}/js/hls-1.6.13/hls-demo.js
+${ZM_HTTPD_ROOT}/js/hls-1.6.13/hls-demo.js.map
+${ZM_HTTPD_ROOT}/js/hls-1.6.13/hls.d.mts
+${ZM_HTTPD_ROOT}/js/hls-1.6.13/hls.d.ts
+${ZM_HTTPD_ROOT}/js/hls-1.6.13/hls.js
+${ZM_HTTPD_ROOT}/js/hls-1.6.13/hls.js.d.ts
+${ZM_HTTPD_ROOT}/js/hls-1.6.13/hls.js.map
+${ZM_HTTPD_ROOT}/js/hls-1.6.13/hls.light.js
+${ZM_HTTPD_ROOT}/js/hls-1.6.13/hls.light.js.map
+${ZM_HTTPD_ROOT}/js/hls-1.6.13/hls.light.min.js
+${ZM_HTTPD_ROOT}/js/hls-1.6.13/hls.light.min.js.map
+${ZM_HTTPD_ROOT}/js/hls-1.6.13/hls.light.mjs
+${ZM_HTTPD_ROOT}/js/hls-1.6.13/hls.light.mjs.map
+${ZM_HTTPD_ROOT}/js/hls-1.6.13/hls.min.js
+${ZM_HTTPD_ROOT}/js/hls-1.6.13/hls.min.js.map
+${ZM_HTTPD_ROOT}/js/hls-1.6.13/hls.mjs
+${ZM_HTTPD_ROOT}/js/hls-1.6.13/hls.mjs.map
+${ZM_HTTPD_ROOT}/js/hls-1.6.13/hls.worker.js
+${ZM_HTTPD_ROOT}/js/hls-1.6.13/hls.worker.js.map
${ZM_HTTPD_ROOT}/js/logger.js
+${ZM_HTTPD_ROOT}/js/noUiSlider-15.8.1/README.md
+${ZM_HTTPD_ROOT}/js/noUiSlider-15.8.1/dist/nouislider.css
+${ZM_HTTPD_ROOT}/js/noUiSlider-15.8.1/dist/nouislider.d.ts
+${ZM_HTTPD_ROOT}/js/noUiSlider-15.8.1/dist/nouislider.js
+${ZM_HTTPD_ROOT}/js/noUiSlider-15.8.1/dist/nouislider.min.css
+${ZM_HTTPD_ROOT}/js/noUiSlider-15.8.1/dist/nouislider.min.js
+${ZM_HTTPD_ROOT}/js/noUiSlider-15.8.1/dist/nouislider.min.mjs
+${ZM_HTTPD_ROOT}/js/noUiSlider-15.8.1/dist/nouislider.mjs
+${ZM_HTTPD_ROOT}/js/panzoom.js
+${ZM_HTTPD_ROOT}/js/video-rtc.js
+${ZM_HTTPD_ROOT}/js/video-stream.js
${ZM_HTTPD_ROOT}/js/videojs.zoomrotate.js
${ZM_HTTPD_ROOT}/lang/ba_ba.php
${ZM_HTTPD_ROOT}/lang/big5_big5.php
@@ -7808,6 +8042,7 @@ ${ZM_HTTPD_ROOT}/lang/en_gb.php
${ZM_HTTPD_ROOT}/lang/en_us.php
${ZM_HTTPD_ROOT}/lang/es_ar.php
${ZM_HTTPD_ROOT}/lang/es_es.php
+${ZM_HTTPD_ROOT}/lang/es_la.php
${ZM_HTTPD_ROOT}/lang/et_ee.php
${ZM_HTTPD_ROOT}/lang/fr_fr.php
${ZM_HTTPD_ROOT}/lang/he_il.php
@@ -7815,18 +8050,354 @@ ${ZM_HTTPD_ROOT}/lang/hu_hu.php
${ZM_HTTPD_ROOT}/lang/it_it.php
${ZM_HTTPD_ROOT}/lang/ja_jp.php
${ZM_HTTPD_ROOT}/lang/nl_nl.php
+${ZM_HTTPD_ROOT}/lang/no_nb.php
${ZM_HTTPD_ROOT}/lang/pl_pl.php
${ZM_HTTPD_ROOT}/lang/pt_br.php
${ZM_HTTPD_ROOT}/lang/ro_ro.php
${ZM_HTTPD_ROOT}/lang/ru_ru.php
${ZM_HTTPD_ROOT}/lang/se_se.php
+${ZM_HTTPD_ROOT}/lang/tr_tr.php
${ZM_HTTPD_ROOT}/lang/updateLangs.php
${ZM_HTTPD_ROOT}/lang/zh_cn.php
${ZM_HTTPD_ROOT}/lang/zh_tw.php
${ZM_HTTPD_ROOT}/robots.txt
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/bootstrap-table-locale-all.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/bootstrap-table-locale-all.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/bootstrap-table-vue.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/bootstrap-table-vue.umd.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/bootstrap-table.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/bootstrap-table.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/bootstrap-table.min.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/bootstrap-table.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/addrbar/bootstrap-table-addrbar.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/addrbar/bootstrap-table-addrbar.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/auto-refresh/bootstrap-table-auto-refresh.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/auto-refresh/bootstrap-table-auto-refresh.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/cookie/bootstrap-table-cookie.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/cookie/bootstrap-table-cookie.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/copy-rows/bootstrap-table-copy-rows.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/copy-rows/bootstrap-table-copy-rows.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/custom-view/bootstrap-table-custom-view.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/custom-view/bootstrap-table-custom-view.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/defer-url/bootstrap-table-defer-url.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/defer-url/bootstrap-table-defer-url.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/editable/bootstrap-table-editable.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/editable/bootstrap-table-editable.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/export/bootstrap-table-export.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/export/bootstrap-table-export.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/filter-control/bootstrap-table-filter-control.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/filter-control/bootstrap-table-filter-control.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/filter-control/bootstrap-table-filter-control.min.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/filter-control/bootstrap-table-filter-control.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/filter-control/utils.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/filter-control/utils.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/fixed-columns/bootstrap-table-fixed-columns.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/fixed-columns/bootstrap-table-fixed-columns.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/fixed-columns/bootstrap-table-fixed-columns.min.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/fixed-columns/bootstrap-table-fixed-columns.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/group-by-v2/bootstrap-table-group-by.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/group-by-v2/bootstrap-table-group-by.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/group-by-v2/bootstrap-table-group-by.min.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/group-by-v2/bootstrap-table-group-by.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/i18n-enhance/bootstrap-table-i18n-enhance.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/i18n-enhance/bootstrap-table-i18n-enhance.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/key-events/bootstrap-table-key-events.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/key-events/bootstrap-table-key-events.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/mobile/bootstrap-table-mobile.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/mobile/bootstrap-table-mobile.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/multiple-sort/bootstrap-table-multiple-sort.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/multiple-sort/bootstrap-table-multiple-sort.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/page-jump-to/bootstrap-table-page-jump-to.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/page-jump-to/bootstrap-table-page-jump-to.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/page-jump-to/bootstrap-table-page-jump-to.min.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/page-jump-to/bootstrap-table-page-jump-to.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/pipeline/bootstrap-table-pipeline.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/pipeline/bootstrap-table-pipeline.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/print/bootstrap-table-print.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/print/bootstrap-table-print.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/reorder-columns/bootstrap-table-reorder-columns.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/reorder-columns/bootstrap-table-reorder-columns.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/reorder-rows/bootstrap-table-reorder-rows.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/reorder-rows/bootstrap-table-reorder-rows.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/reorder-rows/bootstrap-table-reorder-rows.min.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/reorder-rows/bootstrap-table-reorder-rows.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/resizable/bootstrap-table-resizable.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/resizable/bootstrap-table-resizable.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/sticky-header/bootstrap-table-sticky-header.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/sticky-header/bootstrap-table-sticky-header.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/sticky-header/bootstrap-table-sticky-header.min.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/sticky-header/bootstrap-table-sticky-header.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/toolbar/bootstrap-table-toolbar.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/toolbar/bootstrap-table-toolbar.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/treegrid/bootstrap-table-treegrid.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/extensions/treegrid/bootstrap-table-treegrid.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-af-ZA.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-af-ZA.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-ar-SA.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-ar-SA.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-bg-BG.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-bg-BG.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-ca-ES.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-ca-ES.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-cs-CZ.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-cs-CZ.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-da-DK.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-da-DK.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-de-DE.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-de-DE.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-el-GR.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-el-GR.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-en-US.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-en-US.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-es-AR.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-es-AR.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-es-CL.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-es-CL.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-es-CR.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-es-CR.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-es-ES.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-es-ES.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-es-MX.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-es-MX.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-es-NI.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-es-NI.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-es-SP.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-es-SP.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-et-EE.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-et-EE.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-eu-EU.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-eu-EU.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-fa-IR.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-fa-IR.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-fi-FI.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-fi-FI.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-fr-BE.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-fr-BE.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-fr-CH.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-fr-CH.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-fr-FR.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-fr-FR.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-fr-LU.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-fr-LU.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-he-IL.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-he-IL.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-hi-IN.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-hi-IN.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-hr-HR.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-hr-HR.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-hu-HU.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-hu-HU.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-id-ID.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-id-ID.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-it-IT.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-it-IT.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-ja-JP.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-ja-JP.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-ka-GE.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-ka-GE.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-ko-KR.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-ko-KR.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-lb-LU.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-lb-LU.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-lt-LT.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-lt-LT.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-ms-MY.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-ms-MY.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-nb-NO.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-nb-NO.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-nl-BE.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-nl-BE.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-nl-NL.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-nl-NL.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-pl-PL.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-pl-PL.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-pt-BR.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-pt-BR.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-pt-PT.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-pt-PT.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-ro-RO.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-ro-RO.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-ru-RU.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-ru-RU.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-sk-SK.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-sk-SK.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-sl-SI.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-sl-SI.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-sr-Cyrl-RS.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-sr-Cyrl-RS.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-sr-Latn-RS.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-sr-Latn-RS.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-sv-SE.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-sv-SE.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-th-TH.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-th-TH.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-tr-TR.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-tr-TR.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-uk-UA.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-uk-UA.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-ur-PK.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-ur-PK.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-uz-Latn-UZ.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-uz-Latn-UZ.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-vi-VN.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-vi-VN.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-zh-CN.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-zh-CN.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-zh-TW.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/locale/bootstrap-table-zh-TW.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/bootstrap-table/bootstrap-table.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/bootstrap-table/bootstrap-table.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/bootstrap-table/bootstrap-table.min.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/bootstrap-table/bootstrap-table.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/bootstrap-table/fonts/bootstrap-table.eot
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/bootstrap-table/fonts/bootstrap-table.svg
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/bootstrap-table/fonts/bootstrap-table.ttf
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/bootstrap-table/fonts/bootstrap-table.woff
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/bulma/bootstrap-table-bulma.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/bulma/bootstrap-table-bulma.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/bulma/bootstrap-table-bulma.min.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/bulma/bootstrap-table-bulma.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/foundation/bootstrap-table-foundation.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/foundation/bootstrap-table-foundation.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/foundation/bootstrap-table-foundation.min.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/foundation/bootstrap-table-foundation.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/materialize/bootstrap-table-materialize.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/materialize/bootstrap-table-materialize.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/materialize/bootstrap-table-materialize.min.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/materialize/bootstrap-table-materialize.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/semantic/bootstrap-table-semantic.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/semantic/bootstrap-table-semantic.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/semantic/bootstrap-table-semantic.min.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/bootstrap-table-1.24.1/themes/semantic/bootstrap-table-semantic.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-base-impl.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-base-impl.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-base-impl.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-draggable.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-draggable.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-draggable.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-droppable.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-droppable.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-droppable.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-element.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-element.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-element.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-gridstack.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-gridstack.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-gridstack.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-manager.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-manager.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-manager.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-resizable-handle.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-resizable-handle.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-resizable-handle.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-resizable.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-resizable.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-resizable.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-touch.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-touch.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/dd-touch.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/gridstack-all.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/gridstack-all.js.LICENSE.txt
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/gridstack-all.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/gridstack-engine.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/gridstack-engine.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/gridstack-engine.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/gridstack.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/gridstack.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/gridstack.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/gridstack.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/gridstack.min.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-base-impl.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-base-impl.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-base-impl.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-draggable.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-draggable.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-draggable.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-droppable.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-droppable.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-droppable.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-element.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-element.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-element.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-gridstack.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-gridstack.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-gridstack.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-manager.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-manager.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-manager.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-resizable-handle.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-resizable-handle.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-resizable-handle.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-resizable.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-resizable.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-resizable.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-touch.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-touch.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/dd-touch.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/gridstack-engine.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/gridstack-engine.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/gridstack-engine.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/gridstack.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/gridstack.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/gridstack.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/gridstack.scss
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/types.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/types.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/types.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/utils.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/utils.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/src/utils.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/types.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/types.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/types.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/utils.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/utils.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/utils.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/vitest.config.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/vitest.config.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/vitest.config.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/vitest.setup.d.ts
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/vitest.setup.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/gridstack-12.3.3/dist/vitest.setup.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/jquery.panzoom/dist/jquery.panzoom.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/jquery.panzoom/dist/jquery.panzoom.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/mb.extruder/inc/mbExtruder.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/LICENSE
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/README.md
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/READ_ME_BEFORE_EDIT
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/assets/images/sidebar-bg.jpg
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/build.sh
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/dist/main.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/dist/main.css.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/dist/main.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/dist/main.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/dist_dev/main.css
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/dist_dev/main.css.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/dist_dev/main.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/dist_dev/main.js.map
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/postcss.config.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/src/index.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/src/libs/constants.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/src/libs/popper.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/src/libs/poppers.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/src/libs/slide.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/src/styles/_layout.scss
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/src/styles/_menu.scss
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/src/styles/_sidebar.scss
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/src/styles/_variables.scss
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/src/styles/css-pro-layout.scss
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/src/styles/styles.scss
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/src/styles/variables_css-pro-layout.scss
+${ZM_HTTPD_ROOT}/skins/classic/assets/pro-sidebar-template/webpack.config.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/swiped-events/dist/swiped-events.min.js
+${ZM_HTTPD_ROOT}/skins/classic/assets/version
${ZM_HTTPD_ROOT}/skins/classic/css/base/export.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/material-icons.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/sidebar.css
${ZM_HTTPD_ROOT}/skins/classic/css/base/skin.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/add_monitors.css
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/console.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/console.css.php
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/control.css
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/controlcap.css
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/controlcaps.css
@@ -7836,13 +8407,16 @@ ${ZM_HTTPD_ROOT}/skins/classic/css/base/
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/event.css
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/events.css
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/export.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/files.css
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/filter.css
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/frame.css
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/frames.css
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/groups.css
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/log.css
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/login.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/map.css
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/monitor.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/monitors.css
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/montage.css
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/montage_2wide.css
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/montage_3wide.css
@@ -7854,6 +8428,7 @@ ${ZM_HTTPD_ROOT}/skins/classic/css/base/
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/plugin.css
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/privacy.css
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/report_event_audit.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/reports.css
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/server.css
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/settings.css
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/snapshot.css
@@ -7867,6 +8442,7 @@ ${ZM_HTTPD_ROOT}/skins/classic/css/base/
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/watch.css
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/zone.css
${ZM_HTTPD_ROOT}/skins/classic/css/base/views/zones.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/zones.css
${ZM_HTTPD_ROOT}/skins/classic/css/classic/export.css
${ZM_HTTPD_ROOT}/skins/classic/css/classic/skin.css
${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/console.css
@@ -7948,6 +8524,9 @@ ${ZM_HTTPD_ROOT}/skins/classic/graphics/
${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-ul.png
${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-ur.png
${ZM_HTTPD_ROOT}/skins/classic/graphics/center.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/icon-connected.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/icon-disconnected.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/icon-error.png
${ZM_HTTPD_ROOT}/skins/classic/graphics/point-g.png
${ZM_HTTPD_ROOT}/skins/classic/graphics/point-o.png
${ZM_HTTPD_ROOT}/skins/classic/graphics/point-r.png
@@ -7964,224 +8543,12 @@ ${ZM_HTTPD_ROOT}/skins/classic/includes/
${ZM_HTTPD_ROOT}/skins/classic/includes/export_functions.php
${ZM_HTTPD_ROOT}/skins/classic/includes/functions.php
${ZM_HTTPD_ROOT}/skins/classic/includes/timeline_functions.php
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/bootstrap-table-locale-all.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/bootstrap-table-locale-all.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/bootstrap-table-vue.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/bootstrap-table-vue.umd.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/bootstrap-table.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/bootstrap-table.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/bootstrap-table.min.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/bootstrap-table.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/addrbar/bootstrap-table-addrbar.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/addrbar/bootstrap-table-addrbar.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/auto-refresh/bootstrap-table-auto-refresh.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/auto-refresh/bootstrap-table-auto-refresh.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/cookie/bootstrap-table-cookie.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/cookie/bootstrap-table-cookie.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/copy-rows/bootstrap-table-copy-rows.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/copy-rows/bootstrap-table-copy-rows.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/custom-view/bootstrap-table-custom-view.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/custom-view/bootstrap-table-custom-view.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/defer-url/bootstrap-table-defer-url.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/defer-url/bootstrap-table-defer-url.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/editable/bootstrap-table-editable.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/editable/bootstrap-table-editable.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/export/bootstrap-table-export.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/export/bootstrap-table-export.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/filter-control/bootstrap-table-filter-control.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/filter-control/bootstrap-table-filter-control.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/filter-control/bootstrap-table-filter-control.min.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/filter-control/bootstrap-table-filter-control.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/filter-control/utils.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/filter-control/utils.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/fixed-columns/bootstrap-table-fixed-columns.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/fixed-columns/bootstrap-table-fixed-columns.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/fixed-columns/bootstrap-table-fixed-columns.min.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/fixed-columns/bootstrap-table-fixed-columns.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/group-by-v2/bootstrap-table-group-by.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/group-by-v2/bootstrap-table-group-by.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/group-by-v2/bootstrap-table-group-by.min.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/group-by-v2/bootstrap-table-group-by.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/i18n-enhance/bootstrap-table-i18n-enhance.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/i18n-enhance/bootstrap-table-i18n-enhance.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/key-events/bootstrap-table-key-events.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/key-events/bootstrap-table-key-events.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/mobile/bootstrap-table-mobile.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/mobile/bootstrap-table-mobile.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/multiple-sort/bootstrap-table-multiple-sort.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/multiple-sort/bootstrap-table-multiple-sort.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/page-jump-to/bootstrap-table-page-jump-to.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/page-jump-to/bootstrap-table-page-jump-to.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/page-jump-to/bootstrap-table-page-jump-to.min.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/page-jump-to/bootstrap-table-page-jump-to.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/pipeline/bootstrap-table-pipeline.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/pipeline/bootstrap-table-pipeline.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/print/bootstrap-table-print.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/print/bootstrap-table-print.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/reorder-columns/bootstrap-table-reorder-columns.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/reorder-columns/bootstrap-table-reorder-columns.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/reorder-rows/bootstrap-table-reorder-rows.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/reorder-rows/bootstrap-table-reorder-rows.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/reorder-rows/bootstrap-table-reorder-rows.min.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/reorder-rows/bootstrap-table-reorder-rows.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/resizable/bootstrap-table-resizable.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/resizable/bootstrap-table-resizable.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/sticky-header/bootstrap-table-sticky-header.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/sticky-header/bootstrap-table-sticky-header.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/sticky-header/bootstrap-table-sticky-header.min.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/sticky-header/bootstrap-table-sticky-header.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/toolbar/bootstrap-table-toolbar.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/toolbar/bootstrap-table-toolbar.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/treegrid/bootstrap-table-treegrid.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/extensions/treegrid/bootstrap-table-treegrid.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-af-ZA.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-af-ZA.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-ar-SA.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-ar-SA.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-bg-BG.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-bg-BG.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-ca-ES.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-ca-ES.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-cs-CZ.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-cs-CZ.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-da-DK.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-da-DK.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-de-DE.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-de-DE.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-el-GR.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-el-GR.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-en-US.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-en-US.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-es-AR.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-es-AR.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-es-CL.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-es-CL.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-es-CR.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-es-CR.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-es-ES.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-es-ES.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-es-MX.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-es-MX.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-es-NI.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-es-NI.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-es-SP.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-es-SP.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-et-EE.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-et-EE.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-eu-EU.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-eu-EU.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-fa-IR.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-fa-IR.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-fi-FI.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-fi-FI.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-fr-BE.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-fr-BE.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-fr-CH.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-fr-CH.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-fr-FR.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-fr-FR.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-fr-LU.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-fr-LU.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-he-IL.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-he-IL.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-hi-IN.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-hi-IN.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-hr-HR.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-hr-HR.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-hu-HU.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-hu-HU.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-id-ID.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-id-ID.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-it-IT.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-it-IT.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-ja-JP.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-ja-JP.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-ka-GE.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-ka-GE.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-ko-KR.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-ko-KR.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-lb-LU.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-lb-LU.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-ms-MY.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-ms-MY.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-nb-NO.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-nb-NO.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-nl-BE.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-nl-BE.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-nl-NL.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-nl-NL.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-pl-PL.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-pl-PL.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-pt-BR.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-pt-BR.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-pt-PT.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-pt-PT.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-ro-RO.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-ro-RO.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-ru-RU.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-ru-RU.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-sk-SK.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-sk-SK.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-sl-SI.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-sl-SI.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-sr-Cyrl-RS.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-sr-Cyrl-RS.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-sr-Latn-RS.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-sr-Latn-RS.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-sv-SE.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-sv-SE.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-th-TH.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-th-TH.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-tr-TR.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-tr-TR.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-uk-UA.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-uk-UA.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-ur-PK.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-ur-PK.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-uz-Latn-UZ.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-uz-Latn-UZ.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-vi-VN.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-vi-VN.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-zh-CN.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-zh-CN.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-zh-TW.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/locale/bootstrap-table-zh-TW.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/bootstrap-table/bootstrap-table.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/bootstrap-table/bootstrap-table.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/bootstrap-table/bootstrap-table.min.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/bootstrap-table/bootstrap-table.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/bootstrap-table/fonts/bootstrap-table.eot
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/bootstrap-table/fonts/bootstrap-table.svg
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/bootstrap-table/fonts/bootstrap-table.ttf
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/bootstrap-table/fonts/bootstrap-table.woff
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/bulma/bootstrap-table-bulma.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/bulma/bootstrap-table-bulma.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/bulma/bootstrap-table-bulma.min.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/bulma/bootstrap-table-bulma.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/foundation/bootstrap-table-foundation.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/foundation/bootstrap-table-foundation.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/foundation/bootstrap-table-foundation.min.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/foundation/bootstrap-table-foundation.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/materialize/bootstrap-table-materialize.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/materialize/bootstrap-table-materialize.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/materialize/bootstrap-table-materialize.min.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/materialize/bootstrap-table-materialize.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/semantic/bootstrap-table-semantic.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/semantic/bootstrap-table-semantic.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/semantic/bootstrap-table-semantic.min.css
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-1.23.5/themes/semantic/bootstrap-table-semantic.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-auto-refresh.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-cookie.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-export.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-locale-all.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-page-jump-to.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-toolbar.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table.min.js
+${ZM_HTTPD_ROOT}/skins/classic/js/Chart.min.js
+${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-4.5.0.js
+${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-4.5.0.min.js
${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap.bundle.js.map
${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap.bundle.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap.js
${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap.js.URL
-${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap.min.js
${ZM_HTTPD_ROOT}/skins/classic/js/chosen/chosen-sprite.png
${ZM_HTTPD_ROOT}/skins/classic/js/chosen/chosen-sprite%2x.png@localhost
${ZM_HTTPD_ROOT}/skins/classic/js/chosen/chosen.css
@@ -8190,11 +8557,12 @@ ${ZM_HTTPD_ROOT}/skins/classic/js/chosen
${ZM_HTTPD_ROOT}/skins/classic/js/chosen/chosen.min.css
${ZM_HTTPD_ROOT}/skins/classic/js/dateTimePicker/jquery-ui-timepicker-addon.css
${ZM_HTTPD_ROOT}/skins/classic/js/dateTimePicker/jquery-ui-timepicker-addon.js
+${ZM_HTTPD_ROOT}/skins/classic/js/export.js
${ZM_HTTPD_ROOT}/skins/classic/js/font/vjs.eot
${ZM_HTTPD_ROOT}/skins/classic/js/font/vjs.ttf
${ZM_HTTPD_ROOT}/skins/classic/js/font/vjs.woff
-${ZM_HTTPD_ROOT}/skins/classic/js/jquery-3.6.1.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/jquery-3.6.1.min.map
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery-3.7.1.min.js
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery-3.7.1.min.map
${ZM_HTTPD_ROOT}/skins/classic/js/jquery-ui-1.13.2/AUTHORS.txt
${ZM_HTTPD_ROOT}/skins/classic/js/jquery-ui-1.13.2/LICENSE.txt
${ZM_HTTPD_ROOT}/skins/classic/js/jquery-ui-1.13.2/external/jquery/jquery.js
@@ -8216,34 +8584,43 @@ ${ZM_HTTPD_ROOT}/skins/classic/js/jquery
${ZM_HTTPD_ROOT}/skins/classic/js/jquery-ui-1.13.2/package.json
${ZM_HTTPD_ROOT}/skins/classic/js/jquery.min.js
${ZM_HTTPD_ROOT}/skins/classic/js/jquery.min.js.URL
+${ZM_HTTPD_ROOT}/skins/classic/js/luxon-3.4.4.min.js
${ZM_HTTPD_ROOT}/skins/classic/js/moment.js
${ZM_HTTPD_ROOT}/skins/classic/js/moment.js.URL
${ZM_HTTPD_ROOT}/skins/classic/js/moment.min.js
+${ZM_HTTPD_ROOT}/skins/classic/js/montage_common.js
+${ZM_HTTPD_ROOT}/skins/classic/js/qrcode.min.js
+${ZM_HTTPD_ROOT}/skins/classic/js/qrcode.min.js.URL
${ZM_HTTPD_ROOT}/skins/classic/js/skin.js
${ZM_HTTPD_ROOT}/skins/classic/js/skin.js.php
${ZM_HTTPD_ROOT}/skins/classic/js/tableExport.min.js
-${ZM_HTTPD_ROOT}/skins/classic/js/video-js-skin.css
${ZM_HTTPD_ROOT}/skins/classic/js/video-js.css
${ZM_HTTPD_ROOT}/skins/classic/js/video-js.css.URL
-${ZM_HTTPD_ROOT}/skins/classic/js/video.js
${ZM_HTTPD_ROOT}/skins/classic/js/video.js.URL
${ZM_HTTPD_ROOT}/skins/classic/js/video.min.js
${ZM_HTTPD_ROOT}/skins/classic/skin.php
${ZM_HTTPD_ROOT}/skins/classic/views/_monitor_filters.php
${ZM_HTTPD_ROOT}/skins/classic/views/_monitor_source_nvsocket.php
+${ZM_HTTPD_ROOT}/skins/classic/views/_options_api.php
+${ZM_HTTPD_ROOT}/skins/classic/views/_options_controlcaps.php
+${ZM_HTTPD_ROOT}/skins/classic/views/_options_dnsmasq.php
+${ZM_HTTPD_ROOT}/skins/classic/views/_options_roles.php
+${ZM_HTTPD_ROOT}/skins/classic/views/_options_servers.php
+${ZM_HTTPD_ROOT}/skins/classic/views/_options_storage.php
+${ZM_HTTPD_ROOT}/skins/classic/views/_options_users.php
${ZM_HTTPD_ROOT}/skins/classic/views/add_monitors.php
${ZM_HTTPD_ROOT}/skins/classic/views/bandwidth.php
${ZM_HTTPD_ROOT}/skins/classic/views/blank.php
${ZM_HTTPD_ROOT}/skins/classic/views/console.php
${ZM_HTTPD_ROOT}/skins/classic/views/control.php
${ZM_HTTPD_ROOT}/skins/classic/views/controlcap.php
-${ZM_HTTPD_ROOT}/skins/classic/views/controlcaps.php
${ZM_HTTPD_ROOT}/skins/classic/views/cycle.php
${ZM_HTTPD_ROOT}/skins/classic/views/devices.php
${ZM_HTTPD_ROOT}/skins/classic/views/error.php
${ZM_HTTPD_ROOT}/skins/classic/views/event.php
${ZM_HTTPD_ROOT}/skins/classic/views/events.php
${ZM_HTTPD_ROOT}/skins/classic/views/export.php
+${ZM_HTTPD_ROOT}/skins/classic/views/files.php
${ZM_HTTPD_ROOT}/skins/classic/views/filter.php
${ZM_HTTPD_ROOT}/skins/classic/views/frame.php
${ZM_HTTPD_ROOT}/skins/classic/views/frames.php
@@ -8263,6 +8640,7 @@ ${ZM_HTTPD_ROOT}/skins/classic/views/js/
${ZM_HTTPD_ROOT}/skins/classic/views/js/events.js.php
${ZM_HTTPD_ROOT}/skins/classic/views/js/export.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/export.js.php
+${ZM_HTTPD_ROOT}/skins/classic/views/js/files.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/filter.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/filter.js.php
${ZM_HTTPD_ROOT}/skins/classic/views/js/frame.js
@@ -8273,6 +8651,7 @@ ${ZM_HTTPD_ROOT}/skins/classic/views/js/
${ZM_HTTPD_ROOT}/skins/classic/views/js/log.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/login.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/login.js.php
+${ZM_HTTPD_ROOT}/skins/classic/views/js/map.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/monitor.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/monitor.js.php
${ZM_HTTPD_ROOT}/skins/classic/views/js/monitorpreset.js
@@ -8287,7 +8666,9 @@ ${ZM_HTTPD_ROOT}/skins/classic/views/js/
${ZM_HTTPD_ROOT}/skins/classic/views/js/plugin.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/postlogin.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/postlogin.js.php
+${ZM_HTTPD_ROOT}/skins/classic/views/js/report.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/report_event_audit.js
+${ZM_HTTPD_ROOT}/skins/classic/views/js/reports.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/server.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/snapshot.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/snapshot.js.php
@@ -8298,6 +8679,7 @@ ${ZM_HTTPD_ROOT}/skins/classic/views/js/
${ZM_HTTPD_ROOT}/skins/classic/views/js/timeline.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/timeline.js.php
${ZM_HTTPD_ROOT}/skins/classic/views/js/user.js
+${ZM_HTTPD_ROOT}/skins/classic/views/js/user.js.php
${ZM_HTTPD_ROOT}/skins/classic/views/js/video.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/video.js.php
${ZM_HTTPD_ROOT}/skins/classic/views/js/watch.js
@@ -8308,6 +8690,7 @@ ${ZM_HTTPD_ROOT}/skins/classic/views/js/
${ZM_HTTPD_ROOT}/skins/classic/views/js/zones.js.php
${ZM_HTTPD_ROOT}/skins/classic/views/log.php
${ZM_HTTPD_ROOT}/skins/classic/views/login.php
+${ZM_HTTPD_ROOT}/skins/classic/views/map.php
${ZM_HTTPD_ROOT}/skins/classic/views/monitor.php
${ZM_HTTPD_ROOT}/skins/classic/views/monitorpreset.php
${ZM_HTTPD_ROOT}/skins/classic/views/monitorprobe.php
@@ -8321,7 +8704,10 @@ ${ZM_HTTPD_ROOT}/skins/classic/views/opt
${ZM_HTTPD_ROOT}/skins/classic/views/plugin.php
${ZM_HTTPD_ROOT}/skins/classic/views/postlogin.php
${ZM_HTTPD_ROOT}/skins/classic/views/privacy.php
+${ZM_HTTPD_ROOT}/skins/classic/views/report.php
${ZM_HTTPD_ROOT}/skins/classic/views/report_event_audit.php
+${ZM_HTTPD_ROOT}/skins/classic/views/reports.php
+${ZM_HTTPD_ROOT}/skins/classic/views/role.php
${ZM_HTTPD_ROOT}/skins/classic/views/snapshot.php
${ZM_HTTPD_ROOT}/skins/classic/views/snapshots.php
${ZM_HTTPD_ROOT}/skins/classic/views/stats.php
@@ -8332,6 +8718,7 @@ ${ZM_HTTPD_ROOT}/skins/classic/views/vid
${ZM_HTTPD_ROOT}/skins/classic/views/watch.php
${ZM_HTTPD_ROOT}/skins/classic/views/zone.php
${ZM_HTTPD_ROOT}/skins/classic/views/zones.php
+${ZM_HTTPD_ROOT}/sounds/snap.ogg
${ZM_HTTPD_ROOT}/vendor/autoload.php
${ZM_HTTPD_ROOT}/vendor/composer/ClassLoader.php
${ZM_HTTPD_ROOT}/vendor/composer/LICENSE
@@ -8354,6 +8741,7 @@ ${ZM_HTTPD_ROOT}/vendor/ircmaxell/passwo
${ZM_HTTPD_ROOT}/vendor/ircmaxell/password-compat/lib/password.php
${ZM_HTTPD_ROOT}/vendor/ircmaxell/password-compat/version-test.php
${ZM_HTTPD_ROOT}/views/archive.php
+${ZM_HTTPD_ROOT}/views/download.php
${ZM_HTTPD_ROOT}/views/image.php
${ZM_HTTPD_ROOT}/views/no_database_connection.php
${ZM_HTTPD_ROOT}/views/view_video.php
Index: pkgsrc/security/zoneminder/distinfo
diff -u pkgsrc/security/zoneminder/distinfo:1.28 pkgsrc/security/zoneminder/distinfo:1.29
--- pkgsrc/security/zoneminder/distinfo:1.28 Wed Jan 7 01:03:59 2026
+++ pkgsrc/security/zoneminder/distinfo Thu Jul 30 12:35:59 2026
@@ -1,36 +1,29 @@
-$NetBSD: distinfo,v 1.28 2026/01/07 01:03:59 gdt Exp $
+$NetBSD: distinfo,v 1.29 2026/07/30 12:35:59 gdt Exp $
BLAKE2s (FriendsOfCake-crud-14292374ccf1328f2d5db20897bd06f99ba4d938.tar.gz) = 8877bf6718ecfe3cba2515629418fe5addc60cf8ce4650526b39db6a234922ad
SHA512 (FriendsOfCake-crud-14292374ccf1328f2d5db20897bd06f99ba4d938.tar.gz) =
da58528686baf05385ad08079f965bce10eba6d599133ab773e9ab1f9e4b7d82cf5431b4b773317b90effb16e0b026a029bdfabe08a9ef1a5e9b94e7a1c2ea9e
Size (FriendsOfCake-crud-14292374ccf1328f2d5db20897bd06f99ba4d938.tar.gz) = 73086 bytes
-BLAKE2s (ZoneMinder-1.36.37.10-5ca31d88f7069ec4a4cc758e7ea05353573d3304.tar.gz) = a5431be1e59cc1e8cf9d723fe83d4e9c7aa6a7e5aa294bdb375b9877d8162b01
-SHA512 (ZoneMinder-1.36.37.10-5ca31d88f7069ec4a4cc758e7ea05353573d3304.tar.gz) =
aaff4529a54cf9b2d60932d768faf7c75570b0c7bfa59326b448f436f635be0d35474c72fed59ac789c6d618307190ba747d534fda037edbd5c3a5d31c2f2bee
-Size (ZoneMinder-1.36.37.10-5ca31d88f7069ec4a4cc758e7ea05353573d3304.tar.gz) = 13974266 bytes
+BLAKE2s (ZoneMinder-1.38.3.tar.gz) = a5eb9cc1483461dbe920b4534c0f2620f885e2b368e343a7a342133db138c43e
+SHA512 (ZoneMinder-1.38.3.tar.gz) = f68d80dca9ac45b8c5114f6438e3b3e5744074a5589e15b494f70f88ded030e79e884d2654e680e51c224c4b8e204a00e5a6303fbed5dcb8e8ec87b75e9cfa5a
+Size (ZoneMinder-1.38.3.tar.gz) = 25321086 bytes
BLAKE2s (ZoneMinder-CakePHP-Enum-Behavior-ea90c0cd7f6e24333a90885e563b5d30b793db29.tar.gz) = 4639184438becb1c33450a00e213fca9d11e92b7f2545fb701f40a664c716764
SHA512 (ZoneMinder-CakePHP-Enum-Behavior-ea90c0cd7f6e24333a90885e563b5d30b793db29.tar.gz) =
75f2188e548b98191c8df82fb76e918f3bda9788f541449df8fa92449ad19aa0b9c13420dd91c760e08a4d31956ad51602242ab97e3bd4460f01e99f49992453
Size (ZoneMinder-CakePHP-Enum-Behavior-ea90c0cd7f6e24333a90885e563b5d30b793db29.tar.gz) = 3504 bytes
-BLAKE2s (gdt-RtspServer-2719899a3f74ef0a9bb213d34998bcc74cc1f17f.tar.gz) = 427ab3da339df34c610e0b6ec72f804f80ee32b22ca6ab8ead1c195f8b66950a
-SHA512 (gdt-RtspServer-2719899a3f74ef0a9bb213d34998bcc74cc1f17f.tar.gz) =
2891a0817e12be3ed9421e259878a31c97efb411f69339140be9c7f4a5f670574b887e921383d6602096e9c369fcb7b83e513fcc321c37abc87053be98f65050
-Size (gdt-RtspServer-2719899a3f74ef0a9bb213d34998bcc74cc1f17f.tar.gz) = 1396675 bytes
-SHA1 (patch-CMakeLists.txt) = e54c1efea0b0cc99e9bbe8f493a0fe15b2c89663
-SHA1 (patch-scripts_ZoneMinder_lib_ZoneMinder_ConfigData.pm.in) = 3bf4e5e8276a682695db640e6608dd14c7315320
-SHA1 (patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm) = 996670d8a659c0624587da73f8083d9349aaa1ba
-SHA1 (patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm) = b3de55618915fad3d9263954db71270c800ad6f1
-SHA1 (patch-scripts_zm_in) = a05727261bb8be6b707e9a14ae4ff52ea3770d51
-SHA1 (patch-scripts_zmpkg_pl_in) = eb3166ae3cd9bb0ce1b828b64722506aa4e82368
-SHA1 (patch-src_zm__event.cpp) = a965a93a8e531430f79432976f7f809a8e8296bf
-SHA1 (patch-src_zm__eventstream.cpp) = d2134edf09f142a6a545ca36d3263b13defcadd6
-SHA1 (patch-src_zm__image.cpp) = ea74fcef9220293466835d0a4079f6aa5ae2aa75
-SHA1 (patch-src_zm__monitor.cpp) = 7ebc55e9b3b23590541505b7641beaed61b9c56a
-SHA1 (patch-src_zm__packet.h) = 96951004741f3d21434d3ca981f6214c07f77c88
-SHA1 (patch-src_zm__packetqueue.cpp) = b04e72880d428d3f22a9910c249854f31651240f
-SHA1 (patch-src_zm__regexp.cpp) = b8eede97a7b7d0a58556604fe8a38bd825c230ab
-SHA1 (patch-src_zm__rtp__source.cpp) = 9335686e0b353cc50eac51704546527bee5c180b
-SHA1 (patch-src_zm__rtsp__server__fifo__source.cpp) = ece9083fc4cb4ade8e97c2f46307db34fbdb1c2f
-SHA1 (patch-src_zm__time.h) = b52f3bf40eb4dca550bc880e5c41227999269590
-SHA1 (patch-src_zm__utils.cpp) = e16ffd3f41bd05a32c80142e7246307df12801a8
-SHA1 (patch-src_zm_comms_h) = 33577ab0eac62eadc415fe6fb970b82eb473c8e7
-SHA1 (patch-src_zm_logger_cpp) = 3428e80f3e442a3ada147d3d4145564f6e949760
-SHA1 (patch-src_zm_remote_camera_h) = 2f774924338b9e42e7bcaa1701af72861ea62c22
-SHA1 (patch-src_zm_signal_cpp) = af9625702518648b8d62ed20d0d52c1a2a27841a
-SHA1 (patch-src_zmu.cpp) = e5d92c9aa17c3a9e8b53c2cbd43712d80c76ab4e
+BLAKE2s (ZoneMinder-RtspServer-a071599575f60a6f1f424e1f9b408dad7da734a8.tar.gz) = 7c68be2f8dd52d02f1c6d994bcdf0cf92fd94dcd0a36c3c6c7347737fd4cdc5f
+SHA512 (ZoneMinder-RtspServer-a071599575f60a6f1f424e1f9b408dad7da734a8.tar.gz) =
e80a8df4600c2a954a88c00d12dacaefa37f769d9ed0b2d36af817b92fdb5fa76f85fba0647c9161779c914c0e6cb5aefd2cf36221cc2ad563f6516f43ead2d2
+Size (ZoneMinder-RtspServer-a071599575f60a6f1f424e1f9b408dad7da734a8.tar.gz) = 1400033 bytes
+BLAKE2s (chmike-CxxUrl-eaf46c0207df24853a238d4499e7f4426d9d234c.tar.gz) = a3ad57d8f471d37b4c15647dd2e199d3dd63e4300e4668a9cb4d717c874ccf0e
+SHA512 (chmike-CxxUrl-eaf46c0207df24853a238d4499e7f4426d9d234c.tar.gz) =
acdf5a2877710d123246544c1f1543961275edcf09a8a8bb9fd587f59c3735af84f50277c27f07f783c7f56d841ad6bd8f5da1f1814d4aec825a6da507efc45f
+Size (chmike-CxxUrl-eaf46c0207df24853a238d4499e7f4426d9d234c.tar.gz) = 14299 bytes
+SHA1 (patch-CMakeLists.txt) = 51899465cbf3bdafea590989d5bbf176054c3764
+SHA1 (patch-scripts_ZoneMinder_lib_ZoneMinder_ConfigData.pm.in) = 9cf3f3f9da6a3cb4911bbb127a2d10d7edd8929f
+SHA1 (patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm) = 5350c37edb0d5d52613a734a20516ce6aefb417d
+SHA1 (patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm) = 38de6349f2071eef146009e029a3a0592aa9720a
+SHA1 (patch-scripts_zm_in) = e1e344b2bddaffa63c435541f6d5e78af73de80b
+SHA1 (patch-scripts_zmpkg_pl_in) = 429ea720574e19d96a34ad6a39f1196a90ac8a86
+SHA1 (patch-src_zm__comms.h) = b6b68d50dfb73a72fd9609d50890aed6ecde9294
+SHA1 (patch-src_zm__remote__camera__nvsocket.cpp) = 2af57a1fe70369b0d377932570370838466c1535
+SHA1 (patch-src_zm__rtp__source.cpp) = ba46738d040ad0c83a49e0d5cc368f2752535b6e
+SHA1 (patch-src_zm__utils.cpp) = c347ad18989ca83e4317fb7e7eb3ba9fed4e99fa
+SHA1 (patch-src_zm_signal_cpp) = 68c97ef3b3bc9b0be0069bee0842e31c9317582e
+SHA1 (patch-web_includes_database.php) = 0d7e455220a59e94d5dd9acfd83858b78dce889b
Index: pkgsrc/security/zoneminder/patches/patch-CMakeLists.txt
diff -u pkgsrc/security/zoneminder/patches/patch-CMakeLists.txt:1.4 pkgsrc/security/zoneminder/patches/patch-CMakeLists.txt:1.5
--- pkgsrc/security/zoneminder/patches/patch-CMakeLists.txt:1.4 Mon Jan 5 16:02:45 2026
+++ pkgsrc/security/zoneminder/patches/patch-CMakeLists.txt Thu Jul 30 12:36:00 2026
@@ -1,6 +1,4 @@
-$NetBSD: patch-CMakeLists.txt,v 1.4 2026/01/05 16:02:45 gdt Exp $
-
-Don't have a file called "version", to avoid conflict with C++20 <version>.
+$NetBSD: patch-CMakeLists.txt,v 1.5 2026/07/30 12:36:00 gdt Exp $
CMake will detect the MacOS 6-argument sendfile() support and configure
HAVE_SENDFILE, but the code itself doesn't support this interface. So don't
@@ -9,21 +7,12 @@ probe for HAVE_SENDFILE if we HAVE_SENDF
Just because librt doesn't exist does not mean that clock_gettime() doesn't
exist, so don't insist on librt being present. Fixes the build on MacOS.
-Let Pkgsrc be responsible for zm.conf into examples, rather than overwriting
+Let pkgsrc be responsible for zm.conf into examples, rather than overwriting
the existing configuration file.
---- CMakeLists.txt.orig 2025-12-07 16:18:50.000000000 +0000
+--- CMakeLists.txt.orig 2026-05-28 12:42:49.000000000 +0000
+++ CMakeLists.txt
-@@ -4,7 +4,7 @@
- #
- cmake_minimum_required(VERSION 3.5.0)
- project(zoneminder)
--file(STRINGS "version" zoneminder_VERSION)
-+file(STRINGS "version.txt" zoneminder_VERSION)
- # make API version a minor of ZM version
- set(zoneminder_API_VERSION "${zoneminder_VERSION}.1")
-
-@@ -269,7 +271,9 @@ check_include_file("ucontext.h" HAVE_UCO
+@@ -329,7 +329,9 @@ check_include_file("ucontext.h" HAVE_UCO
check_include_file("sys/sendfile.h" HAVE_SYS_SENDFILE_H)
check_include_file("sys/syscall.h" HAVE_SYS_SYSCALL_H)
check_function_exists("syscall" HAVE_SYSCALL)
@@ -33,17 +22,16 @@ the existing configuration file.
check_function_exists("posix_memalign" HAVE_POSIX_MEMALIGN)
check_type_size("siginfo_t" HAVE_SIGINFO_T)
check_type_size("ucontext_t" HAVE_UCONTEXT_T)
-@@ -280,7 +284,8 @@ if(UNIX)
- include(CheckLibraryExists)
- CHECK_LIBRARY_EXISTS(rt clock_gettime "time.h" HAVE_CLOCK_GETTIME)
- if(NOT HAVE_CLOCK_GETTIME)
-- message(FATAL_ERROR "clock_gettime not found")
-+ # \todo Explain why just skipping this is ok.
-+ #message(FATAL_ERROR "clock_gettime not found")
- else()
- list(APPEND ZM_BIN_LIBS "-lrt")
- endif()
-@@ -873,8 +877,8 @@ else()
+@@ -741,7 +743,7 @@
+ # Check all required modules at once
+ # TODO: Add checking for the optional modules
+ find_package(
+- PerlModules COMPONENTS Sys::Syslog DBI DBD::mysql
++ PerlModules COMPONENTS Sys::Syslog DBI DBD::MariaDB
+ Getopt::Long Time::HiRes Date::Manip LWP::UserAgent
+ ExtUtils::MakeMaker ${ZM_MMAP_PERLPACKAGE})
+ if(NOT PERLMODULES_FOUND)
+@@ -839,8 +841,8 @@ else()
endif()
# Install zm.conf
Index: pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm
diff -u pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm:1.4 pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm:1.5
--- pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm:1.4 Sun Dec 1 13:49:48 2024
+++ pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm Thu Jul 30 12:36:00 2026
@@ -1,24 +1,29 @@
-$NetBSD: patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm,v 1.4 2024/12/01 13:49:48 gdt Exp $
+$NetBSD: patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm,v 1.5 2026/07/30 12:36:00 gdt Exp $
-Perl doesn't really support "> /dev/null", so just capture into $output.
+Comment that appears no longer relevant, probably because upstream has
+avoided the problem it was about. Deletion candidate.
-% ktruss -i perl -e 'qx(does-not-exist >/dev/null 2>&1);'|egrep 'dup2.*2'
-does-not-exist: not found
-% ktruss -i perl -e 'qx(does-not-exist 2>&1);'|egrep 'dup2.*2'
- 16954 1 perl dup2(0x1, 0x2) = 2
-
-The problem is that, whilst Perl supports 2>&1 internally (and does not use
-the shell at all) if there is no other redirection, it does not support file
-redirection - it defers that (and therefore necessarily must also defer the
-stderr redirection) to the shell. If the system's shell happens to report
-"Not found" errors before redirection is processed (E.g. NetBSD shell) then
-the stderr redirection is happening too late to be captured.
+ Perl doesn't really support "> /dev/null", so just capture into $output.
-That leads to unintended errors reported on stderr - primarily if sudo is not
-installed on the system, or not in the $PATH.
+ % ktruss -i perl -e 'qx(does-not-exist >/dev/null 2>&1);'|egrep 'dup2.*2'
+ does-not-exist: not found
+ % ktruss -i perl -e 'qx(does-not-exist 2>&1);'|egrep 'dup2.*2'
+ 16954 1 perl dup2(0x1, 0x2) = 2
+
+ The problem is that, whilst Perl supports 2>&1 internally (and does not use
+ the shell at all) if there is no other redirection, it does not support file
+ redirection - it defers that (and therefore necessarily must also defer the
+ stderr redirection) to the shell. If the system's shell happens to report
+ "Not found" errors before redirection is processed (E.g. NetBSD shell) then
+ the stderr redirection is happening too late to be captured.
+
+ That leads to unintended errors reported on stderr - primarily if sudo is not
+ installed on the system, or not in the $PATH.
Use the -m parameter to su, as ZM_WEB_USER shouldn't require a login shell.
+\todo Assess and report upstream.
+
--- scripts/ZoneMinder/lib/ZoneMinder/General.pm.orig 2023-02-23 21:44:01.000000000 +0000
+++ scripts/ZoneMinder/lib/ZoneMinder/General.pm
@@ -92,7 +92,7 @@ sub getCmdFormat {
Index: pkgsrc/security/zoneminder/patches/patch-src_zm__utils.cpp
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm__utils.cpp:1.4 pkgsrc/security/zoneminder/patches/patch-src_zm__utils.cpp:1.5
--- pkgsrc/security/zoneminder/patches/patch-src_zm__utils.cpp:1.4 Sun Dec 1 13:49:48 2024
+++ pkgsrc/security/zoneminder/patches/patch-src_zm__utils.cpp Thu Jul 30 12:36:00 2026
@@ -1,12 +1,14 @@
-$NetBSD: patch-src_zm__utils.cpp,v 1.4 2024/12/01 13:49:48 gdt Exp $
+$NetBSD: patch-src_zm__utils.cpp,v 1.5 2026/07/30 12:36:00 gdt Exp $
-Avoid assuming linux on arm. For now, assume neon.
+Fix time types.
-Fix time types (sizes).
+Hack around arm detection woes.
---- src/zm_utils.cpp.orig 2023-02-23 21:44:01.000000000 +0000
+\todo Send time upstream and fix arm problems.
+
+--- src/zm_utils.cpp.orig 2026-05-28 12:42:49.000000000 +0000
+++ src/zm_utils.cpp
-@@ -183,7 +183,7 @@ std::string TimevalToString(timeval tv)
+@@ -215,7 +215,7 @@ std::string TimevalToString(timeval tv)
return "";
}
@@ -15,21 +17,14 @@ Fix time types (sizes).
}
/* Detect special hardware features, such as SIMD instruction sets */
-@@ -231,13 +231,15 @@ void HwCapsDetect() {
- unsigned long auxval = 0;
+@@ -264,8 +264,8 @@ void HwCapsDetect() {
elf_aux_info(AT_HWCAP, &auxval, sizeof(auxval));
if (auxval & HWCAP_NEON) {
-- #error Unsupported OS.
-- #endif
+ #else
+- {
+-#error Unsupported OS.
++# warning COULD NOT DETECT NEON - ASSUMING NOT PRESENT
++ if (0) {
+ #endif
Debug(1,"Detected ARM (AArch32) processor with Neon");
neonversion = 1;
- } else {
- Debug(1,"Detected ARM (AArch32) processor");
- }
-+# else
-+ Debug(1,"!!ASSUMING!! ARM (AArch32) processor with Neon");
-+ neonversion = 1;
-+# endif
- #elif defined(__aarch64__)
- // ARM processor in 64bit mode
- // Neon is mandatory, no need to check for it
Index: pkgsrc/security/zoneminder/patches/patch-src_zm_signal_cpp
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm_signal_cpp:1.4 pkgsrc/security/zoneminder/patches/patch-src_zm_signal_cpp:1.5
--- pkgsrc/security/zoneminder/patches/patch-src_zm_signal_cpp:1.4 Sun Dec 1 13:49:48 2024
+++ pkgsrc/security/zoneminder/patches/patch-src_zm_signal_cpp Thu Jul 30 12:36:00 2026
@@ -1,28 +1,44 @@
-$NetBSD: patch-src_zm_signal_cpp,v 1.4 2024/12/01 13:49:48 gdt Exp $
+$NetBSD: patch-src_zm_signal_cpp,v 1.5 2026/07/30 12:36:00 gdt Exp $
Don't assume machine-dependent IP register details are available for any
platform except Linux. Only Linux is sure to have this style of mcontext_t.
+Instead, add an #else for NetBSD.
-Resolves build on systems that have ucontext_t but an mcontext_t that
-doesn't look like Linux.
+\todo File upstream.
---- src/zm_signal.cpp.orig 2018-12-08 14:22:36.000000000 +0000
+--- src/zm_signal.cpp.orig 2026-05-28 12:42:49.000000000 +0000
+++ src/zm_signal.cpp
-@@ -66,13 +66,17 @@ RETSIGTYPE zm_die_handler(int signal)
- #if defined(__FreeBSD_kernel__) || defined(__FreeBSD__)
- ip = (void *)(uc->uc_mcontext.mc_rip);
- #else
-+ #if defined(__linux__)
- ip = (void *)(uc->uc_mcontext.gregs[REG_RIP]);
-+ #endif
- #endif
- #else
- #if defined(__FreeBSD_kernel__) || defined(__FreeBSD__)
- ip = (void *)(uc->uc_mcontext.mc_eip);
- #else
-+ #if defined(__linux__)
- ip = (void *)(uc->uc_mcontext.gregs[REG_EIP]);
-+ #endif
- #endif
- #endif // defined(__x86_64__)
-
+@@ -118,6 +118,8 @@ RETSIGTYPE zm_die_handler(int signal)
+ #if defined(__x86_64__)
+ #if defined(__FreeBSD_kernel__) || defined(__FreeBSD__)
+ ip = (void *)(uc->uc_mcontext.mc_rip);
++#elif defined(__NetBSD__)
++ ip = (void *) _UC_MACHINE_PC(uc);
+ #elif defined(__OpenBSD__)
+ ip = (void *)(uc->sc_rip);
+ #else
+@@ -126,18 +128,24 @@ RETSIGTYPE zm_die_handler(int signal)
+ #elif defined(__i386__)
+ #if defined(__FreeBSD_kernel__) || defined(__FreeBSD__)
+ ip = (void *)(uc->uc_mcontext.mc_eip);
++#elif defined(__NetBSD__)
++ ip = (void *) _UC_MACHINE_PC(uc);
+ #else
+ ip = (void *)(uc->uc_mcontext.gregs[REG_EIP]);
+ #endif
+ #elif defined(__aarch64__)
+ #if defined(__FreeBSD__)
+ ip = (void *)(uc->uc_mcontext.mc_gpregs.gp_elr);
++#elif defined(__NetBSD__)
++ ip = (void *) _UC_MACHINE_PC(uc);
+ #else
+ ip = (void *)(uc->uc_mcontext.pc);
+ #endif
+ #elif defined(__arm__)
+ #if defined(__FreeBSD__)
+ ip = (void *)(uc->uc_mcontext.__gregs[_REG_PC]);
++#elif defined(__NetBSD__)
++ ip = (void *) _UC_MACHINE_PC(uc);
+ #else
+ ip = (void *)(uc->uc_mcontext.arm_pc);
+ #endif
Index: pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_ConfigData.pm.in
diff -u pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_ConfigData.pm.in:1.2 pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_ConfigData.pm.in:1.3
--- pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_ConfigData.pm.in:1.2 Sun Dec 1 13:49:48 2024
+++ pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_ConfigData.pm.in Thu Jul 30 12:36:00 2026
@@ -1,10 +1,10 @@
-$NetBSD: patch-scripts_ZoneMinder_lib_ZoneMinder_ConfigData.pm.in,v 1.2 2024/12/01 13:49:48 gdt Exp $
+$NetBSD: patch-scripts_ZoneMinder_lib_ZoneMinder_ConfigData.pm.in,v 1.3 2026/07/30 12:36:00 gdt Exp $
-Inhibit a couple of "phone home" options that are enabled by default. These
-should be opt-in rather than opt-out.
+Disable check-for-updates ("phone home") by default. pkgsrc doctrine is
+that phone-home behavior, unless opted into by the user, is a bug.
-The ConfigData.pm module determines what the default setting is for new
-options during an upgrade as well as on an initial installation.
+\todo Perhaps discuss with upstream, but this is a difference in
+judgement rather than a clear bug.
--- scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in.orig 2018-12-08 14:22:36.000000000 +0000
+++ scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in
Index: pkgsrc/security/zoneminder/patches/patch-scripts_zmpkg_pl_in
diff -u pkgsrc/security/zoneminder/patches/patch-scripts_zmpkg_pl_in:1.2 pkgsrc/security/zoneminder/patches/patch-scripts_zmpkg_pl_in:1.3
--- pkgsrc/security/zoneminder/patches/patch-scripts_zmpkg_pl_in:1.2 Sun Dec 1 13:49:48 2024
+++ pkgsrc/security/zoneminder/patches/patch-scripts_zmpkg_pl_in Thu Jul 30 12:36:00 2026
@@ -1,4 +1,4 @@
-$NetBSD: patch-scripts_zmpkg_pl_in,v 1.2 2024/12/01 13:49:48 gdt Exp $
+$NetBSD: patch-scripts_zmpkg_pl_in,v 1.3 2026/07/30 12:36:00 gdt Exp $
The systemd check in zmpkg.pl does not work, even on systems that use
systemd. It fails to start, eventually timing out, if there is any
@@ -10,9 +10,9 @@ Add sleep to avoid suspected race condit
\todo After catching up, actually debug and/or send upstream.
---- scripts/zmpkg.pl.in.orig 2018-12-08 14:22:36.000000000 +0000
+--- scripts/zmpkg.pl.in.orig 2026-05-28 12:42:49.000000000 +0000
+++ scripts/zmpkg.pl.in
-@@ -143,7 +143,7 @@ if ( $command eq 'state' ) {
+@@ -146,7 +146,7 @@ if ( $command eq 'state' ) {
} # end if command = state
# Check if we are running systemd and if we have been called by the system
@@ -21,10 +21,10 @@ Add sleep to avoid suspected race condit
# We have to detaint to keep perl from complaining
$command = $1;
-@@ -191,6 +191,15 @@ if ( $command =~ /^(?:start|restart)$/ )
-
+@@ -196,6 +196,16 @@ if ( $command =~ /^(?:start|restart)$/ )
zmMemTidy();
runCommand('zmdc.pl startup');
+
+ Info("Sleeping 2 seconds to avoid zmdc.pl race.");
+ # Somehow, on at least NetBSD 9 amd64, a future zmdc.pl start
+ # command succeeds in starting the daemon, but does not exit.
@@ -34,6 +34,7 @@ Add sleep to avoid suspected race condit
+ # without hanging.
+ sleep(2);
+ Info("Sleeping complete.");
-
++
my $Server = undef;
- my $sql;
+ my @monitors;
+ if ( $Config{ZM_SERVER_ID} ) {
Index: pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm
diff -u pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm:1.3 pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm:1.4
--- pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm:1.3 Sun Dec 1 13:49:48 2024
+++ pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm Thu Jul 30 12:36:00 2026
@@ -1,8 +1,10 @@
-$NetBSD: patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm,v 1.3 2024/12/01 13:49:48 gdt Exp $
+$NetBSD: patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm,v 1.4 2026/07/30 12:36:00 gdt Exp $
-Adjust for (more) modern perl.
+Add a comment leftover from a previous debugging attempt.
+This entire patchfile is a deletion candidate.
-Not submitted upstream because pkgsrc is woefully out of date.
+Not submitted upstream because pkgsrc does not have a coherent story
+about this proposed patch.
--- scripts/ZoneMinder/lib/ZoneMinder/Memory/Shared.pm.orig 2023-02-23 21:44:01.000000000 +0000
+++ scripts/ZoneMinder/lib/ZoneMinder/Memory/Shared.pm
Index: pkgsrc/security/zoneminder/patches/patch-scripts_zm_in
diff -u pkgsrc/security/zoneminder/patches/patch-scripts_zm_in:1.6 pkgsrc/security/zoneminder/patches/patch-scripts_zm_in:1.7
--- pkgsrc/security/zoneminder/patches/patch-scripts_zm_in:1.6 Sun Dec 1 13:49:48 2024
+++ pkgsrc/security/zoneminder/patches/patch-scripts_zm_in Thu Jul 30 12:36:00 2026
@@ -1,10 +1,12 @@
-$NetBSD: patch-scripts_zm_in,v 1.6 2024/12/01 13:49:48 gdt Exp $
+$NetBSD: patch-scripts_zm_in,v 1.7 2026/07/30 12:36:00 gdt Exp $
/etc/rc.d/init.d/functions doesn't commonly exist.
The LOCKFILE feature appears unused, and requires a /var/lock/subsys directory
we don't have.
+\todo Address with upstream.
+
--- scripts/zm.in.orig 2016-02-03 18:40:30.000000000 +0000
+++ scripts/zm.in
@@ -7,12 +7,12 @@
Index: pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__source.cpp
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__source.cpp:1.6 pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__source.cpp:1.7
--- pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__source.cpp:1.6 Tue Jan 6 17:51:37 2026
+++ pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__source.cpp Thu Jul 30 12:36:00 2026
@@ -1,26 +1,26 @@
-$NetBSD: patch-src_zm__rtp__source.cpp,v 1.6 2026/01/06 17:51:37 gdt Exp $
+$NetBSD: patch-src_zm__rtp__source.cpp,v 1.7 2026/07/30 12:36:00 gdt Exp $
-Fix type issue with tv_sec; see earlier patches.
+Fix type issue with tv_usec.
---- src/zm_rtp_source.cpp.orig 2026-01-06 13:05:00.000000000 +0000
+\todo Send upstream.
+
+--- src/zm_rtp_source.cpp.orig 2026-05-28 12:42:49.000000000 +0000
+++ src/zm_rtp_source.cpp
-@@ -196,7 +196,7 @@ void RtpSource::updateRtcpData(
- uint32_t rtpTime) {
- struct timeval ntpTime = tvMake(ntpTimeSecs, suseconds_t((USEC_PER_SEC*(ntpTimeFrac>>16))/(1<<16)));
+@@ -203,7 +203,7 @@ void RtpSource::updateRtcpData(
+ timeval ntpTime = zm::chrono::duration_cast<timeval>(
+ Seconds(ntpTimeSecs) + Microseconds((Microseconds::period::den * (ntpTimeFrac >> 16)) / (1 << 16)));
- Debug(5, "ntpTime: %jd.%06ld, rtpTime: %x", static_cast<intmax_t>(ntpTime.tv_sec), ntpTime.tv_usec, rtpTime);
+ Debug(5, "ntpTime: %jd.%06ld, rtpTime: %x", static_cast<intmax_t>(ntpTime.tv_sec), static_cast<long>(ntpTime.tv_usec), rtpTime);
if ( mBaseTimeNtp.tv_sec == 0 ) {
- mBaseTimeReal = tvNow();
-@@ -205,8 +205,8 @@ void RtpSource::updateRtcpData(
- } else if ( !mRtpClock ) {
+ mBaseTimeReal = std::chrono::system_clock::now();
+@@ -213,7 +213,7 @@ void RtpSource::updateRtcpData(
Debug(5, "lastSrNtpTime: %jd.%06ld, rtpTime: %x"
- "ntpTime: %jd.%06ld, rtpTime: %x",
-- static_cast<intmax_t>( mLastSrTimeNtp.tv_sec), mLastSrTimeNtp.tv_usec, rtpTime,
-- static_cast<intmax_t>(ntpTime.tv_sec), ntpTime.tv_usec, rtpTime);
-+ static_cast<intmax_t>( mLastSrTimeNtp.tv_sec), static_cast<long>(mLastSrTimeNtp.tv_usec), rtpTime,
-+ static_cast<intmax_t>(ntpTime.tv_sec), static_cast<long>(ntpTime.tv_usec), rtpTime);
+ "ntpTime: %jd.%06ld, rtpTime: %x",
+ static_cast<intmax_t>(mLastSrTimeNtp.tv_sec), mLastSrTimeNtp.tv_usec, rtpTime,
+- static_cast<intmax_t>(ntpTime.tv_sec), ntpTime.tv_usec, rtpTime);
++ static_cast<intmax_t>(ntpTime.tv_sec), static_cast<long>(ntpTime.tv_usec), rtpTime);
- double diffNtpTime = tvDiffSec( mBaseTimeNtp, ntpTime );
- uint32_t diffRtpTime = rtpTime - mBaseTimeRtp;
+ FPSeconds diffNtpTime =
+ zm::chrono::duration_cast<Microseconds>(ntpTime) - zm::chrono::duration_cast<Microseconds>(mBaseTimeNtp);
Added files:
Index: pkgsrc/security/zoneminder/patches/patch-src_zm__comms.h
diff -u /dev/null pkgsrc/security/zoneminder/patches/patch-src_zm__comms.h:1.1
--- /dev/null Thu Jul 30 12:36:01 2026
+++ pkgsrc/security/zoneminder/patches/patch-src_zm__comms.h Thu Jul 30 12:36:00 2026
@@ -0,0 +1,14 @@
+$NetBSD: patch-src_zm__comms.h,v 1.1 2026/07/30 12:36:00 gdt Exp $
+
+\todo Disable, reproduce error, and file upstream.
+
+--- src/zm_comms.h.orig 2026-07-26 00:41:38.146240669 +0000
++++ src/zm_comms.h
+@@ -26,6 +26,7 @@
+ #include <cerrno>
+ #include <netdb.h>
+ #include <set>
++#include <strings.h>
+ #include <sys/uio.h>
+ #include <sys/un.h>
+ #include <unistd.h>
Index: pkgsrc/security/zoneminder/patches/patch-src_zm__remote__camera__nvsocket.cpp
diff -u /dev/null pkgsrc/security/zoneminder/patches/patch-src_zm__remote__camera__nvsocket.cpp:1.1
--- /dev/null Thu Jul 30 12:36:01 2026
+++ pkgsrc/security/zoneminder/patches/patch-src_zm__remote__camera__nvsocket.cpp Thu Jul 30 12:36:00 2026
@@ -0,0 +1,18 @@
+$NetBSD: patch-src_zm__remote__camera__nvsocket.cpp,v 1.1 2026/07/30 12:36:00 gdt Exp $
+
+Add missing include on NetBSD.
+
+\todo File upstream.
+
+--- src/zm_remote_camera_nvsocket.cpp.orig 2026-07-26 00:42:57.983592814 +0000
++++ src/zm_remote_camera_nvsocket.cpp
+@@ -32,6 +32,9 @@
+ #ifdef __FreeBSD__
+ #include <netinet/in.h>
+ #endif
++#ifdef __NetBSD__
++#include <netinet/in.h>
++#endif
+
+ RemoteCameraNVSocket::RemoteCameraNVSocket(
+ const Monitor *monitor,
Index: pkgsrc/security/zoneminder/patches/patch-web_includes_database.php
diff -u /dev/null pkgsrc/security/zoneminder/patches/patch-web_includes_database.php:1.1
--- /dev/null Thu Jul 30 12:36:01 2026
+++ pkgsrc/security/zoneminder/patches/patch-web_includes_database.php Thu Jul 30 12:36:00 2026
@@ -0,0 +1,22 @@
+$NetBSD: patch-web_includes_database.php,v 1.1 2026/07/30 12:36:00 gdt Exp $
+
+In order to function in the presence of the latest p5-DBD-msyql --
+which refuse to work with MariaDB, we need to have the user patch the
+ZM_DB_TYPE to MariaDB so that the DBD::MariaDB is used. However, in
+the land of PHP, there is only php-pdo_mysql, which does both. Thus,
+point MariaDB-using systems at it.
+
+https://github.com/ZoneMinder/zoneminder/issues/5008
+
+--- web/includes/database.php.orig 2026-05-28 08:42:49.000000000 -0400
++++ web/includes/database.php 2026-07-28 18:39:21.597037296 -0400
+@@ -31,6 +31,9 @@
+ global $dbConn;
+
+ $dsn = ZM_DB_TYPE;
++ if ( $dsn = 'MariaDB' ) {
++ $dsn = 'mysql';
++ }
+ if ( ZM_DB_HOST ) {
+ if ( strpos(ZM_DB_HOST, ':') ) {
+ // Host variable may carry a port or socket.
Home |
Main Index |
Thread Index |
Old Index