Commit Graph

61 Commits (b6ba43bed5dafd0f19862d2ff637909829fdc96f)

Author SHA1 Message Date
Ansariel 539959a7f8 Merge branch 'master' of https://github.com/FirestormViewer/phoenix-firestorm-develop
# Conflicts:
#	.github/workflows/qatest.yaml
#	indra/newview/llfloatermodelpreview.cpp
#	indra/newview/llvoavatar.cpp
#	indra/newview/llwearableitemslist.cpp
2025-08-06 18:47:44 +02:00
Ansariel bfd99549b0 Merge branch 'release/2025.05' of https://github.com/secondlife/viewer
# Conflicts:
#	.github/pull_request_template.md
#	indra/llappearance/lltexlayer.cpp
#	indra/llcommon/llthread.cpp
#	indra/llprimitive/lldaeloader.cpp
#	indra/llprimitive/lldaeloader.h
#	indra/llprimitive/llmodel.cpp
#	indra/newview/CMakeLists.txt
#	indra/newview/VIEWER_VERSION.txt
#	indra/newview/app_settings/settings.xml
#	indra/newview/llmodelpreview.cpp
#	indra/newview/lltoolpie.cpp
#	indra/newview/skins/default/xui/en/floater_model_preview.xml
#	indra/newview/skins/default/xui/en/panel_preferences_sound.xml
2025-07-18 14:14:54 +02:00
Ansariel 6cb5a7425f Merge branch 'master' of https://github.com/FirestormViewer/phoenix-firestorm
# Conflicts:
#	indra/newview/llskinningutil.cpp
#	indra/newview/llvoavatar.cpp
#	indra/newview/skins/default/xui/ja/strings.xml
2025-05-23 12:22:21 +02:00
Andrey Kleshchev be5e3e20fa #3997 Crash in a gltf asset enabled region 2025-05-23 11:02:36 +01:00
Jonathan "Geenz" Goodman 30aa14d0b3 Make loading the asset into VRAM optional. 2025-05-21 21:00:06 -04:00
Andrey Kleshchev d9e55c4415 #3997 Crash in a gltf asset enabled region 2025-04-29 18:12:57 +03:00
Ansariel 4c355879cc Merge branch 'release/2025.05' of https://github.com/secondlife/viewer
# Conflicts:
#	autobuild.xml
#	indra/llui/llfolderviewitem.h
#	indra/llui/lltexteditor.cpp
#	indra/llui/lltexteditor.h
#	indra/newview/app_settings/settings.xml
#	indra/newview/llagent.cpp
#	indra/newview/llappviewer.cpp
#	indra/newview/llfloatermodelpreview.h
#	indra/newview/llinventorybridge.cpp
#	indra/newview/llinventorybridge.h
#	indra/newview/llinventoryfilter.cpp
#	indra/newview/llinventoryfilter.h
#	indra/newview/llmaterialeditor.cpp
#	indra/newview/lloutfitslist.cpp
#	indra/newview/lloutfitslist.h
#	indra/newview/llpanelmaininventory.cpp
#	indra/newview/llpaneloutfitedit.cpp
#	indra/newview/llpaneloutfitsinventory.cpp
#	indra/newview/llpaneloutfitsinventory.h
#	indra/newview/llpanelpermissions.cpp
#	indra/newview/llpanelpermissions.h
#	indra/newview/llpanelwearing.cpp
#	indra/newview/llpanelwearing.h
#	indra/newview/llselectmgr.h
#	indra/newview/llskinningutil.cpp
#	indra/newview/lltexturectrl.cpp
#	indra/newview/lltexturefetch.cpp
#	indra/newview/lltooldraganddrop.cpp
#	indra/newview/llviewerattachmenu.cpp
#	indra/newview/llviewerinventory.cpp
#	indra/newview/llviewerinventory.h
#	indra/newview/llviewerwindow.cpp
#	indra/newview/llvoavatar.cpp
#	indra/newview/llwearableitemslist.cpp
#	indra/newview/skins/default/textures/textures.xml
#	indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml
#	indra/newview/skins/default/xui/en/floater_object_weights.xml
#	indra/newview/skins/default/xui/en/menu_gallery_outfit_tab.xml
#	indra/newview/skins/default/xui/en/menu_inventory.xml
#	indra/newview/skins/default/xui/en/menu_outfit_tab.xml
#	indra/newview/skins/default/xui/en/menu_wearing_tab.xml
#	indra/newview/skins/default/xui/en/notifications.xml
#	indra/newview/skins/default/xui/en/panel_main_inventory.xml
#	indra/newview/skins/default/xui/en/panel_outfit_gallery.xml
#	indra/newview/skins/default/xui/en/panel_outfits_list.xml
#	indra/newview/skins/default/xui/en/panel_outfits_wearing.xml
#	indra/newview/skins/default/xui/en/panel_places.xml
#	indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
#	indra/newview/skins/default/xui/en/panel_settings_sky_sunmoon.xml
#	indra/newview/skins/default/xui/en/sidepanel_appearance.xml
#	indra/newview/skins/default/xui/en/strings.xml
#	indra/newview/skins/default/xui/ja/panel_settings_sky_sunmoon.xml
#	indra/newview/skins/default/xui/pl/panel_settings_sky_sunmoon.xml
2025-04-16 17:49:47 +02:00
Andrey Lihatskiy ae93198735 Merge branch 'main' into marchcat/maint-c-restore
# Conflicts:
#	indra/llcommon/lldate.h
#	indra/newview/llappviewer.cpp
#	indra/newview/llinventorybridge.cpp
#	indra/newview/llmaterialeditor.cpp
#	indra/newview/llviewerparceloverlay.cpp
#	indra/newview/llvoavatar.cpp
2025-04-15 19:31:20 +03:00
Ansariel 3f1373de4c Merge branch 'release/2025.03' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/llkdu/llimagej2ckdu.cpp
#	indra/llwindow/llwindowwin32.cpp
#	indra/newview/lleventpoll.cpp
#	indra/newview/llvoavatar.h
#	indra/newview/llvoavatarself.h
2025-04-10 18:28:30 +02:00
Andrey Lihatskiy 5d7a5001b4 Merge commit '9e24b30' into marchcat/maint-c/restore
# Conflicts:
#	indra/llmath/v2math.cpp
#	indra/llmath/v2math.h
#	indra/llmath/v3math.h
#	indra/llmath/v4math.h
#	indra/llui/llfolderviewitem.cpp
#	indra/llui/llfolderviewitem.h
#	indra/llui/llfolderviewmodel.h
#	indra/llui/llmodaldialog.cpp
#	indra/llui/lltexteditor.cpp
#	indra/llui/lltexteditor.h
#	indra/llwindow/llwindowwin32.cpp
#	indra/newview/llagent.cpp
#	indra/newview/llagentcamera.h
#	indra/newview/llavatarrenderinfoaccountant.cpp
#	indra/newview/llconversationmodel.h
#	indra/newview/llfloaterinventorysettings.cpp
#	indra/newview/llfloaternamedesc.cpp
#	indra/newview/llfloaternamedesc.h
#	indra/newview/llfloaterobjectweights.cpp
#	indra/newview/llfloaterobjectweights.h
#	indra/newview/llfolderviewmodelinventory.h
#	indra/newview/llinspecttexture.cpp
#	indra/newview/llinventorybridge.cpp
#	indra/newview/llinventorybridge.h
#	indra/newview/llinventoryfunctions.cpp
#	indra/newview/llinventorygallery.h
#	indra/newview/llinventorygallerymenu.cpp
#	indra/newview/llinventorymodel.cpp
#	indra/newview/llinventorypanel.cpp
#	indra/newview/llinventorypanel.h
#	indra/newview/llmaterialeditor.cpp
#	indra/newview/lloutfitgallery.cpp
#	indra/newview/lloutfitgallery.h
#	indra/newview/lloutfitslist.cpp
#	indra/newview/lloutfitslist.h
#	indra/newview/llpanelgroupcreate.cpp
#	indra/newview/llpanelgroupgeneral.cpp
#	indra/newview/llpanelobjectinventory.cpp
#	indra/newview/llpaneloutfitsinventory.h
#	indra/newview/llpanelprofile.cpp
#	indra/newview/llpanelwearing.cpp
#	indra/newview/llreflectionmap.cpp
#	indra/newview/llselectmgr.cpp
#	indra/newview/llsidepanelappearance.cpp
#	indra/newview/llsidepaneliteminfo.cpp
#	indra/newview/llteleporthistorystorage.cpp
#	indra/newview/lltexturectrl.cpp
#	indra/newview/lltexturectrl.h
#	indra/newview/lltexturefetch.cpp
#	indra/newview/lltexturefetch.h
#	indra/newview/llviewerassetupload.cpp
#	indra/newview/llviewercamera.cpp
#	indra/newview/llviewercamera.h
#	indra/newview/llviewermenufile.cpp
#	indra/newview/llviewerobject.h
#	indra/newview/llviewertexture.cpp
#	indra/newview/llviewerwindow.cpp
#	indra/newview/llvoavatar.cpp
#	indra/newview/llvoavatar.h
#	indra/newview/llvoavatarself.cpp
#	indra/newview/llvovolume.cpp
#	indra/newview/llvovolume.h
#	indra/newview/tests/llviewerassetstats_test.cpp
2025-04-10 06:01:50 +03:00
Andrey Kleshchev a7a8d6c02e #3627 std::bad_alloc when loading a model 2025-04-07 21:13:48 +03:00
Andrey Kleshchev f6a2dbe6ec #3627 std::bad_alloc when loading a model 2025-04-06 22:40:42 +03:00
Ansariel e518cba882 Merge branch 'release/2024.12-ForeverFPS' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/llrender/llfontfreetype.h
2025-02-26 10:04:47 +01:00
Andrey Kleshchev b2e3159ce7 viewer-private#398 Fix constant asset rerequests 2025-02-22 13:02:52 +02:00
Ansariel 5bf1f485f3 Merge branch 'release/2024.12-ForeverFPS' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/llcommon/llqueuedthread.cpp
2025-02-13 21:24:29 +01:00
Andrey Lihatskiy ddbe1ff981 Fix xcode16 build errors 2025-02-13 17:30:08 +02:00
Ansariel 8758495d11 Merge branch 'release/2024.12-ForeverFPS' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/llcommon/llerror.cpp
#	indra/llmath/v4math.h
#	indra/llui/lltransutil.cpp
#	indra/newview/llface.cpp
#	indra/newview/llstartup.cpp
#	indra/newview/llvovolume.cpp
2025-01-26 00:07:35 +01:00
Rye 4763195e18 Fix potential undefined behavior when converting to and from glm types from LLVector3/4 and fall back mul_mat4_vec3 to scalar implementation to attempt crash mitigation (#3339) 2025-01-23 18:40:19 -05:00
Ansariel b727a5e73c Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/newview/llglsandbox.cpp
#	indra/newview/llphysicsshapebuilderutil.cpp
2024-09-19 01:25:26 +02:00
Dave Parks b31fd167c0
Fix for particles not loading textures (#2598)
Also fix assert while prepping GLTF assets
2024-09-18 15:23:20 -05:00
Ansariel 1cca913ba7 Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/cmake/CMakeLists.txt
#	indra/llprimitive/lldaeloader.cpp
#	indra/llprimitive/llmodelloader.cpp
#	indra/llrender/llgl.h
#	indra/llrender/llrender.h
#	indra/llui/llurlentry.cpp
#	indra/llui/llurlentry.h
#	indra/newview/llviewerdisplay.cpp
#	indra/newview/llvoavatar.cpp
2024-09-13 18:54:12 +02:00
Rye Mutt b713f56d07
Replace glh_linear usage with GLM (#2554) 2024-09-12 11:22:10 -05:00
Ansariel bea9a8e612 Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/newview/llviewertexturelist.cpp
#	indra/newview/pipeline.cpp
#	indra/newview/skins/default/xui/en/notifications.xml
2024-09-04 00:33:40 +02:00
Brad Linden 11afd7f86a
Add error handling for intel crashes from GLTF Scene shader (#2456)
fix secondlife/viewer#1856
2024-08-29 12:57:49 -07:00
Ansariel 830eeaa6ff Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/newview/llagentwearables.cpp
#	indra/newview/llface.cpp
#	indra/newview/llpanelpeople.cpp
#	indra/newview/llpanelprofile.cpp
#	indra/newview/llviewertexturelist.cpp
2024-08-21 00:46:46 +02:00
Dave Parks ed6732eda8
#2315 Ensure textures are deleted when they are no longer referenced. (#2343)
* #2315 WIP -- Clean up deletion rules in texture list.  Incidental decruft.

* Touch up assertions.

* Move mLastReferencedTimer to LLViewerMediaTexture since it's no longer used by LLViewerTexture
2024-08-20 06:59:07 -05:00
Ansariel 76f2b1f48c Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/newview/llfloaterspellchecksettings.h
#	indra/newview/llpaneleditwearable.cpp
#	indra/newview/llviewertexture.cpp
#	indra/newview/llviewertexture.h
2024-07-16 10:44:38 +02:00
Dave Parks 98941831e4
Fix for GLTF scenes not uploading (#1994) 2024-07-11 11:36:36 -05:00
Ansariel 088cc2ea35 Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/llcommon/llpointer.h
#	indra/llcommon/llqueuedthread.cpp
#	indra/llfilesystem/llfilesystem.cpp
#	indra/llui/llconsole.cpp
#	indra/llui/llkeywords.cpp
#	indra/llui/llstatgraph.cpp
#	indra/llui/llvirtualtrackball.cpp
#	indra/newview/llagentcamera.cpp
#	indra/newview/llappviewer.cpp
#	indra/newview/llfloateremojipicker.cpp
#	indra/newview/llfloaterimnearbychathandler.cpp
#	indra/newview/llfloatersettingsdebug.cpp
#	indra/newview/llfloatersnapshot.cpp
#	indra/newview/llglsandbox.cpp
#	indra/newview/llnetmap.cpp
#	indra/newview/llpanelface.cpp
#	indra/newview/llpanelpermissions.cpp
#	indra/newview/llpanelplaceprofile.cpp
#	indra/newview/llstartup.cpp
#	indra/newview/llviewermessage.cpp
#	indra/newview/llvocache.cpp
#	indra/newview/llworldmapview.cpp
2024-07-09 02:25:42 +02:00
Ansariel 9fdca96f8b Re-enable compiler warnings C4244 and C4396 except for lltracerecording.h and llunittype.h for now 2024-07-08 20:27:14 +02:00
Ansariel e9b6550c48 Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/llfilesystem/llfilesystem.cpp
#	indra/newview/llappviewer.cpp
#	indra/newview/lltextureview.cpp
#	indra/newview/llviewertexture.h
#	indra/newview/llviewertexturelist.cpp
2024-07-06 11:06:55 +02:00
Dave Parks 08b933a0c6
#1870 Tune up for better experience on integrated intel with low memory (#1872)
* More deterministic vsize calculation.   Add control for choosing downscale method.
* Quick hack to make GLTF preview work again
2024-07-03 17:42:24 -05:00
Ansariel 9a2b83b294 Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/llcommon/llmemory.cpp
#	indra/llmessage/CMakeLists.txt
#	indra/llmessage/llfiltersd2xmlrpc.cpp
#	indra/newview/lldebugview.cpp
#	indra/newview/lldrawpoolbump.cpp
#	indra/newview/llheroprobemanager.cpp
#	indra/newview/llnetmap.cpp
#	indra/newview/llslurl.cpp
#	indra/newview/llsurface.cpp
#	indra/newview/lltextureview.cpp
#	indra/newview/llversioninfo.cpp
#	indra/newview/llviewertexture.cpp
#	indra/newview/llviewertexturelist.h
#	indra/newview/llviewerwindow.cpp
#	indra/newview/llvlcomposition.cpp
#	indra/newview/llvoiceclient.cpp
#	indra/newview/llworld.cpp
#	indra/newview/llxmlrpctransaction.cpp
#	indra/newview/skins/default/xui/da/floater_about.xml
#	indra/newview/skins/default/xui/de/floater_about.xml
#	indra/newview/skins/default/xui/de/menu_viewer.xml
#	indra/newview/skins/default/xui/en/floater_about.xml
#	indra/newview/skins/default/xui/es/floater_about.xml
#	indra/newview/skins/default/xui/es/menu_viewer.xml
#	indra/newview/skins/default/xui/fr/floater_about.xml
#	indra/newview/skins/default/xui/it/floater_about.xml
#	indra/newview/skins/default/xui/it/menu_viewer.xml
#	indra/newview/skins/default/xui/ja/menu_viewer.xml
#	indra/newview/skins/default/xui/pl/menu_viewer.xml
#	indra/newview/skins/default/xui/pt/floater_about.xml
#	indra/newview/skins/default/xui/pt/menu_viewer.xml
#	indra/newview/skins/default/xui/ru/floater_about.xml
#	indra/newview/skins/default/xui/ru/menu_viewer.xml
#	indra/newview/skins/default/xui/tr/floater_about.xml
#	indra/newview/skins/default/xui/tr/menu_viewer.xml
#	indra/newview/skins/default/xui/zh/floater_about.xml
#	indra/newview/skins/default/xui/zh/menu_viewer.xml
#	scripts/messages/message_template.msg.sha1
2024-07-02 18:08:57 +02:00
Andrey Kleshchev c7bd4528a7 viewer#1131 gltf model upload UI WIP 2024-07-01 20:05:31 +03:00
Dave Parks ab87978cbc
1836 dont store texture in system memory unless absolutely necessary (#1843)
* #1836 Texture memory usage overhaul.  Much decrufting
- don't keep a copy of textures in system memory
- use GPU to downrez textures instead of reloading from cache
- use GPU to generate brightness/darkness bumpmaps
2024-06-27 13:12:43 -05:00
Ansariel 364a14a8aa Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/llcommon/llprofilercategories.h
2024-06-21 22:45:12 +02:00
Dave Parks 80ea30af1a
#1769 gltf optimization pass (#1816)
#1814 and #1517 Fix mirror update rate and occlusion culling
2024-06-21 13:13:08 -05:00
Ansariel 050d2fefab Merge branch 'project/gltf_development' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/newview/gltf/primitive.cpp
#	indra/newview/lldynamictexture.cpp
#	indra/newview/llfloaterregioninfo.h
#	indra/newview/lltexturectrl.cpp
#	indra/newview/lltinygltfhelper.cpp
#	indra/newview/llvlcomposition.cpp
#	indra/newview/llvlcomposition.h
#	indra/newview/llvovolume.cpp
2024-06-13 03:21:12 +02:00
Ansariel c29a661b22 Merge branch 'master' of https://bitbucket.org/Ansariel/phoenix-firestorm-600
# Conflicts:
#	indra/llimage/llimage.cpp
#	indra/llprimitive/llgltfmaterial.h
#	indra/llrender/llglslshader.cpp
#	indra/newview/app_settings/shaders/class1/deferred/pbrterrainF.glsl
#	indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl
#	indra/newview/app_settings/shaders/class2/deferred/pbralphaF.glsl
#	indra/newview/gltf/accessor.cpp
#	indra/newview/gltf/accessor.h
#	indra/newview/gltf/animation.h
#	indra/newview/gltf/asset.cpp
#	indra/newview/gltf/primitive.cpp
#	indra/newview/gltf/primitive.h
#	indra/newview/gltfscenemanager.h
#	indra/newview/llenvironment.cpp
#	indra/newview/llfetchedgltfmaterial.cpp
#	indra/newview/llfloaterregioninfo.h
#	indra/newview/llimprocessing.cpp
#	indra/newview/lltexturectrl.cpp
#	indra/newview/lltinygltfhelper.cpp
#	indra/newview/llviewermenu.cpp
#	indra/newview/llvlcomposition.cpp
#	indra/newview/llvlcomposition.h
#	indra/newview/llvovolume.cpp
#	indra/newview/pipeline.cpp
2024-06-13 01:54:18 +02:00
Brad Linden d12c897bfc Merge remote-tracking branch 'origin/project/gltf_development' into brad/maint-a-merge-to-gltf-dev
# Conflicts:
 #	indra/newview/gltf/primitive.cpp
2024-06-12 10:31:27 -07:00
Brad Linden a7b0f93911 Fixed signed/unsigned warnings after they got enabled in the maint-A merge 2024-06-11 15:39:48 -07:00
Dave Parks f40fbdf4ad
#1718 Add GLTF support for multiple texcoords (#1720)
* Fix for GLTF MeshPrimitiveModes test
2024-06-11 17:10:13 -05:00
Dave Parks 429c92ad75
#1687 Add support for KHR_texture_transform (#1717) 2024-06-11 13:27:54 -05:00
Ansariel 18903f6cac Merge branch 'master' of https://github.com/FirestormViewer/phoenix-firestorm
# Conflicts:
#	indra/llappearance/llavatarappearance.h
#	indra/llimage/llimage.cpp
#	indra/llmath/llvolume.cpp
#	indra/llmath/llvolume.h
#	indra/llprimitive/llgltfmaterial.h
#	indra/llrender/llshadermgr.cpp
#	indra/newview/lldynamictexture.cpp
#	indra/newview/llenvironment.cpp
#	indra/newview/llfetchedgltfmaterial.cpp
#	indra/newview/llfloaterimagepreview.cpp
#	indra/newview/llfloaterimagepreview.h
#	indra/newview/llfloaterpreference.cpp
#	indra/newview/llfloaterregioninfo.cpp
#	indra/newview/llfloaterregioninfo.h
#	indra/newview/llmaniprotate.cpp
#	indra/newview/llmaniptranslate.cpp
#	indra/newview/llpanelvolume.cpp
#	indra/newview/llselectmgr.cpp
#	indra/newview/llselectmgr.h
#	indra/newview/llsurface.cpp
#	indra/newview/llsurface.h
#	indra/newview/llsurfacepatch.cpp
#	indra/newview/lltexturectrl.cpp
#	indra/newview/lltexturectrl.h
#	indra/newview/lltinygltfhelper.cpp
#	indra/newview/llviewerregion.cpp
#	indra/newview/llviewerwindow.cpp
#	indra/newview/llviewerwindow.h
#	indra/newview/llvlcomposition.cpp
#	indra/newview/llvlcomposition.h
#	indra/newview/llvocache.cpp
#	indra/newview/llvovolume.cpp
#	indra/newview/pipeline.cpp
2024-06-11 19:04:21 +02:00
Dave Parks 227e9be068
#1654 generate normals and tangents according to gltf specification (#1662)
* Disable unloading of objects in background. 
* Add unlit GLTF shader variant
2024-06-10 10:43:38 -05:00
Dave Parks d1a8a9d0c3
#1596 Fix for GLTF uploads failing after loading from .glb file (#1602) 2024-05-30 16:28:56 -05:00
Dave Parks 15fd13f830
#1530 Increase joint limit for GLTF Assets (#1582)
* Migrate GLTF scene rendering to its own shaders
* Add support for ambient occlusion map separate from metallic roughness map (or absent)
* Use UBO's for GLTF joints
* Better error handling of downloading GLTF assets
2024-05-29 16:56:39 -05:00
Dave Parks 2f41200384
Remove tinygltf dependency from LL::GLTF (#1541)
* #1535 Image loading/saving support in boost::json driven GLTF parser
* #1536 GLB Support in boost::json drvien GLTF parser
2024-05-28 09:45:40 -05:00
Brad Linden 9f6849e081 Merge remote-tracking branch 'origin/project/gltf_development' into brad/merge-maint-a-to-dev 2024-05-23 11:35:23 -07:00
Brad Linden a1f49564d6 Merge remote-tracking branch 'origin/DRTVWR-600-maint-A' into brad/merge-maint-a-to-dev 2024-05-23 11:31:19 -07:00