Commit Graph

1247 Commits

Author SHA1 Message Date
PX4BuildBot
6120aa53df docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-18 16:04:11 +00:00
Bartok
67b6679918 docs(zenoh): correct overridden spelling in publisher options note (#27958)
Co-authored-by: Daniel Pike <daniel@team-of-light.com>
2026-07-18 16:33:23 +01:00
PX4BuildBot
616c25b77d docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-17 15:57:37 +00:00
Julian Oes
eaaf6f676a test(mavsdk): leave tests backwards compatible but enable SIH
This reverts some of the changes to keep runners of classic Gazebo in
there but leave it optional, so we can still use it if required.
2026-07-17 10:51:42 -05:00
PX4BuildBot
87fdc29e34 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-17 02:49:36 +00:00
Jacob Dahl
0524a374d9 fix(drivers/uavcannode): make CANNODE_NODE_ID the sole node ID policy (#27644)
* fix(drivers/uavcannode): make CANNODE_NODE_ID the sole node ID policy

The startup bootloader_app_shared_write() never reached the bootloader:
it only accepts App-signed data and invalidates the shared region on
every boot. The only consumer was uavcannode itself on a restart
without a reset (nsh stop/start), where the persisted bus_speed=0 made
the CAN driver init fail and left the node off the bus. The bootloader
learns our node ID exclusively through the firmware update handoff in
cb_beginfirmware_update, which already carries the static ID.

CANNODE_NODE_ID now overrides the bootloader handoff only when nonzero,
so the default (0) reuses the ID the bootloader already allocated
instead of running allocation a second time. The handoff is ignored
unless it carries a valid bitrate, healing regions poisoned by firmware
that wrote bus_speed=0. Max is 125 because 126/127 are reserved for
debug tools by DroneCAN convention, matching UAVCAN_NODE_ID.

Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com>

* fix(drivers/uavcannode): harden bootloader handoff validation

Invalidate the shared region whenever it was read valid, not only when
the handoff is accepted, so stale data cannot linger on boards whose
bootloader never invalidates it. Require a plausible bitrate (the
CANNODE_BITRATE minimum) rather than nonzero: the canbootloader alt-app
update path can hand off bus_speed = CAN_UNDEFINED (999). Reword the
invalid-param error, which claimed dynamic allocation while keeping the
bootloader handoff.

Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com>

---------

Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com>
2026-07-16 20:43:22 -06:00
Jacob Dahl
f2e4d9d35c docs(rtk): note SPARTN on the GPS inject path (#27934)
CONFIG_GPS_SPARTN landed in #27919; call out the opt-in framing path and that keys stay on the receiver.

Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com>
2026-07-16 18:12:26 -06:00
Bartok
69c709a431 fix: correct user-visible log/doc typos across modules (#27932)
Consolidates several small spelling fixes in user-visible strings:
- cyphal: 'succesfull' -> 'successful' (Set portID log)
- muorb apps: 'succesfully' -> 'successfully' (protobuf test logs)
- pga460: 'occured' -> 'occurred' (thermal shutdown log)
- camera_trigger: 'recieved' -> 'received' (module help + docs)

Logging/docs-only, no behavior change.
2026-07-16 14:39:27 -06:00
PX4BuildBot
7f42ae3db0 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-16 20:31:13 +00:00
PX4BuildBot
1bd36e8974 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-16 19:31:15 +00:00
Bartok
1ec054b3da docs(rtk_gps): fix received spelling in RTCM fragment note (#27923)
AI-assisted; human-reviewed.
2026-07-16 11:12:16 -06:00
Alexander Lerach
da60889b3c chore(uavcan): remove FW flashing database (#27930)
* feat(uavcan): remove FW.db generation

* docs(dronecan): remove FW.db section, update remote update workflow
2026-07-16 17:21:43 +02:00
Vincello
656989b1dd docs(corvon_v5): fix labels in connectors diagram (#27893)
Fix swapped TELEM1/TELEM2 labels, CAN1_H pin name, I2C3 label
and a few typos.

Signed-off-by: holydust <holydust@live.ca>
2026-07-16 18:20:46 +10:00
PX4BuildBot
4cf8622a13 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-15 18:48:19 +00:00
Jacob Dahl
b11e615810 fix(zenoh): stop the build writing generated files into the source tree (#27904)
* fix(zenoh): generate the topic catalog into the build tree

Kconfig.topics is fully generated from the uORB message set, but the build
regenerated it into the source tree at configure time. Building any Zenoh
board therefore left the working tree dirty whenever the message set had
changed since the file was last committed (the catalog is board-config
dependent, so it drifts easily).

Generate the catalog into the build directory in cmake/kconfig.cmake, before
Kconfig is parsed, and source it from there via ZENOH_KCONFIG_TOPICS. It is
generated board-independently from every message so it no longer depends on
the msg-gating Kconfig symbols it is sourced alongside; the per-board factory
still gates which topics are actually compiled. Drop the committed catalog.

* chore(zenoh): bump zenoh-pico to the build-tree header fix

Moves zenoh-pico's generated config.h/zenoh-pico.h/library.json out of its
own source tree and into the build tree, so building no longer dirties the
submodule.

Gated on PX4/zenoh-pico#2: the pointer currently references the fix branch on
a fork and must be moved to the merged commit before this is ready.

* bump zenoh-pico
2026-07-15 12:12:09 -06:00
PX4BuildBot
e96159c217 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-15 15:04:07 +00:00
Claudio Chies
d63f30c612 feat(failure_injection): Enable failure-injection on hardware, and through RC-switch (#27832)
* feat(failure_injection): integrate failure injection support across sensor drivers

* feat(failure_injection): enhance failure injection with RC switch support and instance bitmasking

feat(failure_injection): add disabled failure injection manager and system command support for v5x and v6x boards

* feat(failure_injection): add battery failure injection

Add a value-mutating apply-site for FAILURE_UNIT_SYSTEM_BATTERY. On an
injected OFF the outgoing battery_status is reported as a depleted pack
(zero remaining, emergency warning) so the low-battery failsafe triggers.

The apply-site lives in the shared Battery library, covering the analog
ADC, INA power monitors, ESC battery and SITL in one place, plus the
UAVCAN battery driver which publishes battery_status directly. The
previous SITL-only hack in BatterySimulator is removed in favour of this
shared path so simulation and hardware behave identically.

* fix(failure_injection): change parameter types from int32 to enum

* refactor(failure_injection): disable failure injection manager and system commands across multiple boards

* feat(failure_injection): enhance failure injection with timestamp handling and message-less support

* refactor(failure_injection): simplify has_timestamp_sample implementation and remove unused includes

* refactor(failure_injection):move conditional compilation into helper libary

* refactor(failure_injection): update CMakeLists to include failure_injection dependency across multiple drivers

---------

Co-authored-by: Claudio Chies <chiesc@chies.com>
2026-07-15 07:56:13 -07:00
PX4BuildBot
25bb4a2224 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-14 13:14:34 +00:00
PX4BuildBot
5f63c0698e docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-13 23:15:01 +00:00
PX4BuildBot
fe71d3bec1 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-13 22:23:01 +00:00
Jonas Perolini
5ea3cf8cb9 feat(navigator): extend detect and avoid module to follow regulatory standards such as ASTM F3442 (#26815)
* feat(navigator): extend detect and avoid module to follow regulatory standards such as ASTM F3442

* docs(docs): minor subedit

* refactor(navigator): reduce flash by grouping notif into same events

* docs(daa): Improve docs readability with ::: details blocks

* fix(navigator): single event when on ground with conflict

* refactor(boards): increase flash length from 4M - 128k to 5M - 128k

* rework(general): define DAA standard at build with new CONFIG_NAVIGATOR_ADSB_F3442

* clean(navigator): minor changes to clean the PR

* feat(boards): add CONFIG_NAVIGATOR_ADSB_FAKE_TRAFFIC in visionTargetEstStatic.px4board

* rework(daa): reduce amount of abstractions and minor cleaning

* refactor(boards): allyes revert flash length to 4M-128K

* refactor(boards): allyes increase flash length to 5M-128K

* rework(daa): rework event notifications to improve clarity

* docs(docs): move details inside of ::: details block

* docs(docs): run npx prettier

* refactor(daa): avoid void mutator functions

* docs(docs): Improve Python helper to decode daa unique id

* rework(daa): move encoded id handling to the adsb lib and refactor on_active

* refactor(daa): naming and zero init

* fix(daa): move dataman dep from daa level to unit test level

* refactor(daa): define common daa_input and rework process_transponder_report

* fix(daa): remove stale todo

* refactor(daa): rename crosstrack_based_daa to crosstrack_standard

* refactor(daa): rename F34_ params to DAA_

* docs(docs): revert changes to autogenerated docs

* docs(docs): Add Detect And Avoid in index.md

* refactor(daa): update message on init failed

* refactor(daa): only publish most_urgent conflict once in on_active()

* refactor(daa): move conflict buffer handling in the adsb lib

* refactor(daa): move notifications into new class ConflictNotifier and only notify once per cycle

* refactor(daa): uninit _cycle_changes to store into .bss (and save flash)

* docs(docs): remove unused image link

* refactor(daa): move automated action policy to the adsb lib

* refactor(daa): move self detection into adsb lib as DaaTrafficFilter

* refactor(daa): minor changes in unit tests

* refactor(daa): merge DaaTrafficFilter and DaaEncoding

* fix(daa): fix CI by removing navigator from the DAA deps

* refactor(daa): reduce stack size

* fix(daa): advertise _fake_traffic_pub in constructor

* refactor(daa): Comments only,  simplify and reduce comments

* fix(daa): brief comment missing end star

* Disable CONFIG_NAVIGATOR_ADSB in ark_fpv_default board

* docs(docs): General clarifications and remove the 1.18 badge

* refactor(daa): cleaning

* refactor(daa): minor cleaning

* refactor(adsb): simplify conflict tracker assuming push_back cannot fail

* build(cmake): cleaner fix to protect regex alternations

* refactor(daa): Crosstrack, remove unit test requiring finite yaw (yaw not used by standard)

* refactor(daa): minor cleaning and fix callsign to uint64

---------

Co-authored-by: jonas <jonas.perolini@rigi.tech>
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2026-07-13 16:14:42 -06:00
PX4BuildBot
7ca74a7cc9 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-13 21:44:07 +00:00
Onur Özkan
a080eef535 docs: update mavlink temperature conversion example (#27871)
Update the mavlink receiving example to match the current behavior from
"b52464059e fix(mavlink): preserve invalid battery values on receive"
patch.

Signed-off-by: Onur Özkan <work@onurozkan.dev>
2026-07-13 15:27:08 -06:00
PX4BuildBot
3835140f34 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-13 16:49:43 +00:00
PX4BuildBot
7bf22ca4a0 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-13 09:06:44 +00:00
PX4 Build Bot
edcbdd8b63 docs(i18n): PX4 guide translations (Crowdin) - zh-CN (#27812)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-07-12 15:29:58 +10:00
PX4 Build Bot
b4acc0c0db docs(i18n): PX4 guide translations (Crowdin) - ko (#27810)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-07-12 15:29:49 +10:00
PX4 Build Bot
bf0d1013b2 docs(i18n): PX4 guide translations (Crowdin) - uk (#27811)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-07-12 15:29:34 +10:00
PX4BuildBot
186ad6d691 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-09 12:14:59 +00:00
Roman Bapst
40e61d2429 feat(navigator): Geofence Aware RTL (#27145)
Plan RTL paths that route around geofence boundaries — both inclusion
and exclusion zones — instead of flying straight through them and
breaching. The planner builds a visibility graph over the margin-inflated
geofence polygons and circles and runs Dijkstra to find the shortest
legal return path, falling back to a straight line to the destination
when no valid path exists.

Highlights:
- New reusable libraries: src/lib/dijkstra (generic shortest path) and
  src/lib/geofence (fixed-point geometry, polygon inflation, bitangent
  visibility); the RTL planner lives in navigator/RTLPlanner.
- Visibility graph keeps only bitangent edges and skips edges that poke
  into a forbidden region, greatly reducing edge-cost computation.
- Corner splitting is limited to sharp convex corners.
- Geometry validation: reject self-intersecting polygons and vertices
  outside the fixed-point range; centimeter fixed-point scaling keeps
  orientation tests exact and avoids drift at large distances.
- Failure handling: a Status enum replaces silent bool returns, and
  failures (unbuildable fence, planner capacity overflow, dataman load
  errors, NaN waypoints, destinations that breach the fence) are
  surfaced to the operator via MAVLink warnings/criticals; the planner
  falls back to a straight-line RTL.
- Destination updates are centralized in RTL::setRtlTypeAndDestination;
  the path is replanned only when the destination or geometry changes.
- VTOLs always use the fixed-wing margin (FW loiter radius).
- kMaxNodes is exposed as a Kconfig option (default 100); the feature is
  disabled on flash-constrained boards (FMUv4 and older, various F4/F7).
- Tests: unit tests for the Dijkstra lib, geofence geometry utils, and
  the avoidance planner, plus a MAVSDK SITL test flying an RTL through a
  geofence.
- Documentation: new "Geofence Awareness" section in the RTL docs.

Co-authored-by: Balduin <balduin@auterion.com>
2026-07-09 15:08:27 +03:00
Ramon Roche
f1bff926d1 docs(releases): promote VOXL 2 Debian packaging to major changes
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2026-07-08 14:07:30 -07:00
Ramon Roche
d68d7ad827 docs(releases): note VOXL 2 variant merge and Debian package in v1.18
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2026-07-08 14:07:30 -07:00
Ramon Roche
fd13202851 docs(releases): v1.18 release notes (#27808)
* docs(releases): fix malformed SIH wind PR link in v1.18 notes

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): draft v1.18 release notes

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): mark v1.18 beta and add changes merged since the draft

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): add v1.18 upgrade guide, hardware fixes, and section structure

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): resort v1.18 major changes

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): link sensor and peripheral docs pages in v1.18 notes

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): describe new boards and highlight serial passthrough in v1.18 notes

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): fold standalone sensors section into hardware and common

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): fill v1.18 ethernet section with networking fixes

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): merge ROS 2 and middleware sections with DDS and Zenoh subsections

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): group vehicle-type notes under vehicle-specific section

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): reorder v1.18 other-changes sections by topic group

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): drop other-changes wrapper heading in v1.18 notes

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): organize debug-logging subsections and add infrastructure section

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): fix main.md template wording and mark v1.18 beta in sidebar

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

---------

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2026-07-08 11:54:37 -07:00
PX4BuildBot
294f177ec9 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-08 04:39:16 +00:00
Ramon Roche
ca47db5faa refactor(bench): remove the Hawkeye viewer tee
The --viewer path (tee MAVLink frames to UDP and enable the
HIL_STATE_QUATERNION/HIL_ACTUATOR_CONTROLS streams so Hawkeye could
render an SIH flight live) was never validated end to end: Hawkeye
never actually rendered from it. Rather than ship an unproven feature,
drop it.

Removes px4bench.attach_viewer_tee (and its function-local socket use),
the flight_mission --viewer/--viewer-port args, the viewer tee call and
the stream-enable block, and the now-unused --board-dev arg that only
fed those stream commands. The SIH flight logic, firmware gate,
storage/serial tests, and the arming gate are unchanged. README and the
bench testing docs page drop the Hawkeye section and all --viewer
mentions.

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2026-07-07 21:33:15 -07:00
Ramon Roche
83f68f709c docs(bench): document the arming gate, storage tests, and capability report
The flight test is now part of the default suite; both the bench README
and the bench testing guide said it ran separately. Update the sequence
description, the risk map and suite tables (storage_stress and
flight_mission rows, serial_loopback for fixtures), the SIH sections
(probe-and-skip, the typed 'arm' confirmation, --allow-arming for
automation), the production section (--allow-arming on the line,
serial_loopback with a jumper on the fixture), and the firmware gate
--build description (bench capability report with variant and config
line recommendations). Storage threshold defaults are justified where
the flags are documented.

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2026-07-07 21:33:15 -07:00
Ramon Roche
dbb4212ff3 docs(test_and_ci): add hardware bench testing guide
New page in Platform Testing and CI covering px4bench: why on-hardware
verification exists alongside SITL and CI, the firmware traceability
gate, the bench test inventory, the SIH hardware-in-the-loop flight
test with Hawkeye, baseline comparison for upgrade regression and
golden-unit workflows, production end-of-line usage, and CI
integration. Linked from the section index and the sidebar.

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2026-07-07 21:33:15 -07:00
PX4BuildBot
60bf72e327 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-07 15:36:49 +00:00
Ramon Roche
c890d9db0a docs(test_cards): add MC_11 companion computer ROS 2 external mode
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2026-07-06 11:37:32 -07:00
PX4BuildBot
4efe295166 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-06 11:59:25 +00:00
elisaaferraraa
7ed3c5bad4 feat(FlightTaskAuto): manual control yaw override during Auto modes (#27691)
* feat(FlightTaskAuto): add RC yaw override during Auto modes

* feat(FlightTaskAuto): disengage RC yaw nudge on flight-mode switch

* docs: document MPC_AUTO_RC_YAW in MC Auto mode pages

Describe the RC yaw nudge (MPC_AUTO_RC_YAW) on the Mission page.
Add parameter rows to the Hold and Land pages where MPC_LAND_RC_HELP takes
precedence over it for yaw, and document MPC_LAND_RC_HELP there too.

* feat(FlightTaskAuto): updated param description to warn against COM_RC_OVERRIDE disabled

The long description recommends to have a switch on the RC to change to Position mode

* fix(FlightTaskAuto): unified yaw nudging with new MPC_AUTO_NUDGING parameter

* docs(FlightTaskAuto): MPC_AUTO_RC_YAW and MPC_LAND_RC_HELP parameters were replaced by the unified MPC_AUTO_NUDGING bitmask

* fix(parameters): migrate MPC_LAND_RC_HELP to MPC_AUTO_NUDGING bit 1

* docs(1.18): move stick override and add nudging changes

---------

Co-authored-by: Matthias Grob <maetugr@gmail.com>
2026-07-06 13:52:03 +02:00
gguidone
ef1be8be41 docs(flight_modes_mc): document multicopter takeoff from a moving platform
Signed-off-by: gguidone <gennaroguido2002@gmail.com>
2026-07-03 13:55:40 -07:00
PX4BuildBot
cc833b894d docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-03 19:53:30 +00:00
PX4BuildBot
36d0825b6e docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-03 17:06:24 +00:00
PX4BuildBot
c772b23067 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-03 15:39:03 +00:00
PX4BuildBot
60ed1a27d4 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-02 19:21:36 +00:00
Ramon Roche
2f459921f6 docs: add official PX4 developer kits and manufacturer program
Document the Official PX4 Developer Kit program: a new top-level
Developer Kits section listing the certified kits (ModalAI Starling 2
Max, DroneBlocks DEXI 5, Holybro X500 v2), a new DEXI 5 page, and a
manufacturer-facing page describing the program requirements, benefits,
and eligibility.

Restructure the hardware navigation so all certified kits live in one
place instead of being split across Complete Vehicles and Kits, drop
discontinued build guides from the sidebar (still linked from the kit
build guides page), and group the manufacturer guides under a new
Manufacturers section in Development > Hardware.

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2026-07-02 12:15:03 -07:00
PX4BuildBot
47896d8aa1 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-02 15:51:29 +00:00
Julian Oes
6aae566ea1 docs: document building SITL with sanitizers (ASan/TSan)
Add a test_and_ci page covering the PX4_ASAN / PX4_TSAN / PX4_MSAN / PX4_UBSAN
build variables, the Linux `sudo sysctl vm.mmap_rnd_bits=28` workaround for the
sanitizer runtime's startup memory mapping, and the TSan suppressions file
(test/sitl_tsan.supp) for the Gazebo simulation transport. Linked from SUMMARY.md
and the test_and_ci index.
2026-07-02 08:42:49 -07:00
PX4BuildBot
692d624670 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-02 13:12:44 +00:00