summaryrefslogtreecommitdiff
path: root/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src
diff options
context:
space:
mode:
Diffstat (limited to '.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src')
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson.h17
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson.hpp65
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp68
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp77
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp71
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp199
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp123
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp87
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp111
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp115
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp138
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Configuration.hpp284
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp102
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp35
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp61
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp30
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp72
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp30
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp18
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp52
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp41
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp46
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp27
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp19
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp76
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp383
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp40
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp716
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp159
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/Latch.hpp51
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp110
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp170
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp65
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp46
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp52
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/Allocator.hpp45
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp96
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/MemoryPoolList.hpp211
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/ResourceManager.hpp121
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/ResourceManagerImpl.hpp53
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/StringBuffer.hpp78
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp85
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/StringNode.hpp73
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/StringPool.hpp100
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp57
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackBinary.hpp93
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp486
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackExtension.hpp115
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp236
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/endianness.hpp44
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp18
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Namespace.hpp43
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp94
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp197
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/JsonFloat.hpp18
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/JsonInteger.hpp28
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp120
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp144
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp236
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/JsonObject.hpp231
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/JsonObjectConst.hpp158
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/JsonObjectIterator.hpp77
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/JsonPair.hpp62
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp74
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/ObjectData.hpp72
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp94
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp28
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp14
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp45
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp17
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp29
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp36
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp21
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp24
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp144
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp54
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp33
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp27
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp24
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/decay.hpp27
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp13
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp21
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/function_traits.hpp26
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp20
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp19
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp26
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp20
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp16
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp45
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp21
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp19
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp32
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp15
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp16
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp26
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp24
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp37
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp21
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_cv.hpp26
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp22
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp15
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/void_t.hpp18
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp30
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp26
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp42
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp52
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp18
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp25
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp36
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp32
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp39
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp20
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp52
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/Adapters/FlashString.hpp84
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/Adapters/RamString.hpp109
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/Adapters/StringObject.hpp50
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp18
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/JsonString.hpp87
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/StringAdapter.hpp42
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp72
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/StringTraits.hpp68
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/Converter.hpp22
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp397
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/JsonVariant.hpp69
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/JsonVariantConst.hpp186
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/JsonVariantCopier.hpp31
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/JsonVariantVisitor.hpp55
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantAttorney.hpp35
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantCompare.hpp207
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp82
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp597
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantDataVisitor.hpp20
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp146
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp175
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantRefBase.hpp298
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp175
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantTag.hpp15
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp30
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/compatibility.hpp133
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/version.hpp11
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/CMakeLists.txt91
141 files changed, 0 insertions, 12013 deletions
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson.h b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson.h
deleted file mode 100644
index ecf94fb..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson.h
+++ /dev/null
@@ -1,17 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#ifdef __cplusplus
-
-#include "ArduinoJson.hpp"
-
-using namespace ArduinoJson;
-
-#else
-
-#error ArduinoJson requires a C++ compiler, please change file extension to .cc or .cpp
-
-#endif
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson.hpp
deleted file mode 100644
index 745d3b5..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson.hpp
+++ /dev/null
@@ -1,65 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#if __cplusplus < 201103L && (!defined(_MSC_VER) || _MSC_VER < 1910)
-#error ArduinoJson requires C++11 or newer. Configure your compiler for C++11 or downgrade ArduinoJson to 6.20.
-#endif
-
-#include "ArduinoJson/Configuration.hpp"
-
-// Include Arduino.h before stdlib.h to avoid conflict with atexit()
-// https://github.com/bblanchon/ArduinoJson/pull/1693#issuecomment-1001060240
-#if ARDUINOJSON_ENABLE_ARDUINO_STRING || ARDUINOJSON_ENABLE_ARDUINO_STREAM || \
- ARDUINOJSON_ENABLE_ARDUINO_PRINT || \
- (ARDUINOJSON_ENABLE_PROGMEM && defined(ARDUINO))
-#include <Arduino.h>
-#endif
-
-#if !ARDUINOJSON_DEBUG
-#ifdef __clang__
-#pragma clang system_header
-#elif defined __GNUC__
-#pragma GCC system_header
-#endif
-#endif
-
-// Remove true and false macros defined by some cores, such as Arduino Due's
-// See issues #2181 and arduino/ArduinoCore-sam#50
-#ifdef true
-#undef true
-#endif
-#ifdef false
-#undef false
-#endif
-
-#include "ArduinoJson/Array/JsonArray.hpp"
-#include "ArduinoJson/Object/JsonObject.hpp"
-#include "ArduinoJson/Variant/JsonVariantConst.hpp"
-
-#include "ArduinoJson/Document/JsonDocument.hpp"
-
-#include "ArduinoJson/Array/ArrayImpl.hpp"
-#include "ArduinoJson/Array/ElementProxy.hpp"
-#include "ArduinoJson/Array/Utilities.hpp"
-#include "ArduinoJson/Collection/CollectionImpl.hpp"
-#include "ArduinoJson/Memory/ResourceManagerImpl.hpp"
-#include "ArduinoJson/Object/MemberProxy.hpp"
-#include "ArduinoJson/Object/ObjectImpl.hpp"
-#include "ArduinoJson/Variant/ConverterImpl.hpp"
-#include "ArduinoJson/Variant/JsonVariantCopier.hpp"
-#include "ArduinoJson/Variant/VariantCompare.hpp"
-#include "ArduinoJson/Variant/VariantImpl.hpp"
-#include "ArduinoJson/Variant/VariantRefBaseImpl.hpp"
-
-#include "ArduinoJson/Json/JsonDeserializer.hpp"
-#include "ArduinoJson/Json/JsonSerializer.hpp"
-#include "ArduinoJson/Json/PrettyJsonSerializer.hpp"
-#include "ArduinoJson/MsgPack/MsgPackBinary.hpp"
-#include "ArduinoJson/MsgPack/MsgPackDeserializer.hpp"
-#include "ArduinoJson/MsgPack/MsgPackExtension.hpp"
-#include "ArduinoJson/MsgPack/MsgPackSerializer.hpp"
-
-#include "ArduinoJson/compatibility.hpp"
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp
deleted file mode 100644
index 17afa54..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Collection/CollectionData.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-class ArrayData : public CollectionData {
- public:
- VariantData *addElement(ResourceManager *resources);
-
- static VariantData *addElement(ArrayData *array,
- ResourceManager *resources) {
- if (!array)
- return nullptr;
- return array->addElement(resources);
- }
-
- template <typename T>
- bool addValue(const T &value, ResourceManager *resources);
-
- template <typename T>
- static bool addValue(ArrayData *array, const T &value,
- ResourceManager *resources) {
- if (!array)
- return false;
- return array->addValue(value, resources);
- }
-
- VariantData *getOrAddElement(size_t index, ResourceManager *resources);
-
- VariantData *getElement(size_t index,
- const ResourceManager *resources) const;
-
- static VariantData *getElement(const ArrayData *array, size_t index,
- const ResourceManager *resources) {
- if (!array)
- return nullptr;
- return array->getElement(index, resources);
- }
-
- void removeElement(size_t index, ResourceManager *resources);
-
- static void removeElement(ArrayData *array, size_t index,
- ResourceManager *resources) {
- if (!array)
- return;
- array->removeElement(index, resources);
- }
-
- void remove(iterator it, ResourceManager *resources) {
- CollectionData::removeOne(it, resources);
- }
-
- static void remove(ArrayData *array, iterator it,
- ResourceManager *resources) {
- if (array)
- return array->remove(it, resources);
- }
-
- private:
- iterator at(size_t index, const ResourceManager *resources) const;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp
deleted file mode 100644
index 5c37efd..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp
+++ /dev/null
@@ -1,77 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Array/ArrayData.hpp>
-#include <ArduinoJson/Variant/VariantCompare.hpp>
-#include <ArduinoJson/Variant/VariantData.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-inline ArrayData::iterator
-ArrayData::at(size_t index, const ResourceManager *resources) const {
- auto it = createIterator(resources);
- while (!it.done() && index) {
- it.next(resources);
- --index;
- }
- return it;
-}
-
-inline VariantData *ArrayData::addElement(ResourceManager *resources) {
- auto slot = resources->allocVariant();
- if (!slot)
- return nullptr;
- CollectionData::appendOne(slot, resources);
- return slot.ptr();
-}
-
-inline VariantData *ArrayData::getOrAddElement(size_t index,
- ResourceManager *resources) {
- auto it = createIterator(resources);
- while (!it.done() && index > 0) {
- it.next(resources);
- index--;
- }
- if (it.done())
- index++;
- VariantData *element = it.data();
- while (index > 0) {
- element = addElement(resources);
- if (!element)
- return nullptr;
- index--;
- }
- return element;
-}
-
-inline VariantData *
-ArrayData::getElement(size_t index, const ResourceManager *resources) const {
- return at(index, resources).data();
-}
-
-inline void ArrayData::removeElement(size_t index, ResourceManager *resources) {
- remove(at(index, resources), resources);
-}
-
-template <typename T>
-inline bool ArrayData::addValue(const T &value, ResourceManager *resources) {
- ARDUINOJSON_ASSERT(resources != nullptr);
- auto slot = resources->allocVariant();
- if (!slot)
- return false;
- JsonVariant variant(slot.ptr(), resources);
- if (!variant.set(value)) {
- resources->freeVariant(slot);
- return false;
- }
- CollectionData::appendOne(slot, resources);
- return true;
-}
-
-// Returns the size (in bytes) of an array with n elements.
-constexpr size_t sizeofArray(size_t n) { return n * ResourceManager::slotSize; }
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp
deleted file mode 100644
index 3f72d74..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp
+++ /dev/null
@@ -1,71 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Variant/VariantRefBase.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// A proxy class to get or set an element of an array.
-// https://arduinojson.org/v7/api/jsonarray/subscript/
-template <typename TUpstream>
-class ElementProxy : public VariantRefBase<ElementProxy<TUpstream>>,
- public VariantOperators<ElementProxy<TUpstream>> {
- friend class VariantAttorney;
-
- friend class VariantRefBase<ElementProxy<TUpstream>>;
-
- template <typename, typename> friend class MemberProxy;
-
- template <typename> friend class ElementProxy;
-
- public:
- ElementProxy(TUpstream upstream, size_t index)
- : upstream_(upstream), index_(index) {}
-
- ElementProxy &operator=(const ElementProxy &src) {
- this->set(src);
- return *this;
- }
-
- template <typename T> ElementProxy &operator=(const T &src) {
- this->set(src);
- return *this;
- }
-
- template <typename T> ElementProxy &operator=(T *src) {
- this->set(src);
- return *this;
- }
-
- private:
- // clang-format off
- ElementProxy(const ElementProxy& src) // Error here? See https://arduinojson.org/v7/proxy-non-copyable/
- : upstream_(src.upstream_), index_(src.index_) {}
- // clang-format on
-
- ResourceManager *getResourceManager() const {
- return VariantAttorney::getResourceManager(upstream_);
- }
-
- FORCE_INLINE VariantData *getData() const {
- return VariantData::getElement(
- VariantAttorney::getData(upstream_), index_,
- VariantAttorney::getResourceManager(upstream_));
- }
-
- VariantData *getOrCreateData() const {
- auto data = VariantAttorney::getOrCreateData(upstream_);
- if (!data)
- return nullptr;
- return data->getOrAddElement(
- index_, VariantAttorney::getResourceManager(upstream_));
- }
-
- TUpstream upstream_;
- size_t index_;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp
deleted file mode 100644
index 1f17606..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp
+++ /dev/null
@@ -1,199 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Array/ElementProxy.hpp>
-#include <ArduinoJson/Array/JsonArrayConst.hpp>
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-class JsonObject;
-
-// A reference to an array in a JsonDocument
-// https://arduinojson.org/v7/api/jsonarray/
-class JsonArray : public detail::VariantOperators<JsonArray> {
- friend class detail::VariantAttorney;
-
- public:
- using iterator = JsonArrayIterator;
-
- // Constructs an unbound reference.
- JsonArray() : data_(0), resources_(0) {}
-
- // INTERNAL USE ONLY
- JsonArray(detail::ArrayData *data, detail::ResourceManager *resources)
- : data_(data), resources_(resources) {}
-
- // Returns a JsonVariant pointing to the array.
- // https://arduinojson.org/v7/api/jsonvariant/
- operator JsonVariant() {
- void *data = data_; // prevent warning cast-align
- return JsonVariant(reinterpret_cast<detail::VariantData *>(data),
- resources_);
- }
-
- // Returns a read-only reference to the array.
- // https://arduinojson.org/v7/api/jsonarrayconst/
- operator JsonArrayConst() const {
- return JsonArrayConst(data_, resources_);
- }
-
- // Appends a new (empty) element to the array.
- // Returns a reference to the new element.
- // https://arduinojson.org/v7/api/jsonarray/add/
- template <typename T, detail::enable_if_t<
- !detail::is_same<T, JsonVariant>::value, int> = 0>
- T add() const {
- return add<JsonVariant>().to<T>();
- }
-
- // Appends a new (null) element to the array.
- // Returns a reference to the new element.
- // https://arduinojson.org/v7/api/jsonarray/add/
- template <typename T, detail::enable_if_t<
- detail::is_same<T, JsonVariant>::value, int> = 0>
- JsonVariant add() const {
- return JsonVariant(detail::ArrayData::addElement(data_, resources_),
- resources_);
- }
-
- // Appends a value to the array.
- // https://arduinojson.org/v7/api/jsonarray/add/
- template <typename T> bool add(const T &value) const {
- return detail::ArrayData::addValue(data_, value, resources_);
- }
-
- // Appends a value to the array.
- // https://arduinojson.org/v7/api/jsonarray/add/
- template <typename T,
- detail::enable_if_t<!detail::is_const<T>::value, int> = 0>
- bool add(T *value) const {
- return detail::ArrayData::addValue(data_, value, resources_);
- }
-
- // Returns an iterator to the first element of the array.
- // https://arduinojson.org/v7/api/jsonarray/begin/
- iterator begin() const {
- if (!data_)
- return iterator();
- return iterator(data_->createIterator(resources_), resources_);
- }
-
- // Returns an iterator following the last element of the array.
- // https://arduinojson.org/v7/api/jsonarray/end/
- iterator end() const { return iterator(); }
-
- // Copies an array.
- // https://arduinojson.org/v7/api/jsonarray/set/
- bool set(JsonArrayConst src) const {
- if (!data_)
- return false;
-
- clear();
- for (auto element : src) {
- if (!add(element))
- return false;
- }
-
- return true;
- }
-
- // Removes the element at the specified iterator.
- // https://arduinojson.org/v7/api/jsonarray/remove/
- void remove(iterator it) const {
- detail::ArrayData::remove(data_, it.iterator_, resources_);
- }
-
- // Removes the element at the specified index.
- // https://arduinojson.org/v7/api/jsonarray/remove/
- void remove(size_t index) const {
- detail::ArrayData::removeElement(data_, index, resources_);
- }
-
- // Removes the element at the specified index.
- // https://arduinojson.org/v7/api/jsonarray/remove/
- template <typename TVariant,
- detail::enable_if_t<detail::IsVariant<TVariant>::value, int> = 0>
- void remove(const TVariant &variant) const {
- if (variant.template is<size_t>())
- remove(variant.template as<size_t>());
- }
-
- // Removes all the elements of the array.
- // https://arduinojson.org/v7/api/jsonarray/clear/
- void clear() const { detail::ArrayData::clear(data_, resources_); }
-
- // Gets or sets the element at the specified index.
- // https://arduinojson.org/v7/api/jsonarray/subscript/
- template <typename T,
- detail::enable_if_t<detail::is_integral<T>::value, int> = 0>
- detail::ElementProxy<JsonArray> operator[](T index) const {
- return {*this, size_t(index)};
- }
-
- // Gets or sets the element at the specified index.
- // https://arduinojson.org/v7/api/jsonarray/subscript/
- template <typename TVariant,
- detail::enable_if_t<detail::IsVariant<TVariant>::value, int> = 0>
- detail::ElementProxy<JsonArray> operator[](const TVariant &variant) const {
- if (variant.template is<size_t>())
- return {*this, variant.template as<size_t>()};
- else
- return {*this, size_t(-1)};
- }
-
- operator JsonVariantConst() const {
- return JsonVariantConst(collectionToVariant(data_), resources_);
- }
-
- // Returns true if the reference is unbound.
- // https://arduinojson.org/v7/api/jsonarray/isnull/
- bool isNull() const { return data_ == 0; }
-
- // Returns true if the reference is bound.
- // https://arduinojson.org/v7/api/jsonarray/isnull/
- operator bool() const { return data_ != 0; }
-
- // Returns the depth (nesting level) of the array.
- // https://arduinojson.org/v7/api/jsonarray/nesting/
- size_t nesting() const {
- return detail::VariantData::nesting(collectionToVariant(data_),
- resources_);
- }
-
- // Returns the number of elements in the array.
- // https://arduinojson.org/v7/api/jsonarray/size/
- size_t size() const { return data_ ? data_->size(resources_) : 0; }
-
- // DEPRECATED: use add<JsonVariant>() instead
- ARDUINOJSON_DEPRECATED("use add<JsonVariant>() instead")
- JsonVariant add() const { return add<JsonVariant>(); }
-
- // DEPRECATED: use add<JsonArray>() instead
- ARDUINOJSON_DEPRECATED("use add<JsonArray>() instead")
- JsonArray createNestedArray() const { return add<JsonArray>(); }
-
- // DEPRECATED: use add<JsonObject>() instead
- ARDUINOJSON_DEPRECATED("use add<JsonObject>() instead")
- JsonObject createNestedObject() const;
-
- // DEPRECATED: always returns zero
- ARDUINOJSON_DEPRECATED("always returns zero")
- size_t memoryUsage() const { return 0; }
-
- private:
- detail::ResourceManager *getResourceManager() const { return resources_; }
-
- detail::VariantData *getData() const { return collectionToVariant(data_); }
-
- detail::VariantData *getOrCreateData() const {
- return collectionToVariant(data_);
- }
-
- detail::ArrayData *data_;
- detail::ResourceManager *resources_;
-};
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp
deleted file mode 100644
index 04f6d20..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp
+++ /dev/null
@@ -1,123 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Array/JsonArrayIterator.hpp>
-#include <ArduinoJson/Variant/VariantAttorney.hpp>
-#include <ArduinoJson/Variant/VariantData.hpp>
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-class JsonObject;
-
-// A read-only reference to an array in a JsonDocument
-// https://arduinojson.org/v7/api/jsonarrayconst/
-class JsonArrayConst : public detail::VariantOperators<JsonArrayConst> {
- friend class JsonArray;
- friend class detail::VariantAttorney;
-
- public:
- using iterator = JsonArrayConstIterator;
-
- // Returns an iterator to the first element of the array.
- // https://arduinojson.org/v7/api/jsonarrayconst/begin/
- iterator begin() const {
- if (!data_)
- return iterator();
- return iterator(data_->createIterator(resources_), resources_);
- }
-
- // Returns an iterator to the element following the last element of the
- // array. https://arduinojson.org/v7/api/jsonarrayconst/end/
- iterator end() const { return iterator(); }
-
- // Creates an unbound reference.
- JsonArrayConst() : data_(0), resources_(0) {}
-
- // INTERNAL USE ONLY
- JsonArrayConst(const detail::ArrayData *data,
- const detail::ResourceManager *resources)
- : data_(data), resources_(resources) {}
-
- // Returns the element at the specified index.
- // https://arduinojson.org/v7/api/jsonarrayconst/subscript/
- template <typename T,
- detail::enable_if_t<detail::is_integral<T>::value, int> = 0>
- JsonVariantConst operator[](T index) const {
- return JsonVariantConst(
- detail::ArrayData::getElement(data_, size_t(index), resources_),
- resources_);
- }
-
- // Returns the element at the specified index.
- // https://arduinojson.org/v7/api/jsonarrayconst/subscript/
- template <typename TVariant,
- detail::enable_if_t<detail::IsVariant<TVariant>::value, int> = 0>
- JsonVariantConst operator[](const TVariant &variant) const {
- if (variant.template is<size_t>())
- return operator[](variant.template as<size_t>());
- else
- return JsonVariantConst();
- }
-
- operator JsonVariantConst() const {
- return JsonVariantConst(getData(), resources_);
- }
-
- // Returns true if the reference is unbound.
- // https://arduinojson.org/v7/api/jsonarrayconst/isnull/
- bool isNull() const { return data_ == 0; }
-
- // Returns true if the reference is bound.
- // https://arduinojson.org/v7/api/jsonarrayconst/isnull/
- operator bool() const { return data_ != 0; }
-
- // Returns the depth (nesting level) of the array.
- // https://arduinojson.org/v7/api/jsonarrayconst/nesting/
- size_t nesting() const {
- return detail::VariantData::nesting(getData(), resources_);
- }
-
- // Returns the number of elements in the array.
- // https://arduinojson.org/v7/api/jsonarrayconst/size/
- size_t size() const { return data_ ? data_->size(resources_) : 0; }
-
- // DEPRECATED: always returns zero
- ARDUINOJSON_DEPRECATED("always returns zero")
- size_t memoryUsage() const { return 0; }
-
- private:
- const detail::VariantData *getData() const {
- return collectionToVariant(data_);
- }
-
- const detail::ArrayData *data_;
- const detail::ResourceManager *resources_;
-};
-
-// Compares the content of two arrays.
-// Returns true if the two arrays are equal.
-inline bool operator==(JsonArrayConst lhs, JsonArrayConst rhs) {
- if (!lhs && !rhs)
- return true;
- if (!lhs || !rhs)
- return false;
-
- auto a = lhs.begin();
- auto b = rhs.begin();
-
- for (;;) {
- if (a == b) // same pointer or both null
- return true;
- if (a == lhs.end() || b == rhs.end())
- return false;
- if (*a != *b)
- return false;
- ++a;
- ++b;
- }
-}
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp
deleted file mode 100644
index 758ce28..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp
+++ /dev/null
@@ -1,87 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Variant/JsonVariant.hpp>
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-template <typename T> class Ptr {
- public:
- Ptr(T value) : value_(value) {}
-
- T *operator->() { return &value_; }
-
- T &operator*() { return value_; }
-
- private:
- T value_;
-};
-
-class JsonArrayIterator {
- friend class JsonArray;
-
- public:
- JsonArrayIterator() {}
- explicit JsonArrayIterator(detail::ArrayData::iterator iterator,
- detail::ResourceManager *resources)
- : iterator_(iterator), resources_(resources) {}
-
- JsonVariant operator*() {
- return JsonVariant(iterator_.data(), resources_);
- }
- Ptr<JsonVariant> operator->() { return operator*(); }
-
- bool operator==(const JsonArrayIterator &other) const {
- return iterator_ == other.iterator_;
- }
-
- bool operator!=(const JsonArrayIterator &other) const {
- return iterator_ != other.iterator_;
- }
-
- JsonArrayIterator &operator++() {
- iterator_.next(resources_);
- return *this;
- }
-
- private:
- detail::ArrayData::iterator iterator_;
- detail::ResourceManager *resources_;
-};
-
-class JsonArrayConstIterator {
- friend class JsonArray;
-
- public:
- JsonArrayConstIterator() {}
- explicit JsonArrayConstIterator(detail::ArrayData::iterator iterator,
- const detail::ResourceManager *resources)
- : iterator_(iterator), resources_(resources) {}
-
- JsonVariantConst operator*() const {
- return JsonVariantConst(iterator_.data(), resources_);
- }
- Ptr<JsonVariantConst> operator->() { return operator*(); }
-
- bool operator==(const JsonArrayConstIterator &other) const {
- return iterator_ == other.iterator_;
- }
-
- bool operator!=(const JsonArrayConstIterator &other) const {
- return iterator_ != other.iterator_;
- }
-
- JsonArrayConstIterator &operator++() {
- iterator_.next(resources_);
- return *this;
- }
-
- private:
- detail::ArrayData::iterator iterator_;
- const detail::ResourceManager *resources_;
-};
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp
deleted file mode 100644
index 0612707..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp
+++ /dev/null
@@ -1,111 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Array/JsonArray.hpp>
-#include <ArduinoJson/Document/JsonDocument.hpp>
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-// Copies a value to a JsonVariant.
-// This is a degenerated form of copyArray() to stop the recursion.
-template <typename T, detail::enable_if_t<!detail::is_array<T>::value, int> = 0>
-inline bool copyArray(const T &src, JsonVariant dst) {
- return dst.set(src);
-}
-
-// Copies values from an array to a JsonArray or a JsonVariant.
-// https://arduinojson.org/v7/api/misc/copyarray/
-template <typename T, size_t N, typename TDestination,
- detail::enable_if_t<
- !detail::is_base_of<JsonDocument, TDestination>::value, int> = 0>
-inline bool copyArray(T (&src)[N], const TDestination &dst) {
- return copyArray(src, N, dst);
-}
-
-// Copies values from an array to a JsonArray or a JsonVariant.
-// https://arduinojson.org/v7/api/misc/copyarray/
-template <typename T, typename TDestination,
- detail::enable_if_t<
- !detail::is_base_of<JsonDocument, TDestination>::value, int> = 0>
-inline bool copyArray(const T *src, size_t len, const TDestination &dst) {
- bool ok = true;
- for (size_t i = 0; i < len; i++) {
- ok &= copyArray(src[i], dst.template add<JsonVariant>());
- }
- return ok;
-}
-
-// Copies a string to a JsonVariant.
-// This is a degenerated form of copyArray() to handle strings.
-template <typename TDestination>
-inline bool copyArray(const char *src, size_t, const TDestination &dst) {
- return dst.set(src);
-}
-
-// Copies values from an array to a JsonDocument.
-// https://arduinojson.org/v7/api/misc/copyarray/
-template <typename T> inline bool copyArray(const T &src, JsonDocument &dst) {
- return copyArray(src, dst.to<JsonArray>());
-}
-
-// Copies an array to a JsonDocument.
-// https://arduinojson.org/v7/api/misc/copyarray/
-template <typename T>
-inline bool copyArray(const T *src, size_t len, JsonDocument &dst) {
- return copyArray(src, len, dst.to<JsonArray>());
-}
-
-// Copies a value from a JsonVariant.
-// This is a degenerated form of copyArray() to stop the recursion.
-template <typename T, detail::enable_if_t<!detail::is_array<T>::value, int> = 0>
-inline size_t copyArray(JsonVariantConst src, T &dst) {
- dst = src.as<T>();
- return 1;
-}
-
-// Copies values from a JsonArray or JsonVariant to an array.
-// https://arduinojson.org/v7/api/misc/copyarray/
-template <typename T, size_t N>
-inline size_t copyArray(JsonArrayConst src, T (&dst)[N]) {
- return copyArray(src, dst, N);
-}
-
-// Copies values from a JsonArray or JsonVariant to an array.
-// https://arduinojson.org/v7/api/misc/copyarray/
-template <typename T>
-inline size_t copyArray(JsonArrayConst src, T *dst, size_t len) {
- size_t i = 0;
- for (JsonArrayConst::iterator it = src.begin(); it != src.end() && i < len;
- ++it)
- copyArray(*it, dst[i++]);
- return i;
-}
-
-// Copies a string from a JsonVariant.
-// This is a degenerated form of copyArray() to handle strings.
-template <size_t N>
-inline size_t copyArray(JsonVariantConst src, char (&dst)[N]) {
- JsonString s = src;
- size_t len = N - 1;
- if (len > s.size())
- len = s.size();
- memcpy(dst, s.c_str(), len);
- dst[len] = 0;
- return 1;
-}
-
-// Copies values from a JsonDocument to an array.
-// https://arduinojson.org/v7/api/misc/copyarray/
-template <
- typename TSource, typename T,
- detail::enable_if_t<detail::is_array<T>::value &&
- detail::is_base_of<JsonDocument, TSource>::value,
- int> = 0>
-inline size_t copyArray(const TSource &src, T &dst) {
- return copyArray(src.template as<JsonArrayConst>(), dst);
-}
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp
deleted file mode 100644
index 4d69860..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp
+++ /dev/null
@@ -1,115 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Memory/MemoryPool.hpp>
-#include <ArduinoJson/Namespace.hpp>
-#include <ArduinoJson/Polyfills/assert.hpp>
-
-#include <stddef.h> // size_t
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-class VariantData;
-class ResourceManager;
-
-class CollectionIterator {
- friend class CollectionData;
-
- public:
- CollectionIterator() : slot_(nullptr), currentId_(NULL_SLOT) {}
-
- void next(const ResourceManager *resources);
-
- bool done() const { return slot_ == nullptr; }
-
- bool operator==(const CollectionIterator &other) const {
- return slot_ == other.slot_;
- }
-
- bool operator!=(const CollectionIterator &other) const {
- return slot_ != other.slot_;
- }
-
- VariantData *operator->() {
- ARDUINOJSON_ASSERT(slot_ != nullptr);
- return data();
- }
-
- VariantData &operator*() {
- ARDUINOJSON_ASSERT(slot_ != nullptr);
- return *data();
- }
-
- const VariantData &operator*() const {
- ARDUINOJSON_ASSERT(slot_ != nullptr);
- return *data();
- }
-
- VariantData *data() { return reinterpret_cast<VariantData *>(slot_); }
-
- const VariantData *data() const {
- return reinterpret_cast<const VariantData *>(slot_);
- }
-
- private:
- CollectionIterator(VariantData *slot, SlotId slotId);
-
- VariantData *slot_;
- SlotId currentId_, nextId_;
-};
-
-class CollectionData {
- SlotId head_ = NULL_SLOT;
- SlotId tail_ = NULL_SLOT;
-
- public:
- // Placement new
- static void *operator new(size_t, void *p) noexcept { return p; }
-
- static void operator delete(void *, void *) noexcept {}
-
- using iterator = CollectionIterator;
-
- iterator createIterator(const ResourceManager *resources) const;
-
- size_t size(const ResourceManager *) const;
- size_t nesting(const ResourceManager *) const;
-
- void clear(ResourceManager *resources);
-
- static void clear(CollectionData *collection, ResourceManager *resources) {
- if (!collection)
- return;
- collection->clear(resources);
- }
-
- SlotId head() const { return head_; }
-
- protected:
- void appendOne(Slot<VariantData> slot, const ResourceManager *resources);
- void appendPair(Slot<VariantData> key, Slot<VariantData> value,
- const ResourceManager *resources);
-
- void removeOne(iterator it, ResourceManager *resources);
- void removePair(iterator it, ResourceManager *resources);
-
- private:
- Slot<VariantData> getPreviousSlot(VariantData *,
- const ResourceManager *) const;
-};
-
-inline const VariantData *
-collectionToVariant(const CollectionData *collection) {
- const void *data = collection; // prevent warning cast-align
- return reinterpret_cast<const VariantData *>(data);
-}
-
-inline VariantData *collectionToVariant(CollectionData *collection) {
- void *data = collection; // prevent warning cast-align
- return reinterpret_cast<VariantData *>(data);
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp
deleted file mode 100644
index 6a9e972..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp
+++ /dev/null
@@ -1,138 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Collection/CollectionData.hpp>
-#include <ArduinoJson/Memory/Alignment.hpp>
-#include <ArduinoJson/Strings/StringAdapters.hpp>
-#include <ArduinoJson/Variant/VariantCompare.hpp>
-#include <ArduinoJson/Variant/VariantData.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-inline CollectionIterator::CollectionIterator(VariantData *slot, SlotId slotId)
- : slot_(slot), currentId_(slotId) {
- nextId_ = slot_ ? slot_->next() : NULL_SLOT;
-}
-
-inline void CollectionIterator::next(const ResourceManager *resources) {
- ARDUINOJSON_ASSERT(currentId_ != NULL_SLOT);
- slot_ = resources->getVariant(nextId_);
- currentId_ = nextId_;
- if (slot_)
- nextId_ = slot_->next();
-}
-
-inline CollectionData::iterator
-CollectionData::createIterator(const ResourceManager *resources) const {
- return iterator(resources->getVariant(head_), head_);
-}
-
-inline void CollectionData::appendOne(Slot<VariantData> slot,
- const ResourceManager *resources) {
- if (tail_ != NULL_SLOT) {
- auto tail = resources->getVariant(tail_);
- tail->setNext(slot.id());
- tail_ = slot.id();
- } else {
- head_ = slot.id();
- tail_ = slot.id();
- }
-}
-
-inline void CollectionData::appendPair(Slot<VariantData> key,
- Slot<VariantData> value,
- const ResourceManager *resources) {
- key->setNext(value.id());
-
- if (tail_ != NULL_SLOT) {
- auto tail = resources->getVariant(tail_);
- tail->setNext(key.id());
- tail_ = value.id();
- } else {
- head_ = key.id();
- tail_ = value.id();
- }
-}
-
-inline void CollectionData::clear(ResourceManager *resources) {
- auto next = head_;
- while (next != NULL_SLOT) {
- auto currId = next;
- auto slot = resources->getVariant(next);
- next = slot->next();
- resources->freeVariant({slot, currId});
- }
-
- head_ = NULL_SLOT;
- tail_ = NULL_SLOT;
-}
-
-inline Slot<VariantData>
-CollectionData::getPreviousSlot(VariantData *target,
- const ResourceManager *resources) const {
- auto prev = Slot<VariantData>();
- auto currentId = head_;
- while (currentId != NULL_SLOT) {
- auto currentSlot = resources->getVariant(currentId);
- if (currentSlot == target)
- break;
- prev = Slot<VariantData>(currentSlot, currentId);
- currentId = currentSlot->next();
- }
- return prev;
-}
-
-inline void CollectionData::removeOne(iterator it, ResourceManager *resources) {
- if (it.done())
- return;
- auto curr = it.slot_;
- auto prev = getPreviousSlot(curr, resources);
- auto next = curr->next();
- if (prev)
- prev->setNext(next);
- else
- head_ = next;
- if (next == NULL_SLOT)
- tail_ = prev.id();
- resources->freeVariant({it.slot_, it.currentId_});
-}
-
-inline void CollectionData::removePair(ObjectData::iterator it,
- ResourceManager *resources) {
- if (it.done())
- return;
-
- auto keySlot = it.slot_;
-
- auto valueId = it.nextId_;
- auto valueSlot = resources->getVariant(valueId);
-
- // remove value slot
- keySlot->setNext(valueSlot->next());
- resources->freeVariant({valueSlot, valueId});
-
- // remove key slot
- removeOne(it, resources);
-}
-
-inline size_t CollectionData::nesting(const ResourceManager *resources) const {
- size_t maxChildNesting = 0;
- for (auto it = createIterator(resources); !it.done(); it.next(resources)) {
- size_t childNesting = it->nesting(resources);
- if (childNesting > maxChildNesting)
- maxChildNesting = childNesting;
- }
- return maxChildNesting + 1;
-}
-
-inline size_t CollectionData::size(const ResourceManager *resources) const {
- size_t count = 0;
- for (auto it = createIterator(resources); !it.done(); it.next(resources))
- count++;
- return count;
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Configuration.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Configuration.hpp
deleted file mode 100644
index 808d09a..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Configuration.hpp
+++ /dev/null
@@ -1,284 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-// Support std::istream and std::ostream
-// https://arduinojson.org/v7/config/enable_std_stream/
-#ifndef ARDUINOJSON_ENABLE_STD_STREAM
-#ifdef __has_include
-#if __has_include(<istream>) && \
- __has_include(<ostream>) && \
- !defined(min) && \
- !defined(max)
-#define ARDUINOJSON_ENABLE_STD_STREAM 1
-#else
-#define ARDUINOJSON_ENABLE_STD_STREAM 0
-#endif
-#else
-#ifdef ARDUINO
-#define ARDUINOJSON_ENABLE_STD_STREAM 0
-#else
-#define ARDUINOJSON_ENABLE_STD_STREAM 1
-#endif
-#endif
-#endif
-
-// Support std::string
-// https://arduinojson.org/v7/config/enable_std_string/
-#ifndef ARDUINOJSON_ENABLE_STD_STRING
-#ifdef __has_include
-#if __has_include(<string>) && !defined(min) && !defined(max)
-#define ARDUINOJSON_ENABLE_STD_STRING 1
-#else
-#define ARDUINOJSON_ENABLE_STD_STRING 0
-#endif
-#else
-#ifdef ARDUINO
-#define ARDUINOJSON_ENABLE_STD_STRING 0
-#else
-#define ARDUINOJSON_ENABLE_STD_STRING 1
-#endif
-#endif
-#endif
-
-// Support for std::string_view
-#ifndef ARDUINOJSON_ENABLE_STRING_VIEW
-#ifdef __has_include
-#if __has_include(<string_view>) && __cplusplus >= 201703L
-#define ARDUINOJSON_ENABLE_STRING_VIEW 1
-#else
-#define ARDUINOJSON_ENABLE_STRING_VIEW 0
-#endif
-#else
-#define ARDUINOJSON_ENABLE_STRING_VIEW 0
-#endif
-#endif
-
-// Pointer size: a heuristic to set sensible defaults
-#ifndef ARDUINOJSON_SIZEOF_POINTER
-#if defined(__SIZEOF_POINTER__)
-#define ARDUINOJSON_SIZEOF_POINTER __SIZEOF_POINTER__
-#elif defined(_WIN64) && _WIN64
-#define ARDUINOJSON_SIZEOF_POINTER 8 // 64 bits
-#else
-#define ARDUINOJSON_SIZEOF_POINTER 4 // assume 32 bits otherwise
-#endif
-#endif
-
-// Store floating-point values with float (0) or double (1)
-// https://arduinojson.org/v7/config/use_double/
-#ifndef ARDUINOJSON_USE_DOUBLE
-#if ARDUINOJSON_SIZEOF_POINTER >= 4 // 32 & 64 bits systems
-#define ARDUINOJSON_USE_DOUBLE 1
-#else
-#define ARDUINOJSON_USE_DOUBLE 0
-#endif
-#endif
-
-// Store integral values with long (0) or long long (1)
-// https://arduinojson.org/v7/config/use_long_long/
-#ifndef ARDUINOJSON_USE_LONG_LONG
-#if ARDUINOJSON_SIZEOF_POINTER >= 4 // 32 & 64 bits systems
-#define ARDUINOJSON_USE_LONG_LONG 1
-#else
-#define ARDUINOJSON_USE_LONG_LONG 0
-#endif
-#endif
-
-// Limit nesting as the stack is likely to be small
-// https://arduinojson.org/v7/config/default_nesting_limit/
-#ifndef ARDUINOJSON_DEFAULT_NESTING_LIMIT
-#define ARDUINOJSON_DEFAULT_NESTING_LIMIT 10
-#endif
-
-// Number of bytes to store a slot id
-// https://arduinojson.org/v7/config/slot_id_size/
-#ifndef ARDUINOJSON_SLOT_ID_SIZE
-#if ARDUINOJSON_SIZEOF_POINTER <= 2
-// 8-bit and 16-bit archs => up to 255 slots
-#define ARDUINOJSON_SLOT_ID_SIZE 1
-#elif ARDUINOJSON_SIZEOF_POINTER == 4
-// 32-bit arch => up to 65535 slots
-#define ARDUINOJSON_SLOT_ID_SIZE 2
-#else
-// 64-bit arch => up to 4294967295 slots
-#define ARDUINOJSON_SLOT_ID_SIZE 4
-#endif
-#endif
-
-// Capacity of each variant pool (in slots)
-#ifndef ARDUINOJSON_POOL_CAPACITY
-#if ARDUINOJSON_SLOT_ID_SIZE == 1
-#define ARDUINOJSON_POOL_CAPACITY 16 // 96 bytes
-#elif ARDUINOJSON_SLOT_ID_SIZE == 2
-#define ARDUINOJSON_POOL_CAPACITY 128 // 1024 bytes
-#else
-#define ARDUINOJSON_POOL_CAPACITY 256 // 4096 bytes
-#endif
-#endif
-
-// Initial capacity of the pool list
-#ifndef ARDUINOJSON_INITIAL_POOL_COUNT
-#define ARDUINOJSON_INITIAL_POOL_COUNT 4
-#endif
-
-// Automatically call shrinkToFit() from deserializeXxx()
-// Disabled by default on 8-bit platforms because it's not worth the increase in
-// code size
-#ifndef ARDUINOJSON_AUTO_SHRINK
-#if ARDUINOJSON_SIZEOF_POINTER <= 2
-#define ARDUINOJSON_AUTO_SHRINK 0
-#else
-#define ARDUINOJSON_AUTO_SHRINK 1
-#endif
-#endif
-
-// Number of bytes to store the length of a string
-// https://arduinojson.org/v7/config/string_length_size/
-#ifndef ARDUINOJSON_STRING_LENGTH_SIZE
-#if ARDUINOJSON_SIZEOF_POINTER <= 2
-#define ARDUINOJSON_STRING_LENGTH_SIZE 1 // up to 255 characters
-#else
-#define ARDUINOJSON_STRING_LENGTH_SIZE 2 // up to 65535 characters
-#endif
-#endif
-
-#ifdef ARDUINO
-
-// Enable support for Arduino's String class
-// https://arduinojson.org/v7/config/enable_arduino_string/
-#ifndef ARDUINOJSON_ENABLE_ARDUINO_STRING
-#define ARDUINOJSON_ENABLE_ARDUINO_STRING 1
-#endif
-
-// Enable support for Arduino's Stream class
-// https://arduinojson.org/v7/config/enable_arduino_stream/
-#ifndef ARDUINOJSON_ENABLE_ARDUINO_STREAM
-#define ARDUINOJSON_ENABLE_ARDUINO_STREAM 1
-#endif
-
-// Enable support for Arduino's Print class
-#ifndef ARDUINOJSON_ENABLE_ARDUINO_PRINT
-#define ARDUINOJSON_ENABLE_ARDUINO_PRINT 1
-#endif
-
-// Enable support for PROGMEM
-// https://arduinojson.org/v7/config/enable_progmem/
-#ifndef ARDUINOJSON_ENABLE_PROGMEM
-#define ARDUINOJSON_ENABLE_PROGMEM 1
-#endif
-
-#else // ARDUINO
-
-// Disable support for Arduino's String class
-// https://arduinojson.org/v7/config/enable_arduino_string/
-#ifndef ARDUINOJSON_ENABLE_ARDUINO_STRING
-#define ARDUINOJSON_ENABLE_ARDUINO_STRING 0
-#endif
-
-// Disable support for Arduino's Stream class
-// https://arduinojson.org/v7/config/enable_arduino_stream/
-#ifndef ARDUINOJSON_ENABLE_ARDUINO_STREAM
-#define ARDUINOJSON_ENABLE_ARDUINO_STREAM 0
-#endif
-
-// Disable support for Arduino's Print class
-#ifndef ARDUINOJSON_ENABLE_ARDUINO_PRINT
-#define ARDUINOJSON_ENABLE_ARDUINO_PRINT 0
-#endif
-
-// Enable PROGMEM support on AVR only
-// https://arduinojson.org/v7/config/enable_progmem/
-#ifndef ARDUINOJSON_ENABLE_PROGMEM
-#ifdef __AVR__
-#define ARDUINOJSON_ENABLE_PROGMEM 1
-#else
-#define ARDUINOJSON_ENABLE_PROGMEM 0
-#endif
-#endif
-
-#endif // ARDUINO
-
-// Convert unicode escape sequence (\u0123) to UTF-8
-// https://arduinojson.org/v7/config/decode_unicode/
-#ifndef ARDUINOJSON_DECODE_UNICODE
-#define ARDUINOJSON_DECODE_UNICODE 1
-#endif
-
-// Ignore comments in input
-// https://arduinojson.org/v7/config/enable_comments/
-#ifndef ARDUINOJSON_ENABLE_COMMENTS
-#define ARDUINOJSON_ENABLE_COMMENTS 0
-#endif
-
-// Support NaN in JSON
-// https://arduinojson.org/v7/config/enable_nan/
-#ifndef ARDUINOJSON_ENABLE_NAN
-#define ARDUINOJSON_ENABLE_NAN 0
-#endif
-
-// Support Infinity in JSON
-// https://arduinojson.org/v7/config/enable_infinity/
-#ifndef ARDUINOJSON_ENABLE_INFINITY
-#define ARDUINOJSON_ENABLE_INFINITY 0
-#endif
-
-// Control the exponentiation threshold for big numbers
-// CAUTION: cannot be more that 1e9 !!!!
-// https://arduinojson.org/v7/config/positive_exponentiation_threshold/
-#ifndef ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD
-#define ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD 1e7
-#endif
-
-// Control the exponentiation threshold for small numbers
-// https://arduinojson.org/v7/config/negative_exponentiation_threshold/
-#ifndef ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD
-#define ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD 1e-5
-#endif
-
-#ifndef ARDUINOJSON_LITTLE_ENDIAN
-#if defined(_MSC_VER) || \
- (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) || \
- defined(__LITTLE_ENDIAN__) || defined(__i386) || defined(__x86_64)
-#define ARDUINOJSON_LITTLE_ENDIAN 1
-#else
-#define ARDUINOJSON_LITTLE_ENDIAN 0
-#endif
-#endif
-
-#ifndef ARDUINOJSON_ENABLE_ALIGNMENT
-#if defined(__AVR)
-#define ARDUINOJSON_ENABLE_ALIGNMENT 0
-#else
-#define ARDUINOJSON_ENABLE_ALIGNMENT 1
-#endif
-#endif
-
-#ifndef ARDUINOJSON_TAB
-#define ARDUINOJSON_TAB " "
-#endif
-
-#ifndef ARDUINOJSON_STRING_BUFFER_SIZE
-#define ARDUINOJSON_STRING_BUFFER_SIZE 32
-#endif
-
-#ifndef ARDUINOJSON_DEBUG
-#ifdef __PLATFORMIO_BUILD_DEBUG__
-#define ARDUINOJSON_DEBUG 1
-#else
-#define ARDUINOJSON_DEBUG 0
-#endif
-#endif
-
-#if ARDUINOJSON_USE_LONG_LONG || ARDUINOJSON_USE_DOUBLE
-#define ARDUINOJSON_USE_EXTENSIONS 1
-#else
-#define ARDUINOJSON_USE_EXTENSIONS 0
-#endif
-
-#if defined(nullptr)
-#error nullptr is defined as a macro. Remove the faulty #define or #undef nullptr
-// See https://github.com/bblanchon/ArduinoJson/issues/1355
-#endif
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp
deleted file mode 100644
index 9aaaead..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp
+++ /dev/null
@@ -1,102 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-#include <ArduinoJson/Polyfills/pgmspace_generic.hpp>
-#include <ArduinoJson/Polyfills/preprocessor.hpp>
-
-#if ARDUINOJSON_ENABLE_STD_STREAM
-#include <ostream>
-#endif
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-class DeserializationError {
- public:
- enum Code {
- Ok,
- EmptyInput,
- IncompleteInput,
- InvalidInput,
- NoMemory,
- TooDeep
- };
-
- DeserializationError() {}
- DeserializationError(Code c) : code_(c) {}
-
- // Compare with DeserializationError
- friend bool operator==(const DeserializationError &lhs,
- const DeserializationError &rhs) {
- return lhs.code_ == rhs.code_;
- }
- friend bool operator!=(const DeserializationError &lhs,
- const DeserializationError &rhs) {
- return lhs.code_ != rhs.code_;
- }
-
- // Compare with Code
- friend bool operator==(const DeserializationError &lhs, Code rhs) {
- return lhs.code_ == rhs;
- }
- friend bool operator==(Code lhs, const DeserializationError &rhs) {
- return lhs == rhs.code_;
- }
- friend bool operator!=(const DeserializationError &lhs, Code rhs) {
- return lhs.code_ != rhs;
- }
- friend bool operator!=(Code lhs, const DeserializationError &rhs) {
- return lhs != rhs.code_;
- }
-
- // Returns true if there is an error
- explicit operator bool() const { return code_ != Ok; }
-
- // Returns internal enum, useful for switch statement
- Code code() const { return code_; }
-
- const char *c_str() const {
- static const char *messages[] = {
- "Ok", "EmptyInput", "IncompleteInput",
- "InvalidInput", "NoMemory", "TooDeep"};
- ARDUINOJSON_ASSERT(static_cast<size_t>(code_) <
- sizeof(messages) / sizeof(messages[0]));
- return messages[code_];
- }
-
-#if ARDUINOJSON_ENABLE_PROGMEM
- const __FlashStringHelper *f_str() const {
- ARDUINOJSON_DEFINE_PROGMEM_ARRAY(char, s0, "Ok");
- ARDUINOJSON_DEFINE_PROGMEM_ARRAY(char, s1, "EmptyInput");
- ARDUINOJSON_DEFINE_PROGMEM_ARRAY(char, s2, "IncompleteInput");
- ARDUINOJSON_DEFINE_PROGMEM_ARRAY(char, s3, "InvalidInput");
- ARDUINOJSON_DEFINE_PROGMEM_ARRAY(char, s4, "NoMemory");
- ARDUINOJSON_DEFINE_PROGMEM_ARRAY(char, s5, "TooDeep");
- ARDUINOJSON_DEFINE_PROGMEM_ARRAY(const char *, messages,
- {s0, s1, s2, s3, s4, s5});
- return reinterpret_cast<const __FlashStringHelper *>(
- detail::pgm_read(messages + code_));
- }
-#endif
-
- private:
- Code code_;
-};
-
-#if ARDUINOJSON_ENABLE_STD_STREAM
-inline std::ostream &operator<<(std::ostream &s,
- const DeserializationError &e) {
- s << e.c_str();
- return s;
-}
-
-inline std::ostream &operator<<(std::ostream &s, DeserializationError::Code c) {
- s << DeserializationError(c).c_str();
- return s;
-}
-#endif
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp
deleted file mode 100644
index 54c28c1..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp
+++ /dev/null
@@ -1,35 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Deserialization/Filter.hpp>
-#include <ArduinoJson/Deserialization/NestingLimit.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename TFilter> struct DeserializationOptions {
- TFilter filter;
- DeserializationOption::NestingLimit nestingLimit;
-};
-
-template <typename TFilter>
-inline DeserializationOptions<TFilter> makeDeserializationOptions(
- TFilter filter, DeserializationOption::NestingLimit nestingLimit = {}) {
- return {filter, nestingLimit};
-}
-
-template <typename TFilter>
-inline DeserializationOptions<TFilter>
-makeDeserializationOptions(DeserializationOption::NestingLimit nestingLimit,
- TFilter filter) {
- return {filter, nestingLimit};
-}
-
-inline DeserializationOptions<AllowAllFilter> makeDeserializationOptions(
- DeserializationOption::NestingLimit nestingLimit = {}) {
- return {{}, nestingLimit};
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp
deleted file mode 100644
index 7ec0486..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp
+++ /dev/null
@@ -1,61 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Variant/JsonVariant.hpp>
-#include <ArduinoJson/Variant/VariantAttorney.hpp>
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-namespace DeserializationOption {
-class Filter {
- public:
-#if ARDUINOJSON_AUTO_SHRINK
- explicit Filter(JsonDocument &doc) : variant_(doc) { doc.shrinkToFit(); }
-#endif
-
- explicit Filter(JsonVariantConst variant) : variant_(variant) {}
-
- bool allow() const { return variant_; }
-
- bool allowArray() const {
- return variant_ == true || variant_.is<JsonArrayConst>();
- }
-
- bool allowObject() const {
- return variant_ == true || variant_.is<JsonObjectConst>();
- }
-
- bool allowValue() const { return variant_ == true; }
-
- template <typename TKey> Filter operator[](const TKey &key) const {
- if (variant_ == true) // "true" means "allow recursively"
- return *this;
- JsonVariantConst member = variant_[key];
- return Filter(member.isNull() ? variant_["*"] : member);
- }
-
- private:
- JsonVariantConst variant_;
-};
-} // namespace DeserializationOption
-
-namespace detail {
-struct AllowAllFilter {
- bool allow() const { return true; }
-
- bool allowArray() const { return true; }
-
- bool allowObject() const { return true; }
-
- bool allowValue() const { return true; }
-
- template <typename TKey> AllowAllFilter operator[](const TKey &) const {
- return AllowAllFilter();
- }
-};
-} // namespace detail
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp
deleted file mode 100644
index 1ce432c..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-#include <ArduinoJson/Polyfills/assert.hpp>
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-namespace DeserializationOption {
-class NestingLimit {
- public:
- NestingLimit() : value_(ARDUINOJSON_DEFAULT_NESTING_LIMIT) {}
- explicit NestingLimit(uint8_t n) : value_(n) {}
-
- NestingLimit decrement() const {
- ARDUINOJSON_ASSERT(value_ > 0);
- return NestingLimit(static_cast<uint8_t>(value_ - 1));
- }
-
- bool reached() const { return value_ == 0; }
-
- private:
- uint8_t value_;
-};
-} // namespace DeserializationOption
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp
deleted file mode 100644
index 8e92e88..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp
+++ /dev/null
@@ -1,72 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-#include <ArduinoJson/Polyfills/utility.hpp>
-
-#include <stdlib.h> // for size_t
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// The default reader is a simple wrapper for Readers that are not copyable
-template <typename TSource, typename Enable = void> struct Reader {
- public:
- Reader(TSource &source) : source_(&source) {}
-
- int read() {
- // clang-format off
- return source_->read(); // Error here? See https://arduinojson.org/v7/invalid-input/
- // clang-format on
- }
-
- size_t readBytes(char *buffer, size_t length) {
- return source_->readBytes(buffer, length);
- }
-
- private:
- TSource *source_;
-};
-
-template <typename TSource, typename Enable = void> struct BoundedReader {
- // no default implementation because we need to pass the size to the
- // constructor
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
-
-#include <ArduinoJson/Deserialization/Readers/IteratorReader.hpp>
-#include <ArduinoJson/Deserialization/Readers/RamReader.hpp>
-#include <ArduinoJson/Deserialization/Readers/VariantReader.hpp>
-
-#if ARDUINOJSON_ENABLE_ARDUINO_STREAM
-#include <ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp>
-#endif
-
-#if ARDUINOJSON_ENABLE_ARDUINO_STRING
-#include <ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp>
-#endif
-
-#if ARDUINOJSON_ENABLE_PROGMEM
-#include <ArduinoJson/Deserialization/Readers/FlashReader.hpp>
-#endif
-
-#if ARDUINOJSON_ENABLE_STD_STREAM
-#include <ArduinoJson/Deserialization/Readers/StdStreamReader.hpp>
-#endif
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename TInput>
-Reader<remove_reference_t<TInput>> makeReader(TInput &&input) {
- return Reader<remove_reference_t<TInput>>{detail::forward<TInput>(input)};
-}
-
-template <typename TChar>
-BoundedReader<TChar *> makeReader(TChar *input, size_t inputSize) {
- return BoundedReader<TChar *>{input, inputSize};
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp
deleted file mode 100644
index 60fc4b2..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <Arduino.h>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename TSource>
-struct Reader<TSource, enable_if_t<is_base_of<Stream, TSource>::value>> {
- public:
- explicit Reader(Stream &stream) : stream_(&stream) {}
-
- int read() {
- // don't use stream_->read() as it ignores the timeout
- char c;
- return stream_->readBytes(&c, 1) ? static_cast<unsigned char>(c) : -1;
- }
-
- size_t readBytes(char *buffer, size_t length) {
- return stream_->readBytes(buffer, length);
- }
-
- private:
- Stream *stream_;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp
deleted file mode 100644
index 823fcb6..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp
+++ /dev/null
@@ -1,18 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <Arduino.h>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename TSource>
-struct Reader<TSource, enable_if_t<is_base_of<::String, TSource>::value>>
- : BoundedReader<const char *> {
- explicit Reader(const ::String &s)
- : BoundedReader<const char *>(s.c_str(), s.length()) {}
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp
deleted file mode 100644
index 23828db..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp
+++ /dev/null
@@ -1,52 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Polyfills/pgmspace.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <> struct Reader<const __FlashStringHelper *, void> {
- const char *ptr_;
-
- public:
- explicit Reader(const __FlashStringHelper *ptr)
- : ptr_(reinterpret_cast<const char *>(ptr)) {}
-
- int read() { return pgm_read_byte(ptr_++); }
-
- size_t readBytes(char *buffer, size_t length) {
- memcpy_P(buffer, ptr_, length);
- ptr_ += length;
- return length;
- }
-};
-
-template <> struct BoundedReader<const __FlashStringHelper *, void> {
- const char *ptr_;
- const char *end_;
-
- public:
- explicit BoundedReader(const __FlashStringHelper *ptr, size_t size)
- : ptr_(reinterpret_cast<const char *>(ptr)), end_(ptr_ + size) {}
-
- int read() {
- if (ptr_ < end_)
- return pgm_read_byte(ptr_++);
- else
- return -1;
- }
-
- size_t readBytes(char *buffer, size_t length) {
- size_t available = static_cast<size_t>(end_ - ptr_);
- if (available < length)
- length = available;
- memcpy_P(buffer, ptr_, length);
- ptr_ += length;
- return length;
- }
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp
deleted file mode 100644
index 185b9bf..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp
+++ /dev/null
@@ -1,41 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Polyfills/type_traits.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename TIterator> class IteratorReader {
- TIterator ptr_, end_;
-
- public:
- explicit IteratorReader(TIterator begin, TIterator end)
- : ptr_(begin), end_(end) {}
-
- int read() {
- if (ptr_ < end_)
- return static_cast<unsigned char>(*ptr_++);
- else
- return -1;
- }
-
- size_t readBytes(char *buffer, size_t length) {
- size_t i = 0;
- while (i < length && ptr_ < end_)
- buffer[i++] = *ptr_++;
- return i;
- }
-};
-
-template <typename TSource>
-struct Reader<TSource, void_t<typename TSource::const_iterator>>
- : IteratorReader<typename TSource::const_iterator> {
- explicit Reader(const TSource &source)
- : IteratorReader<typename TSource::const_iterator>(source.begin(),
- source.end()) {}
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp
deleted file mode 100644
index fbabeea..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Polyfills/type_traits.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename T> struct IsCharOrVoid {
- static const bool value =
- is_same<T, void>::value || is_same<T, char>::value ||
- is_same<T, unsigned char>::value || is_same<T, signed char>::value;
-};
-
-template <typename T> struct IsCharOrVoid<const T> : IsCharOrVoid<T> {};
-
-template <typename TSource>
-struct Reader<TSource *, enable_if_t<IsCharOrVoid<TSource>::value>> {
- const char *ptr_;
-
- public:
- explicit Reader(const void *ptr)
- : ptr_(ptr ? reinterpret_cast<const char *>(ptr) : "") {}
-
- int read() { return static_cast<unsigned char>(*ptr_++); }
-
- size_t readBytes(char *buffer, size_t length) {
- for (size_t i = 0; i < length; i++)
- buffer[i] = *ptr_++;
- return length;
- }
-};
-
-template <typename TSource>
-struct BoundedReader<TSource *, enable_if_t<IsCharOrVoid<TSource>::value>>
- : public IteratorReader<const char *> {
- public:
- explicit BoundedReader(const void *ptr, size_t len)
- : IteratorReader<const char *>(reinterpret_cast<const char *>(ptr),
- reinterpret_cast<const char *>(ptr) +
- len) {}
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp
deleted file mode 100644
index 991a546..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <istream>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename TSource>
-struct Reader<TSource, enable_if_t<is_base_of<std::istream, TSource>::value>> {
- public:
- explicit Reader(std::istream &stream) : stream_(&stream) {}
-
- int read() { return stream_->get(); }
-
- size_t readBytes(char *buffer, size_t length) {
- stream_->read(buffer, static_cast<std::streamsize>(length));
- return static_cast<size_t>(stream_->gcount());
- }
-
- private:
- std::istream *stream_;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp
deleted file mode 100644
index 7b599ee..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Object/MemberProxy.hpp>
-#include <ArduinoJson/Variant/JsonVariantConst.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename TVariant>
-struct Reader<TVariant, enable_if_t<IsVariant<TVariant>::value>>
- : Reader<char *, void> {
- explicit Reader(const TVariant &x)
- : Reader<char *, void>(x.template as<const char *>()) {}
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp
deleted file mode 100644
index 19b0e40..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp
+++ /dev/null
@@ -1,76 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Deserialization/DeserializationError.hpp>
-#include <ArduinoJson/Deserialization/DeserializationOptions.hpp>
-#include <ArduinoJson/Deserialization/Reader.hpp>
-#include <ArduinoJson/Polyfills/utility.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// A meta-function that returns the first type of the parameter pack
-// or void if empty
-template <typename...> struct first_or_void {
- using type = void;
-};
-template <typename T, typename... Rest> struct first_or_void<T, Rest...> {
- using type = T;
-};
-
-// A meta-function that returns true if T is a valid destination type for
-// deserialize()
-template <class T>
-using is_deserialize_destination =
- bool_constant<is_base_of<JsonDocument, remove_cv_t<T>>::value ||
- IsVariant<T>::value>;
-
-template <typename TDestination>
-inline void shrinkJsonDocument(TDestination &) {
- // no-op by default
-}
-
-#if ARDUINOJSON_AUTO_SHRINK
-inline void shrinkJsonDocument(JsonDocument &doc) { doc.shrinkToFit(); }
-#endif
-
-template <template <typename> class TDeserializer, typename TDestination,
- typename TReader, typename TOptions>
-DeserializationError doDeserialize(TDestination &&dst, TReader reader,
- TOptions options) {
- auto data = VariantAttorney::getOrCreateData(dst);
- if (!data)
- return DeserializationError::NoMemory;
- auto resources = VariantAttorney::getResourceManager(dst);
- dst.clear();
- auto err = TDeserializer<TReader>(resources, reader)
- .parse(*data, options.filter, options.nestingLimit);
- shrinkJsonDocument(dst);
- return err;
-}
-
-template <
- template <typename> class TDeserializer, typename TDestination,
- typename TStream, typename... Args,
- enable_if_t< // issue #1897
- !is_integral<typename first_or_void<Args...>::type>::value, int> = 0>
-DeserializationError deserialize(TDestination &&dst, TStream &&input,
- Args... args) {
- return doDeserialize<TDeserializer>(
- dst, makeReader(detail::forward<TStream>(input)),
- makeDeserializationOptions(args...));
-}
-
-template <template <typename> class TDeserializer, typename TDestination,
- typename TChar, typename Size, typename... Args,
- enable_if_t<is_integral<Size>::value, int> = 0>
-DeserializationError deserialize(TDestination &&dst, TChar *input,
- Size inputSize, Args... args) {
- return doDeserialize<TDeserializer>(dst,
- makeReader(input, size_t(inputSize)),
- makeDeserializationOptions(args...));
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp
deleted file mode 100644
index d664703..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp
+++ /dev/null
@@ -1,383 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Array/ElementProxy.hpp>
-#include <ArduinoJson/Memory/Allocator.hpp>
-#include <ArduinoJson/Memory/ResourceManager.hpp>
-#include <ArduinoJson/Object/JsonObject.hpp>
-#include <ArduinoJson/Object/MemberProxy.hpp>
-#include <ArduinoJson/Polyfills/utility.hpp>
-#include <ArduinoJson/Variant/JsonVariantConst.hpp>
-#include <ArduinoJson/Variant/VariantTo.hpp>
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-// A JSON document.
-// https://arduinojson.org/v7/api/jsondocument/
-class JsonDocument : public detail::VariantOperators<const JsonDocument &> {
- friend class detail::VariantAttorney;
-
- public:
- explicit JsonDocument(
- Allocator *alloc = detail::DefaultAllocator::instance())
- : resources_(alloc) {}
-
- // Copy-constructor
- JsonDocument(const JsonDocument &src) : JsonDocument(src.allocator()) {
- set(src);
- }
-
- // Move-constructor
- JsonDocument(JsonDocument &&src)
- : JsonDocument(detail::DefaultAllocator::instance()) {
- swap(*this, src);
- }
-
- // Construct from variant, array, or object
- template <typename T, detail::enable_if_t<
- detail::IsVariant<T>::value ||
- detail::is_same<T, JsonArray>::value ||
- detail::is_same<T, JsonArrayConst>::value ||
- detail::is_same<T, JsonObject>::value ||
- detail::is_same<T, JsonObjectConst>::value,
- int> = 0>
- JsonDocument(const T &src,
- Allocator *alloc = detail::DefaultAllocator::instance())
- : JsonDocument(alloc) {
- set(src);
- }
-
- JsonDocument &operator=(JsonDocument src) {
- swap(*this, src);
- return *this;
- }
-
- template <typename T> JsonDocument &operator=(const T &src) {
- set(src);
- return *this;
- }
-
- Allocator *allocator() const { return resources_.allocator(); }
-
- // Reduces the capacity of the memory pool to match the current usage.
- // https://arduinojson.org/v7/api/jsondocument/shrinktofit/
- void shrinkToFit() { resources_.shrinkToFit(); }
-
- // Casts the root to the specified type.
- // https://arduinojson.org/v7/api/jsondocument/as/
- template <typename T> T as() { return getVariant().template as<T>(); }
-
- // Casts the root to the specified type.
- // https://arduinojson.org/v7/api/jsondocument/as/
- template <typename T> T as() const { return getVariant().template as<T>(); }
-
- // Empties the document and resets the memory pool
- // https://arduinojson.org/v7/api/jsondocument/clear/
- void clear() {
- resources_.clear();
- data_.reset();
- }
-
- // Returns true if the root is of the specified type.
- // https://arduinojson.org/v7/api/jsondocument/is/
- template <typename T> bool is() { return getVariant().template is<T>(); }
-
- // Returns true if the root is of the specified type.
- // https://arduinojson.org/v7/api/jsondocument/is/
- template <typename T> bool is() const {
- return getVariant().template is<T>();
- }
-
- // Returns true if the root is null.
- // https://arduinojson.org/v7/api/jsondocument/isnull/
- bool isNull() const { return getVariant().isNull(); }
-
- // Returns trues if the memory pool was too small.
- // https://arduinojson.org/v7/api/jsondocument/overflowed/
- bool overflowed() const { return resources_.overflowed(); }
-
- // Returns the depth (nesting level) of the array.
- // https://arduinojson.org/v7/api/jsondocument/nesting/
- size_t nesting() const { return data_.nesting(&resources_); }
-
- // Returns the number of elements in the root array or object.
- // https://arduinojson.org/v7/api/jsondocument/size/
- size_t size() const { return data_.size(&resources_); }
-
- // Copies the specified document.
- // https://arduinojson.org/v7/api/jsondocument/set/
- bool set(const JsonDocument &src) {
- return to<JsonVariant>().set(src.as<JsonVariantConst>());
- }
-
- // Replaces the root with the specified value.
- // https://arduinojson.org/v7/api/jsondocument/set/
- template <typename T,
- detail::enable_if_t<!detail::is_base_of<JsonDocument, T>::value,
- int> = 0>
- bool set(const T &src) {
- return to<JsonVariant>().set(src);
- }
-
- // Replaces the root with the specified value.
- // https://arduinojson.org/v7/api/jsondocument/set/
- template <typename TChar,
- detail::enable_if_t<!detail::is_const<TChar>::value, int> = 0>
- bool set(TChar *src) {
- return to<JsonVariant>().set(src);
- }
-
- // Clears the document and converts it to the specified type.
- // https://arduinojson.org/v7/api/jsondocument/to/
- template <typename T> typename detail::VariantTo<T>::type to() {
- clear();
- return getVariant().template to<T>();
- }
-
- // DEPRECATED: use obj["key"].is<T>() instead
- // https://arduinojson.org/v7/api/jsondocument/containskey/
- template <typename TChar>
- ARDUINOJSON_DEPRECATED("use doc[\"key\"].is<T>() instead")
- bool containsKey(TChar *key) const {
- return data_.getMember(detail::adaptString(key), &resources_) != 0;
- }
-
- // DEPRECATED: use obj[key].is<T>() instead
- // https://arduinojson.org/v7/api/jsondocument/containskey/
- template <typename TString,
- detail::enable_if_t<detail::IsString<TString>::value, int> = 0>
- ARDUINOJSON_DEPRECATED("use doc[key].is<T>() instead")
- bool containsKey(const TString &key) const {
- return data_.getMember(detail::adaptString(key), &resources_) != 0;
- }
-
- // DEPRECATED: use obj[key].is<T>() instead
- // https://arduinojson.org/v7/api/jsondocument/containskey/
- template <typename TVariant,
- detail::enable_if_t<detail::IsVariant<TVariant>::value, int> = 0>
- ARDUINOJSON_DEPRECATED("use doc[key].is<T>() instead")
- bool containsKey(const TVariant &key) const {
- return containsKey(key.template as<const char *>());
- }
-
- // Gets or sets a root object's member.
- // https://arduinojson.org/v7/api/jsondocument/subscript/
- template <typename TString,
- detail::enable_if_t<detail::IsString<TString>::value, int> = 0>
- detail::MemberProxy<JsonDocument &, detail::AdaptedString<TString>>
- operator[](const TString &key) {
- return {*this, detail::adaptString(key)};
- }
-
- // Gets or sets a root object's member.
- // https://arduinojson.org/v7/api/jsondocument/subscript/
- template <typename TChar,
- detail::enable_if_t<detail::IsString<TChar *>::value &&
- !detail::is_const<TChar>::value,
- int> = 0>
- detail::MemberProxy<JsonDocument &, detail::AdaptedString<TChar *>>
- operator[](TChar *key) {
- return {*this, detail::adaptString(key)};
- }
-
- // Gets a root object's member.
- // https://arduinojson.org/v7/api/jsondocument/subscript/
- template <typename TString,
- detail::enable_if_t<detail::IsString<TString>::value, int> = 0>
- JsonVariantConst operator[](const TString &key) const {
- return JsonVariantConst(
- data_.getMember(detail::adaptString(key), &resources_),
- &resources_);
- }
-
- // Gets a root object's member.
- // https://arduinojson.org/v7/api/jsondocument/subscript/
- template <typename TChar,
- detail::enable_if_t<detail::IsString<TChar *>::value &&
- !detail::is_const<TChar>::value,
- int> = 0>
- JsonVariantConst operator[](TChar *key) const {
- return JsonVariantConst(
- data_.getMember(detail::adaptString(key), &resources_),
- &resources_);
- }
-
- // Gets or sets a root array's element.
- // https://arduinojson.org/v7/api/jsondocument/subscript/
- template <typename T,
- detail::enable_if_t<detail::is_integral<T>::value, int> = 0>
- detail::ElementProxy<JsonDocument &> operator[](T index) {
- return {*this, size_t(index)};
- }
-
- // Gets a root array's member.
- // https://arduinojson.org/v7/api/jsondocument/subscript/
- JsonVariantConst operator[](size_t index) const {
- return JsonVariantConst(data_.getElement(index, &resources_),
- &resources_);
- }
-
- // Gets or sets a root object's member.
- // https://arduinojson.org/v7/api/jsondocument/subscript/
- template <typename TVariant,
- detail::enable_if_t<detail::IsVariant<TVariant>::value, int> = 0>
- JsonVariantConst operator[](const TVariant &key) const {
- if (key.template is<JsonString>())
- return operator[](key.template as<JsonString>());
- if (key.template is<size_t>())
- return operator[](key.template as<size_t>());
- return {};
- }
-
- // Appends a new (empty) element to the root array.
- // Returns a reference to the new element.
- // https://arduinojson.org/v7/api/jsondocument/add/
- template <typename T, detail::enable_if_t<
- !detail::is_same<T, JsonVariant>::value, int> = 0>
- T add() {
- return add<JsonVariant>().to<T>();
- }
-
- // Appends a new (null) element to the root array.
- // Returns a reference to the new element.
- // https://arduinojson.org/v7/api/jsondocument/add/
- template <typename T, detail::enable_if_t<
- detail::is_same<T, JsonVariant>::value, int> = 0>
- JsonVariant add() {
- return JsonVariant(data_.addElement(&resources_), &resources_);
- }
-
- // Appends a value to the root array.
- // https://arduinojson.org/v7/api/jsondocument/add/
- template <typename TValue> bool add(const TValue &value) {
- return data_.addValue(value, &resources_);
- }
-
- // Appends a value to the root array.
- // https://arduinojson.org/v7/api/jsondocument/add/
- template <typename TChar,
- detail::enable_if_t<!detail::is_const<TChar>::value, int> = 0>
- bool add(TChar *value) {
- return data_.addValue(value, &resources_);
- }
-
- // Removes an element of the root array.
- // https://arduinojson.org/v7/api/jsondocument/remove/
- template <typename T,
- detail::enable_if_t<detail::is_integral<T>::value, int> = 0>
- void remove(T index) {
- detail::VariantData::removeElement(getData(), size_t(index),
- getResourceManager());
- }
-
- // Removes a member of the root object.
- // https://arduinojson.org/v7/api/jsondocument/remove/
- template <typename TChar,
- detail::enable_if_t<detail::IsString<TChar *>::value &&
- !detail::is_const<TChar>::value,
- int> = 0>
- void remove(TChar *key) {
- detail::VariantData::removeMember(getData(), detail::adaptString(key),
- getResourceManager());
- }
-
- // Removes a member of the root object.
- // https://arduinojson.org/v7/api/jsondocument/remove/
- template <typename TString,
- detail::enable_if_t<detail::IsString<TString>::value, int> = 0>
- void remove(const TString &key) {
- detail::VariantData::removeMember(getData(), detail::adaptString(key),
- getResourceManager());
- }
-
- // Removes a member of the root object or an element of the root array.
- // https://arduinojson.org/v7/api/jsondocument/remove/
- template <typename TVariant,
- detail::enable_if_t<detail::IsVariant<TVariant>::value, int> = 0>
- void remove(const TVariant &key) {
- if (key.template is<const char *>())
- remove(key.template as<const char *>());
- if (key.template is<size_t>())
- remove(key.template as<size_t>());
- }
-
- operator JsonVariant() { return getVariant(); }
-
- operator JsonVariantConst() const { return getVariant(); }
-
- friend void swap(JsonDocument &a, JsonDocument &b) {
- swap(a.resources_, b.resources_);
- swap_(a.data_, b.data_);
- }
-
- // DEPRECATED: use add<JsonVariant>() instead
- ARDUINOJSON_DEPRECATED("use add<JsonVariant>() instead")
- JsonVariant add() { return add<JsonVariant>(); }
-
- // DEPRECATED: use add<JsonArray>() instead
- ARDUINOJSON_DEPRECATED("use add<JsonArray>() instead")
- JsonArray createNestedArray() { return add<JsonArray>(); }
-
- // DEPRECATED: use doc[key].to<JsonArray>() instead
- template <typename TChar>
- ARDUINOJSON_DEPRECATED("use doc[key].to<JsonArray>() instead")
- JsonArray createNestedArray(TChar *key) {
- return operator[](key).template to<JsonArray>();
- }
-
- // DEPRECATED: use doc[key].to<JsonArray>() instead
- template <typename TString>
- ARDUINOJSON_DEPRECATED("use doc[key].to<JsonArray>() instead")
- JsonArray createNestedArray(const TString &key) {
- return operator[](key).template to<JsonArray>();
- }
-
- // DEPRECATED: use add<JsonObject>() instead
- ARDUINOJSON_DEPRECATED("use add<JsonObject>() instead")
- JsonObject createNestedObject() { return add<JsonObject>(); }
-
- // DEPRECATED: use doc[key].to<JsonObject>() instead
- template <typename TChar>
- ARDUINOJSON_DEPRECATED("use doc[key].to<JsonObject>() instead")
- JsonObject createNestedObject(TChar *key) {
- return operator[](key).template to<JsonObject>();
- }
-
- // DEPRECATED: use doc[key].to<JsonObject>() instead
- template <typename TString>
- ARDUINOJSON_DEPRECATED("use doc[key].to<JsonObject>() instead")
- JsonObject createNestedObject(const TString &key) {
- return operator[](key).template to<JsonObject>();
- }
-
- // DEPRECATED: always returns zero
- ARDUINOJSON_DEPRECATED("always returns zero")
- size_t memoryUsage() const { return 0; }
-
- private:
- JsonVariant getVariant() { return JsonVariant(&data_, &resources_); }
-
- JsonVariantConst getVariant() const {
- return JsonVariantConst(&data_, &resources_);
- }
-
- detail::ResourceManager *getResourceManager() { return &resources_; }
-
- detail::VariantData *getData() { return &data_; }
-
- const detail::VariantData *getData() const { return &data_; }
-
- detail::VariantData *getOrCreateData() { return &data_; }
-
- detail::ResourceManager resources_;
- detail::VariantData data_;
-};
-
-inline void convertToJson(const JsonDocument &src, JsonVariant dst) {
- dst.set(src.as<JsonVariantConst>());
-}
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp
deleted file mode 100644
index 9bbfc93..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-class EscapeSequence {
- public:
- // Optimized for code size on a 8-bit AVR
- static char escapeChar(char c) {
- const char *p = escapeTable(true);
- while (p[0] && p[1] != c) {
- p += 2;
- }
- return p[0];
- }
-
- // Optimized for code size on a 8-bit AVR
- static char unescapeChar(char c) {
- const char *p = escapeTable(false);
- for (;;) {
- if (p[0] == '\0')
- return 0;
- if (p[0] == c)
- return p[1];
- p += 2;
- }
- }
-
- private:
- static const char *escapeTable(bool isSerializing) {
- return &"//''\"\"\\\\b\bf\fn\nr\rt\t"[isSerializing ? 4 : 0];
- }
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp
deleted file mode 100644
index 742d876..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp
+++ /dev/null
@@ -1,716 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Deserialization/deserialize.hpp>
-#include <ArduinoJson/Json/EscapeSequence.hpp>
-#include <ArduinoJson/Json/Latch.hpp>
-#include <ArduinoJson/Json/Utf16.hpp>
-#include <ArduinoJson/Json/Utf8.hpp>
-#include <ArduinoJson/Memory/ResourceManager.hpp>
-#include <ArduinoJson/Numbers/parseNumber.hpp>
-#include <ArduinoJson/Polyfills/assert.hpp>
-#include <ArduinoJson/Polyfills/type_traits.hpp>
-#include <ArduinoJson/Polyfills/utility.hpp>
-#include <ArduinoJson/Variant/VariantData.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename TReader> class JsonDeserializer {
- public:
- JsonDeserializer(ResourceManager *resources, TReader reader)
- : stringBuilder_(resources), foundSomething_(false), latch_(reader),
- resources_(resources) {}
-
- template <typename TFilter>
- DeserializationError
- parse(VariantData &variant, TFilter filter,
- DeserializationOption::NestingLimit nestingLimit) {
- DeserializationError::Code err;
-
- err = parseVariant(variant, filter, nestingLimit);
-
- if (!err && latch_.last() != 0 && variant.isFloat()) {
- // We don't detect trailing characters earlier, so we need to check
- // now
- return DeserializationError::InvalidInput;
- }
-
- return err;
- }
-
- private:
- char current() { return latch_.current(); }
-
- void move() { latch_.clear(); }
-
- bool eat(char charToSkip) {
- if (current() != charToSkip)
- return false;
- move();
- return true;
- }
-
- template <typename TFilter>
- DeserializationError::Code
- parseVariant(VariantData &variant, TFilter filter,
- DeserializationOption::NestingLimit nestingLimit) {
- DeserializationError::Code err;
-
- err = skipSpacesAndComments();
- if (err)
- return err;
-
- switch (current()) {
- case '[':
- if (filter.allowArray())
- return parseArray(variant.toArray(), filter, nestingLimit);
- else
- return skipArray(nestingLimit);
-
- case '{':
- if (filter.allowObject())
- return parseObject(variant.toObject(), filter, nestingLimit);
- else
- return skipObject(nestingLimit);
-
- case '\"':
- case '\'':
- if (filter.allowValue())
- return parseStringValue(variant);
- else
- return skipQuotedString();
-
- case 't':
- if (filter.allowValue())
- variant.setBoolean(true);
- return skipKeyword("true");
-
- case 'f':
- if (filter.allowValue())
- variant.setBoolean(false);
- return skipKeyword("false");
-
- case 'n':
- // the variant should already by null, except if the same object key
- // was used twice, as in {"a":1,"a":null}
- return skipKeyword("null");
-
- default:
- if (filter.allowValue())
- return parseNumericValue(variant);
- else
- return skipNumericValue();
- }
- }
-
- DeserializationError::Code
- skipVariant(DeserializationOption::NestingLimit nestingLimit) {
- DeserializationError::Code err;
-
- err = skipSpacesAndComments();
- if (err)
- return err;
-
- switch (current()) {
- case '[':
- return skipArray(nestingLimit);
-
- case '{':
- return skipObject(nestingLimit);
-
- case '\"':
- case '\'':
- return skipQuotedString();
-
- case 't':
- return skipKeyword("true");
-
- case 'f':
- return skipKeyword("false");
-
- case 'n':
- return skipKeyword("null");
-
- default:
- return skipNumericValue();
- }
- }
-
- template <typename TFilter>
- DeserializationError::Code
- parseArray(ArrayData &array, TFilter filter,
- DeserializationOption::NestingLimit nestingLimit) {
- DeserializationError::Code err;
-
- if (nestingLimit.reached())
- return DeserializationError::TooDeep;
-
- // Skip opening braket
- ARDUINOJSON_ASSERT(current() == '[');
- move();
-
- // Skip spaces
- err = skipSpacesAndComments();
- if (err)
- return err;
-
- // Empty array?
- if (eat(']'))
- return DeserializationError::Ok;
-
- TFilter elementFilter = filter[0UL];
-
- // Read each value
- for (;;) {
- if (elementFilter.allow()) {
- // Allocate slot in array
- VariantData *value = array.addElement(resources_);
- if (!value)
- return DeserializationError::NoMemory;
-
- // 1 - Parse value
- err = parseVariant(*value, elementFilter,
- nestingLimit.decrement());
- if (err)
- return err;
- } else {
- err = skipVariant(nestingLimit.decrement());
- if (err)
- return err;
- }
-
- // 2 - Skip spaces
- err = skipSpacesAndComments();
- if (err)
- return err;
-
- // 3 - More values?
- if (eat(']'))
- return DeserializationError::Ok;
- if (!eat(','))
- return DeserializationError::InvalidInput;
- }
- }
-
- DeserializationError::Code
- skipArray(DeserializationOption::NestingLimit nestingLimit) {
- DeserializationError::Code err;
-
- if (nestingLimit.reached())
- return DeserializationError::TooDeep;
-
- // Skip opening braket
- ARDUINOJSON_ASSERT(current() == '[');
- move();
-
- // Read each value
- for (;;) {
- // 1 - Skip value
- err = skipVariant(nestingLimit.decrement());
- if (err)
- return err;
-
- // 2 - Skip spaces
- err = skipSpacesAndComments();
- if (err)
- return err;
-
- // 3 - More values?
- if (eat(']'))
- return DeserializationError::Ok;
- if (!eat(','))
- return DeserializationError::InvalidInput;
- }
- }
-
- template <typename TFilter>
- DeserializationError::Code
- parseObject(ObjectData &object, TFilter filter,
- DeserializationOption::NestingLimit nestingLimit) {
- DeserializationError::Code err;
-
- if (nestingLimit.reached())
- return DeserializationError::TooDeep;
-
- // Skip opening brace
- ARDUINOJSON_ASSERT(current() == '{');
- move();
-
- // Skip spaces
- err = skipSpacesAndComments();
- if (err)
- return err;
-
- // Empty object?
- if (eat('}'))
- return DeserializationError::Ok;
-
- // Read each key value pair
- for (;;) {
- // Parse key
- err = parseKey();
- if (err)
- return err;
-
- // Skip spaces
- err = skipSpacesAndComments();
- if (err)
- return err;
-
- // Colon
- if (!eat(':'))
- return DeserializationError::InvalidInput;
-
- JsonString key = stringBuilder_.str();
-
- TFilter memberFilter = filter[key];
-
- if (memberFilter.allow()) {
- auto member = object.getMember(adaptString(key), resources_);
- if (!member) {
- auto keyVariant = object.addPair(&member, resources_);
- if (!keyVariant)
- return DeserializationError::NoMemory;
-
- stringBuilder_.save(keyVariant);
- } else {
- member->clear(resources_);
- }
-
- // Parse value
- err = parseVariant(*member, memberFilter,
- nestingLimit.decrement());
- if (err)
- return err;
- } else {
- err = skipVariant(nestingLimit.decrement());
- if (err)
- return err;
- }
-
- // Skip spaces
- err = skipSpacesAndComments();
- if (err)
- return err;
-
- // More keys/values?
- if (eat('}'))
- return DeserializationError::Ok;
- if (!eat(','))
- return DeserializationError::InvalidInput;
-
- // Skip spaces
- err = skipSpacesAndComments();
- if (err)
- return err;
- }
- }
-
- DeserializationError::Code
- skipObject(DeserializationOption::NestingLimit nestingLimit) {
- DeserializationError::Code err;
-
- if (nestingLimit.reached())
- return DeserializationError::TooDeep;
-
- // Skip opening brace
- ARDUINOJSON_ASSERT(current() == '{');
- move();
-
- // Skip spaces
- err = skipSpacesAndComments();
- if (err)
- return err;
-
- // Empty object?
- if (eat('}'))
- return DeserializationError::Ok;
-
- // Read each key value pair
- for (;;) {
- // Skip key
- err = skipKey();
- if (err)
- return err;
-
- // Skip spaces
- err = skipSpacesAndComments();
- if (err)
- return err;
-
- // Colon
- if (!eat(':'))
- return DeserializationError::InvalidInput;
-
- // Skip value
- err = skipVariant(nestingLimit.decrement());
- if (err)
- return err;
-
- // Skip spaces
- err = skipSpacesAndComments();
- if (err)
- return err;
-
- // More keys/values?
- if (eat('}'))
- return DeserializationError::Ok;
- if (!eat(','))
- return DeserializationError::InvalidInput;
-
- err = skipSpacesAndComments();
- if (err)
- return err;
- }
- }
-
- DeserializationError::Code parseKey() {
- stringBuilder_.startString();
- if (isQuote(current())) {
- return parseQuotedString();
- } else {
- return parseNonQuotedString();
- }
- }
-
- DeserializationError::Code parseStringValue(VariantData &variant) {
- DeserializationError::Code err;
-
- stringBuilder_.startString();
-
- err = parseQuotedString();
- if (err)
- return err;
-
- stringBuilder_.save(&variant);
-
- return DeserializationError::Ok;
- }
-
- DeserializationError::Code parseQuotedString() {
-#if ARDUINOJSON_DECODE_UNICODE
- Utf16::Codepoint codepoint;
- DeserializationError::Code err;
-#endif
- const char stopChar = current();
-
- move();
- for (;;) {
- char c = current();
- move();
- if (c == stopChar)
- break;
-
- if (c == '\0')
- return DeserializationError::IncompleteInput;
-
- if (c == '\\') {
- c = current();
-
- if (c == '\0')
- return DeserializationError::IncompleteInput;
-
- if (c == 'u') {
-#if ARDUINOJSON_DECODE_UNICODE
- move();
- uint16_t codeunit;
- err = parseHex4(codeunit);
- if (err)
- return err;
- if (codepoint.append(codeunit))
- Utf8::encodeCodepoint(codepoint.value(),
- stringBuilder_);
-#else
- stringBuilder_.append('\\');
-#endif
- continue;
- }
-
- // replace char
- c = EscapeSequence::unescapeChar(c);
- if (c == '\0')
- return DeserializationError::InvalidInput;
- move();
- }
-
- stringBuilder_.append(c);
- }
-
- if (!stringBuilder_.isValid())
- return DeserializationError::NoMemory;
-
- return DeserializationError::Ok;
- }
-
- DeserializationError::Code parseNonQuotedString() {
- char c = current();
- ARDUINOJSON_ASSERT(c);
-
- if (canBeInNonQuotedString(c)) { // no quotes
- do {
- move();
- stringBuilder_.append(c);
- c = current();
- } while (canBeInNonQuotedString(c));
- } else {
- return DeserializationError::InvalidInput;
- }
-
- if (!stringBuilder_.isValid())
- return DeserializationError::NoMemory;
-
- return DeserializationError::Ok;
- }
-
- DeserializationError::Code skipKey() {
- if (isQuote(current())) {
- return skipQuotedString();
- } else {
- return skipNonQuotedString();
- }
- }
-
- DeserializationError::Code skipQuotedString() {
- const char stopChar = current();
-
- move();
- for (;;) {
- char c = current();
- move();
- if (c == stopChar)
- break;
- if (c == '\0')
- return DeserializationError::IncompleteInput;
- if (c == '\\') {
- if (current() != '\0')
- move();
- }
- }
-
- return DeserializationError::Ok;
- }
-
- DeserializationError::Code skipNonQuotedString() {
- char c = current();
- while (canBeInNonQuotedString(c)) {
- move();
- c = current();
- }
- return DeserializationError::Ok;
- }
-
- DeserializationError::Code parseNumericValue(VariantData &result) {
- uint8_t n = 0;
-
- char c = current();
- while (canBeInNumber(c) && n < 63) {
- move();
- buffer_[n++] = c;
- c = current();
- }
- buffer_[n] = 0;
-
- auto number = parseNumber(buffer_);
- switch (number.type()) {
- case NumberType::UnsignedInteger:
- if (result.setInteger(number.asUnsignedInteger(), resources_))
- return DeserializationError::Ok;
- else
- return DeserializationError::NoMemory;
-
- case NumberType::SignedInteger:
- if (result.setInteger(number.asSignedInteger(), resources_))
- return DeserializationError::Ok;
- else
- return DeserializationError::NoMemory;
-
- case NumberType::Float:
- if (result.setFloat(number.asFloat(), resources_))
- return DeserializationError::Ok;
- else
- return DeserializationError::NoMemory;
-
-#if ARDUINOJSON_USE_DOUBLE
- case NumberType::Double:
- if (result.setFloat(number.asDouble(), resources_))
- return DeserializationError::Ok;
- else
- return DeserializationError::NoMemory;
-#endif
-
- default:
- return DeserializationError::InvalidInput;
- }
- }
-
- DeserializationError::Code skipNumericValue() {
- char c = current();
- while (canBeInNumber(c)) {
- move();
- c = current();
- }
- return DeserializationError::Ok;
- }
-
- DeserializationError::Code parseHex4(uint16_t &result) {
- result = 0;
- for (uint8_t i = 0; i < 4; ++i) {
- char digit = current();
- if (!digit)
- return DeserializationError::IncompleteInput;
- uint8_t value = decodeHex(digit);
- if (value > 0x0F)
- return DeserializationError::InvalidInput;
- result = uint16_t((result << 4) | value);
- move();
- }
- return DeserializationError::Ok;
- }
-
- static inline bool isBetween(char c, char min, char max) {
- return min <= c && c <= max;
- }
-
- static inline bool canBeInNumber(char c) {
- return isBetween(c, '0', '9') || c == '+' || c == '-' || c == '.' ||
-#if ARDUINOJSON_ENABLE_NAN || ARDUINOJSON_ENABLE_INFINITY
- isBetween(c, 'A', 'Z') || isBetween(c, 'a', 'z');
-#else
- c == 'e' || c == 'E';
-#endif
- }
-
- static inline bool canBeInNonQuotedString(char c) {
- return isBetween(c, '0', '9') || isBetween(c, '_', 'z') ||
- isBetween(c, 'A', 'Z');
- }
-
- static inline bool isQuote(char c) { return c == '\'' || c == '\"'; }
-
- static inline uint8_t decodeHex(char c) {
- if (c < 'A')
- return uint8_t(c - '0');
- c = char(c & ~0x20); // uppercase
- return uint8_t(c - 'A' + 10);
- }
-
- DeserializationError::Code skipSpacesAndComments() {
- for (;;) {
- switch (current()) {
- // end of string
- case '\0':
- return foundSomething_ ? DeserializationError::IncompleteInput
- : DeserializationError::EmptyInput;
-
- // spaces
- case ' ':
- case '\t':
- case '\r':
- case '\n':
- move();
- continue;
-
-#if ARDUINOJSON_ENABLE_COMMENTS
- // comments
- case '/':
- move(); // skip '/'
- switch (current()) {
- // block comment
- case '*': {
- move(); // skip '*'
- bool wasStar = false;
- for (;;) {
- char c = current();
- if (c == '\0')
- return DeserializationError::IncompleteInput;
- if (c == '/' && wasStar) {
- move();
- break;
- }
- wasStar = c == '*';
- move();
- }
- break;
- }
-
- // trailing comment
- case '/':
- // no need to skip "//"
- for (;;) {
- move();
- char c = current();
- if (c == '\0')
- return DeserializationError::IncompleteInput;
- if (c == '\n')
- break;
- }
- break;
-
- // not a comment, just a '/'
- default:
- return DeserializationError::InvalidInput;
- }
- break;
-#endif
-
- default:
- foundSomething_ = true;
- return DeserializationError::Ok;
- }
- }
- }
-
- DeserializationError::Code skipKeyword(const char *s) {
- while (*s) {
- char c = current();
- if (c == '\0')
- return DeserializationError::IncompleteInput;
- if (*s != c)
- return DeserializationError::InvalidInput;
- ++s;
- move();
- }
- return DeserializationError::Ok;
- }
-
- StringBuilder stringBuilder_;
- bool foundSomething_;
- Latch<TReader> latch_;
- ResourceManager *resources_;
- char buffer_[64]; // using a member instead of a local variable because it
- // ended in the recursive path after compiler inlined the
- // code
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-// Parses a JSON input, filters, and puts the result in a JsonDocument.
-// https://arduinojson.org/v7/api/json/deserializejson/
-template <typename TDestination, typename... Args,
- detail::enable_if_t<
- detail::is_deserialize_destination<TDestination>::value, int> = 0>
-inline DeserializationError deserializeJson(TDestination &&dst,
- Args &&...args) {
- using namespace detail;
- return deserialize<JsonDeserializer>(detail::forward<TDestination>(dst),
- detail::forward<Args>(args)...);
-}
-
-// Parses a JSON input, filters, and puts the result in a JsonDocument.
-// https://arduinojson.org/v7/api/json/deserializejson/
-template <typename TDestination, typename TChar, typename... Args,
- detail::enable_if_t<
- detail::is_deserialize_destination<TDestination>::value, int> = 0>
-inline DeserializationError deserializeJson(TDestination &&dst, TChar *input,
- Args &&...args) {
- using namespace detail;
- return deserialize<JsonDeserializer>(detail::forward<TDestination>(dst),
- input, detail::forward<Args>(args)...);
-}
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp
deleted file mode 100644
index 2d7774b..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp
+++ /dev/null
@@ -1,159 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Json/TextFormatter.hpp>
-#include <ArduinoJson/Serialization/measure.hpp>
-#include <ArduinoJson/Serialization/serialize.hpp>
-#include <ArduinoJson/Variant/VariantDataVisitor.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename TWriter>
-class JsonSerializer : public VariantDataVisitor<size_t> {
- public:
- static const bool producesText = true;
-
- JsonSerializer(TWriter writer, const ResourceManager *resources)
- : formatter_(writer), resources_(resources) {}
-
- size_t visit(const ArrayData &array) {
- write('[');
-
- auto slotId = array.head();
-
- while (slotId != NULL_SLOT) {
- auto slot = resources_->getVariant(slotId);
-
- slot->accept(*this, resources_);
-
- slotId = slot->next();
-
- if (slotId != NULL_SLOT)
- write(',');
- }
-
- write(']');
- return bytesWritten();
- }
-
- size_t visit(const ObjectData &object) {
- write('{');
-
- auto slotId = object.head();
-
- bool isKey = true;
-
- while (slotId != NULL_SLOT) {
- auto slot = resources_->getVariant(slotId);
- slot->accept(*this, resources_);
-
- slotId = slot->next();
-
- if (slotId != NULL_SLOT)
- write(isKey ? ':' : ',');
-
- isKey = !isKey;
- }
-
- write('}');
- return bytesWritten();
- }
-
- template <typename T>
- enable_if_t<is_floating_point<T>::value, size_t> visit(T value) {
- formatter_.writeFloat(value);
- return bytesWritten();
- }
-
- size_t visit(const char *value) {
- formatter_.writeString(value);
- return bytesWritten();
- }
-
- size_t visit(JsonString value) {
- formatter_.writeString(value.c_str(), value.size());
- return bytesWritten();
- }
-
- size_t visit(RawString value) {
- formatter_.writeRaw(value.data(), value.size());
- return bytesWritten();
- }
-
- size_t visit(JsonInteger value) {
- formatter_.writeInteger(value);
- return bytesWritten();
- }
-
- size_t visit(JsonUInt value) {
- formatter_.writeInteger(value);
- return bytesWritten();
- }
-
- size_t visit(bool value) {
- formatter_.writeBoolean(value);
- return bytesWritten();
- }
-
- size_t visit(nullptr_t) {
- formatter_.writeRaw("null");
- return bytesWritten();
- }
-
- protected:
- size_t bytesWritten() const { return formatter_.bytesWritten(); }
-
- void write(char c) { formatter_.writeRaw(c); }
-
- void write(const char *s) { formatter_.writeRaw(s); }
-
- private:
- TextFormatter<TWriter> formatter_;
-
- protected:
- const ResourceManager *resources_;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-// Produces a minified JSON document.
-// https://arduinojson.org/v7/api/json/serializejson/
-template <
- typename TDestination,
- detail::enable_if_t<!detail::is_pointer<TDestination>::value, int> = 0>
-size_t serializeJson(JsonVariantConst source, TDestination &destination) {
- using namespace detail;
- return serialize<JsonSerializer>(source, destination);
-}
-
-// Produces a minified JSON document.
-// https://arduinojson.org/v7/api/json/serializejson/
-inline size_t serializeJson(JsonVariantConst source, void *buffer,
- size_t bufferSize) {
- using namespace detail;
- return serialize<JsonSerializer>(source, buffer, bufferSize);
-}
-
-// Computes the length of the document that serializeJson() produces.
-// https://arduinojson.org/v7/api/json/measurejson/
-inline size_t measureJson(JsonVariantConst source) {
- using namespace detail;
- return measure<JsonSerializer>(source);
-}
-
-#if ARDUINOJSON_ENABLE_STD_STREAM
-template <typename T,
- detail::enable_if_t<
- detail::is_convertible<T, JsonVariantConst>::value, int> = 0>
-inline std::ostream &operator<<(std::ostream &os, const T &source) {
- serializeJson(source, os);
- return os;
-}
-#endif
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/Latch.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/Latch.hpp
deleted file mode 100644
index cce47bf..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/Latch.hpp
+++ /dev/null
@@ -1,51 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Polyfills/assert.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename TReader> class Latch {
- public:
- Latch(TReader reader) : reader_(reader), loaded_(false) {
-#if ARDUINOJSON_DEBUG
- ended_ = false;
-#endif
- }
-
- void clear() { loaded_ = false; }
-
- int last() const { return current_; }
-
- FORCE_INLINE char current() {
- if (!loaded_) {
- load();
- }
- return current_;
- }
-
- private:
- void load() {
- ARDUINOJSON_ASSERT(!ended_);
- int c = reader_.read();
-#if ARDUINOJSON_DEBUG
- if (c <= 0)
- ended_ = true;
-#endif
- current_ = static_cast<char>(c > 0 ? c : 0);
- loaded_ = true;
- }
-
- TReader reader_;
- char current_; // NOLINT(clang-analyzer-optin.cplusplus.UninitializedObject)
- // Not initialized in constructor (+10 bytes on AVR)
- bool loaded_;
-#if ARDUINOJSON_DEBUG
- bool ended_;
-#endif
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp
deleted file mode 100644
index bcc7727..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp
+++ /dev/null
@@ -1,110 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Configuration.hpp>
-#include <ArduinoJson/Json/JsonSerializer.hpp>
-#include <ArduinoJson/Serialization/measure.hpp>
-#include <ArduinoJson/Serialization/serialize.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename TWriter>
-class PrettyJsonSerializer : public JsonSerializer<TWriter> {
- using base = JsonSerializer<TWriter>;
-
- public:
- PrettyJsonSerializer(TWriter writer, const ResourceManager *resources)
- : base(writer, resources), nesting_(0) {}
-
- size_t visit(const ArrayData &array) {
- auto it = array.createIterator(base::resources_);
- if (!it.done()) {
- base::write("[\r\n");
- nesting_++;
- while (!it.done()) {
- indent();
- it->accept(*this, base::resources_);
-
- it.next(base::resources_);
- base::write(it.done() ? "\r\n" : ",\r\n");
- }
- nesting_--;
- indent();
- base::write("]");
- } else {
- base::write("[]");
- }
- return this->bytesWritten();
- }
-
- size_t visit(const ObjectData &object) {
- auto it = object.createIterator(base::resources_);
- if (!it.done()) {
- base::write("{\r\n");
- nesting_++;
- bool isKey = true;
- while (!it.done()) {
- if (isKey)
- indent();
- it->accept(*this, base::resources_);
- it.next(base::resources_);
- if (isKey)
- base::write(": ");
- else
- base::write(it.done() ? "\r\n" : ",\r\n");
- isKey = !isKey;
- }
- nesting_--;
- indent();
- base::write("}");
- } else {
- base::write("{}");
- }
- return this->bytesWritten();
- }
-
- using base::visit;
-
- private:
- void indent() {
- for (uint8_t i = 0; i < nesting_; i++)
- base::write(ARDUINOJSON_TAB);
- }
-
- uint8_t nesting_;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-// Produces JsonDocument to create a prettified JSON document.
-// https://arduinojson.org/v7/api/json/serializejsonpretty/
-template <
- typename TDestination,
- detail::enable_if_t<!detail::is_pointer<TDestination>::value, int> = 0>
-inline size_t serializeJsonPretty(JsonVariantConst source,
- TDestination &destination) {
- using namespace ArduinoJson::detail;
- return serialize<PrettyJsonSerializer>(source, destination);
-}
-
-// Produces JsonDocument to create a prettified JSON document.
-// https://arduinojson.org/v7/api/json/serializejsonpretty/
-inline size_t serializeJsonPretty(JsonVariantConst source, void *buffer,
- size_t bufferSize) {
- using namespace ArduinoJson::detail;
- return serialize<PrettyJsonSerializer>(source, buffer, bufferSize);
-}
-
-// Computes the length of the document that serializeJsonPretty() produces.
-// https://arduinojson.org/v7/api/json/measurejsonpretty/
-inline size_t measureJsonPretty(JsonVariantConst source) {
- using namespace ArduinoJson::detail;
- return measure<PrettyJsonSerializer>(source);
-}
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp
deleted file mode 100644
index 3ca781f..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp
+++ /dev/null
@@ -1,170 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <stdint.h>
-#include <string.h> // for strlen
-
-#include <ArduinoJson/Json/EscapeSequence.hpp>
-#include <ArduinoJson/Numbers/FloatParts.hpp>
-#include <ArduinoJson/Numbers/JsonInteger.hpp>
-#include <ArduinoJson/Polyfills/assert.hpp>
-#include <ArduinoJson/Polyfills/attributes.hpp>
-#include <ArduinoJson/Polyfills/type_traits.hpp>
-#include <ArduinoJson/Serialization/CountingDecorator.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename TWriter> class TextFormatter {
- public:
- explicit TextFormatter(TWriter writer) : writer_(writer) {}
-
- TextFormatter &operator=(const TextFormatter &) = delete;
-
- // Returns the number of bytes sent to the TWriter implementation.
- size_t bytesWritten() const { return writer_.count(); }
-
- void writeBoolean(bool value) {
- if (value)
- writeRaw("true");
- else
- writeRaw("false");
- }
-
- void writeString(const char *value) {
- ARDUINOJSON_ASSERT(value != NULL);
- writeRaw('\"');
- while (*value)
- writeChar(*value++);
- writeRaw('\"');
- }
-
- void writeString(const char *value, size_t n) {
- ARDUINOJSON_ASSERT(value != NULL);
- writeRaw('\"');
- while (n--)
- writeChar(*value++);
- writeRaw('\"');
- }
-
- void writeChar(char c) {
- char specialChar = EscapeSequence::escapeChar(c);
- if (specialChar) {
- writeRaw('\\');
- writeRaw(specialChar);
- } else if (c) {
- writeRaw(c);
- } else {
- writeRaw("\\u0000");
- }
- }
-
- template <typename T> void writeFloat(T value) {
- writeFloat(JsonFloat(value), sizeof(T) >= 8 ? 9 : 6);
- }
-
- void writeFloat(JsonFloat value, int8_t decimalPlaces) {
- if (isnan(value))
- return writeRaw(ARDUINOJSON_ENABLE_NAN ? "NaN" : "null");
-
-#if ARDUINOJSON_ENABLE_INFINITY
- if (value < 0.0) {
- writeRaw('-');
- value = -value;
- }
-
- if (isinf(value))
- return writeRaw("Infinity");
-#else
- if (isinf(value))
- return writeRaw("null");
-
- if (value < 0.0) {
- writeRaw('-');
- value = -value;
- }
-#endif
-
- auto parts = decomposeFloat(value, decimalPlaces);
-
- writeInteger(parts.integral);
- if (parts.decimalPlaces)
- writeDecimals(parts.decimal, parts.decimalPlaces);
-
- if (parts.exponent) {
- writeRaw('e');
- writeInteger(parts.exponent);
- }
- }
-
- template <typename T>
- enable_if_t<is_signed<T>::value> writeInteger(T value) {
- using unsigned_type = make_unsigned_t<T>;
- unsigned_type unsigned_value;
- if (value < 0) {
- writeRaw('-');
- unsigned_value = unsigned_type(unsigned_type(~value) + 1);
- } else {
- unsigned_value = unsigned_type(value);
- }
- writeInteger(unsigned_value);
- }
-
- template <typename T>
- enable_if_t<is_unsigned<T>::value> writeInteger(T value) {
- char buffer[22];
- char *end = buffer + sizeof(buffer);
- char *begin = end;
-
- // write the string in reverse order
- do {
- *--begin = char(value % 10 + '0');
- value = T(value / 10);
- } while (value);
-
- // and dump it in the right order
- writeRaw(begin, end);
- }
-
- void writeDecimals(uint32_t value, int8_t width) {
- // buffer should be big enough for all digits and the dot
- char buffer[16];
- char *end = buffer + sizeof(buffer);
- char *begin = end;
-
- // write the string in reverse order
- while (width--) {
- *--begin = char(value % 10 + '0');
- value /= 10;
- }
- *--begin = '.';
-
- // and dump it in the right order
- writeRaw(begin, end);
- }
-
- void writeRaw(const char *s) {
- writer_.write(reinterpret_cast<const uint8_t *>(s), strlen(s));
- }
-
- void writeRaw(const char *s, size_t n) {
- writer_.write(reinterpret_cast<const uint8_t *>(s), n);
- }
-
- void writeRaw(const char *begin, const char *end) {
- writer_.write(reinterpret_cast<const uint8_t *>(begin),
- static_cast<size_t>(end - begin));
- }
-
- template <size_t N> void writeRaw(const char (&s)[N]) {
- writer_.write(reinterpret_cast<const uint8_t *>(s), N - 1);
- }
- void writeRaw(char c) { writer_.write(static_cast<uint8_t>(c)); }
-
- protected:
- CountingDecorator<TWriter> writer_;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp
deleted file mode 100644
index 54a3cdb..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp
+++ /dev/null
@@ -1,65 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-#include <stdint.h> // uint16_t, uint32_t
-
-// The high surrogate may be uninitialized if the pair is invalid,
-// we choose to ignore the problem to reduce the size of the code
-// Garbage in => Garbage out
-#if defined(__GNUC__)
-#if __GNUC__ >= 7
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
-#endif
-#endif
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-namespace Utf16 {
-inline bool isHighSurrogate(uint16_t codeunit) {
- return codeunit >= 0xD800 && codeunit < 0xDC00;
-}
-
-inline bool isLowSurrogate(uint16_t codeunit) {
- return codeunit >= 0xDC00 && codeunit < 0xE000;
-}
-
-class Codepoint {
- public:
- Codepoint() : highSurrogate_(0), codepoint_(0) {}
-
- bool append(uint16_t codeunit) {
- if (isHighSurrogate(codeunit)) {
- highSurrogate_ = codeunit & 0x3FF;
- return false;
- }
-
- if (isLowSurrogate(codeunit)) {
- codepoint_ = uint32_t(
- 0x10000 + ((highSurrogate_ << 10) | (codeunit & 0x3FF)));
- return true;
- }
-
- codepoint_ = codeunit;
- return true;
- }
-
- uint32_t value() const { return codepoint_; }
-
- private:
- uint16_t highSurrogate_;
- uint32_t codepoint_;
-};
-} // namespace Utf16
-ARDUINOJSON_END_PRIVATE_NAMESPACE
-
-#if defined(__GNUC__)
-#if __GNUC__ >= 8
-#pragma GCC diagnostic pop
-#endif
-#endif
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp
deleted file mode 100644
index 155c58f..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-namespace Utf8 {
-template <typename TStringBuilder>
-inline void encodeCodepoint(uint32_t codepoint32, TStringBuilder &str) {
- // this function was optimize for code size on AVR
-
- if (codepoint32 < 0x80) {
- str.append(char(codepoint32));
- } else {
- // a buffer to store the string in reverse
- char buf[5];
- char *p = buf;
-
- *(p++) = 0;
- *(p++) = char((codepoint32 | 0x80) & 0xBF);
- uint16_t codepoint16 = uint16_t(codepoint32 >> 6);
- if (codepoint16 < 0x20) { // 0x800
- *(p++) = char(codepoint16 | 0xC0);
- } else {
- *(p++) = char((codepoint16 | 0x80) & 0xBF);
- codepoint16 = uint16_t(codepoint16 >> 6);
- if (codepoint16 < 0x10) { // 0x10000
- *(p++) = char(codepoint16 | 0xE0);
- } else {
- *(p++) = char((codepoint16 | 0x80) & 0xBF);
- codepoint16 = uint16_t(codepoint16 >> 6);
- *(p++) = char(codepoint16 | 0xF0);
- }
- }
-
- while (*(--p)) {
- str.append(*p);
- }
- }
-}
-} // namespace Utf8
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp
deleted file mode 100644
index 19535d2..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp
+++ /dev/null
@@ -1,52 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-#include <stddef.h> // size_t
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-#if ARDUINOJSON_ENABLE_ALIGNMENT
-
-inline bool isAligned(size_t value) {
- const size_t mask = sizeof(void *) - 1;
- size_t addr = value;
- return (addr & mask) == 0;
-}
-
-inline size_t addPadding(size_t bytes) {
- const size_t mask = sizeof(void *) - 1;
- return (bytes + mask) & ~mask;
-}
-
-template <size_t bytes> struct AddPadding {
- static const size_t mask = sizeof(void *) - 1;
- static const size_t value = (bytes + mask) & ~mask;
-};
-
-#else
-
-inline bool isAligned(size_t) { return true; }
-
-inline size_t addPadding(size_t bytes) { return bytes; }
-
-template <size_t bytes> struct AddPadding {
- static const size_t value = bytes;
-};
-
-#endif
-
-template <typename T> inline bool isAligned(T *ptr) {
- return isAligned(reinterpret_cast<size_t>(ptr));
-}
-
-template <typename T> inline T *addPadding(T *p) {
- size_t address = addPadding(reinterpret_cast<size_t>(p));
- return reinterpret_cast<T *>(address);
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/Allocator.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/Allocator.hpp
deleted file mode 100644
index 0636e8e..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/Allocator.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-#include <stdlib.h> // malloc, free
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-class Allocator {
- public:
- virtual void *allocate(size_t size) = 0;
- virtual void deallocate(void *ptr) = 0;
- virtual void *reallocate(void *ptr, size_t new_size) = 0;
-
- protected:
- ~Allocator() = default;
-};
-
-namespace detail {
-class DefaultAllocator : public Allocator {
- public:
- void *allocate(size_t size) override { return malloc(size); }
-
- void deallocate(void *ptr) override { free(ptr); }
-
- void *reallocate(void *ptr, size_t new_size) override {
- return realloc(ptr, new_size);
- }
-
- static Allocator *instance() {
- static DefaultAllocator allocator;
- return &allocator;
- }
-
- private:
- DefaultAllocator() = default;
- ~DefaultAllocator() = default;
-};
-} // namespace detail
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp
deleted file mode 100644
index 8b44e07..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp
+++ /dev/null
@@ -1,96 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Memory/Allocator.hpp>
-#include <ArduinoJson/Polyfills/assert.hpp>
-#include <ArduinoJson/Polyfills/integer.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-using SlotId = uint_t<ARDUINOJSON_SLOT_ID_SIZE * 8>;
-using SlotCount = SlotId;
-const SlotId NULL_SLOT = SlotId(-1);
-
-template <typename T> class Slot {
- public:
- Slot() : ptr_(nullptr), id_(NULL_SLOT) {}
- Slot(T *p, SlotId id) : ptr_(p), id_(id) {
- ARDUINOJSON_ASSERT((p == nullptr) == (id == NULL_SLOT));
- }
-
- explicit operator bool() const { return ptr_ != nullptr; }
-
- SlotId id() const { return id_; }
-
- T *ptr() const { return ptr_; }
-
- T *operator->() const {
- ARDUINOJSON_ASSERT(ptr_ != nullptr);
- return ptr_;
- }
-
- private:
- T *ptr_;
- SlotId id_;
-};
-
-template <typename T> class MemoryPool {
- public:
- void create(SlotCount cap, Allocator *allocator) {
- ARDUINOJSON_ASSERT(cap > 0);
- slots_ = reinterpret_cast<T *>(allocator->allocate(slotsToBytes(cap)));
- capacity_ = slots_ ? cap : 0;
- usage_ = 0;
- }
-
- void destroy(Allocator *allocator) {
- if (slots_)
- allocator->deallocate(slots_);
- slots_ = nullptr;
- capacity_ = 0;
- usage_ = 0;
- }
-
- Slot<T> allocSlot() {
- if (!slots_)
- return {};
- if (usage_ >= capacity_)
- return {};
- auto index = usage_++;
- return {slots_ + index, SlotId(index)};
- }
-
- T *getSlot(SlotId id) const {
- ARDUINOJSON_ASSERT(id < usage_);
- return slots_ + id;
- }
-
- void clear() { usage_ = 0; }
-
- void shrinkToFit(Allocator *allocator) {
- auto newSlots = reinterpret_cast<T *>(
- allocator->reallocate(slots_, slotsToBytes(usage_)));
- if (newSlots) {
- slots_ = newSlots;
- capacity_ = usage_;
- }
- }
-
- SlotCount usage() const { return usage_; }
-
- static SlotCount bytesToSlots(size_t n) {
- return static_cast<SlotCount>(n / sizeof(T));
- }
-
- static size_t slotsToBytes(SlotCount n) { return n * sizeof(T); }
-
- private:
- SlotCount capacity_;
- SlotCount usage_;
- T *slots_;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/MemoryPoolList.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/MemoryPoolList.hpp
deleted file mode 100644
index f471433..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/MemoryPoolList.hpp
+++ /dev/null
@@ -1,211 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Memory/MemoryPool.hpp>
-#include <ArduinoJson/Polyfills/assert.hpp>
-#include <ArduinoJson/Polyfills/utility.hpp>
-
-#include <string.h> // memcpy
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-using PoolCount = SlotId;
-
-template <typename T> class MemoryPoolList {
- struct FreeSlot {
- SlotId next;
- };
-
- static_assert(sizeof(FreeSlot) <= sizeof(T), "T is too small");
-
- public:
- using Pool = MemoryPool<T>;
-
- MemoryPoolList() = default;
-
- ~MemoryPoolList() { ARDUINOJSON_ASSERT(count_ == 0); }
-
- friend void swap(MemoryPoolList &a, MemoryPoolList &b) {
- bool aUsedPreallocated = a.pools_ == a.preallocatedPools_;
- bool bUsedPreallocated = b.pools_ == b.preallocatedPools_;
-
- // Who is using preallocated pools?
- if (aUsedPreallocated && bUsedPreallocated) {
- // both of us => swap preallocated pools
- for (PoolCount i = 0; i < ARDUINOJSON_INITIAL_POOL_COUNT; i++)
- swap_(a.preallocatedPools_[i], b.preallocatedPools_[i]);
- } else if (bUsedPreallocated) {
- // only b => copy b's preallocated pools and give him a's pointer
- for (PoolCount i = 0; i < b.count_; i++)
- a.preallocatedPools_[i] = b.preallocatedPools_[i];
- b.pools_ = a.pools_;
- a.pools_ = a.preallocatedPools_;
- } else if (aUsedPreallocated) {
- // only a => copy a's preallocated pools and give him b's pointer
- for (PoolCount i = 0; i < a.count_; i++)
- b.preallocatedPools_[i] = a.preallocatedPools_[i];
- a.pools_ = b.pools_;
- b.pools_ = b.preallocatedPools_;
- } else {
- // neither => swap pointers
- swap_(a.pools_, b.pools_);
- }
-
- swap_(a.count_, b.count_);
- swap_(a.capacity_, b.capacity_);
- swap_(a.freeList_, b.freeList_);
- }
-
- MemoryPoolList &operator=(MemoryPoolList &&src) {
- ARDUINOJSON_ASSERT(count_ == 0);
- if (src.pools_ == src.preallocatedPools_) {
- memcpy(preallocatedPools_, src.preallocatedPools_,
- sizeof(preallocatedPools_));
- pools_ = preallocatedPools_;
- } else {
- pools_ = src.pools_;
- src.pools_ = nullptr;
- }
- count_ = src.count_;
- capacity_ = src.capacity_;
- src.count_ = 0;
- src.capacity_ = 0;
- return *this;
- }
-
- Slot<T> allocSlot(Allocator *allocator) {
- // try to allocate from free list
- if (freeList_ != NULL_SLOT) {
- return allocFromFreeList();
- }
-
- // try to allocate from last pool (other pools are full)
- if (count_) {
- auto slot = allocFromLastPool();
- if (slot)
- return slot;
- }
-
- // create a new pool and try again
- auto pool = addPool(allocator);
- if (!pool)
- return {};
-
- return allocFromLastPool();
- }
-
- void freeSlot(Slot<T> slot) {
- reinterpret_cast<FreeSlot *>(slot.ptr())->next = freeList_;
- freeList_ = slot.id();
- }
-
- T *getSlot(SlotId id) const {
- if (id == NULL_SLOT)
- return nullptr;
- auto poolIndex = SlotId(id / ARDUINOJSON_POOL_CAPACITY);
- auto indexInPool = SlotId(id % ARDUINOJSON_POOL_CAPACITY);
- ARDUINOJSON_ASSERT(poolIndex < count_);
- return pools_[poolIndex].getSlot(indexInPool);
- }
-
- void clear(Allocator *allocator) {
- for (PoolCount i = 0; i < count_; i++)
- pools_[i].destroy(allocator);
- count_ = 0;
- freeList_ = NULL_SLOT;
- if (pools_ != preallocatedPools_) {
- allocator->deallocate(pools_);
- pools_ = preallocatedPools_;
- capacity_ = ARDUINOJSON_INITIAL_POOL_COUNT;
- }
- }
-
- SlotCount usage() const {
- SlotCount total = 0;
- for (PoolCount i = 0; i < count_; i++)
- total = SlotCount(total + pools_[i].usage());
- return total;
- }
-
- size_t size() const { return Pool::slotsToBytes(usage()); }
-
- void shrinkToFit(Allocator *allocator) {
- if (count_ > 0)
- pools_[count_ - 1].shrinkToFit(allocator);
- if (pools_ != preallocatedPools_ && count_ != capacity_) {
- pools_ = static_cast<Pool *>(
- allocator->reallocate(pools_, count_ * sizeof(Pool)));
- ARDUINOJSON_ASSERT(pools_ !=
- nullptr); // realloc to smaller can't fail
- capacity_ = count_;
- }
- }
-
- private:
- Slot<T> allocFromFreeList() {
- ARDUINOJSON_ASSERT(freeList_ != NULL_SLOT);
- auto id = freeList_;
- auto slot = getSlot(freeList_);
- freeList_ = reinterpret_cast<FreeSlot *>(slot)->next;
- return {slot, id};
- }
-
- Slot<T> allocFromLastPool() {
- ARDUINOJSON_ASSERT(count_ > 0);
- auto poolIndex = SlotId(count_ - 1);
- auto slot = pools_[poolIndex].allocSlot();
- if (!slot)
- return {};
- return {slot.ptr(),
- SlotId(poolIndex * ARDUINOJSON_POOL_CAPACITY + slot.id())};
- }
-
- Pool *addPool(Allocator *allocator) {
- if (count_ == capacity_ && !increaseCapacity(allocator))
- return nullptr;
- auto pool = &pools_[count_++];
- SlotCount poolCapacity = ARDUINOJSON_POOL_CAPACITY;
- if (count_ == maxPools) // last pool is smaller because of NULL_SLOT
- poolCapacity--;
- pool->create(poolCapacity, allocator);
- return pool;
- }
-
- bool increaseCapacity(Allocator *allocator) {
- if (capacity_ == maxPools)
- return false;
- void *newPools;
- auto newCapacity = PoolCount(capacity_ * 2);
-
- if (pools_ == preallocatedPools_) {
- newPools = allocator->allocate(newCapacity * sizeof(Pool));
- if (!newPools)
- return false;
- memcpy(newPools, preallocatedPools_, sizeof(preallocatedPools_));
- } else {
- newPools =
- allocator->reallocate(pools_, newCapacity * sizeof(Pool));
- if (!newPools)
- return false;
- }
-
- pools_ = static_cast<Pool *>(newPools);
- capacity_ = newCapacity;
- return true;
- }
-
- Pool preallocatedPools_[ARDUINOJSON_INITIAL_POOL_COUNT];
- Pool *pools_ = preallocatedPools_;
- PoolCount count_ = 0;
- PoolCount capacity_ = ARDUINOJSON_INITIAL_POOL_COUNT;
- SlotId freeList_ = NULL_SLOT;
-
- public:
- static const PoolCount maxPools =
- PoolCount(NULL_SLOT / ARDUINOJSON_POOL_CAPACITY + 1);
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/ResourceManager.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/ResourceManager.hpp
deleted file mode 100644
index 96ab0e8..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/ResourceManager.hpp
+++ /dev/null
@@ -1,121 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Memory/Allocator.hpp>
-#include <ArduinoJson/Memory/MemoryPoolList.hpp>
-#include <ArduinoJson/Memory/StringPool.hpp>
-#include <ArduinoJson/Polyfills/assert.hpp>
-#include <ArduinoJson/Polyfills/utility.hpp>
-#include <ArduinoJson/Strings/StringAdapters.hpp>
-#include <ArduinoJson/Variant/VariantData.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-class VariantData;
-class VariantWithId;
-
-class ResourceManager {
- union SlotData {
- VariantData variant;
-#if ARDUINOJSON_USE_EXTENSIONS
- VariantExtension extension;
-#endif
- };
-
- public:
- constexpr static size_t slotSize = sizeof(SlotData);
-
- ResourceManager(Allocator *allocator = DefaultAllocator::instance())
- : allocator_(allocator), overflowed_(false) {}
-
- ~ResourceManager() {
- stringPool_.clear(allocator_);
- variantPools_.clear(allocator_);
- }
-
- ResourceManager(const ResourceManager &) = delete;
- ResourceManager &operator=(const ResourceManager &src) = delete;
-
- friend void swap(ResourceManager &a, ResourceManager &b) {
- swap(a.stringPool_, b.stringPool_);
- swap(a.variantPools_, b.variantPools_);
- swap_(a.allocator_, b.allocator_);
- swap_(a.overflowed_, b.overflowed_);
- }
-
- Allocator *allocator() const { return allocator_; }
-
- size_t size() const { return variantPools_.size() + stringPool_.size(); }
-
- bool overflowed() const { return overflowed_; }
-
- Slot<VariantData> allocVariant();
- void freeVariant(Slot<VariantData> slot);
- VariantData *getVariant(SlotId id) const;
-
-#if ARDUINOJSON_USE_EXTENSIONS
- Slot<VariantExtension> allocExtension();
- void freeExtension(SlotId slot);
- VariantExtension *getExtension(SlotId id) const;
-#endif
-
- template <typename TAdaptedString>
- StringNode *saveString(TAdaptedString str) {
- if (str.isNull())
- return 0;
-
- auto node = stringPool_.add(str, allocator_);
- if (!node)
- overflowed_ = true;
-
- return node;
- }
-
- void saveString(StringNode *node) { stringPool_.add(node); }
-
- template <typename TAdaptedString>
- StringNode *getString(const TAdaptedString &str) const {
- return stringPool_.get(str);
- }
-
- StringNode *createString(size_t length) {
- auto node = StringNode::create(length, allocator_);
- if (!node)
- overflowed_ = true;
- return node;
- }
-
- StringNode *resizeString(StringNode *node, size_t length) {
- node = StringNode::resize(node, length, allocator_);
- if (!node)
- overflowed_ = true;
- return node;
- }
-
- void destroyString(StringNode *node) {
- StringNode::destroy(node, allocator_);
- }
-
- void dereferenceString(const char *s) {
- stringPool_.dereference(s, allocator_);
- }
-
- void clear() {
- variantPools_.clear(allocator_);
- overflowed_ = false;
- stringPool_.clear(allocator_);
- }
-
- void shrinkToFit() { variantPools_.shrinkToFit(allocator_); }
-
- private:
- Allocator *allocator_;
- bool overflowed_;
- StringPool stringPool_;
- MemoryPoolList<SlotData> variantPools_;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/ResourceManagerImpl.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/ResourceManagerImpl.hpp
deleted file mode 100644
index cc618e3..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/ResourceManagerImpl.hpp
+++ /dev/null
@@ -1,53 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Collection/CollectionData.hpp>
-#include <ArduinoJson/Memory/ResourceManager.hpp>
-#include <ArduinoJson/Polyfills/alias_cast.hpp>
-#include <ArduinoJson/Variant/VariantData.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-inline Slot<VariantData> ResourceManager::allocVariant() {
- auto p = variantPools_.allocSlot(allocator_);
- if (!p) {
- overflowed_ = true;
- return {};
- }
- return {new (&p->variant) VariantData, p.id()};
-}
-
-inline void ResourceManager::freeVariant(Slot<VariantData> variant) {
- variant->clear(this);
- variantPools_.freeSlot(
- {alias_cast<SlotData *>(variant.ptr()), variant.id()});
-}
-
-inline VariantData *ResourceManager::getVariant(SlotId id) const {
- return reinterpret_cast<VariantData *>(variantPools_.getSlot(id));
-}
-
-#if ARDUINOJSON_USE_EXTENSIONS
-inline Slot<VariantExtension> ResourceManager::allocExtension() {
- auto p = variantPools_.allocSlot(allocator_);
- if (!p) {
- overflowed_ = true;
- return {};
- }
- return {&p->extension, p.id()};
-}
-
-inline void ResourceManager::freeExtension(SlotId id) {
- auto p = getExtension(id);
- variantPools_.freeSlot({reinterpret_cast<SlotData *>(p), id});
-}
-
-inline VariantExtension *ResourceManager::getExtension(SlotId id) const {
- return &variantPools_.getSlot(id)->extension;
-}
-#endif
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/StringBuffer.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/StringBuffer.hpp
deleted file mode 100644
index 4a93549..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/StringBuffer.hpp
+++ /dev/null
@@ -1,78 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Memory/ResourceManager.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-class StringBuffer {
- public:
- StringBuffer(ResourceManager *resources) : resources_(resources) {}
-
- ~StringBuffer() {
- if (node_)
- resources_->destroyString(node_);
- }
-
- char *reserve(size_t capacity) {
- if (node_ && capacity > node_->length) {
- // existing buffer is too small, we need to reallocate
- resources_->destroyString(node_);
- node_ = nullptr;
- }
- if (!node_)
- node_ = resources_->createString(capacity);
- if (!node_)
- return nullptr;
- size_ = capacity;
- node_->data[capacity] = 0; // null-terminate the string
- return node_->data;
- }
-
- JsonString str() const {
- ARDUINOJSON_ASSERT(node_ != nullptr);
- return JsonString(node_->data, node_->length);
- }
-
- void save(VariantData *data) {
- ARDUINOJSON_ASSERT(node_ != nullptr);
- const char *s = node_->data;
- if (isTinyString(s, size_))
- data->setTinyString(adaptString(s, size_));
- else
- data->setOwnedString(commitStringNode());
- }
-
- void saveRaw(VariantData *data) { data->setRawString(commitStringNode()); }
-
- private:
- StringNode *commitStringNode() {
- ARDUINOJSON_ASSERT(node_ != nullptr);
- node_->data[size_] = 0;
- auto node = resources_->getString(adaptString(node_->data, size_));
- if (node) {
- node->references++;
- return node;
- }
-
- if (node_->length != size_) {
- node = resources_->resizeString(node_, size_);
- ARDUINOJSON_ASSERT(node !=
- nullptr); // realloc to smaller can't fail
- } else {
- node = node_;
- }
- node_ = nullptr;
- resources_->saveString(node);
- return node;
- }
-
- ResourceManager *resources_;
- StringNode *node_ = nullptr;
- size_t size_ = 0;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp
deleted file mode 100644
index 2f1bf15..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp
+++ /dev/null
@@ -1,85 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Memory/ResourceManager.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-class StringBuilder {
- public:
- static const size_t initialCapacity = 31;
-
- StringBuilder(ResourceManager *resources) : resources_(resources) {}
-
- ~StringBuilder() {
- if (node_)
- resources_->destroyString(node_);
- }
-
- void startString() {
- size_ = 0;
- if (!node_)
- node_ = resources_->createString(initialCapacity);
- }
-
- void save(VariantData *variant) {
- ARDUINOJSON_ASSERT(variant != nullptr);
- ARDUINOJSON_ASSERT(node_ != nullptr);
-
- char *p = node_->data;
- if (isTinyString(p, size_)) {
- variant->setTinyString(adaptString(p, size_));
- return;
- }
-
- p[size_] = 0;
- StringNode *node = resources_->getString(adaptString(p, size_));
- if (!node) {
- node = resources_->resizeString(node_, size_);
- ARDUINOJSON_ASSERT(node !=
- nullptr); // realloc to smaller can't fail
- resources_->saveString(node);
- node_ = nullptr; // next time we need a new string
- } else {
- node->references++;
- }
- variant->setOwnedString(node);
- }
-
- void append(const char *s) {
- while (*s)
- append(*s++);
- }
-
- void append(const char *s, size_t n) {
- while (n-- > 0) // TODO: memcpy
- append(*s++);
- }
-
- void append(char c) {
- if (node_ && size_ == node_->length)
- node_ = resources_->resizeString(node_, size_ * 2U + 1);
- if (node_)
- node_->data[size_++] = c;
- }
-
- bool isValid() const { return node_ != nullptr; }
-
- size_t size() const { return size_; }
-
- JsonString str() const {
- ARDUINOJSON_ASSERT(node_ != nullptr);
- node_->data[size_] = 0;
- return JsonString(node_->data, size_);
- }
-
- private:
- ResourceManager *resources_;
- StringNode *node_ = nullptr;
- size_t size_ = 0;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/StringNode.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/StringNode.hpp
deleted file mode 100644
index 06e50c8..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/StringNode.hpp
+++ /dev/null
@@ -1,73 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Memory/Allocator.hpp>
-#include <ArduinoJson/Namespace.hpp>
-#include <ArduinoJson/Polyfills/assert.hpp>
-#include <ArduinoJson/Polyfills/integer.hpp>
-#include <ArduinoJson/Polyfills/limits.hpp>
-
-#include <stddef.h> // offsetof
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-struct StringNode {
- // Use the same type as SlotId to store the reference count
- // (there can never be more references than slots)
- using references_type = uint_t<ARDUINOJSON_SLOT_ID_SIZE * 8>;
-
- using length_type = uint_t<ARDUINOJSON_STRING_LENGTH_SIZE * 8>;
-
- struct StringNode *next;
- references_type references;
- length_type length;
- char data[1];
-
- static constexpr size_t maxLength = numeric_limits<length_type>::highest();
-
- static constexpr size_t sizeForLength(size_t n) {
- return n + 1 + offsetof(StringNode, data);
- }
-
- static StringNode *create(size_t length, Allocator *allocator) {
- if (length > maxLength)
- return nullptr;
- auto size = sizeForLength(length);
- if (size < length) // integer overflow
- return nullptr; // (not testable on 64-bit)
- auto node = reinterpret_cast<StringNode *>(allocator->allocate(size));
- if (node) {
- node->length = length_type(length);
- node->references = 1;
- }
- return node;
- }
-
- static StringNode *resize(StringNode *node, size_t length,
- Allocator *allocator) {
- ARDUINOJSON_ASSERT(node != nullptr);
- StringNode *newNode;
- if (length <= maxLength)
- newNode = reinterpret_cast<StringNode *>(
- allocator->reallocate(node, sizeForLength(length)));
- else
- newNode = nullptr;
- if (newNode)
- newNode->length = length_type(length);
- else
- allocator->deallocate(node);
- return newNode;
- }
-
- static void destroy(StringNode *node, Allocator *allocator) {
- allocator->deallocate(node);
- }
-};
-
-// Returns the size (in bytes) of an string with n characters.
-constexpr size_t sizeofString(size_t n) { return StringNode::sizeForLength(n); }
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/StringPool.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/StringPool.hpp
deleted file mode 100644
index bc09443..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Memory/StringPool.hpp
+++ /dev/null
@@ -1,100 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Memory/Allocator.hpp>
-#include <ArduinoJson/Memory/StringNode.hpp>
-#include <ArduinoJson/Polyfills/assert.hpp>
-#include <ArduinoJson/Polyfills/utility.hpp>
-#include <ArduinoJson/Strings/StringAdapters.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-class StringPool {
- public:
- StringPool() = default;
- StringPool(const StringPool &) = delete;
- void operator=(StringPool &&src) = delete;
-
- ~StringPool() { ARDUINOJSON_ASSERT(strings_ == nullptr); }
-
- friend void swap(StringPool &a, StringPool &b) {
- swap_(a.strings_, b.strings_);
- }
-
- void clear(Allocator *allocator) {
- while (strings_) {
- auto node = strings_;
- strings_ = node->next;
- StringNode::destroy(node, allocator);
- }
- }
-
- size_t size() const {
- size_t total = 0;
- for (auto node = strings_; node; node = node->next)
- total += sizeofString(node->length);
- return total;
- }
-
- template <typename TAdaptedString>
- StringNode *add(TAdaptedString str, Allocator *allocator) {
- ARDUINOJSON_ASSERT(str.isNull() == false);
-
- auto node = get(str);
- if (node) {
- node->references++;
- return node;
- }
-
- size_t n = str.size();
-
- node = StringNode::create(n, allocator);
- if (!node)
- return nullptr;
-
- stringGetChars(str, node->data, n);
- node->data[n] = 0; // force NUL terminator
- add(node);
- return node;
- }
-
- void add(StringNode *node) {
- ARDUINOJSON_ASSERT(node != nullptr);
- node->next = strings_;
- strings_ = node;
- }
-
- template <typename TAdaptedString>
- StringNode *get(const TAdaptedString &str) const {
- for (auto node = strings_; node; node = node->next) {
- if (stringEquals(str, adaptString(node->data, node->length)))
- return node;
- }
- return nullptr;
- }
-
- void dereference(const char *s, Allocator *allocator) {
- StringNode *prev = nullptr;
- for (auto node = strings_; node; node = node->next) {
- if (node->data == s) {
- if (--node->references == 0) {
- if (prev)
- prev->next = node->next;
- else
- strings_ = node->next;
- StringNode::destroy(node, allocator);
- }
- return;
- }
- prev = node;
- }
- }
-
- private:
- StringNode *strings_ = nullptr;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp
deleted file mode 100644
index 03be616..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp
+++ /dev/null
@@ -1,57 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Strings/StringAdapters.hpp>
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-// A special type of data that can be used to insert pregenerated JSON portions.
-template <typename T> class SerializedValue {
- public:
- explicit SerializedValue(T str) : str_(str) {}
- operator T() const { return str_; }
-
- const char *data() const { return str_.c_str(); }
-
- size_t size() const {
- // CAUTION: the old Arduino String doesn't have size()
- return str_.length();
- }
-
- private:
- T str_;
-};
-
-template <typename TChar> class SerializedValue<TChar *> {
- public:
- explicit SerializedValue(TChar *p, size_t n) : data_(p), size_(n) {}
- operator TChar *() const { return data_; }
-
- TChar *data() const { return data_; }
-
- size_t size() const { return size_; }
-
- private:
- TChar *data_;
- size_t size_;
-};
-
-using RawString = SerializedValue<const char *>;
-
-template <typename T> inline SerializedValue<T> serialized(T str) {
- return SerializedValue<T>(str);
-}
-
-template <typename TChar> inline SerializedValue<TChar *> serialized(TChar *p) {
- return SerializedValue<TChar *>(p, detail::adaptString(p).size());
-}
-
-template <typename TChar>
-inline SerializedValue<TChar *> serialized(TChar *p, size_t n) {
- return SerializedValue<TChar *>(p, n);
-}
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackBinary.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackBinary.hpp
deleted file mode 100644
index 60a2ac7..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackBinary.hpp
+++ /dev/null
@@ -1,93 +0,0 @@
-#pragma once
-
-#include <ArduinoJson/Variant/Converter.hpp>
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-class MsgPackBinary {
- public:
- MsgPackBinary() : data_(nullptr), size_(0) {}
- explicit MsgPackBinary(const void *c, size_t size)
- : data_(c), size_(size) {}
-
- const void *data() const { return data_; }
-
- size_t size() const { return size_; }
-
- private:
- const void *data_;
- size_t size_;
-};
-
-template <> struct Converter<MsgPackBinary> : private detail::VariantAttorney {
- static void toJson(MsgPackBinary src, JsonVariant dst) {
- auto data = VariantAttorney::getData(dst);
- if (!data)
- return;
- auto resources = getResourceManager(dst);
- data->clear(resources);
- if (src.data()) {
- size_t headerSize = src.size() >= 0x10000 ? 5
- : src.size() >= 0x100 ? 3
- : 2;
- auto str = resources->createString(src.size() + headerSize);
- if (str) {
- resources->saveString(str);
- auto ptr = reinterpret_cast<uint8_t *>(str->data);
- switch (headerSize) {
- case 2:
- ptr[0] = uint8_t(0xc4);
- ptr[1] = uint8_t(src.size() & 0xff);
- break;
- case 3:
- ptr[0] = uint8_t(0xc5);
- ptr[1] = uint8_t(src.size() >> 8 & 0xff);
- ptr[2] = uint8_t(src.size() & 0xff);
- break;
- case 5:
- ptr[0] = uint8_t(0xc6);
- ptr[1] = uint8_t(src.size() >> 24 & 0xff);
- ptr[2] = uint8_t(src.size() >> 16 & 0xff);
- ptr[3] = uint8_t(src.size() >> 8 & 0xff);
- ptr[4] = uint8_t(src.size() & 0xff);
- break;
- default:
- ARDUINOJSON_ASSERT(false);
- }
- memcpy(ptr + headerSize, src.data(), src.size());
- data->setRawString(str);
- return;
- }
- }
- }
-
- static MsgPackBinary fromJson(JsonVariantConst src) {
- auto data = getData(src);
- if (!data)
- return {};
- auto rawstr = data->asRawString();
- auto p = reinterpret_cast<const uint8_t *>(rawstr.c_str());
- auto n = rawstr.size();
- if (n >= 2 && p[0] == 0xc4) { // bin 8
- size_t size = p[1];
- if (size + 2 == n)
- return MsgPackBinary(p + 2, size);
- } else if (n >= 3 && p[0] == 0xc5) { // bin 16
- size_t size = size_t(p[1] << 8) | p[2];
- if (size + 3 == n)
- return MsgPackBinary(p + 3, size);
- } else if (n >= 5 && p[0] == 0xc6) { // bin 32
- size_t size = size_t(p[1] << 24) | size_t(p[2] << 16) |
- size_t(p[3] << 8) | p[4];
- if (size + 5 == n)
- return MsgPackBinary(p + 5, size);
- }
- return {};
- }
-
- static bool checkJson(JsonVariantConst src) {
- return fromJson(src).data() != nullptr;
- }
-};
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp
deleted file mode 100644
index 80f8c56..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp
+++ /dev/null
@@ -1,486 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Deserialization/deserialize.hpp>
-#include <ArduinoJson/Memory/ResourceManager.hpp>
-#include <ArduinoJson/Memory/StringBuffer.hpp>
-#include <ArduinoJson/MsgPack/endianness.hpp>
-#include <ArduinoJson/MsgPack/ieee754.hpp>
-#include <ArduinoJson/Polyfills/type_traits.hpp>
-#include <ArduinoJson/Variant/VariantData.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename TReader> class MsgPackDeserializer {
- public:
- MsgPackDeserializer(ResourceManager *resources, TReader reader)
- : resources_(resources), reader_(reader), stringBuffer_(resources),
- foundSomething_(false) {}
-
- template <typename TFilter>
- DeserializationError
- parse(VariantData &variant, TFilter filter,
- DeserializationOption::NestingLimit nestingLimit) {
- DeserializationError::Code err;
- err = parseVariant(&variant, filter, nestingLimit);
- return foundSomething_ ? err : DeserializationError::EmptyInput;
- }
-
- private:
- template <typename TFilter>
- DeserializationError::Code
- parseVariant(VariantData *variant, TFilter filter,
- DeserializationOption::NestingLimit nestingLimit) {
- DeserializationError::Code err;
-
- uint8_t header[5];
- err = readBytes(header, 1);
- if (err)
- return err;
-
- const uint8_t &code = header[0];
-
- foundSomething_ = true;
-
- bool allowValue = filter.allowValue();
-
- if (allowValue) {
- // callers pass a null pointer only when value must be ignored
- ARDUINOJSON_ASSERT(variant != 0);
- }
-
- if (code >= 0xcc && code <= 0xd3) {
- auto width = uint8_t(1U << ((code - 0xcc) % 4));
- if (allowValue)
- return readInteger(variant, width, code >= 0xd0);
- else
- return skipBytes(width);
- }
-
- switch (code) {
- case 0xc0:
- // already null
- return DeserializationError::Ok;
-
- case 0xc1:
- return DeserializationError::InvalidInput;
-
- case 0xc2:
- case 0xc3:
- if (allowValue)
- variant->setBoolean(code == 0xc3);
- return DeserializationError::Ok;
-
- case 0xca:
- if (allowValue)
- return readFloat<float>(variant);
- else
- return skipBytes(4);
-
- case 0xcb:
- if (allowValue)
- return readDouble<double>(variant);
- else
- return skipBytes(8);
- }
-
- if (code <= 0x7f || code >= 0xe0) { // fixint
- if (allowValue)
- variant->setInteger(static_cast<int8_t>(code), resources_);
- return DeserializationError::Ok;
- }
-
- uint8_t sizeBytes = 0;
- size_t size = 0;
- bool isExtension = code >= 0xc7 && code <= 0xc9;
-
- switch (code) {
- case 0xc4: // bin 8
- case 0xc7: // ext 8
- case 0xd9: // str 8
- sizeBytes = 1;
- break;
-
- case 0xc5: // bin 16
- case 0xc8: // ext 16
- case 0xda: // str 16
- case 0xdc: // array 16
- case 0xde: // map 16
- sizeBytes = 2;
- break;
-
- case 0xc6: // bin 32
- case 0xc9: // ext 32
- case 0xdb: // str 32
- case 0xdd: // array 32
- case 0xdf: // map 32
- sizeBytes = 4;
- break;
- }
-
- if (code >= 0xd4 && code <= 0xd8) { // fixext
- size = size_t(1) << (code - 0xd4);
- isExtension = true;
- }
-
- switch (code & 0xf0) {
- case 0x90: // fixarray
- case 0x80: // fixmap
- size = code & 0x0F;
- break;
- }
-
- switch (code & 0xe0) {
- case 0xa0: // fixstr
- size = code & 0x1f;
- break;
- }
-
- if (sizeBytes) {
- err = readBytes(header + 1, sizeBytes);
- if (err)
- return err;
-
- uint32_t size32 = 0;
- for (uint8_t i = 0; i < sizeBytes; i++)
- size32 = (size32 << 8) | header[i + 1];
-
- size = size_t(size32);
- if (size < size32) // integer overflow
- return DeserializationError::NoMemory; // (not testable on
- // 32/64-bit)
- }
-
- // array 16, 32 and fixarray
- if (code == 0xdc || code == 0xdd || (code & 0xf0) == 0x90)
- return readArray(variant, size, filter, nestingLimit);
-
- // map 16, 32 and fixmap
- if (code == 0xde || code == 0xdf || (code & 0xf0) == 0x80)
- return readObject(variant, size, filter, nestingLimit);
-
- // str 8, 16, 32 and fixstr
- if (code == 0xd9 || code == 0xda || code == 0xdb ||
- (code & 0xe0) == 0xa0) {
- if (allowValue)
- return readString(variant, size);
- else
- return skipBytes(size);
- }
-
- if (isExtension)
- size++; // to include the type
-
- if (allowValue)
- return readRawString(variant, header, uint8_t(1 + sizeBytes), size);
- else
- return skipBytes(size);
- }
-
- DeserializationError::Code readByte(uint8_t &value) {
- int c = reader_.read();
- if (c < 0)
- return DeserializationError::IncompleteInput;
- value = static_cast<uint8_t>(c);
- return DeserializationError::Ok;
- }
-
- DeserializationError::Code readBytes(void *p, size_t n) {
- if (reader_.readBytes(reinterpret_cast<char *>(p), n) == n)
- return DeserializationError::Ok;
- return DeserializationError::IncompleteInput;
- }
-
- template <typename T> DeserializationError::Code readBytes(T &value) {
- return readBytes(&value, sizeof(value));
- }
-
- DeserializationError::Code skipBytes(size_t n) {
- for (; n; --n) {
- if (reader_.read() < 0)
- return DeserializationError::IncompleteInput;
- }
- return DeserializationError::Ok;
- }
-
- DeserializationError::Code readInteger(VariantData *variant, uint8_t width,
- bool isSigned) {
- uint8_t buffer[8];
-
- auto err = readBytes(buffer, width);
- if (err)
- return err;
-
- union {
- int64_t signedValue;
- uint64_t unsignedValue;
- };
-
- if (isSigned)
- signedValue = static_cast<int8_t>(buffer[0]); // propagate sign bit
- else
- unsignedValue = static_cast<uint8_t>(buffer[0]);
-
- for (uint8_t i = 1; i < width; i++)
- unsignedValue = (unsignedValue << 8) | buffer[i];
-
- if (isSigned) {
- auto truncatedValue = static_cast<JsonInteger>(signedValue);
- if (truncatedValue == signedValue) {
- if (!variant->setInteger(truncatedValue, resources_))
- return DeserializationError::NoMemory;
- }
- // else set null on overflow
- } else {
- auto truncatedValue = static_cast<JsonUInt>(unsignedValue);
- if (truncatedValue == unsignedValue)
- if (!variant->setInteger(truncatedValue, resources_))
- return DeserializationError::NoMemory;
- // else set null on overflow
- }
-
- return DeserializationError::Ok;
- }
-
- template <typename T>
- enable_if_t<sizeof(T) == 4, DeserializationError::Code>
- readFloat(VariantData *variant) {
- DeserializationError::Code err;
- T value;
-
- err = readBytes(value);
- if (err)
- return err;
-
- fixEndianness(value);
- variant->setFloat(value, resources_);
-
- return DeserializationError::Ok;
- }
-
- template <typename T>
- enable_if_t<sizeof(T) == 8, DeserializationError::Code>
- readDouble(VariantData *variant) {
- DeserializationError::Code err;
- T value;
-
- err = readBytes(value);
- if (err)
- return err;
-
- fixEndianness(value);
- if (variant->setFloat(value, resources_))
- return DeserializationError::Ok;
- else
- return DeserializationError::NoMemory;
- }
-
- template <typename T>
- enable_if_t<sizeof(T) == 4, DeserializationError::Code>
- readDouble(VariantData *variant) {
- DeserializationError::Code err;
- uint8_t i[8]; // input is 8 bytes
- T value; // output is 4 bytes
- uint8_t *o = reinterpret_cast<uint8_t *>(&value);
-
- err = readBytes(i, 8);
- if (err)
- return err;
-
- doubleToFloat(i, o);
- fixEndianness(value);
- variant->setFloat(value, resources_);
-
- return DeserializationError::Ok;
- }
-
- DeserializationError::Code readString(VariantData *variant, size_t n) {
- DeserializationError::Code err;
-
- err = readString(n);
- if (err)
- return err;
-
- stringBuffer_.save(variant);
- return DeserializationError::Ok;
- }
-
- DeserializationError::Code readString(size_t n) {
- char *p = stringBuffer_.reserve(n);
- if (!p)
- return DeserializationError::NoMemory;
-
- return readBytes(p, n);
- }
-
- DeserializationError::Code readRawString(VariantData *variant,
- const void *header,
- uint8_t headerSize, size_t n) {
- auto totalSize = size_t(headerSize + n);
- if (totalSize < n) // integer overflow
- return DeserializationError::NoMemory; // (not testable on 64-bit)
-
- char *p = stringBuffer_.reserve(totalSize);
- if (!p)
- return DeserializationError::NoMemory;
-
- memcpy(p, header, headerSize);
-
- auto err = readBytes(p + headerSize, n);
- if (err)
- return err;
-
- stringBuffer_.saveRaw(variant);
- return DeserializationError::Ok;
- }
-
- template <typename TFilter>
- DeserializationError::Code
- readArray(VariantData *variant, size_t n, TFilter filter,
- DeserializationOption::NestingLimit nestingLimit) {
- DeserializationError::Code err;
-
- if (nestingLimit.reached())
- return DeserializationError::TooDeep;
-
- bool allowArray = filter.allowArray();
-
- ArrayData *array;
- if (allowArray) {
- ARDUINOJSON_ASSERT(variant != 0);
- array = &variant->toArray();
- } else {
- array = 0;
- }
-
- TFilter elementFilter = filter[0U];
-
- for (; n; --n) {
- VariantData *value;
-
- if (elementFilter.allow()) {
- ARDUINOJSON_ASSERT(array != 0);
- value = array->addElement(resources_);
- if (!value)
- return DeserializationError::NoMemory;
- } else {
- value = 0;
- }
-
- err = parseVariant(value, elementFilter, nestingLimit.decrement());
- if (err)
- return err;
- }
-
- return DeserializationError::Ok;
- }
-
- template <typename TFilter>
- DeserializationError::Code
- readObject(VariantData *variant, size_t n, TFilter filter,
- DeserializationOption::NestingLimit nestingLimit) {
- DeserializationError::Code err;
-
- if (nestingLimit.reached())
- return DeserializationError::TooDeep;
-
- ObjectData *object;
- if (filter.allowObject()) {
- ARDUINOJSON_ASSERT(variant != 0);
- object = &variant->toObject();
- } else {
- object = 0;
- }
-
- for (; n; --n) {
- err = readKey();
- if (err)
- return err;
-
- JsonString key = stringBuffer_.str();
- TFilter memberFilter = filter[key.c_str()];
- VariantData *member = 0;
-
- if (memberFilter.allow()) {
- ARDUINOJSON_ASSERT(object != 0);
-
- auto keyVariant = object->addPair(&member, resources_);
- if (!keyVariant)
- return DeserializationError::NoMemory;
-
- stringBuffer_.save(keyVariant);
- }
-
- err = parseVariant(member, memberFilter, nestingLimit.decrement());
- if (err)
- return err;
- }
-
- return DeserializationError::Ok;
- }
-
- DeserializationError::Code readKey() {
- DeserializationError::Code err;
- uint8_t code;
-
- err = readByte(code);
- if (err)
- return err;
-
- if ((code & 0xe0) == 0xa0)
- return readString(code & 0x1f);
-
- if (code >= 0xd9 && code <= 0xdb) {
- uint8_t sizeBytes = uint8_t(1U << (code - 0xd9));
- uint32_t size = 0;
- for (uint8_t i = 0; i < sizeBytes; i++) {
- err = readByte(code);
- if (err)
- return err;
- size = (size << 8) | code;
- }
- return readString(size);
- }
-
- return DeserializationError::InvalidInput;
- }
-
- ResourceManager *resources_;
- TReader reader_;
- StringBuffer stringBuffer_;
- bool foundSomething_;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-// Parses a MessagePack input and puts the result in a JsonDocument.
-// https://arduinojson.org/v7/api/msgpack/deserializemsgpack/
-template <typename TDestination, typename... Args,
- detail::enable_if_t<
- detail::is_deserialize_destination<TDestination>::value, int> = 0>
-inline DeserializationError deserializeMsgPack(TDestination &&dst,
- Args &&...args) {
- using namespace detail;
- return deserialize<MsgPackDeserializer>(detail::forward<TDestination>(dst),
- detail::forward<Args>(args)...);
-}
-
-// Parses a MessagePack input and puts the result in a JsonDocument.
-// https://arduinojson.org/v7/api/msgpack/deserializemsgpack/
-template <typename TDestination, typename TChar, typename... Args,
- detail::enable_if_t<
- detail::is_deserialize_destination<TDestination>::value, int> = 0>
-inline DeserializationError deserializeMsgPack(TDestination &&dst, TChar *input,
- Args &&...args) {
- using namespace detail;
- return deserialize<MsgPackDeserializer>(detail::forward<TDestination>(dst),
- input,
- detail::forward<Args>(args)...);
-}
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackExtension.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackExtension.hpp
deleted file mode 100644
index ca7f3c9..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackExtension.hpp
+++ /dev/null
@@ -1,115 +0,0 @@
-#pragma once
-
-#include <ArduinoJson/Variant/Converter.hpp>
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-class MsgPackExtension {
- public:
- MsgPackExtension() : data_(nullptr), size_(0), type_(0) {}
- explicit MsgPackExtension(int8_t type, const void *data, size_t size)
- : data_(data), size_(size), type_(type) {}
-
- int8_t type() const { return type_; }
-
- const void *data() const { return data_; }
-
- size_t size() const { return size_; }
-
- private:
- const void *data_;
- size_t size_;
- int8_t type_;
-};
-
-template <>
-struct Converter<MsgPackExtension> : private detail::VariantAttorney {
- static void toJson(MsgPackExtension src, JsonVariant dst) {
- auto data = VariantAttorney::getData(dst);
- if (!data)
- return;
- auto resources = getResourceManager(dst);
- data->clear(resources);
- if (src.data()) {
- uint8_t format, sizeBytes;
- if (src.size() >= 0x10000) {
- format = 0xc9; // ext 32
- sizeBytes = 4;
- } else if (src.size() >= 0x100) {
- format = 0xc8; // ext 16
- sizeBytes = 2;
- } else if (src.size() == 16) {
- format = 0xd8; // fixext 16
- sizeBytes = 0;
- } else if (src.size() == 8) {
- format = 0xd7; // fixext 8
- sizeBytes = 0;
- } else if (src.size() == 4) {
- format = 0xd6; // fixext 4
- sizeBytes = 0;
- } else if (src.size() == 2) {
- format = 0xd5; // fixext 2
- sizeBytes = 0;
- } else if (src.size() == 1) {
- format = 0xd4; // fixext 1
- sizeBytes = 0;
- } else {
- format = 0xc7; // ext 8
- sizeBytes = 1;
- }
-
- auto str = resources->createString(src.size() + 2 + sizeBytes);
- if (str) {
- resources->saveString(str);
- auto ptr = reinterpret_cast<uint8_t *>(str->data);
- *ptr++ = uint8_t(format);
- for (uint8_t i = 0; i < sizeBytes; i++)
- *ptr++ =
- uint8_t(src.size() >> (sizeBytes - i - 1) * 8 & 0xff);
- *ptr++ = uint8_t(src.type());
- memcpy(ptr, src.data(), src.size());
- data->setRawString(str);
- return;
- }
- }
- }
-
- static MsgPackExtension fromJson(JsonVariantConst src) {
- auto data = getData(src);
- if (!data)
- return {};
- auto rawstr = data->asRawString();
- if (rawstr.size() == 0)
- return {};
- auto p = reinterpret_cast<const uint8_t *>(rawstr.c_str());
-
- size_t payloadSize = 0;
- uint8_t headerSize = 0;
-
- const uint8_t &code = p[0];
-
- if (code >= 0xd4 && code <= 0xd8) { // fixext 1
- headerSize = 2;
- payloadSize = size_t(1) << (code - 0xd4);
- }
-
- if (code >= 0xc7 && code <= 0xc9) {
- uint8_t sizeBytes = uint8_t(1 << (code - 0xc7));
- for (uint8_t i = 0; i < sizeBytes; i++)
- payloadSize = (payloadSize << 8) | p[1 + i];
- headerSize = uint8_t(2 + sizeBytes);
- }
-
- if (rawstr.size() == headerSize + payloadSize)
- return MsgPackExtension(int8_t(p[headerSize - 1]), p + headerSize,
- payloadSize);
-
- return {};
- }
-
- static bool checkJson(JsonVariantConst src) {
- return fromJson(src).data() != nullptr;
- }
-};
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp
deleted file mode 100644
index 1ffb20d..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp
+++ /dev/null
@@ -1,236 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/MsgPack/endianness.hpp>
-#include <ArduinoJson/Polyfills/assert.hpp>
-#include <ArduinoJson/Polyfills/type_traits.hpp>
-#include <ArduinoJson/Serialization/CountingDecorator.hpp>
-#include <ArduinoJson/Serialization/measure.hpp>
-#include <ArduinoJson/Serialization/serialize.hpp>
-#include <ArduinoJson/Variant/VariantData.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename TWriter>
-class MsgPackSerializer : public VariantDataVisitor<size_t> {
- public:
- static const bool producesText = false;
-
- MsgPackSerializer(TWriter writer, const ResourceManager *resources)
- : writer_(writer), resources_(resources) {}
-
- template <typename T>
- enable_if_t<is_floating_point<T>::value && sizeof(T) == 4, size_t>
- visit(T value32) {
- if (canConvertNumber<JsonInteger>(value32)) {
- JsonInteger truncatedValue = JsonInteger(value32);
- if (value32 == T(truncatedValue))
- return visit(truncatedValue);
- }
- writeByte(0xCA);
- writeInteger(value32);
- return bytesWritten();
- }
-
- template <typename T>
- ARDUINOJSON_NO_SANITIZE("float-cast-overflow")
- enable_if_t<is_floating_point<T>::value && sizeof(T) == 8, size_t> visit(
- T value64) {
- float value32 = float(value64);
- if (value32 == value64)
- return visit(value32);
- writeByte(0xCB);
- writeInteger(value64);
- return bytesWritten();
- }
-
- size_t visit(const ArrayData &array) {
- size_t n = array.size(resources_);
- if (n < 0x10) {
- writeByte(uint8_t(0x90 + n));
- } else if (n < 0x10000) {
- writeByte(0xDC);
- writeInteger(uint16_t(n));
- } else {
- writeByte(0xDD);
- writeInteger(uint32_t(n));
- }
-
- auto slotId = array.head();
- while (slotId != NULL_SLOT) {
- auto slot = resources_->getVariant(slotId);
- slot->accept(*this, resources_);
- slotId = slot->next();
- }
-
- return bytesWritten();
- }
-
- size_t visit(const ObjectData &object) {
- size_t n = object.size(resources_);
- if (n < 0x10) {
- writeByte(uint8_t(0x80 + n));
- } else if (n < 0x10000) {
- writeByte(0xDE);
- writeInteger(uint16_t(n));
- } else {
- writeByte(0xDF);
- writeInteger(uint32_t(n));
- }
-
- auto slotId = object.head();
- while (slotId != NULL_SLOT) {
- auto slot = resources_->getVariant(slotId);
- slot->accept(*this, resources_);
- slotId = slot->next();
- }
-
- return bytesWritten();
- }
-
- size_t visit(const char *value) { return visit(JsonString(value)); }
-
- size_t visit(JsonString value) {
- ARDUINOJSON_ASSERT(!value.isNull());
-
- auto n = value.size();
-
- if (n < 0x20) {
- writeByte(uint8_t(0xA0 + n));
- } else if (n < 0x100) {
- writeByte(0xD9);
- writeInteger(uint8_t(n));
- } else if (n < 0x10000) {
- writeByte(0xDA);
- writeInteger(uint16_t(n));
- } else {
- writeByte(0xDB);
- writeInteger(uint32_t(n));
- }
- writeBytes(reinterpret_cast<const uint8_t *>(value.c_str()), n);
- return bytesWritten();
- }
-
- size_t visit(RawString value) {
- writeBytes(reinterpret_cast<const uint8_t *>(value.data()),
- value.size());
- return bytesWritten();
- }
-
- size_t visit(JsonInteger value) {
- if (value > 0) {
- visit(static_cast<JsonUInt>(value));
- } else if (value >= -0x20) {
- writeInteger(int8_t(value));
- } else if (value >= -0x80) {
- writeByte(0xD0);
- writeInteger(int8_t(value));
- } else if (value >= -0x8000) {
- writeByte(0xD1);
- writeInteger(int16_t(value));
- }
-#if ARDUINOJSON_USE_LONG_LONG
- else if (value >= -0x80000000LL)
-#else
- else
-#endif
- {
- writeByte(0xD2);
- writeInteger(int32_t(value));
- }
-#if ARDUINOJSON_USE_LONG_LONG
- else {
- writeByte(0xD3);
- writeInteger(int64_t(value));
- }
-#endif
- return bytesWritten();
- }
-
- size_t visit(JsonUInt value) {
- if (value <= 0x7F) {
- writeInteger(uint8_t(value));
- } else if (value <= 0xFF) {
- writeByte(0xCC);
- writeInteger(uint8_t(value));
- } else if (value <= 0xFFFF) {
- writeByte(0xCD);
- writeInteger(uint16_t(value));
- }
-#if ARDUINOJSON_USE_LONG_LONG
- else if (value <= 0xFFFFFFFF)
-#else
- else
-#endif
- {
- writeByte(0xCE);
- writeInteger(uint32_t(value));
- }
-#if ARDUINOJSON_USE_LONG_LONG
- else {
- writeByte(0xCF);
- writeInteger(uint64_t(value));
- }
-#endif
- return bytesWritten();
- }
-
- size_t visit(bool value) {
- writeByte(value ? 0xC3 : 0xC2);
- return bytesWritten();
- }
-
- size_t visit(nullptr_t) {
- writeByte(0xC0);
- return bytesWritten();
- }
-
- private:
- size_t bytesWritten() const { return writer_.count(); }
-
- void writeByte(uint8_t c) { writer_.write(c); }
-
- void writeBytes(const uint8_t *p, size_t n) { writer_.write(p, n); }
-
- template <typename T> void writeInteger(T value) {
- fixEndianness(value);
- writeBytes(reinterpret_cast<uint8_t *>(&value), sizeof(value));
- }
-
- CountingDecorator<TWriter> writer_;
- const ResourceManager *resources_;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-// Produces a MessagePack document.
-// https://arduinojson.org/v7/api/msgpack/serializemsgpack/
-template <
- typename TDestination,
- detail::enable_if_t<!detail::is_pointer<TDestination>::value, int> = 0>
-inline size_t serializeMsgPack(JsonVariantConst source, TDestination &output) {
- using namespace ArduinoJson::detail;
- return serialize<MsgPackSerializer>(source, output);
-}
-
-// Produces a MessagePack document.
-// https://arduinojson.org/v7/api/msgpack/serializemsgpack/
-inline size_t serializeMsgPack(JsonVariantConst source, void *output,
- size_t size) {
- using namespace ArduinoJson::detail;
- return serialize<MsgPackSerializer>(source, output, size);
-}
-
-// Computes the length of the document that serializeMsgPack() produces.
-// https://arduinojson.org/v7/api/msgpack/measuremsgpack/
-inline size_t measureMsgPack(JsonVariantConst source) {
- using namespace ArduinoJson::detail;
- return measure<MsgPackSerializer>(source);
-}
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/endianness.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/endianness.hpp
deleted file mode 100644
index c442362..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/endianness.hpp
+++ /dev/null
@@ -1,44 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Polyfills/type_traits.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-#if ARDUINOJSON_LITTLE_ENDIAN
-inline void swapBytes(uint8_t &a, uint8_t &b) {
- uint8_t t(a);
- a = b;
- b = t;
-}
-
-inline void fixEndianness(uint8_t *p, integral_constant<size_t, 8>) {
- swapBytes(p[0], p[7]);
- swapBytes(p[1], p[6]);
- swapBytes(p[2], p[5]);
- swapBytes(p[3], p[4]);
-}
-
-inline void fixEndianness(uint8_t *p, integral_constant<size_t, 4>) {
- swapBytes(p[0], p[3]);
- swapBytes(p[1], p[2]);
-}
-
-inline void fixEndianness(uint8_t *p, integral_constant<size_t, 2>) {
- swapBytes(p[0], p[1]);
-}
-
-inline void fixEndianness(uint8_t *, integral_constant<size_t, 1>) {}
-
-template <typename T> inline void fixEndianness(T &value) {
- fixEndianness(reinterpret_cast<uint8_t *>(&value),
- integral_constant<size_t, sizeof(T)>());
-}
-#else
-template <typename T> inline void fixEndianness(T &) {}
-#endif
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp
deleted file mode 100644
index 15f43cd..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp
+++ /dev/null
@@ -1,18 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-inline void doubleToFloat(const uint8_t d[8], uint8_t f[4]) {
- f[0] = uint8_t((d[0] & 0xC0) | (d[0] << 3 & 0x3f) | (d[1] >> 5));
- f[1] = uint8_t((d[1] << 3) | (d[2] >> 5));
- f[2] = uint8_t((d[2] << 3) | (d[3] >> 5));
- f[3] = uint8_t((d[3] << 3) | (d[4] >> 5));
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Namespace.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Namespace.hpp
deleted file mode 100644
index 9dbee98..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Namespace.hpp
+++ /dev/null
@@ -1,43 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Configuration.hpp>
-#include <ArduinoJson/Polyfills/preprocessor.hpp>
-#include <ArduinoJson/version.hpp>
-
-#ifndef ARDUINOJSON_VERSION_NAMESPACE
-
-#define ARDUINOJSON_VERSION_NAMESPACE \
- ARDUINOJSON_CONCAT5(ARDUINOJSON_VERSION_MACRO, \
- ARDUINOJSON_BIN2ALPHA(ARDUINOJSON_ENABLE_PROGMEM, \
- ARDUINOJSON_USE_LONG_LONG, \
- ARDUINOJSON_USE_DOUBLE, 1), \
- ARDUINOJSON_BIN2ALPHA(ARDUINOJSON_ENABLE_NAN, \
- ARDUINOJSON_ENABLE_INFINITY, \
- ARDUINOJSON_ENABLE_COMMENTS, \
- ARDUINOJSON_DECODE_UNICODE), \
- ARDUINOJSON_SLOT_ID_SIZE, \
- ARDUINOJSON_STRING_LENGTH_SIZE)
-
-#endif
-
-#define ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE \
- namespace ArduinoJson { \
- inline namespace ARDUINOJSON_VERSION_NAMESPACE {
-
-#define ARDUINOJSON_END_PUBLIC_NAMESPACE \
- } \
- }
-
-#define ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE \
- namespace ArduinoJson { \
- inline namespace ARDUINOJSON_VERSION_NAMESPACE { \
- namespace detail {
-
-#define ARDUINOJSON_END_PRIVATE_NAMESPACE \
- } \
- } \
- }
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp
deleted file mode 100644
index e5cb51f..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp
+++ /dev/null
@@ -1,94 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Configuration.hpp>
-#include <ArduinoJson/Numbers/FloatTraits.hpp>
-#include <ArduinoJson/Numbers/JsonFloat.hpp>
-#include <ArduinoJson/Polyfills/math.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-struct FloatParts {
- uint32_t integral;
- uint32_t decimal;
- int16_t exponent;
- int8_t decimalPlaces;
-};
-
-template <typename TFloat> inline int16_t normalize(TFloat &value) {
- using traits = FloatTraits<TFloat>;
- int16_t powersOf10 = 0;
-
- int8_t index = sizeof(TFloat) == 8 ? 8 : 5;
- int bit = 1 << index;
-
- if (value >= ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD) {
- for (; index >= 0; index--) {
- if (value >= traits::positiveBinaryPowersOfTen()[index]) {
- value *= traits::negativeBinaryPowersOfTen()[index];
- powersOf10 = int16_t(powersOf10 + bit);
- }
- bit >>= 1;
- }
- }
-
- if (value > 0 && value <= ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD) {
- for (; index >= 0; index--) {
- if (value < traits::negativeBinaryPowersOfTen()[index] * 10) {
- value *= traits::positiveBinaryPowersOfTen()[index];
- powersOf10 = int16_t(powersOf10 - bit);
- }
- bit >>= 1;
- }
- }
-
- return powersOf10;
-}
-
-constexpr uint32_t pow10(int exponent) {
- return (exponent == 0) ? 1 : 10 * pow10(exponent - 1);
-}
-
-inline FloatParts decomposeFloat(JsonFloat value, int8_t decimalPlaces) {
- uint32_t maxDecimalPart = pow10(decimalPlaces);
-
- int16_t exponent = normalize(value);
-
- uint32_t integral = uint32_t(value);
- // reduce number of decimal places by the number of integral places
- for (uint32_t tmp = integral; tmp >= 10; tmp /= 10) {
- maxDecimalPart /= 10;
- decimalPlaces--;
- }
-
- JsonFloat remainder =
- (value - JsonFloat(integral)) * JsonFloat(maxDecimalPart);
-
- uint32_t decimal = uint32_t(remainder);
- remainder = remainder - JsonFloat(decimal);
-
- // rounding:
- // increment by 1 if remainder >= 0.5
- decimal += uint32_t(remainder * 2);
- if (decimal >= maxDecimalPart) {
- decimal = 0;
- integral++;
- if (exponent && integral >= 10) {
- exponent++;
- integral = 1;
- }
- }
-
- // remove trailing zeros
- while (decimal % 10 == 0 && decimalPlaces > 0) {
- decimal /= 10;
- decimalPlaces--;
- }
-
- return {integral, decimal, exponent, decimalPlaces};
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp
deleted file mode 100644
index 86c2fe3..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp
+++ /dev/null
@@ -1,197 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <stddef.h> // for size_t
-#include <stdint.h>
-
-#include <ArduinoJson/Configuration.hpp>
-#include <ArduinoJson/Polyfills/alias_cast.hpp>
-#include <ArduinoJson/Polyfills/math.hpp>
-#include <ArduinoJson/Polyfills/pgmspace_generic.hpp>
-#include <ArduinoJson/Polyfills/preprocessor.hpp>
-#include <ArduinoJson/Polyfills/type_traits.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename T, size_t = sizeof(T)> struct FloatTraits {};
-
-template <typename T> struct FloatTraits<T, 8 /*64bits*/> {
- using mantissa_type = uint64_t;
- static const short mantissa_bits = 52;
- static const mantissa_type mantissa_max =
- (mantissa_type(1) << mantissa_bits) - 1;
-
- using exponent_type = int16_t;
- static const exponent_type exponent_max = 308;
-
- static const size_t binaryPowersOfTen = 9;
-
- static pgm_ptr<T> positiveBinaryPowersOfTen() {
- ARDUINOJSON_DEFINE_PROGMEM_ARRAY( //
- uint64_t, factors,
- {
- 0x4024000000000000, // 1e1
- 0x4059000000000000, // 1e2
- 0x40C3880000000000, // 1e4
- 0x4197D78400000000, // 1e8
- 0x4341C37937E08000, // 1e16
- 0x4693B8B5B5056E17, // 1e32
- 0x4D384F03E93FF9F5, // 1e64
- 0x5A827748F9301D32, // 1e128
- 0x75154FDD7F73BF3C, // 1e256
- });
- return pgm_ptr<T>(reinterpret_cast<const T *>(factors));
- }
-
- static pgm_ptr<T> negativeBinaryPowersOfTen() {
- ARDUINOJSON_DEFINE_PROGMEM_ARRAY( //
- uint64_t, factors,
- {
- 0x3FB999999999999A, // 1e-1
- 0x3F847AE147AE147B, // 1e-2
- 0x3F1A36E2EB1C432D, // 1e-4
- 0x3E45798EE2308C3A, // 1e-8
- 0x3C9CD2B297D889BC, // 1e-16
- 0x3949F623D5A8A733, // 1e-32
- 0x32A50FFD44F4A73D, // 1e-64
- 0x255BBA08CF8C979D, // 1e-128
- 0x0AC8062864AC6F43 // 1e-256
- });
- return pgm_ptr<T>(reinterpret_cast<const T *>(factors));
- }
-
- static T nan() { return forge(0x7ff8000000000000); }
-
- static T inf() { return forge(0x7ff0000000000000); }
-
- static T highest() { return forge(0x7FEFFFFFFFFFFFFF); }
-
- template <typename TOut> // int64_t
- static T
- highest_for(enable_if_t<is_integral<TOut>::value &&
- is_signed<TOut>::value && sizeof(TOut) == 8,
- signed> * = 0) {
- return forge(0x43DFFFFFFFFFFFFF); // 9.2233720368547748e+18
- }
-
- template <typename TOut> // uint64_t
- static T
- highest_for(enable_if_t<is_integral<TOut>::value &&
- is_unsigned<TOut>::value && sizeof(TOut) == 8,
- unsigned> * = 0) {
- return forge(0x43EFFFFFFFFFFFFF); // 1.8446744073709549568e+19
- }
-
- static T lowest() { return forge(0xFFEFFFFFFFFFFFFF); }
-
- // constructs a double floating point values from its binary representation
- // we use this function to workaround platforms with single precision
- // literals (for example, when -fsingle-precision-constant is passed to GCC)
- static T forge(uint64_t bits) { return alias_cast<T>(bits); }
-};
-
-template <typename T> struct FloatTraits<T, 4 /*32bits*/> {
- using mantissa_type = uint32_t;
- static const short mantissa_bits = 23;
- static const mantissa_type mantissa_max =
- (mantissa_type(1) << mantissa_bits) - 1;
-
- using exponent_type = int8_t;
- static const exponent_type exponent_max = 38;
-
- static const size_t binaryPowersOfTen = 6;
-
- static pgm_ptr<T> positiveBinaryPowersOfTen() {
- ARDUINOJSON_DEFINE_PROGMEM_ARRAY(uint32_t, factors,
- {
- 0x41200000, // 1e1f
- 0x42c80000, // 1e2f
- 0x461c4000, // 1e4f
- 0x4cbebc20, // 1e8f
- 0x5a0e1bca, // 1e16f
- 0x749dc5ae // 1e32f
- });
- return pgm_ptr<T>(reinterpret_cast<const T *>(factors));
- }
-
- static pgm_ptr<T> negativeBinaryPowersOfTen() {
- ARDUINOJSON_DEFINE_PROGMEM_ARRAY(uint32_t, factors,
- {
- 0x3dcccccd, // 1e-1f
- 0x3c23d70a, // 1e-2f
- 0x38d1b717, // 1e-4f
- 0x322bcc77, // 1e-8f
- 0x24e69595, // 1e-16f
- 0x0a4fb11f // 1e-32f
- });
- return pgm_ptr<T>(reinterpret_cast<const T *>(factors));
- }
-
- static T forge(uint32_t bits) { return alias_cast<T>(bits); }
-
- static T nan() { return forge(0x7fc00000); }
-
- static T inf() { return forge(0x7f800000); }
-
- static T highest() { return forge(0x7f7fffff); }
-
- template <typename TOut> // int32_t
- static T
- highest_for(enable_if_t<is_integral<TOut>::value &&
- is_signed<TOut>::value && sizeof(TOut) == 4,
- signed> * = 0) {
- return forge(0x4EFFFFFF); // 2.14748352E9
- }
-
- template <typename TOut> // uint32_t
- static T
- highest_for(enable_if_t<is_integral<TOut>::value &&
- is_unsigned<TOut>::value && sizeof(TOut) == 4,
- unsigned> * = 0) {
- return forge(0x4F7FFFFF); // 4.29496704E9
- }
-
- template <typename TOut> // int64_t
- static T
- highest_for(enable_if_t<is_integral<TOut>::value &&
- is_signed<TOut>::value && sizeof(TOut) == 8,
- signed> * = 0) {
- return forge(0x5EFFFFFF); // 9.22337148709896192E18
- }
-
- template <typename TOut> // uint64_t
- static T
- highest_for(enable_if_t<is_integral<TOut>::value &&
- is_unsigned<TOut>::value && sizeof(TOut) == 8,
- unsigned> * = 0) {
- return forge(0x5F7FFFFF); // 1.844674297419792384E19
- }
-
- static T lowest() { return forge(0xFf7fffff); }
-};
-
-template <typename TFloat, typename TExponent>
-inline TFloat make_float(TFloat m, TExponent e) {
- using traits = FloatTraits<TFloat>;
-
- auto powersOfTen = e > 0 ? traits::positiveBinaryPowersOfTen()
- : traits::negativeBinaryPowersOfTen();
- auto count = traits::binaryPowersOfTen;
-
- if (e <= 0)
- e = TExponent(-e);
-
- for (uint8_t index = 0; e != 0; index++) {
- if (index >= count)
- return traits::nan();
- if (e & 1)
- m *= powersOfTen[index];
- e >>= 1;
- }
- return m;
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/JsonFloat.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/JsonFloat.hpp
deleted file mode 100644
index bca3c3a..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/JsonFloat.hpp
+++ /dev/null
@@ -1,18 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Configuration.hpp>
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-#if ARDUINOJSON_USE_DOUBLE
-using JsonFloat = double;
-#else
-using JsonFloat = float;
-#endif
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/JsonInteger.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/JsonInteger.hpp
deleted file mode 100644
index e9e3cdc..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/JsonInteger.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Configuration.hpp>
-#include <ArduinoJson/Namespace.hpp>
-
-#include <stdint.h> // int64_t
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-#if ARDUINOJSON_USE_LONG_LONG
-using JsonInteger = int64_t;
-using JsonUInt = uint64_t;
-#else
-using JsonInteger = long;
-using JsonUInt = unsigned long;
-#endif
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
-
-#define ARDUINOJSON_ASSERT_INTEGER_TYPE_IS_SUPPORTED(T) \
- static_assert(sizeof(T) <= sizeof(ArduinoJson::JsonInteger), \
- "To use 64-bit integers with ArduinoJson, you must set " \
- "ARDUINOJSON_USE_LONG_LONG to 1. See " \
- "https://arduinojson.org/v7/api/config/use_long_long/");
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp
deleted file mode 100644
index 75911a2..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp
+++ /dev/null
@@ -1,120 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Numbers/JsonInteger.hpp>
-#include <ArduinoJson/Polyfills/type_traits.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-enum CompareResult {
- COMPARE_RESULT_DIFFER = 0,
- COMPARE_RESULT_EQUAL = 1,
- COMPARE_RESULT_GREATER = 2,
- COMPARE_RESULT_LESS = 4,
-
- COMPARE_RESULT_GREATER_OR_EQUAL = 3,
- COMPARE_RESULT_LESS_OR_EQUAL = 5
-};
-
-template <typename T>
-CompareResult arithmeticCompare(const T &lhs, const T &rhs) {
- if (lhs < rhs)
- return COMPARE_RESULT_LESS;
- else if (lhs > rhs)
- return COMPARE_RESULT_GREATER;
- else
- return COMPARE_RESULT_EQUAL;
-}
-
-template <typename T1, typename T2>
-CompareResult arithmeticCompare(
- const T1 &lhs, const T2 &rhs,
- enable_if_t<is_integral<T1>::value && is_integral<T2>::value &&
- sizeof(T1) < sizeof(T2)> * = 0) {
- return arithmeticCompare<T2>(static_cast<T2>(lhs), rhs);
-}
-
-template <typename T1, typename T2>
-CompareResult arithmeticCompare(
- const T1 &lhs, const T2 &rhs,
- enable_if_t<is_integral<T1>::value && is_integral<T2>::value &&
- sizeof(T2) < sizeof(T1)> * = 0) {
- return arithmeticCompare<T1>(lhs, static_cast<T1>(rhs));
-}
-
-template <typename T1, typename T2>
-CompareResult arithmeticCompare(
- const T1 &lhs, const T2 &rhs,
- enable_if_t<is_integral<T1>::value && is_integral<T2>::value &&
- is_signed<T1>::value == is_signed<T2>::value &&
- sizeof(T2) == sizeof(T1)> * = 0) {
- return arithmeticCompare<T1>(lhs, static_cast<T1>(rhs));
-}
-
-template <typename T1, typename T2>
-CompareResult arithmeticCompare(
- const T1 &lhs, const T2 &rhs,
- enable_if_t<is_integral<T1>::value && is_integral<T2>::value &&
- is_unsigned<T1>::value && is_signed<T2>::value &&
- sizeof(T2) == sizeof(T1)> * = 0) {
- if (rhs < 0)
- return COMPARE_RESULT_GREATER;
- return arithmeticCompare<T1>(lhs, static_cast<T1>(rhs));
-}
-
-template <typename T1, typename T2>
-CompareResult arithmeticCompare(
- const T1 &lhs, const T2 &rhs,
- enable_if_t<is_integral<T1>::value && is_integral<T2>::value &&
- is_signed<T1>::value && is_unsigned<T2>::value &&
- sizeof(T2) == sizeof(T1)> * = 0) {
- if (lhs < 0)
- return COMPARE_RESULT_LESS;
- return arithmeticCompare<T2>(static_cast<T2>(lhs), rhs);
-}
-
-template <typename T1, typename T2>
-CompareResult
-arithmeticCompare(const T1 &lhs, const T2 &rhs,
- enable_if_t<is_floating_point<T1>::value ||
- is_floating_point<T2>::value> * = 0) {
- return arithmeticCompare<double>(static_cast<double>(lhs),
- static_cast<double>(rhs));
-}
-
-template <typename T2>
-CompareResult
-arithmeticCompareNegateLeft(JsonUInt, const T2 &,
- enable_if_t<is_unsigned<T2>::value> * = 0) {
- return COMPARE_RESULT_LESS;
-}
-
-template <typename T2>
-CompareResult
-arithmeticCompareNegateLeft(JsonUInt lhs, const T2 &rhs,
- enable_if_t<is_signed<T2>::value> * = 0) {
- if (rhs > 0)
- return COMPARE_RESULT_LESS;
- return arithmeticCompare(-rhs, static_cast<T2>(lhs));
-}
-
-template <typename T1>
-CompareResult
-arithmeticCompareNegateRight(const T1 &, JsonUInt,
- enable_if_t<is_unsigned<T1>::value> * = 0) {
- return COMPARE_RESULT_GREATER;
-}
-
-template <typename T1>
-CompareResult
-arithmeticCompareNegateRight(const T1 &lhs, JsonUInt rhs,
- enable_if_t<is_signed<T1>::value> * = 0) {
- if (lhs > 0)
- return COMPARE_RESULT_GREATER;
- return arithmeticCompare(static_cast<T1>(rhs), -lhs);
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp
deleted file mode 100644
index c210254..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp
+++ /dev/null
@@ -1,144 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#if defined(__clang__)
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wconversion"
-#elif defined(__GNUC__)
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wconversion"
-#endif
-
-#include <ArduinoJson/Numbers/FloatTraits.hpp>
-#include <ArduinoJson/Numbers/JsonFloat.hpp>
-#include <ArduinoJson/Polyfills/limits.hpp>
-#include <ArduinoJson/Polyfills/type_traits.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// uint32 -> int32
-// uint64 -> int32
-template <typename TOut, typename TIn>
-enable_if_t<is_integral<TIn>::value && is_unsigned<TIn>::value &&
- is_integral<TOut>::value && sizeof(TOut) <= sizeof(TIn),
- bool>
-canConvertNumber(TIn value) {
- return value <= TIn(numeric_limits<TOut>::highest());
-}
-
-// uint32 -> int64
-template <typename TOut, typename TIn>
-enable_if_t<is_integral<TIn>::value && is_unsigned<TIn>::value &&
- is_integral<TOut>::value && sizeof(TIn) < sizeof(TOut),
- bool>
-canConvertNumber(TIn) {
- return true;
-}
-
-// uint32 -> float
-// int32 -> float
-template <typename TOut, typename TIn>
-enable_if_t<is_integral<TIn>::value && is_floating_point<TOut>::value, bool>
-canConvertNumber(TIn) {
- return true;
-}
-
-// int64 -> int32
-template <typename TOut, typename TIn>
-enable_if_t<is_integral<TIn>::value && is_signed<TIn>::value &&
- is_integral<TOut>::value && is_signed<TOut>::value &&
- sizeof(TOut) < sizeof(TIn),
- bool>
-canConvertNumber(TIn value) {
- return value >= TIn(numeric_limits<TOut>::lowest()) &&
- value <= TIn(numeric_limits<TOut>::highest());
-}
-
-// int32 -> int32
-// int32 -> int64
-template <typename TOut, typename TIn>
-enable_if_t<is_integral<TIn>::value && is_signed<TIn>::value &&
- is_integral<TOut>::value && is_signed<TOut>::value &&
- sizeof(TIn) <= sizeof(TOut),
- bool>
-canConvertNumber(TIn) {
- return true;
-}
-
-// int32 -> uint32
-// int32 -> uint64
-template <typename TOut, typename TIn>
-enable_if_t<is_integral<TIn>::value && is_signed<TIn>::value &&
- is_integral<TOut>::value && is_unsigned<TOut>::value &&
- sizeof(TOut) >= sizeof(TIn),
- bool>
-canConvertNumber(TIn value) {
- if (value < 0)
- return false;
- return TOut(value) <= numeric_limits<TOut>::highest();
-}
-
-// int32 -> uint16
-template <typename TOut, typename TIn>
-enable_if_t<is_integral<TIn>::value && is_signed<TIn>::value &&
- is_integral<TOut>::value && is_unsigned<TOut>::value &&
- sizeof(TOut) < sizeof(TIn),
- bool>
-canConvertNumber(TIn value) {
- if (value < 0)
- return false;
- return value <= TIn(numeric_limits<TOut>::highest());
-}
-
-// float32 -> int16
-// float64 -> int32
-template <typename TOut, typename TIn>
-enable_if_t<is_floating_point<TIn>::value && is_integral<TOut>::value &&
- sizeof(TOut) < sizeof(TIn),
- bool>
-canConvertNumber(TIn value) {
- return value >= numeric_limits<TOut>::lowest() &&
- value <= numeric_limits<TOut>::highest();
-}
-
-// float32 -> int32
-// float32 -> uint32
-// float32 -> int64
-// float32 -> uint64
-// float64 -> int64
-// float64 -> uint64
-template <typename TOut, typename TIn>
-enable_if_t<is_floating_point<TIn>::value && is_integral<TOut>::value &&
- sizeof(TOut) >= sizeof(TIn),
- bool>
-canConvertNumber(TIn value) {
- // Avoid error "9.22337e+18 is outside the range of representable values of
- // type 'long'"
- return value >= numeric_limits<TOut>::lowest() &&
- value <= FloatTraits<TIn>::template highest_for<TOut>();
-}
-
-// float32 -> float32
-// float64 -> float64
-// float64 -> float32
-template <typename TOut, typename TIn>
-enable_if_t<is_floating_point<TIn>::value && is_floating_point<TOut>::value,
- bool>
-canConvertNumber(TIn) {
- return true;
-}
-
-template <typename TOut, typename TIn> TOut convertNumber(TIn value) {
- return canConvertNumber<TOut>(value) ? TOut(value) : 0;
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
-
-#if defined(__clang__)
-#pragma clang diagnostic pop
-#elif defined(__GNUC__)
-#pragma GCC diagnostic pop
-#endif
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp
deleted file mode 100644
index 0cd5d34..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp
+++ /dev/null
@@ -1,236 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Numbers/FloatTraits.hpp>
-#include <ArduinoJson/Numbers/JsonFloat.hpp>
-#include <ArduinoJson/Numbers/convertNumber.hpp>
-#include <ArduinoJson/Polyfills/assert.hpp>
-#include <ArduinoJson/Polyfills/ctype.hpp>
-#include <ArduinoJson/Polyfills/math.hpp>
-#include <ArduinoJson/Polyfills/type_traits.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename A, typename B>
-using largest_type = conditional_t<(sizeof(A) > sizeof(B)), A, B>;
-
-enum class NumberType : uint8_t {
- Invalid,
- Float,
- SignedInteger,
- UnsignedInteger,
-#if ARDUINOJSON_USE_DOUBLE
- Double,
-#endif
-};
-
-union NumberValue {
- NumberValue() {}
- NumberValue(float x) : asFloat(x) {}
- NumberValue(JsonInteger x) : asSignedInteger(x) {}
- NumberValue(JsonUInt x) : asUnsignedInteger(x) {}
-#if ARDUINOJSON_USE_DOUBLE
- NumberValue(double x) : asDouble(x) {}
-#endif
-
- JsonInteger asSignedInteger;
- JsonUInt asUnsignedInteger;
- float asFloat;
-#if ARDUINOJSON_USE_DOUBLE
- double asDouble;
-#endif
-};
-
-class Number {
- NumberType type_;
- NumberValue value_;
-
- public:
- Number() : type_(NumberType::Invalid) {}
- Number(float value) : type_(NumberType::Float), value_(value) {}
- Number(JsonInteger value)
- : type_(NumberType::SignedInteger), value_(value) {}
- Number(JsonUInt value)
- : type_(NumberType::UnsignedInteger), value_(value) {}
-#if ARDUINOJSON_USE_DOUBLE
- Number(double value) : type_(NumberType::Double), value_(value) {}
-#endif
-
- template <typename T> T convertTo() const {
- switch (type_) {
- case NumberType::Float:
- return convertNumber<T>(value_.asFloat);
- case NumberType::SignedInteger:
- return convertNumber<T>(value_.asSignedInteger);
- case NumberType::UnsignedInteger:
- return convertNumber<T>(value_.asUnsignedInteger);
-#if ARDUINOJSON_USE_DOUBLE
- case NumberType::Double:
- return convertNumber<T>(value_.asDouble);
-#endif
- default:
- return T();
- }
- }
-
- NumberType type() const { return type_; }
-
- JsonInteger asSignedInteger() const {
- ARDUINOJSON_ASSERT(type_ == NumberType::SignedInteger);
- return value_.asSignedInteger;
- }
-
- JsonUInt asUnsignedInteger() const {
- ARDUINOJSON_ASSERT(type_ == NumberType::UnsignedInteger);
- return value_.asUnsignedInteger;
- }
-
- float asFloat() const {
- ARDUINOJSON_ASSERT(type_ == NumberType::Float);
- return value_.asFloat;
- }
-
-#if ARDUINOJSON_USE_DOUBLE
- double asDouble() const {
- ARDUINOJSON_ASSERT(type_ == NumberType::Double);
- return value_.asDouble;
- }
-#endif
-};
-
-inline Number parseNumber(const char *s) {
- using traits = FloatTraits<JsonFloat>;
- using mantissa_t = largest_type<traits::mantissa_type, JsonUInt>;
- using exponent_t = traits::exponent_type;
-
- ARDUINOJSON_ASSERT(s != 0);
-
- bool is_negative = false;
- switch (*s) {
- case '-':
- is_negative = true;
- s++;
- break;
- case '+':
- s++;
- break;
- }
-
-#if ARDUINOJSON_ENABLE_NAN
- if (*s == 'n' || *s == 'N') {
- return Number(traits::nan());
- }
-#endif
-
-#if ARDUINOJSON_ENABLE_INFINITY
- if (*s == 'i' || *s == 'I') {
- return Number(is_negative ? -traits::inf() : traits::inf());
- }
-#endif
-
- if (!isdigit(*s) && *s != '.')
- return Number();
-
- mantissa_t mantissa = 0;
- exponent_t exponent_offset = 0;
- const mantissa_t maxUint = JsonUInt(-1);
-
- while (isdigit(*s)) {
- uint8_t digit = uint8_t(*s - '0');
- if (mantissa > maxUint / 10)
- break;
- mantissa *= 10;
- if (mantissa > maxUint - digit)
- break;
- mantissa += digit;
- s++;
- }
-
- if (*s == '\0') {
- if (is_negative) {
- const mantissa_t sintMantissaMax = mantissa_t(1)
- << (sizeof(JsonInteger) * 8 - 1);
- if (mantissa <= sintMantissaMax) {
- return Number(JsonInteger(~mantissa + 1));
- }
- } else {
- return Number(JsonUInt(mantissa));
- }
- }
-
- // avoid mantissa overflow
- while (mantissa > traits::mantissa_max) {
- mantissa /= 10;
- exponent_offset++;
- }
-
- // remaing digits can't fit in the mantissa
- while (isdigit(*s)) {
- exponent_offset++;
- s++;
- }
-
- if (*s == '.') {
- s++;
- while (isdigit(*s)) {
- if (mantissa < traits::mantissa_max / 10) {
- mantissa = mantissa * 10 + uint8_t(*s - '0');
- exponent_offset--;
- }
- s++;
- }
- }
-
- int exponent = 0;
- if (*s == 'e' || *s == 'E') {
- s++;
- bool negative_exponent = false;
- if (*s == '-') {
- negative_exponent = true;
- s++;
- } else if (*s == '+') {
- s++;
- }
-
- while (isdigit(*s)) {
- exponent = exponent * 10 + (*s - '0');
- if (exponent + exponent_offset > traits::exponent_max) {
- if (negative_exponent)
- return Number(is_negative ? -0.0f : 0.0f);
- else
- return Number(is_negative ? -traits::inf() : traits::inf());
- }
- s++;
- }
- if (negative_exponent)
- exponent = -exponent;
- }
- exponent += exponent_offset;
-
- // we should be at the end of the string, otherwise it's an error
- if (*s != '\0')
- return Number();
-
-#if ARDUINOJSON_USE_DOUBLE
- bool isDouble = exponent < -FloatTraits<float>::exponent_max ||
- exponent > FloatTraits<float>::exponent_max ||
- mantissa > FloatTraits<float>::mantissa_max;
- if (isDouble) {
- auto final_result = make_float(double(mantissa), exponent);
- return Number(is_negative ? -final_result : final_result);
- } else
-#endif
- {
- auto final_result = make_float(float(mantissa), exponent);
- return Number(is_negative ? -final_result : final_result);
- }
-}
-
-template <typename T> inline T parseNumber(const char *s) {
- return parseNumber(s).convertTo<T>();
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/JsonObject.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/JsonObject.hpp
deleted file mode 100644
index d88e2df..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/JsonObject.hpp
+++ /dev/null
@@ -1,231 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Object/JsonObjectConst.hpp>
-#include <ArduinoJson/Object/MemberProxy.hpp>
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-class JsonArray;
-
-// A reference to an object in a JsonDocument.
-// https://arduinojson.org/v7/api/jsonobject/
-class JsonObject : public detail::VariantOperators<JsonObject> {
- friend class detail::VariantAttorney;
-
- public:
- using iterator = JsonObjectIterator;
-
- // Creates an unbound reference.
- JsonObject() : data_(0), resources_(0) {}
-
- // INTERNAL USE ONLY
- JsonObject(detail::ObjectData *data, detail::ResourceManager *resource)
- : data_(data), resources_(resource) {}
-
- operator JsonVariant() const {
- void *data = data_; // prevent warning cast-align
- return JsonVariant(reinterpret_cast<detail::VariantData *>(data),
- resources_);
- }
-
- operator JsonObjectConst() const {
- return JsonObjectConst(data_, resources_);
- }
-
- operator JsonVariantConst() const {
- return JsonVariantConst(collectionToVariant(data_), resources_);
- }
-
- // Returns true if the reference is unbound.
- // https://arduinojson.org/v7/api/jsonobject/isnull/
- bool isNull() const { return data_ == 0; }
-
- // Returns true if the reference is bound.
- // https://arduinojson.org/v7/api/jsonobject/isnull/
- operator bool() const { return data_ != 0; }
-
- // Returns the depth (nesting level) of the object.
- // https://arduinojson.org/v7/api/jsonobject/nesting/
- size_t nesting() const {
- return detail::VariantData::nesting(collectionToVariant(data_),
- resources_);
- }
-
- // Returns the number of members in the object.
- // https://arduinojson.org/v7/api/jsonobject/size/
- size_t size() const { return data_ ? data_->size(resources_) : 0; }
-
- // Returns an iterator to the first key-value pair of the object.
- // https://arduinojson.org/v7/api/jsonobject/begin/
- iterator begin() const {
- if (!data_)
- return iterator();
- return iterator(data_->createIterator(resources_), resources_);
- }
-
- // Returns an iterator following the last key-value pair of the object.
- // https://arduinojson.org/v7/api/jsonobject/end/
- iterator end() const { return iterator(); }
-
- // Removes all the members of the object.
- // https://arduinojson.org/v7/api/jsonobject/clear/
- void clear() const { detail::ObjectData::clear(data_, resources_); }
-
- // Copies an object.
- // https://arduinojson.org/v7/api/jsonobject/set/
- bool set(JsonObjectConst src) {
- if (!data_ || !src.data_)
- return false;
-
- clear();
- for (auto kvp : src) {
- if (!operator[](kvp.key()).set(kvp.value()))
- return false;
- }
-
- return true;
- }
-
- // Gets or sets the member with specified key.
- // https://arduinojson.org/v7/api/jsonobject/subscript/
- template <typename TString,
- detail::enable_if_t<detail::IsString<TString>::value, int> = 0>
- detail::MemberProxy<JsonObject, detail::AdaptedString<TString>>
- operator[](const TString &key) const {
- return {*this, detail::adaptString(key)};
- }
-
- // Gets or sets the member with specified key.
- // https://arduinojson.org/v7/api/jsonobject/subscript/
- template <typename TChar,
- detail::enable_if_t<detail::IsString<TChar *>::value &&
- !detail::is_const<TChar>::value,
- int> = 0>
- detail::MemberProxy<JsonObject, detail::AdaptedString<TChar *>>
- operator[](TChar *key) const {
- return {*this, detail::adaptString(key)};
- }
-
- // Gets or sets the member with specified key.
- // https://arduinojson.org/v7/api/jsonobject/subscript/
- template <typename TVariant,
- detail::enable_if_t<detail::IsVariant<TVariant>::value, int> = 0>
- detail::MemberProxy<JsonObject, detail::AdaptedString<JsonString>>
- operator[](const TVariant &key) const {
- return {*this, detail::adaptString(key.template as<JsonString>())};
- }
-
- // Removes the member at the specified iterator.
- // https://arduinojson.org/v7/api/jsonobject/remove/
- FORCE_INLINE void remove(iterator it) const {
- detail::ObjectData::remove(data_, it.iterator_, resources_);
- }
-
- // Removes the member with the specified key.
- // https://arduinojson.org/v7/api/jsonobject/remove/
- template <typename TString,
- detail::enable_if_t<detail::IsString<TString>::value, int> = 0>
- void remove(const TString &key) const {
- detail::ObjectData::removeMember(data_, detail::adaptString(key),
- resources_);
- }
-
- // Removes the member with the specified key.
- // https://arduinojson.org/v7/api/jsonobject/remove/
- template <typename TVariant,
- detail::enable_if_t<detail::IsVariant<TVariant>::value, int> = 0>
- void remove(const TVariant &key) const {
- if (key.template is<const char *>())
- remove(key.template as<const char *>());
- }
-
- // Removes the member with the specified key.
- // https://arduinojson.org/v7/api/jsonobject/remove/
- template <typename TChar> FORCE_INLINE void remove(TChar *key) const {
- detail::ObjectData::removeMember(data_, detail::adaptString(key),
- resources_);
- }
-
- // DEPRECATED: use obj[key].is<T>() instead
- // https://arduinojson.org/v7/api/jsonobject/containskey/
- template <typename TString,
- detail::enable_if_t<detail::IsString<TString>::value, int> = 0>
- ARDUINOJSON_DEPRECATED("use obj[key].is<T>() instead")
- bool containsKey(const TString &key) const {
- return detail::ObjectData::getMember(data_, detail::adaptString(key),
- resources_) != 0;
- }
-
- // DEPRECATED: use obj["key"].is<T>() instead
- // https://arduinojson.org/v7/api/jsonobject/containskey/
- template <typename TChar,
- detail::enable_if_t<detail::IsString<TChar *>::value &&
- !detail::is_const<TChar>::value,
- int> = 0>
- ARDUINOJSON_DEPRECATED("use obj[\"key\"].is<T>() instead")
- bool containsKey(TChar *key) const {
- return detail::ObjectData::getMember(data_, detail::adaptString(key),
- resources_) != 0;
- }
-
- // DEPRECATED: use obj[key].is<T>() instead
- // https://arduinojson.org/v7/api/jsonobject/containskey/
- template <typename TVariant,
- detail::enable_if_t<detail::IsVariant<TVariant>::value, int> = 0>
- ARDUINOJSON_DEPRECATED("use obj[key].is<T>() instead")
- bool containsKey(const TVariant &key) const {
- return containsKey(key.template as<const char *>());
- }
-
- // DEPRECATED: use obj[key].to<JsonArray>() instead
- template <typename TChar>
- ARDUINOJSON_DEPRECATED("use obj[key].to<JsonArray>() instead")
- JsonArray createNestedArray(TChar *key) const {
- return operator[](key).template to<JsonArray>();
- }
-
- // DEPRECATED: use obj[key].to<JsonArray>() instead
- template <typename TString>
- ARDUINOJSON_DEPRECATED("use obj[key].to<JsonArray>() instead")
- JsonArray createNestedArray(const TString &key) const {
- return operator[](key).template to<JsonArray>();
- }
-
- // DEPRECATED: use obj[key].to<JsonObject>() instead
- template <typename TChar>
- ARDUINOJSON_DEPRECATED("use obj[key].to<JsonObject>() instead")
- JsonObject createNestedObject(TChar *key) {
- return operator[](key).template to<JsonObject>();
- }
-
- // DEPRECATED: use obj[key].to<JsonObject>() instead
- template <typename TString>
- ARDUINOJSON_DEPRECATED("use obj[key].to<JsonObject>() instead")
- JsonObject createNestedObject(const TString &key) {
- return operator[](key).template to<JsonObject>();
- }
-
- // DEPRECATED: always returns zero
- ARDUINOJSON_DEPRECATED("always returns zero")
- size_t memoryUsage() const { return 0; }
-
- private:
- detail::ResourceManager *getResourceManager() const { return resources_; }
-
- detail::VariantData *getData() const {
- return detail::collectionToVariant(data_);
- }
-
- detail::VariantData *getOrCreateData() const {
- return detail::collectionToVariant(data_);
- }
-
- detail::ObjectData *data_;
- detail::ResourceManager *resources_;
-};
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/JsonObjectConst.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/JsonObjectConst.hpp
deleted file mode 100644
index a8776dc..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/JsonObjectConst.hpp
+++ /dev/null
@@ -1,158 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Object/JsonObjectIterator.hpp>
-#include <ArduinoJson/Variant/VariantOperators.hpp>
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-// A read-only reference to an object in a JsonDocument.
-// https://arduinojson.org/v7/api/jsonobjectconst/
-class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
- friend class JsonObject;
- friend class detail::VariantAttorney;
-
- public:
- using iterator = JsonObjectConstIterator;
-
- // Creates an unbound reference.
- JsonObjectConst() : data_(0), resources_(0) {}
-
- // INTERNAL USE ONLY
- JsonObjectConst(const detail::ObjectData *data,
- const detail::ResourceManager *resources)
- : data_(data), resources_(resources) {}
-
- operator JsonVariantConst() const {
- return JsonVariantConst(getData(), resources_);
- }
-
- // Returns true if the reference is unbound.
- // https://arduinojson.org/v7/api/jsonobjectconst/isnull/
- bool isNull() const { return data_ == 0; }
-
- // Returns true if the reference is bound.
- // https://arduinojson.org/v7/api/jsonobjectconst/isnull/
- operator bool() const { return data_ != 0; }
-
- // Returns the depth (nesting level) of the object.
- // https://arduinojson.org/v7/api/jsonobjectconst/nesting/
- size_t nesting() const {
- return detail::VariantData::nesting(getData(), resources_);
- }
-
- // Returns the number of members in the object.
- // https://arduinojson.org/v7/api/jsonobjectconst/size/
- size_t size() const { return data_ ? data_->size(resources_) : 0; }
-
- // Returns an iterator to the first key-value pair of the object.
- // https://arduinojson.org/v7/api/jsonobjectconst/begin/
- iterator begin() const {
- if (!data_)
- return iterator();
- return iterator(data_->createIterator(resources_), resources_);
- }
-
- // Returns an iterator following the last key-value pair of the object.
- // https://arduinojson.org/v7/api/jsonobjectconst/end/
- iterator end() const { return iterator(); }
-
- // DEPRECATED: use obj[key].is<T>() instead
- // https://arduinojson.org/v7/api/jsonobjectconst/containskey/
- template <typename TString,
- detail::enable_if_t<detail::IsString<TString>::value, int> = 0>
- ARDUINOJSON_DEPRECATED("use obj[key].is<T>() instead")
- bool containsKey(const TString &key) const {
- return detail::ObjectData::getMember(data_, detail::adaptString(key),
- resources_) != 0;
- }
-
- // DEPRECATED: use obj["key"].is<T>() instead
- // https://arduinojson.org/v7/api/jsonobjectconst/containskey/
- template <typename TChar>
- ARDUINOJSON_DEPRECATED("use obj[\"key\"].is<T>() instead")
- bool containsKey(TChar *key) const {
- return detail::ObjectData::getMember(data_, detail::adaptString(key),
- resources_) != 0;
- }
-
- // DEPRECATED: use obj[key].is<T>() instead
- // https://arduinojson.org/v7/api/jsonobjectconst/containskey/
- template <typename TVariant,
- detail::enable_if_t<detail::IsVariant<TVariant>::value, int> = 0>
- ARDUINOJSON_DEPRECATED("use obj[key].is<T>() instead")
- bool containsKey(const TVariant &key) const {
- return containsKey(key.template as<const char *>());
- }
-
- // Gets the member with specified key.
- // https://arduinojson.org/v7/api/jsonobjectconst/subscript/
- template <typename TString,
- detail::enable_if_t<detail::IsString<TString>::value, int> = 0>
- JsonVariantConst operator[](const TString &key) const {
- return JsonVariantConst(
- detail::ObjectData::getMember(data_, detail::adaptString(key),
- resources_),
- resources_);
- }
-
- // Gets the member with specified key.
- // https://arduinojson.org/v7/api/jsonobjectconst/subscript/
- template <typename TChar,
- detail::enable_if_t<detail::IsString<TChar *>::value &&
- !detail::is_const<TChar>::value,
- int> = 0>
- JsonVariantConst operator[](TChar *key) const {
- return JsonVariantConst(
- detail::ObjectData::getMember(data_, detail::adaptString(key),
- resources_),
- resources_);
- }
-
- // Gets the member with specified key.
- // https://arduinojson.org/v7/api/jsonobjectconst/subscript/
- template <typename TVariant,
- detail::enable_if_t<detail::IsVariant<TVariant>::value, int> = 0>
- JsonVariantConst operator[](const TVariant &key) const {
- if (key.template is<JsonString>())
- return operator[](key.template as<JsonString>());
- else
- return JsonVariantConst();
- }
-
- // DEPRECATED: always returns zero
- ARDUINOJSON_DEPRECATED("always returns zero")
- size_t memoryUsage() const { return 0; }
-
- private:
- const detail::VariantData *getData() const {
- return collectionToVariant(data_);
- }
-
- const detail::ObjectData *data_;
- const detail::ResourceManager *resources_;
-};
-
-inline bool operator==(JsonObjectConst lhs, JsonObjectConst rhs) {
- if (!lhs && !rhs) // both are null
- return true;
-
- if (!lhs || !rhs) // only one is null
- return false;
-
- size_t count = 0;
- for (auto kvp : lhs) {
- auto rhsValue = rhs[kvp.key()];
- if (rhsValue.isUnbound())
- return false;
- if (kvp.value() != rhsValue)
- return false;
- count++;
- }
- return count == rhs.size();
-}
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/JsonObjectIterator.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/JsonObjectIterator.hpp
deleted file mode 100644
index e536b1f..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/JsonObjectIterator.hpp
+++ /dev/null
@@ -1,77 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Object/JsonPair.hpp>
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-class JsonObjectIterator {
- friend class JsonObject;
-
- public:
- JsonObjectIterator() {}
-
- explicit JsonObjectIterator(detail::ObjectData::iterator iterator,
- detail::ResourceManager *resources)
- : iterator_(iterator), resources_(resources) {}
-
- JsonPair operator*() const { return JsonPair(iterator_, resources_); }
- Ptr<JsonPair> operator->() { return operator*(); }
-
- bool operator==(const JsonObjectIterator &other) const {
- return iterator_ == other.iterator_;
- }
-
- bool operator!=(const JsonObjectIterator &other) const {
- return iterator_ != other.iterator_;
- }
-
- JsonObjectIterator &operator++() {
- iterator_.next(resources_); // key
- iterator_.next(resources_); // value
- return *this;
- }
-
- private:
- detail::ObjectData::iterator iterator_;
- detail::ResourceManager *resources_;
-};
-
-class JsonObjectConstIterator {
- friend class JsonObject;
-
- public:
- JsonObjectConstIterator() {}
-
- explicit JsonObjectConstIterator(detail::ObjectData::iterator iterator,
- const detail::ResourceManager *resources)
- : iterator_(iterator), resources_(resources) {}
-
- JsonPairConst operator*() const {
- return JsonPairConst(iterator_, resources_);
- }
- Ptr<JsonPairConst> operator->() { return operator*(); }
-
- bool operator==(const JsonObjectConstIterator &other) const {
- return iterator_ == other.iterator_;
- }
-
- bool operator!=(const JsonObjectConstIterator &other) const {
- return iterator_ != other.iterator_;
- }
-
- JsonObjectConstIterator &operator++() {
- iterator_.next(resources_); // key
- iterator_.next(resources_); // value
- return *this;
- }
-
- private:
- detail::ObjectData::iterator iterator_;
- const detail::ResourceManager *resources_;
-};
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/JsonPair.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/JsonPair.hpp
deleted file mode 100644
index 76f5d58..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/JsonPair.hpp
+++ /dev/null
@@ -1,62 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Strings/JsonString.hpp>
-#include <ArduinoJson/Variant/JsonVariant.hpp>
-#include <ArduinoJson/Variant/JsonVariantConst.hpp>
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-// A key-value pair.
-// https://arduinojson.org/v7/api/jsonobject/begin_end/
-class JsonPair {
- public:
- // INTERNAL USE ONLY
- JsonPair(detail::ObjectData::iterator iterator,
- detail::ResourceManager *resources) {
- if (!iterator.done()) {
- key_ = iterator->asString();
- iterator.next(resources);
- value_ = JsonVariant(iterator.data(), resources);
- }
- }
-
- // Returns the key.
- JsonString key() const { return key_; }
-
- // Returns the value.
- JsonVariant value() { return value_; }
-
- private:
- JsonString key_;
- JsonVariant value_;
-};
-
-// A read-only key-value pair.
-// https://arduinojson.org/v7/api/jsonobjectconst/begin_end/
-class JsonPairConst {
- public:
- JsonPairConst(detail::ObjectData::iterator iterator,
- const detail::ResourceManager *resources) {
- if (!iterator.done()) {
- key_ = iterator->asString();
- iterator.next(resources);
- value_ = JsonVariantConst(iterator.data(), resources);
- }
- }
-
- // Returns the key.
- JsonString key() const { return key_; }
-
- // Returns the value.
- JsonVariantConst value() const { return value_; }
-
- private:
- JsonString key_;
- JsonVariantConst value_;
-};
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp
deleted file mode 100644
index 2804940..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp
+++ /dev/null
@@ -1,74 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Variant/VariantRefBase.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// A proxy class to get or set a member of an object.
-// https://arduinojson.org/v7/api/jsonobject/subscript/
-template <typename TUpstream, typename AdaptedString>
-class MemberProxy
- : public VariantRefBase<MemberProxy<TUpstream, AdaptedString>>,
- public VariantOperators<MemberProxy<TUpstream, AdaptedString>> {
- friend class VariantAttorney;
-
- friend class VariantRefBase<MemberProxy<TUpstream, AdaptedString>>;
-
- template <typename, typename> friend class MemberProxy;
-
- template <typename> friend class ElementProxy;
-
- public:
- MemberProxy(TUpstream upstream, AdaptedString key)
- : upstream_(upstream), key_(key) {}
-
- MemberProxy &operator=(const MemberProxy &src) {
- this->set(src);
- return *this;
- }
-
- template <typename T> MemberProxy &operator=(const T &src) {
- this->set(src);
- return *this;
- }
-
- template <typename T, enable_if_t<!is_const<T>::value, int> = 0>
- MemberProxy &operator=(T *src) {
- this->set(src);
- return *this;
- }
-
- private:
- // clang-format off
- MemberProxy(const MemberProxy& src) // Error here? See https://arduinojson.org/v7/proxy-non-copyable/
- : upstream_(src.upstream_), key_(src.key_) {}
- // clang-format on
-
- ResourceManager *getResourceManager() const {
- return VariantAttorney::getResourceManager(upstream_);
- }
-
- VariantData *getData() const {
- return VariantData::getMember(
- VariantAttorney::getData(upstream_), key_,
- VariantAttorney::getResourceManager(upstream_));
- }
-
- VariantData *getOrCreateData() const {
- auto data = VariantAttorney::getOrCreateData(upstream_);
- if (!data)
- return nullptr;
- return data->getOrAddMember(
- key_, VariantAttorney::getResourceManager(upstream_));
- }
-
- private:
- TUpstream upstream_;
- AdaptedString key_;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/ObjectData.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/ObjectData.hpp
deleted file mode 100644
index ed3df5e..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/ObjectData.hpp
+++ /dev/null
@@ -1,72 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Collection/CollectionData.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-class ObjectData : public CollectionData {
- public:
- template <typename TAdaptedString>
- VariantData *addMember(TAdaptedString key, ResourceManager *resources);
-
- VariantData *addPair(VariantData **value, ResourceManager *resources);
-
- template <typename TAdaptedString>
- VariantData *getOrAddMember(TAdaptedString key, ResourceManager *resources);
-
- template <typename TAdaptedString>
- VariantData *getMember(TAdaptedString key,
- const ResourceManager *resources) const;
-
- template <typename TAdaptedString>
- static VariantData *getMember(const ObjectData *object, TAdaptedString key,
- const ResourceManager *resources) {
- if (!object)
- return nullptr;
- return object->getMember(key, resources);
- }
-
- template <typename TAdaptedString>
- void removeMember(TAdaptedString key, ResourceManager *resources);
-
- template <typename TAdaptedString>
- static void removeMember(ObjectData *obj, TAdaptedString key,
- ResourceManager *resources) {
- if (!obj)
- return;
- obj->removeMember(key, resources);
- }
-
- void remove(iterator it, ResourceManager *resources) {
- CollectionData::removePair(it, resources);
- }
-
- static void remove(ObjectData *obj, ObjectData::iterator it,
- ResourceManager *resources) {
- if (!obj)
- return;
- obj->remove(it, resources);
- }
-
- size_t size(const ResourceManager *resources) const {
- return CollectionData::size(resources) / 2;
- }
-
- static size_t size(const ObjectData *obj,
- const ResourceManager *resources) {
- if (!obj)
- return 0;
- return obj->size(resources);
- }
-
- private:
- template <typename TAdaptedString>
- iterator findKey(TAdaptedString key,
- const ResourceManager *resources) const;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp
deleted file mode 100644
index 7b9cb8d..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp
+++ /dev/null
@@ -1,94 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Object/ObjectData.hpp>
-#include <ArduinoJson/Variant/VariantCompare.hpp>
-#include <ArduinoJson/Variant/VariantData.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename TAdaptedString>
-inline VariantData *
-ObjectData::getMember(TAdaptedString key,
- const ResourceManager *resources) const {
- auto it = findKey(key, resources);
- if (it.done())
- return nullptr;
- it.next(resources);
- return it.data();
-}
-
-template <typename TAdaptedString>
-VariantData *ObjectData::getOrAddMember(TAdaptedString key,
- ResourceManager *resources) {
- auto data = getMember(key, resources);
- if (data)
- return data;
- return addMember(key, resources);
-}
-
-template <typename TAdaptedString>
-inline ObjectData::iterator
-ObjectData::findKey(TAdaptedString key,
- const ResourceManager *resources) const {
- if (key.isNull())
- return iterator();
- bool isKey = true;
- for (auto it = createIterator(resources); !it.done(); it.next(resources)) {
- if (isKey && stringEquals(key, adaptString(it->asString())))
- return it;
- isKey = !isKey;
- }
- return iterator();
-}
-
-template <typename TAdaptedString>
-inline void ObjectData::removeMember(TAdaptedString key,
- ResourceManager *resources) {
- remove(findKey(key, resources), resources);
-}
-
-template <typename TAdaptedString>
-inline VariantData *ObjectData::addMember(TAdaptedString key,
- ResourceManager *resources) {
- auto keySlot = resources->allocVariant();
- if (!keySlot)
- return nullptr;
-
- auto valueSlot = resources->allocVariant();
- if (!valueSlot)
- return nullptr;
-
- if (!keySlot->setString(key, resources))
- return nullptr;
-
- CollectionData::appendPair(keySlot, valueSlot, resources);
-
- return valueSlot.ptr();
-}
-
-inline VariantData *ObjectData::addPair(VariantData **value,
- ResourceManager *resources) {
- auto keySlot = resources->allocVariant();
- if (!keySlot)
- return nullptr;
-
- auto valueSlot = resources->allocVariant();
- if (!valueSlot)
- return nullptr;
- *value = valueSlot.ptr();
-
- CollectionData::appendPair(keySlot, valueSlot, resources);
-
- return keySlot.ptr();
-}
-
-// Returns the size (in bytes) of an object with n members.
-constexpr size_t sizeofObject(size_t n) {
- return 2 * n * ResourceManager::slotSize;
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp
deleted file mode 100644
index 2660ead..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <stdint.h>
-#include <stdlib.h> // for size_t
-
-#include "math.hpp"
-#include <ArduinoJson/Configuration.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename T, typename F> struct alias_cast_t {
- union {
- F raw;
- T data;
- };
-};
-
-template <typename T, typename F> T alias_cast(F raw_data) {
- alias_cast_t<T, F> ac;
- ac.raw = raw_data;
- return ac.data;
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp
deleted file mode 100644
index be323c7..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp
+++ /dev/null
@@ -1,14 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Configuration.hpp>
-
-#if ARDUINOJSON_DEBUG
-#include <assert.h>
-#define ARDUINOJSON_ASSERT(X) assert(X)
-#else
-#define ARDUINOJSON_ASSERT(X) ((void)0)
-#endif
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp
deleted file mode 100644
index d89f369..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#ifdef _MSC_VER // Visual Studio
-
-#define FORCE_INLINE // __forceinline causes C4714 when returning std::string
-
-#ifndef ARDUINOJSON_DEPRECATED
-#define ARDUINOJSON_DEPRECATED(msg) __declspec(deprecated(msg))
-#endif
-
-#elif defined(__GNUC__) // GCC or Clang
-
-#define FORCE_INLINE __attribute__((always_inline))
-
-#ifndef ARDUINOJSON_DEPRECATED
-#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
-#define ARDUINOJSON_DEPRECATED(msg) __attribute__((deprecated(msg)))
-#else
-#define ARDUINOJSON_DEPRECATED(msg) __attribute__((deprecated))
-#endif
-#endif
-
-#else // Other compilers
-
-#define FORCE_INLINE
-
-#ifndef ARDUINOJSON_DEPRECATED
-#define ARDUINOJSON_DEPRECATED(msg)
-#endif
-
-#endif
-
-#if defined(__has_attribute)
-#if __has_attribute(no_sanitize)
-#define ARDUINOJSON_NO_SANITIZE(check) __attribute__((no_sanitize(check)))
-#else
-#define ARDUINOJSON_NO_SANITIZE(check)
-#endif
-#else
-#define ARDUINOJSON_NO_SANITIZE(check)
-#endif
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp
deleted file mode 100644
index a5fb0f8..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp
+++ /dev/null
@@ -1,17 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-#ifndef isdigit
-inline bool isdigit(char c) { return '0' <= c && c <= '9'; }
-#endif
-
-inline bool issign(char c) { return '-' == c || c == '+'; }
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp
deleted file mode 100644
index 1ecc38b..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <stdint.h> // int8_t, int16_t
-
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <int Bits> struct uint_;
-
-template <> struct uint_<8> {
- using type = uint8_t;
-};
-
-template <> struct uint_<16> {
- using type = uint16_t;
-};
-
-template <> struct uint_<32> {
- using type = uint32_t;
-};
-
-template <int Bits> using uint_t = typename uint_<Bits>::type;
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp
deleted file mode 100644
index 16cd47b..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include "type_traits.hpp"
-
-#ifdef _MSC_VER
-#pragma warning(push)
-#pragma warning(disable : 4310)
-#endif
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// Differs from standard because we can't use the symbols "min" and "max"
-template <typename T, typename Enable = void> struct numeric_limits;
-
-template <typename T>
-struct numeric_limits<T, enable_if_t<is_unsigned<T>::value>> {
- static constexpr T lowest() { return 0; }
- static constexpr T highest() { return T(-1); }
-};
-
-template <typename T>
-struct numeric_limits<
- T, enable_if_t<is_integral<T>::value && is_signed<T>::value>> {
- static constexpr T lowest() { return T(T(1) << (sizeof(T) * 8 - 1)); }
- static constexpr T highest() { return T(~lowest()); }
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
-
-#ifdef _MSC_VER
-#pragma warning(pop)
-#endif
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp
deleted file mode 100644
index 753b8b3..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// Some libraries #define isnan() and isinf() so we need to check before
-// using this name
-
-#ifndef isnan
-template <typename T> bool isnan(T x) { return x != x; }
-#endif
-
-#ifndef isinf
-template <typename T> bool isinf(T x) { return x != 0.0 && x * 2 == x; }
-#endif
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp
deleted file mode 100644
index 13dfa30..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp
+++ /dev/null
@@ -1,24 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-#include <stddef.h> // for size_t
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// A meta-function that returns the highest value
-template <size_t X, size_t Y, bool MaxIsX = (X > Y)> struct Max {};
-
-template <size_t X, size_t Y> struct Max<X, Y, true> {
- static const size_t value = X;
-};
-
-template <size_t X, size_t Y> struct Max<X, Y, false> {
- static const size_t value = Y;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp
deleted file mode 100644
index 2ed5512..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp
+++ /dev/null
@@ -1,144 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#ifdef ARDUINO
-#include <Arduino.h>
-#else
-// Allow using PROGMEM outside of Arduino (issue #1903)
-class __FlashStringHelper;
-#include <avr/pgmspace.h>
-#endif
-
-#include <ArduinoJson/Configuration.hpp>
-#include <ArduinoJson/Namespace.hpp>
-#include <ArduinoJson/Polyfills/assert.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-// Wraps a const char* so that the our functions are picked only if the
-// originals are missing
-struct pgm_p {
- pgm_p(const void *p) : address(reinterpret_cast<const char *>(p)) {}
- const char *address;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
-
-#ifndef strlen_P
-inline size_t strlen_P(ArduinoJson::detail::pgm_p s) {
- const char *p = s.address;
- ARDUINOJSON_ASSERT(p != NULL);
- while (pgm_read_byte(p))
- p++;
- return size_t(p - s.address);
-}
-#endif
-
-#ifndef strncmp_P
-inline int strncmp_P(const char *a, ArduinoJson::detail::pgm_p b, size_t n) {
- const char *s1 = a;
- const char *s2 = b.address;
- ARDUINOJSON_ASSERT(s1 != NULL);
- ARDUINOJSON_ASSERT(s2 != NULL);
- while (n-- > 0) {
- char c1 = *s1++;
- char c2 = static_cast<char>(pgm_read_byte(s2++));
- if (c1 < c2)
- return -1;
- if (c1 > c2)
- return 1;
- if (c1 == 0 /* and c2 as well */)
- return 0;
- }
- return 0;
-}
-#endif
-
-#ifndef strcmp_P
-inline int strcmp_P(const char *a, ArduinoJson::detail::pgm_p b) {
- const char *s1 = a;
- const char *s2 = b.address;
- ARDUINOJSON_ASSERT(s1 != NULL);
- ARDUINOJSON_ASSERT(s2 != NULL);
- for (;;) {
- char c1 = *s1++;
- char c2 = static_cast<char>(pgm_read_byte(s2++));
- if (c1 < c2)
- return -1;
- if (c1 > c2)
- return 1;
- if (c1 == 0 /* and c2 as well */)
- return 0;
- }
-}
-#endif
-
-#ifndef memcmp_P
-inline int memcmp_P(const void *a, ArduinoJson::detail::pgm_p b, size_t n) {
- const uint8_t *p1 = reinterpret_cast<const uint8_t *>(a);
- const char *p2 = b.address;
- ARDUINOJSON_ASSERT(p1 != NULL);
- ARDUINOJSON_ASSERT(p2 != NULL);
- while (n-- > 0) {
- uint8_t v1 = *p1++;
- uint8_t v2 = pgm_read_byte(p2++);
- if (v1 != v2)
- return v1 - v2;
- }
- return 0;
-}
-#endif
-
-#ifndef memcpy_P
-inline void *memcpy_P(void *dst, ArduinoJson::detail::pgm_p src, size_t n) {
- uint8_t *d = reinterpret_cast<uint8_t *>(dst);
- const char *s = src.address;
- ARDUINOJSON_ASSERT(d != NULL);
- ARDUINOJSON_ASSERT(s != NULL);
- while (n-- > 0) {
- *d++ = pgm_read_byte(s++);
- }
- return dst;
-}
-#endif
-
-#ifndef pgm_read_dword
-inline uint32_t pgm_read_dword(ArduinoJson::detail::pgm_p p) {
- uint32_t result;
- memcpy_P(&result, p.address, 4);
- return result;
-}
-#endif
-
-#ifndef pgm_read_float
-inline float pgm_read_float(ArduinoJson::detail::pgm_p p) {
- float result;
- memcpy_P(&result, p.address, sizeof(float));
- return result;
-}
-#endif
-
-#ifndef pgm_read_double
-#if defined(__SIZEOF_DOUBLE__) && defined(__SIZEOF_FLOAT__) && \
- __SIZEOF_DOUBLE__ == __SIZEOF_FLOAT__
-inline double pgm_read_double(ArduinoJson::detail::pgm_p p) {
- return pgm_read_float(p.address);
-}
-#else
-inline double pgm_read_double(ArduinoJson::detail::pgm_p p) {
- double result;
- memcpy_P(&result, p.address, sizeof(double));
- return result;
-}
-#endif
-#endif
-
-#ifndef pgm_read_ptr
-inline void *pgm_read_ptr(ArduinoJson::detail::pgm_p p) {
- void *result;
- memcpy_P(&result, p.address, sizeof(result));
- return result;
-}
-#endif
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp
deleted file mode 100644
index 2f6db49..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp
+++ /dev/null
@@ -1,54 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-#if ARDUINOJSON_ENABLE_PROGMEM
-#include <ArduinoJson/Polyfills/pgmspace.hpp>
-#include <ArduinoJson/Polyfills/type_traits.hpp>
-#endif
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-#if ARDUINOJSON_ENABLE_PROGMEM
-
-#ifndef ARDUINOJSON_DEFINE_PROGMEM_ARRAY
-#define ARDUINOJSON_DEFINE_PROGMEM_ARRAY(type, name, ...) \
- static type const name[] PROGMEM = __VA_ARGS__;
-#endif
-
-template <typename T> inline const T *pgm_read(const T *const *p) {
- return reinterpret_cast<const T *>(pgm_read_ptr(p));
-}
-
-inline uint32_t pgm_read(const uint32_t *p) { return pgm_read_dword(p); }
-
-inline double pgm_read(const double *p) { return pgm_read_double(p); }
-
-inline float pgm_read(const float *p) { return pgm_read_float(p); }
-
-#else
-
-#ifndef ARDUINOJSON_DEFINE_PROGMEM_ARRAY
-#define ARDUINOJSON_DEFINE_PROGMEM_ARRAY(type, name, ...) \
- static type const name[] = __VA_ARGS__;
-#endif
-
-template <typename T> inline T pgm_read(const T *p) { return *p; }
-
-#endif
-
-template <typename T> class pgm_ptr {
- public:
- explicit pgm_ptr(const T *ptr) : ptr_(ptr) {}
-
- T operator[](intptr_t index) const { return pgm_read(ptr_ + index); }
-
- private:
- const T *ptr_;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp
deleted file mode 100644
index 76da8bd..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#define ARDUINOJSON_CONCAT_(A, B) A##B
-#define ARDUINOJSON_CONCAT2(A, B) ARDUINOJSON_CONCAT_(A, B)
-#define ARDUINOJSON_CONCAT3(A, B, C) \
- ARDUINOJSON_CONCAT2(ARDUINOJSON_CONCAT2(A, B), C)
-#define ARDUINOJSON_CONCAT4(A, B, C, D) \
- ARDUINOJSON_CONCAT2(ARDUINOJSON_CONCAT3(A, B, C), D)
-#define ARDUINOJSON_CONCAT5(A, B, C, D, E) \
- ARDUINOJSON_CONCAT2(ARDUINOJSON_CONCAT4(A, B, C, D), E)
-
-#define ARDUINOJSON_BIN2ALPHA_0000() A
-#define ARDUINOJSON_BIN2ALPHA_0001() B
-#define ARDUINOJSON_BIN2ALPHA_0010() C
-#define ARDUINOJSON_BIN2ALPHA_0011() D
-#define ARDUINOJSON_BIN2ALPHA_0100() E
-#define ARDUINOJSON_BIN2ALPHA_0101() F
-#define ARDUINOJSON_BIN2ALPHA_0110() G
-#define ARDUINOJSON_BIN2ALPHA_0111() H
-#define ARDUINOJSON_BIN2ALPHA_1000() I
-#define ARDUINOJSON_BIN2ALPHA_1001() J
-#define ARDUINOJSON_BIN2ALPHA_1010() K
-#define ARDUINOJSON_BIN2ALPHA_1011() L
-#define ARDUINOJSON_BIN2ALPHA_1100() M
-#define ARDUINOJSON_BIN2ALPHA_1101() N
-#define ARDUINOJSON_BIN2ALPHA_1110() O
-#define ARDUINOJSON_BIN2ALPHA_1111() P
-#define ARDUINOJSON_BIN2ALPHA_(A, B, C, D) ARDUINOJSON_BIN2ALPHA_##A##B##C##D()
-#define ARDUINOJSON_BIN2ALPHA(A, B, C, D) ARDUINOJSON_BIN2ALPHA_(A, B, C, D)
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp
deleted file mode 100644
index 7ed45bc..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include "type_traits/conditional.hpp"
-#include "type_traits/decay.hpp"
-#include "type_traits/enable_if.hpp"
-#include "type_traits/function_traits.hpp"
-#include "type_traits/integral_constant.hpp"
-#include "type_traits/is_array.hpp"
-#include "type_traits/is_base_of.hpp"
-#include "type_traits/is_class.hpp"
-#include "type_traits/is_const.hpp"
-#include "type_traits/is_convertible.hpp"
-#include "type_traits/is_enum.hpp"
-#include "type_traits/is_floating_point.hpp"
-#include "type_traits/is_integral.hpp"
-#include "type_traits/is_pointer.hpp"
-#include "type_traits/is_same.hpp"
-#include "type_traits/is_signed.hpp"
-#include "type_traits/is_unsigned.hpp"
-#include "type_traits/make_unsigned.hpp"
-#include "type_traits/remove_const.hpp"
-#include "type_traits/remove_reference.hpp"
-#include "type_traits/void_t.hpp"
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp
deleted file mode 100644
index d2a9dcf..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp
+++ /dev/null
@@ -1,24 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <bool Condition, class TrueType, class FalseType> struct conditional {
- using type = TrueType;
-};
-
-template <class TrueType, class FalseType>
-struct conditional<false, TrueType, FalseType> {
- using type = FalseType;
-};
-
-template <bool Condition, class TrueType, class FalseType>
-using conditional_t =
- typename conditional<Condition, TrueType, FalseType>::type;
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/decay.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/decay.hpp
deleted file mode 100644
index fd7f0aa..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/decay.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <stddef.h> // size_t
-
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename T> struct decay {
- using type = T;
-};
-
-template <typename T> struct decay<T &> : decay<T> {};
-
-template <typename T> struct decay<T &&> : decay<T> {};
-
-template <typename T> struct decay<T[]> : decay<T *> {};
-
-template <typename T, size_t N> struct decay<T[N]> : decay<T *> {};
-
-template <typename T> using decay_t = typename decay<T>::type;
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp
deleted file mode 100644
index 620955c..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp
+++ /dev/null
@@ -1,13 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename T> T &&declval();
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp
deleted file mode 100644
index fe66465..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// A meta-function that return the type T if Condition is true.
-template <bool Condition, typename T = void> struct enable_if {};
-
-template <typename T> struct enable_if<true, T> {
- using type = T;
-};
-
-template <bool Condition, typename T = void>
-using enable_if_t = typename enable_if<Condition, T>::type;
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/function_traits.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/function_traits.hpp
deleted file mode 100644
index 794042d..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/function_traits.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename Sig> struct function_traits;
-
-template <typename ReturnType, typename Arg1>
-struct function_traits<ReturnType (*)(Arg1)> {
- using return_type = ReturnType;
- using arg1_type = Arg1;
-};
-
-template <typename ReturnType, typename Arg1, typename Arg2>
-struct function_traits<ReturnType (*)(Arg1, Arg2)> {
- using return_type = ReturnType;
- using arg1_type = Arg1;
- using arg2_type = Arg2;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp
deleted file mode 100644
index 3d8b192..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp
+++ /dev/null
@@ -1,20 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename T, T v> struct integral_constant {
- static const T value = v;
-};
-
-template <bool B> using bool_constant = integral_constant<bool, B>;
-
-using true_type = bool_constant<true>;
-using false_type = bool_constant<false>;
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp
deleted file mode 100644
index 8072a93..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-#include <stddef.h> // size_t
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename T> struct is_array : false_type {};
-
-template <typename T> struct is_array<T[]> : true_type {};
-
-template <typename T, size_t N> struct is_array<T[N]> : true_type {};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp
deleted file mode 100644
index 9678d67..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-#include "remove_reference.hpp"
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// A meta-function that returns true if Derived inherits from TBase is an
-// integral type.
-template <typename TBase, typename TDerived> class is_base_of {
- protected: // <- to avoid GCC's "all member functions in class are private"
- static int probe(const TBase *);
- static char probe(...);
-
- public:
- static const bool value =
- sizeof(probe(reinterpret_cast<remove_reference_t<TDerived> *>(0))) ==
- sizeof(int);
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp
deleted file mode 100644
index ac7355d..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp
+++ /dev/null
@@ -1,20 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include "declval.hpp"
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename T> struct is_class {
- protected: // <- to avoid GCC's "all member functions in class are private"
- template <typename U> static int probe(void (U::*)(void));
- template <typename> static char probe(...);
-
- public:
- static const bool value = sizeof(probe<T>(0)) == sizeof(int);
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp
deleted file mode 100644
index ee57ba5..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include "integral_constant.hpp"
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// A meta-function that return the type T without the const modifier
-template <typename T> struct is_const : false_type {};
-
-template <typename T> struct is_const<const T> : true_type {};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp
deleted file mode 100644
index 3eb7007..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include "declval.hpp"
-
-#ifdef _MSC_VER
-#pragma warning(push)
-// conversion from 'T' to 'To', possible loss of data
-#pragma warning(disable : 4244)
-#endif
-
-// clang-format off
-#ifdef __ICCARM__
-// Suppress IAR Compiler Warning[Pa093]: implicit conversion from floating point to integer
-#pragma diag_suppress=Pa093
-#endif
-// clang-format on
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename From, typename To> struct is_convertible {
- protected: // <- to avoid GCC's "all member functions in class are private"
- static int probe(To);
- static char probe(...);
-
- static const From &from_;
-
- public:
- static const bool value = sizeof(probe(from_)) == sizeof(int);
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
-
-#ifdef _MSC_VER
-#pragma warning(pop)
-#endif
-
-// clang-format off
-#ifdef __ICCARM__
-#pragma diag_default=Pa093
-#endif
-// clang-format on
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp
deleted file mode 100644
index 2704430..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include "is_class.hpp"
-#include "is_convertible.hpp"
-#include "is_floating_point.hpp"
-#include "is_integral.hpp"
-#include "is_same.hpp"
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename T> struct is_enum {
- static const bool value = is_convertible<T, long long>::value &&
- !is_class<T>::value && !is_integral<T>::value &&
- !is_floating_point<T>::value;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp
deleted file mode 100644
index 7e5a826..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include "integral_constant.hpp"
-#include "is_same.hpp"
-#include "remove_cv.hpp"
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <class T>
-struct is_floating_point
- : integral_constant<bool, //
- is_same<float, remove_cv_t<T>>::value ||
- is_same<double, remove_cv_t<T>>::value> {};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp
deleted file mode 100644
index 80faf4d..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Configuration.hpp>
-
-#include "integral_constant.hpp"
-#include "is_same.hpp"
-#include "remove_cv.hpp"
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// clang-format off
-template <typename T>
-struct is_integral : integral_constant<bool,
- is_same<remove_cv_t<T>, signed char>::value ||
- is_same<remove_cv_t<T>, unsigned char>::value ||
- is_same<remove_cv_t<T>, signed short>::value ||
- is_same<remove_cv_t<T>, unsigned short>::value ||
- is_same<remove_cv_t<T>, signed int>::value ||
- is_same<remove_cv_t<T>, unsigned int>::value ||
- is_same<remove_cv_t<T>, signed long>::value ||
- is_same<remove_cv_t<T>, unsigned long>::value ||
- is_same<remove_cv_t<T>, signed long long>::value ||
- is_same<remove_cv_t<T>, unsigned long long>::value ||
- is_same<remove_cv_t<T>, char>::value ||
- is_same<remove_cv_t<T>, bool>::value> {};
-// clang-format on
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp
deleted file mode 100644
index 289854e..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp
+++ /dev/null
@@ -1,15 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include "integral_constant.hpp"
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename T> struct is_pointer : false_type {};
-
-template <typename T> struct is_pointer<T *> : true_type {};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp
deleted file mode 100644
index 2589ab6..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include "integral_constant.hpp"
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// A meta-function that returns true if types T and U are the same.
-template <typename T, typename U> struct is_same : false_type {};
-
-template <typename T> struct is_same<T, T> : true_type {};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp
deleted file mode 100644
index 48bc6e4..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include "integral_constant.hpp"
-#include "is_same.hpp"
-#include "remove_cv.hpp"
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// clang-format off
-template <typename T>
-struct is_signed : integral_constant<bool,
- is_same<remove_cv_t<T>, char>::value ||
- is_same<remove_cv_t<T>, signed char>::value ||
- is_same<remove_cv_t<T>, signed short>::value ||
- is_same<remove_cv_t<T>, signed int>::value ||
- is_same<remove_cv_t<T>, signed long>::value ||
- is_same<remove_cv_t<T>, signed long long>::value ||
- is_same<remove_cv_t<T>, float>::value ||
- is_same<remove_cv_t<T>, double>::value> {};
-// clang-format on
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp
deleted file mode 100644
index 0c60108..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp
+++ /dev/null
@@ -1,24 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include "integral_constant.hpp"
-#include "is_same.hpp"
-#include "remove_cv.hpp"
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// clang-format off
-template <typename T>
-struct is_unsigned : integral_constant<bool,
- is_same<remove_cv_t<T>, unsigned char>::value ||
- is_same<remove_cv_t<T>, unsigned short>::value ||
- is_same<remove_cv_t<T>, unsigned int>::value ||
- is_same<remove_cv_t<T>, unsigned long>::value ||
- is_same<remove_cv_t<T>, unsigned long long>::value ||
- is_same<remove_cv_t<T>, bool>::value> {};
-// clang-format on
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp
deleted file mode 100644
index e4d0ec0..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include "type_identity.hpp"
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename T> struct make_unsigned;
-
-template <> struct make_unsigned<char> : type_identity<unsigned char> {};
-
-template <> struct make_unsigned<signed char> : type_identity<unsigned char> {};
-template <>
-struct make_unsigned<unsigned char> : type_identity<unsigned char> {};
-
-template <>
-struct make_unsigned<signed short> : type_identity<unsigned short> {};
-template <>
-struct make_unsigned<unsigned short> : type_identity<unsigned short> {};
-
-template <> struct make_unsigned<signed int> : type_identity<unsigned int> {};
-template <> struct make_unsigned<unsigned int> : type_identity<unsigned int> {};
-
-template <> struct make_unsigned<signed long> : type_identity<unsigned long> {};
-template <>
-struct make_unsigned<unsigned long> : type_identity<unsigned long> {};
-
-template <>
-struct make_unsigned<signed long long> : type_identity<unsigned long long> {};
-template <>
-struct make_unsigned<unsigned long long> : type_identity<unsigned long long> {};
-
-template <typename T> using make_unsigned_t = typename make_unsigned<T>::type;
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp
deleted file mode 100644
index 9a66561..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// A meta-function that return the type T without the const modifier
-template <typename T> struct remove_const {
- using type = T;
-};
-template <typename T> struct remove_const<const T> {
- using type = T;
-};
-
-template <typename T> using remove_const_t = typename remove_const<T>::type;
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_cv.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_cv.hpp
deleted file mode 100644
index 9d84bdf..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_cv.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename T> struct remove_cv {
- using type = T;
-};
-template <typename T> struct remove_cv<const T> {
- using type = T;
-};
-template <typename T> struct remove_cv<volatile T> {
- using type = T;
-};
-template <typename T> struct remove_cv<const volatile T> {
- using type = T;
-};
-
-template <typename T> using remove_cv_t = typename remove_cv<T>::type;
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp
deleted file mode 100644
index a7a2a36..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp
+++ /dev/null
@@ -1,22 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// A meta-function that return the type T without the reference modifier.
-template <typename T> struct remove_reference {
- using type = T;
-};
-template <typename T> struct remove_reference<T &> {
- using type = T;
-};
-
-template <typename T>
-using remove_reference_t = typename remove_reference<T>::type;
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp
deleted file mode 100644
index 69bcabd..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp
+++ /dev/null
@@ -1,15 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include "integral_constant.hpp"
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename T> struct type_identity {
- using type = T;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/void_t.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/void_t.hpp
deleted file mode 100644
index 175eb41..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/void_t.hpp
+++ /dev/null
@@ -1,18 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename...> struct make_void {
- using type = void;
-};
-
-template <typename... Args> using void_t = typename make_void<Args...>::type;
-// NOTE: using void_t = void; doesn't work on GCC 4.8
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp
deleted file mode 100644
index 8b60f81..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include "type_traits.hpp"
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-using nullptr_t = decltype(nullptr);
-
-template <class T> T &&forward(remove_reference_t<T> &t) noexcept {
- return static_cast<T &&>(t);
-}
-
-template <class T> remove_reference_t<T> &&move(T &&t) {
- return static_cast<remove_reference_t<T> &&>(t);
-}
-
-// Polyfull for std::swap
-// Don't use the name "swap" because it makes calls ambiguous for types in the
-// detail namespace
-template <class T> void swap_(T &a, T &b) {
- T tmp = move(a);
- a = move(b);
- b = move(tmp);
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp
deleted file mode 100644
index de11b30..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename TWriter> class CountingDecorator {
- public:
- explicit CountingDecorator(TWriter &writer) : writer_(writer), count_(0) {}
-
- void write(uint8_t c) { count_ += writer_.write(c); }
-
- void write(const uint8_t *s, size_t n) { count_ += writer_.write(s, n); }
-
- size_t count() const { return count_; }
-
- private:
- TWriter writer_;
- size_t count_;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp
deleted file mode 100644
index df62511..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// The default writer is a simple wrapper for Writers that are not copyable
-template <typename TDestination, typename Enable = void> class Writer {
- public:
- explicit Writer(TDestination &dest) : dest_(&dest) {}
-
- size_t write(uint8_t c) { return dest_->write(c); }
-
- size_t write(const uint8_t *s, size_t n) { return dest_->write(s, n); }
-
- private:
- TDestination *dest_;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
-
-#include <ArduinoJson/Serialization/Writers/StaticStringWriter.hpp>
-
-#if ARDUINOJSON_ENABLE_STD_STRING
-#include <ArduinoJson/Serialization/Writers/StdStringWriter.hpp>
-#endif
-
-#if ARDUINOJSON_ENABLE_ARDUINO_STRING
-#include <ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp>
-#endif
-
-#if ARDUINOJSON_ENABLE_STD_STREAM
-#include <ArduinoJson/Serialization/Writers/StdStreamWriter.hpp>
-#endif
-
-#if ARDUINOJSON_ENABLE_ARDUINO_PRINT
-#include <ArduinoJson/Serialization/Writers/PrintWriter.hpp>
-#endif
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp
deleted file mode 100644
index 63186b9..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp
+++ /dev/null
@@ -1,52 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <Arduino.h>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <> class Writer<::String, void> {
- static const size_t bufferCapacity = ARDUINOJSON_STRING_BUFFER_SIZE;
-
- public:
- explicit Writer(::String &str) : destination_(&str), size_(0) {
- // clear the string but don't use "" to avoid useless allocation
- // https://cpp4arduino.com/2018/11/21/eight-tips-to-use-the-string-class-efficiently.html
- str = static_cast<const char *>(0);
- }
-
- ~Writer() { flush(); }
-
- size_t write(uint8_t c) {
- if (size_ + 1 >= bufferCapacity)
- if (flush() != 0)
- return 0;
- buffer_[size_++] = static_cast<char>(c);
- return 1;
- }
-
- size_t write(const uint8_t *s, size_t n) {
- for (size_t i = 0; i < n; i++) {
- write(s[i]);
- }
- return n;
- }
-
- size_t flush() {
- ARDUINOJSON_ASSERT(size_ < bufferCapacity);
- buffer_[size_] = 0;
- if (destination_->concat(buffer_))
- size_ = 0;
- return size_;
- }
-
- private:
- ::String *destination_;
- char buffer_[bufferCapacity];
- size_t size_;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp
deleted file mode 100644
index 074d245..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp
+++ /dev/null
@@ -1,18 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-class DummyWriter {
- public:
- size_t write(uint8_t) { return 1; }
-
- size_t write(const uint8_t *, size_t n) { return n; }
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp
deleted file mode 100644
index 68eb3e4..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <Arduino.h>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename TDestination>
-class Writer<TDestination,
- enable_if_t<is_base_of<::Print, TDestination>::value>> {
- public:
- explicit Writer(::Print &print) : print_(&print) {}
-
- size_t write(uint8_t c) { return print_->write(c); }
-
- size_t write(const uint8_t *s, size_t n) { return print_->write(s, n); }
-
- private:
- ::Print *print_;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp
deleted file mode 100644
index ad4b043..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-class StaticStringWriter {
- public:
- StaticStringWriter(char *buf, size_t size) : end(buf + size), p(buf) {}
-
- size_t write(uint8_t c) {
- if (p >= end)
- return 0;
- *p++ = static_cast<char>(c);
- return 1;
- }
-
- size_t write(const uint8_t *s, size_t n) {
- char *begin = p;
- while (p < end && n > 0) {
- *p++ = static_cast<char>(*s++);
- n--;
- }
- return size_t(p - begin);
- }
-
- private:
- char *end;
- char *p;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp
deleted file mode 100644
index ff94278..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ostream>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename TDestination>
-class Writer<TDestination,
- enable_if_t<is_base_of<std::ostream, TDestination>::value>> {
- public:
- explicit Writer(std::ostream &os) : os_(&os) {}
-
- size_t write(uint8_t c) {
- os_->put(static_cast<char>(c));
- return 1;
- }
-
- size_t write(const uint8_t *s, size_t n) {
- os_->write(reinterpret_cast<const char *>(s),
- static_cast<std::streamsize>(n));
- return n;
- }
-
- private:
- std::ostream *os_;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp
deleted file mode 100644
index e64eeef..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-#include <ArduinoJson/Polyfills/type_traits.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <class T, typename = void> struct is_std_string : false_type {};
-
-template <class T>
-struct is_std_string<
- T, enable_if_t<is_same<void, decltype(T().push_back('a'))>::value &&
- is_same<T &, decltype(T().append(""))>::value>> : true_type {
-};
-
-template <typename TDestination>
-class Writer<TDestination, enable_if_t<is_std_string<TDestination>::value>> {
- public:
- Writer(TDestination &str) : str_(&str) { str.clear(); }
-
- size_t write(uint8_t c) {
- str_->push_back(static_cast<char>(c));
- return 1;
- }
-
- size_t write(const uint8_t *s, size_t n) {
- str_->append(reinterpret_cast<const char *>(s), n);
- return n;
- }
-
- private:
- TDestination *str_;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp
deleted file mode 100644
index c621d5a..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp
+++ /dev/null
@@ -1,20 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Serialization/Writers/DummyWriter.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <template <typename> class TSerializer>
-size_t measure(ArduinoJson::JsonVariantConst source) {
- DummyWriter dp;
- auto data = VariantAttorney::getData(source);
- auto resources = VariantAttorney::getResourceManager(source);
- TSerializer<DummyWriter> serializer(dp, resources);
- return VariantData::accept(data, resources, serializer);
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp
deleted file mode 100644
index 6715e89..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp
+++ /dev/null
@@ -1,52 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Serialization/Writer.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <template <typename> class TSerializer, typename TWriter>
-size_t doSerialize(ArduinoJson::JsonVariantConst source, TWriter writer) {
- auto data = VariantAttorney::getData(source);
- auto resources = VariantAttorney::getResourceManager(source);
- TSerializer<TWriter> serializer(writer, resources);
- return VariantData::accept(data, resources, serializer);
-}
-
-template <template <typename> class TSerializer, typename TDestination>
-size_t serialize(ArduinoJson::JsonVariantConst source,
- TDestination &destination) {
- Writer<TDestination> writer(destination);
- return doSerialize<TSerializer>(source, writer);
-}
-
-template <template <typename> class TSerializer>
-enable_if_t<!TSerializer<StaticStringWriter>::producesText, size_t>
-serialize(ArduinoJson::JsonVariantConst source, void *buffer,
- size_t bufferSize) {
- StaticStringWriter writer(reinterpret_cast<char *>(buffer), bufferSize);
- return doSerialize<TSerializer>(source, writer);
-}
-
-template <template <typename> class TSerializer>
-enable_if_t<TSerializer<StaticStringWriter>::producesText, size_t>
-serialize(ArduinoJson::JsonVariantConst source, void *buffer,
- size_t bufferSize) {
- StaticStringWriter writer(reinterpret_cast<char *>(buffer), bufferSize);
- size_t n = doSerialize<TSerializer>(source, writer);
- // add null-terminator for text output (not counted in the size)
- if (n < bufferSize)
- reinterpret_cast<char *>(buffer)[n] = 0;
- return n;
-}
-
-template <template <typename> class TSerializer, typename TChar, size_t N>
-enable_if_t<IsChar<TChar>::value, size_t>
-serialize(ArduinoJson::JsonVariantConst source, TChar (&buffer)[N]) {
- return serialize<TSerializer>(source, buffer, N);
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/Adapters/FlashString.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/Adapters/FlashString.hpp
deleted file mode 100644
index 731c3b3..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/Adapters/FlashString.hpp
+++ /dev/null
@@ -1,84 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Polyfills/pgmspace.hpp>
-#include <ArduinoJson/Strings/StringAdapter.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-class FlashString {
- public:
- static const size_t typeSortKey = 1;
-
- FlashString(const __FlashStringHelper *str, size_t sz)
- : str_(reinterpret_cast<const char *>(str)), size_(sz) {}
-
- bool isNull() const { return !str_; }
-
- char operator[](size_t i) const {
- ARDUINOJSON_ASSERT(str_ != 0);
- ARDUINOJSON_ASSERT(i <= size_);
- return static_cast<char>(pgm_read_byte(str_ + i));
- }
-
- const char *data() const { return nullptr; }
-
- size_t size() const { return size_; }
-
- friend bool stringEquals(FlashString a, RamString b) {
- ARDUINOJSON_ASSERT(a.typeSortKey < b.typeSortKey);
- ARDUINOJSON_ASSERT(!a.isNull());
- ARDUINOJSON_ASSERT(!b.isNull());
- if (a.size() != b.size())
- return false;
- return ::memcmp_P(b.data(), a.str_, a.size_) == 0;
- }
-
- friend int stringCompare(FlashString a, RamString b) {
- ARDUINOJSON_ASSERT(a.typeSortKey < b.typeSortKey);
- ARDUINOJSON_ASSERT(!a.isNull());
- ARDUINOJSON_ASSERT(!b.isNull());
- size_t minsize = a.size() < b.size() ? a.size() : b.size();
- int res = ::memcmp_P(b.data(), a.str_, minsize);
- if (res)
- return -res;
- if (a.size() < b.size())
- return -1;
- if (a.size() > b.size())
- return 1;
- return 0;
- }
-
- friend void stringGetChars(FlashString s, char *p, size_t n) {
- ARDUINOJSON_ASSERT(s.size() <= n);
- ::memcpy_P(p, s.str_, n);
- }
-
- bool isStatic() const { return false; }
-
- private:
- const char *str_;
- size_t size_;
-};
-
-template <> struct StringAdapter<const __FlashStringHelper *, void> {
- using AdaptedString = FlashString;
-
- static AdaptedString adapt(const __FlashStringHelper *s) {
- return AdaptedString(s, s ? strlen_P(reinterpret_cast<const char *>(s))
- : 0);
- }
-};
-
-template <> struct SizedStringAdapter<const __FlashStringHelper *, void> {
- using AdaptedString = FlashString;
-
- static AdaptedString adapt(const __FlashStringHelper *s, size_t n) {
- return AdaptedString(s, n);
- }
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/Adapters/RamString.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/Adapters/RamString.hpp
deleted file mode 100644
index 3be3d42..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/Adapters/RamString.hpp
+++ /dev/null
@@ -1,109 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <stddef.h> // size_t
-#include <string.h> // strcmp
-
-#include <ArduinoJson/Polyfills/assert.hpp>
-#include <ArduinoJson/Polyfills/attributes.hpp>
-#include <ArduinoJson/Strings/StringAdapter.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename T>
-struct IsChar
- : integral_constant<bool, is_integral<T>::value && sizeof(T) == 1> {};
-
-class RamString {
- public:
- static const size_t typeSortKey = 2;
-#if ARDUINOJSON_SIZEOF_POINTER <= 2
- static constexpr size_t sizeMask = size_t(-1) >> 1;
-#else
- static constexpr size_t sizeMask = size_t(-1);
-#endif
-
- RamString(const char *str, size_t sz, bool isStatic = false)
- : str_(str), size_(sz & sizeMask), static_(isStatic) {
- ARDUINOJSON_ASSERT(size_ == sz);
- }
-
- bool isNull() const { return !str_; }
-
- size_t size() const { return size_; }
-
- char operator[](size_t i) const {
- ARDUINOJSON_ASSERT(str_ != 0);
- ARDUINOJSON_ASSERT(i <= size());
- return str_[i];
- }
-
- const char *data() const { return str_; }
-
- bool isStatic() const { return static_; }
-
- protected:
- const char *str_;
-
-#if ARDUINOJSON_SIZEOF_POINTER <= 2
- // Use a bitfield only on 8-bit microcontrollers
- size_t size_ : sizeof(size_t) * 8 - 1;
- bool static_ : 1;
-#else
- size_t size_;
- bool static_;
-#endif
-};
-
-template <typename TChar>
-struct StringAdapter<TChar *, enable_if_t<IsChar<TChar>::value>> {
- using AdaptedString = RamString;
-
- static AdaptedString adapt(const TChar *p) {
- auto str = reinterpret_cast<const char *>(p);
- return AdaptedString(str, str ? ::strlen(str) : 0);
- }
-};
-
-template <typename TChar>
-struct StringAdapter<TChar[], enable_if_t<IsChar<TChar>::value>> {
- using AdaptedString = RamString;
-
- static AdaptedString adapt(const TChar *p) {
- auto str = reinterpret_cast<const char *>(p);
- return AdaptedString(str, str ? ::strlen(str) : 0);
- }
-};
-
-template <size_t N> struct StringAdapter<const char (&)[N]> {
- using AdaptedString = RamString;
-
- static AdaptedString adapt(const char (&p)[N]) {
- return RamString(p, N - 1, true);
- }
-};
-
-template <typename TChar, size_t N>
-struct StringAdapter<TChar[N], enable_if_t<IsChar<TChar>::value>> {
- using AdaptedString = RamString;
-
- static AdaptedString adapt(const TChar *p) {
- ARDUINOJSON_ASSERT(p);
- auto str = reinterpret_cast<const char *>(p);
- return AdaptedString(str, ::strlen(str));
- }
-};
-
-template <typename TChar>
-struct SizedStringAdapter<TChar *, enable_if_t<IsChar<TChar>::value>> {
- using AdaptedString = RamString;
-
- static AdaptedString adapt(const TChar *p, size_t n) {
- return AdaptedString(reinterpret_cast<const char *>(p), n);
- }
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/Adapters/StringObject.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/Adapters/StringObject.hpp
deleted file mode 100644
index 3e142a4..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/Adapters/StringObject.hpp
+++ /dev/null
@@ -1,50 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Strings/Adapters/RamString.hpp>
-#include <ArduinoJson/Strings/StringAdapter.hpp>
-#include <ArduinoJson/Strings/StringTraits.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename T>
-struct StringAdapter<
- T,
- enable_if_t<(string_traits<T>::has_cstr || string_traits<T>::has_data) &&
- (string_traits<T>::has_length || string_traits<T>::has_size)>> {
- using AdaptedString = RamString;
-
- static AdaptedString adapt(const T &s) {
- return AdaptedString(get_data(s), get_size(s));
- }
-
- private:
- template <typename U>
- static enable_if_t<string_traits<U>::has_size, size_t>
- get_size(const U &s) {
- return s.size();
- }
-
- template <typename U>
- static enable_if_t<!string_traits<U>::has_size, size_t>
- get_size(const U &s) {
- return s.length();
- }
-
- template <typename U>
- static enable_if_t<string_traits<U>::has_data, const char *>
- get_data(const U &s) {
- return s.data();
- }
-
- template <typename U>
- static enable_if_t<!string_traits<U>::has_data, const char *>
- get_data(const U &s) {
- return s.c_str();
- }
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp
deleted file mode 100644
index c5bcb47..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp
+++ /dev/null
@@ -1,18 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Polyfills/type_traits.hpp>
-#include <ArduinoJson/Strings/StringAdapter.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename T, typename Enable = void> struct IsString : false_type {};
-
-template <typename T>
-struct IsString<T, void_t<typename StringAdapterFor<T>::AdaptedString>>
- : true_type {};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/JsonString.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/JsonString.hpp
deleted file mode 100644
index 318b944..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/JsonString.hpp
+++ /dev/null
@@ -1,87 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Polyfills/type_traits.hpp>
-#include <ArduinoJson/Strings/Adapters/RamString.hpp>
-
-#if ARDUINOJSON_ENABLE_STD_STREAM
-#include <ostream>
-#endif
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-// A string.
-// https://arduinojson.org/v7/api/jsonstring/
-class JsonString {
- friend struct detail::StringAdapter<JsonString>;
-
- public:
- JsonString() : str_(nullptr, 0, true) {}
-
- JsonString(const char *data, bool isStatic = false)
- : str_(data, data ? ::strlen(data) : 0, isStatic) {}
-
- template <typename TSize,
- detail::enable_if_t<detail::is_integral<TSize>::value &&
- !detail::is_same<TSize, bool>::value,
- int> = 0>
- JsonString(const char *data, TSize sz, bool isStatic = false)
- : str_(data, size_t(sz), isStatic) {}
-
- // Returns a pointer to the characters.
- const char *c_str() const { return str_.data(); }
-
- // Returns true if the string is null.
- bool isNull() const { return str_.isNull(); }
-
- // Returns true if the string is stored by address.
- // Returns false if the string is stored by copy.
- bool isStatic() const { return str_.isStatic(); }
-
- // Returns length of the string.
- size_t size() const { return str_.size(); }
-
- // Returns true if the string is non-null
- explicit operator bool() const { return str_.data() != 0; }
-
- // Returns true if strings are equal.
- friend bool operator==(JsonString lhs, JsonString rhs) {
- if (lhs.size() != rhs.size())
- return false;
- if (lhs.c_str() == rhs.c_str())
- return true;
- if (!lhs.c_str())
- return false;
- if (!rhs.c_str())
- return false;
- return memcmp(lhs.c_str(), rhs.c_str(), lhs.size()) == 0;
- }
-
- // Returns true if strings differs.
- friend bool operator!=(JsonString lhs, JsonString rhs) {
- return !(lhs == rhs);
- }
-
-#if ARDUINOJSON_ENABLE_STD_STREAM
- friend std::ostream &operator<<(std::ostream &lhs, const JsonString &rhs) {
- lhs.write(rhs.c_str(), static_cast<std::streamsize>(rhs.size()));
- return lhs;
- }
-#endif
-
- private:
- detail::RamString str_;
-};
-
-namespace detail {
-template <> struct StringAdapter<JsonString> {
- using AdaptedString = RamString;
-
- static const AdaptedString &adapt(const JsonString &s) { return s.str_; }
-};
-} // namespace detail
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/StringAdapter.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/StringAdapter.hpp
deleted file mode 100644
index 86870d7..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/StringAdapter.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Polyfills/utility.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// a meta function that tells if the type is a string literal (const char[N])
-template <typename T> struct IsStringLiteral : false_type {};
-
-template <size_t N> struct IsStringLiteral<const char (&)[N]> : true_type {};
-
-template <typename TString, typename Enable = void> struct StringAdapter;
-
-template <typename TString, typename Enable = void> struct SizedStringAdapter;
-
-template <typename TString>
-using StringAdapterFor =
- StringAdapter<conditional_t<IsStringLiteral<TString>::value, TString,
- remove_cv_t<remove_reference_t<TString>>>>;
-
-template <typename T>
-using AdaptedString = typename StringAdapterFor<T>::AdaptedString;
-
-template <typename TString> AdaptedString<TString> adaptString(TString &&s) {
- return StringAdapterFor<TString>::adapt(detail::forward<TString>(s));
-}
-
-template <typename TChar, enable_if_t<!is_const<TChar>::value, int> = 0>
-AdaptedString<TChar *> adaptString(TChar *p) {
- return StringAdapter<TChar *>::adapt(p);
-}
-
-template <typename TChar>
-AdaptedString<TChar *> adaptString(TChar *p, size_t n) {
- return SizedStringAdapter<TChar *>::adapt(p, n);
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp
deleted file mode 100644
index 991ceb0..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp
+++ /dev/null
@@ -1,72 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Polyfills/type_traits.hpp>
-#include <ArduinoJson/Strings/Adapters/RamString.hpp>
-#include <ArduinoJson/Strings/Adapters/StringObject.hpp>
-
-#if ARDUINOJSON_ENABLE_PROGMEM
-#include <ArduinoJson/Strings/Adapters/FlashString.hpp>
-#endif
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename TAdaptedString1, typename TAdaptedString2>
-enable_if_t<TAdaptedString1::typeSortKey <= TAdaptedString2::typeSortKey, int>
-stringCompare(TAdaptedString1 s1, TAdaptedString2 s2) {
- ARDUINOJSON_ASSERT(!s1.isNull());
- ARDUINOJSON_ASSERT(!s2.isNull());
- size_t size1 = s1.size();
- size_t size2 = s2.size();
- size_t n = size1 < size2 ? size1 : size2;
- for (size_t i = 0; i < n; i++) {
- if (s1[i] != s2[i])
- return s1[i] - s2[i];
- }
- if (size1 < size2)
- return -1;
- if (size1 > size2)
- return 1;
- return 0;
-}
-
-template <typename TAdaptedString1, typename TAdaptedString2>
-enable_if_t<(TAdaptedString1::typeSortKey > TAdaptedString2::typeSortKey), int>
-stringCompare(TAdaptedString1 s1, TAdaptedString2 s2) {
- return -stringCompare(s2, s1);
-}
-
-template <typename TAdaptedString1, typename TAdaptedString2>
-enable_if_t<TAdaptedString1::typeSortKey <= TAdaptedString2::typeSortKey, bool>
-stringEquals(TAdaptedString1 s1, TAdaptedString2 s2) {
- ARDUINOJSON_ASSERT(!s1.isNull());
- ARDUINOJSON_ASSERT(!s2.isNull());
- size_t size1 = s1.size();
- size_t size2 = s2.size();
- if (size1 != size2)
- return false;
- for (size_t i = 0; i < size1; i++) {
- if (s1[i] != s2[i])
- return false;
- }
- return true;
-}
-
-template <typename TAdaptedString1, typename TAdaptedString2>
-enable_if_t<(TAdaptedString1::typeSortKey > TAdaptedString2::typeSortKey), bool>
-stringEquals(TAdaptedString1 s1, TAdaptedString2 s2) {
- return stringEquals(s2, s1);
-}
-
-template <typename TAdaptedString>
-static void stringGetChars(TAdaptedString s, char *p, size_t n) {
- ARDUINOJSON_ASSERT(s.size() <= n);
- for (size_t i = 0; i < n; i++) {
- p[i] = s[i];
- }
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/StringTraits.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/StringTraits.hpp
deleted file mode 100644
index 72badef..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Strings/StringTraits.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Strings/Adapters/RamString.hpp>
-#include <ArduinoJson/Strings/StringAdapter.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-namespace string_traits_impl {
-
-// const char* c_str() const
-// - String
-// - std::string
-
-template <class T, class = void> struct has_cstr : false_type {};
-
-template <class T>
-struct has_cstr<T, enable_if_t<is_same<decltype(declval<const T>().c_str()),
- const char *>::value>> : true_type {};
-
-// const char* data() const
-// - std::string
-// - std::string_view
-// - etl::string
-
-template <class T, class = void> struct has_data : false_type {};
-
-template <class T>
-struct has_data<T, enable_if_t<is_same<decltype(declval<const T>().data()),
- const char *>::value>> : true_type {};
-
-// unsigned int length() const
-// - String
-
-template <class T, class = void> struct has_length : false_type {};
-
-template <class T>
-struct has_length<
- T, enable_if_t<is_unsigned<decltype(declval<const T>().length())>::value>>
- : true_type {};
-
-// size_t size() const
-// - std::string
-// - std::string_view
-// - etl::string
-
-template <class T, class = void> struct has_size : false_type {};
-
-template <class T>
-struct has_size<
- T, enable_if_t<is_same<decltype(declval<const T>().size()), size_t>::value>>
- : true_type {};
-
-} // namespace string_traits_impl
-
-template <typename T> struct string_traits {
- enum {
- has_cstr = string_traits_impl::has_cstr<T>::value,
- has_length = string_traits_impl::has_length<T>::value,
- has_data = string_traits_impl::has_data<T>::value,
- has_size = string_traits_impl::has_size<T>::value
- };
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/Converter.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/Converter.hpp
deleted file mode 100644
index d2d53b9..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/Converter.hpp
+++ /dev/null
@@ -1,22 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-template <typename T, typename Enable = void> struct Converter;
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// clang-format off
-template <typename T1, typename T2>
-class InvalidConversion; // Error here? See https://arduinojson.org/v7/invalid-conversion/
-// clang-format on
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp
deleted file mode 100644
index b9f1937..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp
+++ /dev/null
@@ -1,397 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Json/JsonSerializer.hpp>
-#include <ArduinoJson/Memory/StringBuilder.hpp>
-#include <ArduinoJson/Polyfills/utility.hpp>
-#include <ArduinoJson/Variant/JsonVariantConst.hpp>
-
-#if ARDUINOJSON_ENABLE_STD_STRING
-#include <string>
-#endif
-
-#if ARDUINOJSON_ENABLE_STRING_VIEW
-#include <string_view>
-#endif
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-template <typename T, typename Enable> struct Converter {
- static_assert(!detail::is_same<T, char>::value,
- "type 'char' is not supported, use 'signed char', 'unsigned "
- "char' or another integer type instead");
-
- static void toJson(const T &src, JsonVariant dst) {
- // clang-format off
- convertToJson(src, dst); // Error here? See https://arduinojson.org/v7/unsupported-set/
- // clang-format on
- }
-
- static detail::decay_t<T> fromJson(JsonVariantConst src) {
- static_assert(
- !detail::is_same<T, char *>::value,
- "type 'char*' is not supported, use 'const char*' instead");
-
- // clang-format off
- T result; // Error here? See https://arduinojson.org/v7/non-default-constructible/
- convertFromJson(src, result); // Error here? See https://arduinojson.org/v7/unsupported-as/
- // clang-format on
- return result;
- }
-
- static bool checkJson(JsonVariantConst src) {
- static_assert(
- !detail::is_same<T, char *>::value,
- "type 'char*' is not supported, use 'const char*' instead");
-
- T dummy = T();
- // clang-format off
- return canConvertFromJson(src, dummy); // Error here? See https://arduinojson.org/v7/unsupported-is/
- // clang-format on
- }
-};
-
-template <typename T>
-struct Converter<T, detail::enable_if_t<detail::is_integral<T>::value &&
- !detail::is_same<bool, T>::value &&
- !detail::is_same<char, T>::value>>
- : private detail::VariantAttorney {
- static bool toJson(T src, JsonVariant dst) {
- ARDUINOJSON_ASSERT_INTEGER_TYPE_IS_SUPPORTED(T);
- auto data = getData(dst);
- if (!data)
- return false;
- auto resources = getResourceManager(dst);
- data->clear(resources);
- return data->setInteger(src, resources);
- }
-
- static T fromJson(JsonVariantConst src) {
- ARDUINOJSON_ASSERT_INTEGER_TYPE_IS_SUPPORTED(T);
- auto data = getData(src);
- auto resources = getResourceManager(src);
- return data ? data->template asIntegral<T>(resources) : T();
- }
-
- static bool checkJson(JsonVariantConst src) {
- auto data = getData(src);
- auto resources = getResourceManager(src);
- return data && data->template isInteger<T>(resources);
- }
-};
-
-template <typename T>
-struct Converter<T, detail::enable_if_t<detail::is_enum<T>::value>>
- : private detail::VariantAttorney {
- static bool toJson(T src, JsonVariant dst) {
- return dst.set(static_cast<JsonInteger>(src));
- }
-
- static T fromJson(JsonVariantConst src) {
- auto data = getData(src);
- auto resources = getResourceManager(src);
- return data ? static_cast<T>(data->template asIntegral<int>(resources))
- : T();
- }
-
- static bool checkJson(JsonVariantConst src) {
- auto data = getData(src);
- auto resources = getResourceManager(src);
- return data && data->template isInteger<int>(resources);
- }
-};
-
-template <> struct Converter<bool> : private detail::VariantAttorney {
- static bool toJson(bool src, JsonVariant dst) {
- auto data = getData(dst);
- if (!data)
- return false;
- auto resources = getResourceManager(dst);
- data->clear(resources);
- data->setBoolean(src);
- return true;
- }
-
- static bool fromJson(JsonVariantConst src) {
- auto data = getData(src);
- auto resources = getResourceManager(src);
- return data ? data->asBoolean(resources) : false;
- }
-
- static bool checkJson(JsonVariantConst src) {
- auto data = getData(src);
- return data && data->isBoolean();
- }
-};
-
-template <typename T>
-struct Converter<T, detail::enable_if_t<detail::is_floating_point<T>::value>>
- : private detail::VariantAttorney {
- static bool toJson(T src, JsonVariant dst) {
- auto data = getData(dst);
- if (!data)
- return false;
- auto resources = getResourceManager(dst);
- data->clear(resources);
- return data->setFloat(src, resources);
- }
-
- static T fromJson(JsonVariantConst src) {
- auto data = getData(src);
- auto resources = getResourceManager(src);
- return data ? data->template asFloat<T>(resources) : 0;
- }
-
- static bool checkJson(JsonVariantConst src) {
- auto data = getData(src);
- return data && data->isFloat();
- }
-};
-
-template <> struct Converter<const char *> : private detail::VariantAttorney {
- static void toJson(const char *src, JsonVariant dst) {
- detail::VariantData::setString(getData(dst), detail::adaptString(src),
- getResourceManager(dst));
- }
-
- static const char *fromJson(JsonVariantConst src) {
- auto data = getData(src);
- return data ? data->asString().c_str() : 0;
- }
-
- static bool checkJson(JsonVariantConst src) {
- auto data = getData(src);
- return data && data->isString();
- }
-};
-
-template <> struct Converter<JsonString> : private detail::VariantAttorney {
- static void toJson(JsonString src, JsonVariant dst) {
- detail::VariantData::setString(getData(dst), detail::adaptString(src),
- getResourceManager(dst));
- }
-
- static JsonString fromJson(JsonVariantConst src) {
- auto data = getData(src);
- return data ? data->asString() : JsonString();
- }
-
- static bool checkJson(JsonVariantConst src) {
- auto data = getData(src);
- return data && data->isString();
- }
-};
-
-template <typename T>
-inline detail::enable_if_t<detail::IsString<T>::value>
-convertToJson(const T &src, JsonVariant dst) {
- using namespace detail;
- auto data = VariantAttorney::getData(dst);
- auto resources = VariantAttorney::getResourceManager(dst);
- detail::VariantData::setString(data, adaptString(src), resources);
-}
-
-// SerializedValue<std::string>
-// SerializedValue<String>
-// SerializedValue<const __FlashStringHelper*>
-template <typename T>
-struct Converter<SerializedValue<T>> : private detail::VariantAttorney {
- static void toJson(SerializedValue<T> src, JsonVariant dst) {
- detail::VariantData::setRawString(getData(dst), src,
- getResourceManager(dst));
- }
-};
-
-template <>
-struct Converter<detail::nullptr_t> : private detail::VariantAttorney {
- static void toJson(detail::nullptr_t, JsonVariant dst) {
- detail::VariantData::clear(getData(dst), getResourceManager(dst));
- }
- static detail::nullptr_t fromJson(JsonVariantConst) { return nullptr; }
- static bool checkJson(JsonVariantConst src) {
- auto data = getData(src);
- return data == 0 || data->isNull();
- }
-};
-
-#if ARDUINOJSON_ENABLE_ARDUINO_STREAM
-
-namespace detail {
-class StringBuilderPrint : public Print {
- public:
- StringBuilderPrint(ResourceManager *resources) : copier_(resources) {
- copier_.startString();
- }
-
- void save(VariantData *data) {
- ARDUINOJSON_ASSERT(!overflowed());
- copier_.save(data);
- }
-
- size_t write(uint8_t c) {
- copier_.append(char(c));
- return copier_.isValid() ? 1 : 0;
- }
-
- size_t write(const uint8_t *buffer, size_t size) {
- for (size_t i = 0; i < size; i++) {
- copier_.append(char(buffer[i]));
- if (!copier_.isValid())
- return i;
- }
- return size;
- }
-
- bool overflowed() const { return !copier_.isValid(); }
-
- private:
- StringBuilder copier_;
-};
-} // namespace detail
-
-inline void convertToJson(const ::Printable &src, JsonVariant dst) {
- auto resources = detail::VariantAttorney::getResourceManager(dst);
- auto data = detail::VariantAttorney::getData(dst);
- if (!resources || !data)
- return;
- data->clear(resources);
- detail::StringBuilderPrint print(resources);
- src.printTo(print);
- if (print.overflowed())
- return;
- print.save(data);
-}
-
-#endif
-
-#if ARDUINOJSON_ENABLE_ARDUINO_STRING
-
-inline void convertFromJson(JsonVariantConst src, ::String &dst) {
- JsonString str = src.as<JsonString>();
- if (str)
- dst = str.c_str();
- else
- serializeJson(src, dst);
-}
-
-inline bool canConvertFromJson(JsonVariantConst src, const ::String &) {
- return src.is<JsonString>();
-}
-
-#endif
-
-#if ARDUINOJSON_ENABLE_STD_STRING
-
-inline void convertFromJson(JsonVariantConst src, std::string &dst) {
- JsonString str = src.as<JsonString>();
- if (str)
- dst.assign(str.c_str(), str.size());
- else
- serializeJson(src, dst);
-}
-
-inline bool canConvertFromJson(JsonVariantConst src, const std::string &) {
- return src.is<JsonString>();
-}
-
-#endif
-
-#if ARDUINOJSON_ENABLE_STRING_VIEW
-
-inline void convertFromJson(JsonVariantConst src, std::string_view &dst) {
- JsonString str = src.as<JsonString>();
- if (str) // the standard doesn't allow passing null to the constructor
- dst = std::string_view(str.c_str(), str.size());
-}
-
-inline bool canConvertFromJson(JsonVariantConst src, const std::string_view &) {
- return src.is<JsonString>();
-}
-
-#endif
-
-template <> struct Converter<JsonArrayConst> : private detail::VariantAttorney {
- static void toJson(JsonArrayConst src, JsonVariant dst) {
- if (src.isNull())
- dst.set(nullptr);
- else
- dst.to<JsonArray>().set(src);
- }
-
- static JsonArrayConst fromJson(JsonVariantConst src) {
- auto data = getData(src);
- auto array = data ? data->asArray() : nullptr;
- return JsonArrayConst(array, getResourceManager(src));
- }
-
- static bool checkJson(JsonVariantConst src) {
- auto data = getData(src);
- return data && data->isArray();
- }
-};
-
-template <> struct Converter<JsonArray> : private detail::VariantAttorney {
- static void toJson(JsonVariantConst src, JsonVariant dst) {
- if (src.isNull())
- dst.set(nullptr);
- else
- dst.to<JsonArray>().set(src);
- }
-
- static JsonArray fromJson(JsonVariant src) {
- auto data = getData(src);
- auto resources = getResourceManager(src);
- return JsonArray(data != 0 ? data->asArray() : 0, resources);
- }
-
- static bool checkJson(JsonVariant src) {
- auto data = getData(src);
- return data && data->isArray();
- }
-};
-
-template <>
-struct Converter<JsonObjectConst> : private detail::VariantAttorney {
- static void toJson(JsonVariantConst src, JsonVariant dst) {
- if (src.isNull())
- dst.set(nullptr);
- else
- dst.to<JsonObject>().set(src);
- }
-
- static JsonObjectConst fromJson(JsonVariantConst src) {
- auto data = getData(src);
- auto object = data != 0 ? data->asObject() : nullptr;
- return JsonObjectConst(object, getResourceManager(src));
- }
-
- static bool checkJson(JsonVariantConst src) {
- auto data = getData(src);
- return data && data->isObject();
- }
-};
-
-template <> struct Converter<JsonObject> : private detail::VariantAttorney {
- static void toJson(JsonVariantConst src, JsonVariant dst) {
- if (src.isNull())
- dst.set(nullptr);
- else
- dst.to<JsonObject>().set(src);
- }
-
- static JsonObject fromJson(JsonVariant src) {
- auto data = getData(src);
- auto resources = getResourceManager(src);
- return JsonObject(data != 0 ? data->asObject() : 0, resources);
- }
-
- static bool checkJson(JsonVariant src) {
- auto data = getData(src);
- return data && data->isObject();
- }
-};
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/JsonVariant.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/JsonVariant.hpp
deleted file mode 100644
index d8d6276..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/JsonVariant.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Variant/VariantRefBase.hpp>
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-// A reference to a value in a JsonDocument.
-// https://arduinojson.org/v7/api/jsonvariant/
-class JsonVariant : public detail::VariantRefBase<JsonVariant>,
- public detail::VariantOperators<JsonVariant> {
- friend class detail::VariantAttorney;
-
- public:
- // Creates an unbound reference.
- JsonVariant() : data_(0), resources_(0) {}
-
- // INTERNAL USE ONLY
- JsonVariant(detail::VariantData *data, detail::ResourceManager *resources)
- : data_(data), resources_(resources) {}
-
- private:
- detail::ResourceManager *getResourceManager() const { return resources_; }
-
- detail::VariantData *getData() const { return data_; }
-
- detail::VariantData *getOrCreateData() const { return data_; }
-
- detail::VariantData *data_;
- detail::ResourceManager *resources_;
-};
-
-namespace detail {
-bool copyVariant(JsonVariant dst, JsonVariantConst src);
-}
-
-template <> struct Converter<JsonVariant> : private detail::VariantAttorney {
- static void toJson(JsonVariantConst src, JsonVariant dst) {
- copyVariant(dst, src);
- }
-
- static JsonVariant fromJson(JsonVariant src) { return src; }
-
- static bool checkJson(JsonVariant src) {
- auto data = getData(src);
- return !!data;
- }
-};
-
-template <>
-struct Converter<JsonVariantConst> : private detail::VariantAttorney {
- static void toJson(JsonVariantConst src, JsonVariant dst) {
- copyVariant(dst, src);
- }
-
- static JsonVariantConst fromJson(JsonVariantConst src) {
- return JsonVariantConst(getData(src), getResourceManager(src));
- }
-
- static bool checkJson(JsonVariantConst src) {
- auto data = getData(src);
- return !!data;
- }
-};
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/JsonVariantConst.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/JsonVariantConst.hpp
deleted file mode 100644
index 1121f9d..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/JsonVariantConst.hpp
+++ /dev/null
@@ -1,186 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <stddef.h>
-#include <stdint.h> // for uint8_t
-
-#include <ArduinoJson/Memory/ResourceManager.hpp>
-#include <ArduinoJson/Polyfills/type_traits.hpp>
-#include <ArduinoJson/Strings/IsString.hpp>
-#include <ArduinoJson/Strings/StringAdapters.hpp>
-#include <ArduinoJson/Variant/VariantAttorney.hpp>
-#include <ArduinoJson/Variant/VariantOperators.hpp>
-#include <ArduinoJson/Variant/VariantTag.hpp>
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-// Forward declarations.
-class JsonArray;
-class JsonObject;
-
-// A read-only reference to a value in a JsonDocument
-// https://arduinojson.org/v7/api/jsonarrayconst/
-class JsonVariantConst : public detail::VariantTag,
- public detail::VariantOperators<JsonVariantConst> {
- friend class detail::VariantAttorney;
-
- template <typename T>
- using ConversionSupported =
- detail::is_same<typename detail::function_traits<
- decltype(&Converter<T>::fromJson)>::arg1_type,
- JsonVariantConst>;
-
- public:
- // Creates an unbound reference.
- JsonVariantConst() : data_(nullptr), resources_(nullptr) {}
-
- // INTERNAL USE ONLY
- explicit JsonVariantConst(const detail::VariantData *data,
- const detail::ResourceManager *resources)
- : data_(data), resources_(resources) {}
-
- // Returns true if the value is null or the reference is unbound.
- // https://arduinojson.org/v7/api/jsonvariantconst/isnull/
- bool isNull() const { return detail::VariantData::isNull(data_); }
-
- // Returns true if the reference is unbound.
- bool isUnbound() const { return !data_; }
-
- // Returns the depth (nesting level) of the value.
- // https://arduinojson.org/v7/api/jsonvariantconst/nesting/
- size_t nesting() const {
- return detail::VariantData::nesting(data_, resources_);
- }
-
- // Returns the size of the array or object.
- // https://arduinojson.org/v7/api/jsonvariantconst/size/
- size_t size() const { return detail::VariantData::size(data_, resources_); }
-
- // Casts the value to the specified type.
- // https://arduinojson.org/v7/api/jsonvariantconst/as/
- template <typename T,
- detail::enable_if_t<ConversionSupported<T>::value, int> = 0>
- T as() const {
- return Converter<T>::fromJson(*this);
- }
-
- // Invalid conversion. Will not compile.
- template <typename T,
- detail::enable_if_t<!ConversionSupported<T>::value, int> = 0>
- detail::InvalidConversion<JsonVariantConst, T> as() const;
-
- // Returns true if the value is of the specified type.
- // https://arduinojson.org/v7/api/jsonvariantconst/is/
- template <typename T,
- detail::enable_if_t<ConversionSupported<T>::value, int> = 0>
- bool is() const {
- return Converter<T>::checkJson(*this);
- }
-
- // Always returns false for the unsupported types.
- // https://arduinojson.org/v7/api/jsonvariantconst/is/
- template <typename T,
- detail::enable_if_t<!ConversionSupported<T>::value, int> = 0>
- bool is() const {
- return false;
- }
-
- template <typename T> operator T() const { return as<T>(); }
-
- // Gets array's element at specified index.
- // https://arduinojson.org/v7/api/jsonvariantconst/subscript/
- template <typename T,
- detail::enable_if_t<detail::is_integral<T>::value, int> = 0>
- JsonVariantConst operator[](T index) const {
- return JsonVariantConst(
- detail::VariantData::getElement(data_, size_t(index), resources_),
- resources_);
- }
-
- // Gets object's member with specified key.
- // https://arduinojson.org/v7/api/jsonvariantconst/subscript/
- template <typename TString,
- detail::enable_if_t<detail::IsString<TString>::value, int> = 0>
- JsonVariantConst operator[](const TString &key) const {
- return JsonVariantConst(
- detail::VariantData::getMember(data_, detail::adaptString(key),
- resources_),
- resources_);
- }
-
- // Gets object's member with specified key.
- // https://arduinojson.org/v7/api/jsonvariantconst/subscript/
- template <typename TChar,
- detail::enable_if_t<detail::IsString<TChar *>::value &&
- !detail::is_const<TChar>::value,
- int> = 0>
- JsonVariantConst operator[](TChar *key) const {
- return JsonVariantConst(
- detail::VariantData::getMember(data_, detail::adaptString(key),
- resources_),
- resources_);
- }
-
- // Gets object's member with specified key or the array's element at the
- // specified index.
- // https://arduinojson.org/v7/api/jsonvariantconst/subscript/
- template <typename TVariant,
- detail::enable_if_t<detail::IsVariant<TVariant>::value, int> = 0>
- JsonVariantConst operator[](const TVariant &key) const {
- if (key.template is<size_t>())
- return operator[](key.template as<size_t>());
- else
- return operator[](key.template as<JsonString>());
- }
-
- // DEPRECATED: use obj[key].is<T>() instead
- // https://arduinojson.org/v7/api/jsonvariantconst/containskey/
- template <typename TString,
- detail::enable_if_t<detail::IsString<TString>::value, int> = 0>
- ARDUINOJSON_DEPRECATED("use var[key].is<T>() instead")
- bool containsKey(const TString &key) const {
- return detail::VariantData::getMember(
- getData(), detail::adaptString(key), resources_) != 0;
- }
-
- // DEPRECATED: use obj["key"].is<T>() instead
- // https://arduinojson.org/v7/api/jsonvariantconst/containskey/
- template <typename TChar,
- detail::enable_if_t<detail::IsString<TChar *>::value &&
- !detail::is_const<TChar>::value,
- int> = 0>
- ARDUINOJSON_DEPRECATED("use obj[\"key\"].is<T>() instead")
- bool containsKey(TChar *key) const {
- return detail::VariantData::getMember(
- getData(), detail::adaptString(key), resources_) != 0;
- }
-
- // DEPRECATED: use obj[key].is<T>() instead
- // https://arduinojson.org/v7/api/jsonvariantconst/containskey/
- template <typename TVariant,
- detail::enable_if_t<detail::IsVariant<TVariant>::value, int> = 0>
- ARDUINOJSON_DEPRECATED("use var[key].is<T>() instead")
- bool containsKey(const TVariant &key) const {
- return containsKey(key.template as<const char *>());
- }
-
- // DEPRECATED: always returns zero
- ARDUINOJSON_DEPRECATED("always returns zero")
- size_t memoryUsage() const { return 0; }
-
- protected:
- const detail::VariantData *getData() const { return data_; }
-
- const detail::ResourceManager *getResourceManager() const {
- return resources_;
- }
-
- private:
- const detail::VariantData *data_;
- const detail::ResourceManager *resources_;
-};
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/JsonVariantCopier.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/JsonVariantCopier.hpp
deleted file mode 100644
index d31a39f..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/JsonVariantCopier.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Variant/JsonVariant.hpp>
-#include <ArduinoJson/Variant/JsonVariantVisitor.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-class JsonVariantCopier {
- public:
- using result_type = bool;
-
- JsonVariantCopier(JsonVariant dst) : dst_(dst) {}
-
- template <typename T> bool visit(T src) { return dst_.set(src); }
-
- private:
- JsonVariant dst_;
-};
-
-inline bool copyVariant(JsonVariant dst, JsonVariantConst src) {
- if (dst.isUnbound())
- return false;
- JsonVariantCopier copier(dst);
- return accept(src, copier);
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/JsonVariantVisitor.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/JsonVariantVisitor.hpp
deleted file mode 100644
index e41034f..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/JsonVariantVisitor.hpp
+++ /dev/null
@@ -1,55 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Array/JsonArray.hpp>
-#include <ArduinoJson/Object/JsonObject.hpp>
-#include <ArduinoJson/Variant/JsonVariant.hpp>
-#include <ArduinoJson/Variant/VariantDataVisitor.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename TResult> struct JsonVariantVisitor {
- using result_type = TResult;
-
- template <typename T> TResult visit(const T &) { return TResult(); }
-};
-
-template <typename TVisitor> class VisitorAdapter {
- public:
- using result_type = typename TVisitor::result_type;
-
- VisitorAdapter(TVisitor &visitor, const ResourceManager *resources)
- : visitor_(&visitor), resources_(resources) {}
-
- result_type visit(const ArrayData &value) {
- return visitor_->visit(JsonArrayConst(&value, resources_));
- }
-
- result_type visit(const ObjectData &value) {
- return visitor_->visit(JsonObjectConst(&value, resources_));
- }
-
- template <typename T> result_type visit(const T &value) {
- return visitor_->visit(value);
- }
-
- private:
- TVisitor *visitor_;
- const ResourceManager *resources_;
-};
-
-template <typename TVisitor>
-typename TVisitor::result_type accept(JsonVariantConst variant,
- TVisitor &visit) {
- auto data = VariantAttorney::getData(variant);
- if (!data)
- return visit.visit(nullptr);
- auto resources = VariantAttorney::getResourceManager(variant);
- VisitorAdapter<TVisitor> adapter(visit, resources);
- return data->accept(adapter, resources);
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantAttorney.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantAttorney.hpp
deleted file mode 100644
index ade7f78..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantAttorney.hpp
+++ /dev/null
@@ -1,35 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include "JsonVariantConst.hpp"
-#include <ArduinoJson/Polyfills/attributes.hpp>
-#include <ArduinoJson/Polyfills/type_traits.hpp>
-#include <ArduinoJson/Variant/VariantData.hpp>
-#include <ArduinoJson/Variant/VariantTo.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// Grants access to the internal variant API
-class VariantAttorney {
- public:
- template <typename TClient>
- static auto getResourceManager(TClient &client)
- -> decltype(client.getResourceManager()) {
- return client.getResourceManager();
- }
-
- template <typename TClient>
- static auto getData(TClient &client) -> decltype(client.getData()) {
- return client.getData();
- }
-
- template <typename TClient>
- static VariantData *getOrCreateData(TClient &client) {
- return client.getOrCreateData();
- }
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantCompare.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantCompare.hpp
deleted file mode 100644
index ed1c3a9..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantCompare.hpp
+++ /dev/null
@@ -1,207 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Configuration.hpp>
-#include <ArduinoJson/Numbers/arithmeticCompare.hpp>
-#include <ArduinoJson/Polyfills/type_traits.hpp>
-#include <ArduinoJson/Polyfills/utility.hpp>
-#include <ArduinoJson/Strings/StringAdapters.hpp>
-#include <ArduinoJson/Variant/JsonVariantVisitor.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-struct ComparerBase : JsonVariantVisitor<CompareResult> {};
-
-template <typename T, typename Enable = void> struct Comparer;
-
-template <typename T>
-struct Comparer<T, enable_if_t<IsString<T>::value>> : ComparerBase {
- T rhs; // TODO: store adapted string?
-
- explicit Comparer(T value) : rhs(value) {}
-
- CompareResult visit(JsonString lhs) {
- int i = stringCompare(adaptString(rhs), adaptString(lhs));
- if (i < 0)
- return COMPARE_RESULT_GREATER;
- else if (i > 0)
- return COMPARE_RESULT_LESS;
- else
- return COMPARE_RESULT_EQUAL;
- }
-
- CompareResult visit(nullptr_t) {
- if (adaptString(rhs).isNull())
- return COMPARE_RESULT_EQUAL;
- else
- return COMPARE_RESULT_DIFFER;
- }
-
- using ComparerBase::visit;
-};
-
-template <typename T>
-struct Comparer<
- T, enable_if_t<is_integral<T>::value || is_floating_point<T>::value>>
- : ComparerBase {
- T rhs;
-
- explicit Comparer(T value) : rhs(value) {}
-
- template <typename U>
- enable_if_t<is_floating_point<U>::value || is_integral<U>::value,
- CompareResult>
- visit(const U &lhs) {
- return arithmeticCompare(lhs, rhs);
- }
-
- template <typename U>
- enable_if_t<!is_floating_point<U>::value && !is_integral<U>::value,
- CompareResult>
- visit(const U &lhs) {
- return ComparerBase::visit(lhs);
- }
-};
-
-struct NullComparer : ComparerBase {
- CompareResult visit(nullptr_t) { return COMPARE_RESULT_EQUAL; }
-
- using ComparerBase::visit;
-};
-
-template <> struct Comparer<nullptr_t, void> : NullComparer {
- explicit Comparer(nullptr_t) : NullComparer() {}
-};
-
-struct ArrayComparer : ComparerBase {
- JsonArrayConst rhs_;
-
- explicit ArrayComparer(JsonArrayConst rhs) : rhs_(rhs) {}
-
- CompareResult visit(JsonArrayConst lhs) {
- if (rhs_ == lhs)
- return COMPARE_RESULT_EQUAL;
- else
- return COMPARE_RESULT_DIFFER;
- }
-
- using ComparerBase::visit;
-};
-
-struct ObjectComparer : ComparerBase {
- JsonObjectConst rhs_;
-
- explicit ObjectComparer(JsonObjectConst rhs) : rhs_(rhs) {}
-
- CompareResult visit(JsonObjectConst lhs) {
- if (lhs == rhs_)
- return COMPARE_RESULT_EQUAL;
- else
- return COMPARE_RESULT_DIFFER;
- }
-
- using ComparerBase::visit;
-};
-
-struct RawComparer : ComparerBase {
- RawString rhs_;
-
- explicit RawComparer(RawString rhs) : rhs_(rhs) {}
-
- CompareResult visit(RawString lhs) {
- size_t size = rhs_.size() < lhs.size() ? rhs_.size() : lhs.size();
- int n = memcmp(lhs.data(), rhs_.data(), size);
- if (n < 0)
- return COMPARE_RESULT_LESS;
- else if (n > 0)
- return COMPARE_RESULT_GREATER;
- else
- return COMPARE_RESULT_EQUAL;
- }
-
- using ComparerBase::visit;
-};
-
-struct VariantComparer : ComparerBase {
- JsonVariantConst rhs;
-
- explicit VariantComparer(JsonVariantConst value) : rhs(value) {}
-
- CompareResult visit(JsonArrayConst lhs) {
- ArrayComparer comparer(lhs);
- return reverseResult(comparer);
- }
-
- CompareResult visit(JsonObjectConst lhs) {
- ObjectComparer comparer(lhs);
- return reverseResult(comparer);
- }
-
- CompareResult visit(JsonFloat lhs) {
- Comparer<JsonFloat> comparer(lhs);
- return reverseResult(comparer);
- }
-
- CompareResult visit(JsonString lhs) {
- Comparer<JsonString> comparer(lhs);
- return reverseResult(comparer);
- }
-
- CompareResult visit(RawString value) {
- RawComparer comparer(value);
- return reverseResult(comparer);
- }
-
- CompareResult visit(JsonInteger lhs) {
- Comparer<JsonInteger> comparer(lhs);
- return reverseResult(comparer);
- }
-
- CompareResult visit(JsonUInt lhs) {
- Comparer<JsonUInt> comparer(lhs);
- return reverseResult(comparer);
- }
-
- CompareResult visit(bool lhs) {
- Comparer<bool> comparer(lhs);
- return reverseResult(comparer);
- }
-
- CompareResult visit(nullptr_t) {
- NullComparer comparer;
- return reverseResult(comparer);
- }
-
- private:
- template <typename TComparer>
- CompareResult reverseResult(TComparer &comparer) {
- CompareResult reversedResult = accept(rhs, comparer);
- switch (reversedResult) {
- case COMPARE_RESULT_GREATER:
- return COMPARE_RESULT_LESS;
- case COMPARE_RESULT_LESS:
- return COMPARE_RESULT_GREATER;
- default:
- return reversedResult;
- }
- }
-};
-
-template <typename T>
-struct Comparer<
- T, enable_if_t<is_convertible<T, ArduinoJson::JsonVariantConst>::value>>
- : VariantComparer {
- explicit Comparer(const T &value)
- : VariantComparer(static_cast<JsonVariantConst>(value)) {}
-};
-
-template <typename T>
-CompareResult compare(ArduinoJson::JsonVariantConst lhs, const T &rhs) {
- Comparer<T> comparer(rhs);
- return accept(lhs, comparer);
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp
deleted file mode 100644
index e6f33fe..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp
+++ /dev/null
@@ -1,82 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <stddef.h> // size_t
-
-#include <ArduinoJson/Array/ArrayData.hpp>
-#include <ArduinoJson/Numbers/JsonFloat.hpp>
-#include <ArduinoJson/Numbers/JsonInteger.hpp>
-#include <ArduinoJson/Object/ObjectData.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-enum class VariantTypeBits : uint8_t {
- OwnedStringBit = 0x01, // 0000 0001
- NumberBit = 0x08, // 0000 1000
-#if ARDUINOJSON_USE_EXTENSIONS
- ExtensionBit = 0x10, // 0001 0000
-#endif
- CollectionMask = 0x60,
-};
-
-enum class VariantType : uint8_t {
- Null = 0, // 0000 0000
- TinyString = 0x02, // 0000 0010
- RawString = 0x03, // 0000 0011
- LinkedString = 0x04, // 0000 0100
- OwnedString = 0x05, // 0000 0101
- Boolean = 0x06, // 0000 0110
- Uint32 = 0x0A, // 0000 1010
- Int32 = 0x0C, // 0000 1100
- Float = 0x0E, // 0000 1110
-#if ARDUINOJSON_USE_LONG_LONG
- Uint64 = 0x1A, // 0001 1010
- Int64 = 0x1C, // 0001 1100
-#endif
-#if ARDUINOJSON_USE_DOUBLE
- Double = 0x1E, // 0001 1110
-#endif
- Object = 0x20,
- Array = 0x40,
-};
-
-inline bool operator&(VariantType type, VariantTypeBits bit) {
- return (uint8_t(type) & uint8_t(bit)) != 0;
-}
-
-const size_t tinyStringMaxLength = 3;
-
-union VariantContent {
- VariantContent() {}
-
- float asFloat;
- bool asBoolean;
- uint32_t asUint32;
- int32_t asInt32;
-#if ARDUINOJSON_USE_EXTENSIONS
- SlotId asSlotId;
-#endif
- ArrayData asArray;
- ObjectData asObject;
- CollectionData asCollection;
- const char *asLinkedString;
- struct StringNode *asOwnedString;
- char asTinyString[tinyStringMaxLength + 1];
-};
-
-#if ARDUINOJSON_USE_EXTENSIONS
-union VariantExtension {
-#if ARDUINOJSON_USE_LONG_LONG
- uint64_t asUint64;
- int64_t asInt64;
-#endif
-#if ARDUINOJSON_USE_DOUBLE
- double asDouble;
-#endif
-};
-#endif
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp
deleted file mode 100644
index 376e90f..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp
+++ /dev/null
@@ -1,597 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Memory/MemoryPool.hpp>
-#include <ArduinoJson/Memory/StringNode.hpp>
-#include <ArduinoJson/Misc/SerializedValue.hpp>
-#include <ArduinoJson/Numbers/convertNumber.hpp>
-#include <ArduinoJson/Strings/JsonString.hpp>
-#include <ArduinoJson/Strings/StringAdapters.hpp>
-#include <ArduinoJson/Variant/VariantContent.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename T> T parseNumber(const char *s);
-
-template <typename T> static bool isTinyString(const T &s, size_t n) {
- if (n > tinyStringMaxLength)
- return false;
- bool containsNul = false;
- for (uint8_t i = 0; i < uint8_t(n); i++)
- containsNul |= !s[i];
- return !containsNul;
-}
-
-class VariantData {
- VariantContent
- content_; // must be first to allow cast from array to variant
- VariantType type_;
- SlotId next_;
-
- public:
- // Placement new
- static void *operator new(size_t, void *p) noexcept { return p; }
-
- static void operator delete(void *, void *) noexcept {}
-
- VariantData() : type_(VariantType::Null), next_(NULL_SLOT) {}
-
- SlotId next() const { return next_; }
-
- void setNext(SlotId slot) { next_ = slot; }
-
- template <typename TVisitor>
- typename TVisitor::result_type
- accept(TVisitor &visit, const ResourceManager *resources) const {
-#if ARDUINOJSON_USE_EXTENSIONS
- auto extension = getExtension(resources);
-#else
- (void)resources; // silence warning
-#endif
- switch (type_) {
- case VariantType::Float:
- return visit.visit(content_.asFloat);
-
-#if ARDUINOJSON_USE_DOUBLE
- case VariantType::Double:
- return visit.visit(extension->asDouble);
-#endif
-
- case VariantType::Array:
- return visit.visit(content_.asArray);
-
- case VariantType::Object:
- return visit.visit(content_.asObject);
-
- case VariantType::TinyString:
- return visit.visit(JsonString(content_.asTinyString));
-
- case VariantType::LinkedString:
- return visit.visit(JsonString(content_.asLinkedString, true));
-
- case VariantType::OwnedString:
- return visit.visit(JsonString(content_.asOwnedString->data,
- content_.asOwnedString->length));
-
- case VariantType::RawString:
- return visit.visit(RawString(content_.asOwnedString->data,
- content_.asOwnedString->length));
-
- case VariantType::Int32:
- return visit.visit(static_cast<JsonInteger>(content_.asInt32));
-
- case VariantType::Uint32:
- return visit.visit(static_cast<JsonUInt>(content_.asUint32));
-
-#if ARDUINOJSON_USE_LONG_LONG
- case VariantType::Int64:
- return visit.visit(extension->asInt64);
-
- case VariantType::Uint64:
- return visit.visit(extension->asUint64);
-#endif
-
- case VariantType::Boolean:
- return visit.visit(content_.asBoolean != 0);
-
- default:
- return visit.visit(nullptr);
- }
- }
-
- template <typename TVisitor>
- static typename TVisitor::result_type
- accept(const VariantData *var, const ResourceManager *resources,
- TVisitor &visit) {
- if (var != 0)
- return var->accept(visit, resources);
- else
- return visit.visit(nullptr);
- }
-
- VariantData *addElement(ResourceManager *resources) {
- auto array = isNull() ? &toArray() : asArray();
- return detail::ArrayData::addElement(array, resources);
- }
-
- static VariantData *addElement(VariantData *var,
- ResourceManager *resources) {
- if (!var)
- return nullptr;
- return var->addElement(resources);
- }
-
- template <typename T>
- bool addValue(const T &value, ResourceManager *resources) {
- auto array = isNull() ? &toArray() : asArray();
- return detail::ArrayData::addValue(array, value, resources);
- }
-
- template <typename T>
- static bool addValue(VariantData *var, const T &value,
- ResourceManager *resources) {
- if (!var)
- return false;
- return var->addValue(value, resources);
- }
-
- bool asBoolean(const ResourceManager *resources) const {
-#if ARDUINOJSON_USE_EXTENSIONS
- auto extension = getExtension(resources);
-#else
- (void)resources; // silence warning
-#endif
- switch (type_) {
- case VariantType::Boolean:
- return content_.asBoolean;
- case VariantType::Uint32:
- case VariantType::Int32:
- return content_.asUint32 != 0;
- case VariantType::Float:
- return content_.asFloat != 0;
-#if ARDUINOJSON_USE_DOUBLE
- case VariantType::Double:
- return extension->asDouble != 0;
-#endif
- case VariantType::Null:
- return false;
-#if ARDUINOJSON_USE_LONG_LONG
- case VariantType::Uint64:
- case VariantType::Int64:
- return extension->asUint64 != 0;
-#endif
- default:
- return true;
- }
- }
-
- ArrayData *asArray() { return isArray() ? &content_.asArray : 0; }
-
- const ArrayData *asArray() const {
- return const_cast<VariantData *>(this)->asArray();
- }
-
- CollectionData *asCollection() {
- return isCollection() ? &content_.asCollection : 0;
- }
-
- const CollectionData *asCollection() const {
- return const_cast<VariantData *>(this)->asCollection();
- }
-
- template <typename T> T asFloat(const ResourceManager *resources) const {
- static_assert(is_floating_point<T>::value,
- "T must be a floating point");
-#if ARDUINOJSON_USE_EXTENSIONS
- auto extension = getExtension(resources);
-#else
- (void)resources; // silence warning
-#endif
- const char *str = nullptr;
- switch (type_) {
- case VariantType::Boolean:
- return static_cast<T>(content_.asBoolean);
- case VariantType::Uint32:
- return static_cast<T>(content_.asUint32);
- case VariantType::Int32:
- return static_cast<T>(content_.asInt32);
-#if ARDUINOJSON_USE_LONG_LONG
- case VariantType::Uint64:
- return static_cast<T>(extension->asUint64);
- case VariantType::Int64:
- return static_cast<T>(extension->asInt64);
-#endif
- case VariantType::TinyString:
- str = content_.asTinyString;
- break;
- case VariantType::LinkedString:
- str = content_.asLinkedString;
- break;
- case VariantType::OwnedString:
- str = content_.asOwnedString->data;
- break;
- case VariantType::Float:
- return static_cast<T>(content_.asFloat);
-#if ARDUINOJSON_USE_DOUBLE
- case VariantType::Double:
- return static_cast<T>(extension->asDouble);
-#endif
- default:
- return 0.0;
- }
-
- ARDUINOJSON_ASSERT(str != nullptr);
- return parseNumber<T>(str);
- }
-
- template <typename T> T asIntegral(const ResourceManager *resources) const {
- static_assert(is_integral<T>::value, "T must be an integral type");
-#if ARDUINOJSON_USE_EXTENSIONS
- auto extension = getExtension(resources);
-#else
- (void)resources; // silence warning
-#endif
- const char *str = nullptr;
- switch (type_) {
- case VariantType::Boolean:
- return content_.asBoolean;
- case VariantType::Uint32:
- return convertNumber<T>(content_.asUint32);
- case VariantType::Int32:
- return convertNumber<T>(content_.asInt32);
-#if ARDUINOJSON_USE_LONG_LONG
- case VariantType::Uint64:
- return convertNumber<T>(extension->asUint64);
- case VariantType::Int64:
- return convertNumber<T>(extension->asInt64);
-#endif
- case VariantType::TinyString:
- str = content_.asTinyString;
- break;
- case VariantType::LinkedString:
- str = content_.asLinkedString;
- break;
- case VariantType::OwnedString:
- str = content_.asOwnedString->data;
- break;
- case VariantType::Float:
- return convertNumber<T>(content_.asFloat);
-#if ARDUINOJSON_USE_DOUBLE
- case VariantType::Double:
- return convertNumber<T>(extension->asDouble);
-#endif
- default:
- return 0;
- }
-
- ARDUINOJSON_ASSERT(str != nullptr);
- return parseNumber<T>(str);
- }
-
- ObjectData *asObject() { return isObject() ? &content_.asObject : 0; }
-
- const ObjectData *asObject() const {
- return const_cast<VariantData *>(this)->asObject();
- }
-
- JsonString asRawString() const {
- switch (type_) {
- case VariantType::RawString:
- return JsonString(content_.asOwnedString->data,
- content_.asOwnedString->length);
- default:
- return JsonString();
- }
- }
-
- JsonString asString() const {
- switch (type_) {
- case VariantType::TinyString:
- return JsonString(content_.asTinyString);
- case VariantType::LinkedString:
- return JsonString(content_.asLinkedString, true);
- case VariantType::OwnedString:
- return JsonString(content_.asOwnedString->data,
- content_.asOwnedString->length);
- default:
- return JsonString();
- }
- }
-
-#if ARDUINOJSON_USE_EXTENSIONS
- const VariantExtension *
- getExtension(const ResourceManager *resources) const;
-#endif
-
- VariantData *getElement(size_t index,
- const ResourceManager *resources) const {
- return ArrayData::getElement(asArray(), index, resources);
- }
-
- static VariantData *getElement(const VariantData *var, size_t index,
- const ResourceManager *resources) {
- return var != 0 ? var->getElement(index, resources) : 0;
- }
-
- template <typename TAdaptedString>
- VariantData *getMember(TAdaptedString key,
- const ResourceManager *resources) const {
- return ObjectData::getMember(asObject(), key, resources);
- }
-
- template <typename TAdaptedString>
- static VariantData *getMember(const VariantData *var, TAdaptedString key,
- const ResourceManager *resources) {
- if (!var)
- return 0;
- return var->getMember(key, resources);
- }
-
- VariantData *getOrAddElement(size_t index, ResourceManager *resources) {
- auto array = isNull() ? &toArray() : asArray();
- if (!array)
- return nullptr;
- return array->getOrAddElement(index, resources);
- }
-
- template <typename TAdaptedString>
- VariantData *getOrAddMember(TAdaptedString key,
- ResourceManager *resources) {
- if (key.isNull())
- return nullptr;
- auto obj = isNull() ? &toObject() : asObject();
- if (!obj)
- return nullptr;
- return obj->getOrAddMember(key, resources);
- }
-
- bool isArray() const { return type_ == VariantType::Array; }
-
- bool isBoolean() const { return type_ == VariantType::Boolean; }
-
- bool isCollection() const {
- return type_ & VariantTypeBits::CollectionMask;
- }
-
- bool isFloat() const { return type_ & VariantTypeBits::NumberBit; }
-
- template <typename T>
- bool isInteger(const ResourceManager *resources) const {
-#if ARDUINOJSON_USE_LONG_LONG
- auto extension = getExtension(resources);
-#else
- (void)resources; // silence warning
-#endif
- switch (type_) {
- case VariantType::Uint32:
- return canConvertNumber<T>(content_.asUint32);
-
- case VariantType::Int32:
- return canConvertNumber<T>(content_.asInt32);
-
-#if ARDUINOJSON_USE_LONG_LONG
- case VariantType::Uint64:
- return canConvertNumber<T>(extension->asUint64);
-
- case VariantType::Int64:
- return canConvertNumber<T>(extension->asInt64);
-#endif
-
- default:
- return false;
- }
- }
-
- bool isNull() const { return type_ == VariantType::Null; }
-
- static bool isNull(const VariantData *var) {
- if (!var)
- return true;
- return var->isNull();
- }
-
- bool isObject() const { return type_ == VariantType::Object; }
-
- bool isString() const {
- return type_ == VariantType::LinkedString ||
- type_ == VariantType::OwnedString ||
- type_ == VariantType::TinyString;
- }
-
- size_t nesting(const ResourceManager *resources) const {
- auto collection = asCollection();
- if (collection)
- return collection->nesting(resources);
- else
- return 0;
- }
-
- static size_t nesting(const VariantData *var,
- const ResourceManager *resources) {
- if (!var)
- return 0;
- return var->nesting(resources);
- }
-
- void removeElement(size_t index, ResourceManager *resources) {
- ArrayData::removeElement(asArray(), index, resources);
- }
-
- static void removeElement(VariantData *var, size_t index,
- ResourceManager *resources) {
- if (!var)
- return;
- var->removeElement(index, resources);
- }
-
- template <typename TAdaptedString>
- void removeMember(TAdaptedString key, ResourceManager *resources) {
- ObjectData::removeMember(asObject(), key, resources);
- }
-
- template <typename TAdaptedString>
- static void removeMember(VariantData *var, TAdaptedString key,
- ResourceManager *resources) {
- if (!var)
- return;
- var->removeMember(key, resources);
- }
-
- void reset() { // TODO: remove
- type_ = VariantType::Null;
- }
-
- void setBoolean(bool value) {
- ARDUINOJSON_ASSERT(type_ ==
- VariantType::Null); // must call clear() first
- type_ = VariantType::Boolean;
- content_.asBoolean = value;
- }
-
- template <typename T>
- enable_if_t<sizeof(T) == 4, bool> setFloat(T value, ResourceManager *) {
- ARDUINOJSON_ASSERT(type_ ==
- VariantType::Null); // must call clear() first
- type_ = VariantType::Float;
- content_.asFloat = value;
- return true;
- }
-
- template <typename T>
- enable_if_t<sizeof(T) == 8, bool> setFloat(T value, ResourceManager *);
-
- template <typename T>
- enable_if_t<is_signed<T>::value, bool>
- setInteger(T value, ResourceManager *resources);
-
- template <typename T>
- enable_if_t<is_unsigned<T>::value, bool>
- setInteger(T value, ResourceManager *resources);
-
- void setRawString(StringNode *s) {
- ARDUINOJSON_ASSERT(type_ ==
- VariantType::Null); // must call clear() first
- ARDUINOJSON_ASSERT(s);
- type_ = VariantType::RawString;
- content_.asOwnedString = s;
- }
-
- template <typename T>
- void setRawString(SerializedValue<T> value, ResourceManager *resources);
-
- template <typename T>
- static void setRawString(VariantData *var, SerializedValue<T> value,
- ResourceManager *resources) {
- if (!var)
- return;
- var->clear(resources);
- var->setRawString(value, resources);
- }
-
- template <typename TAdaptedString>
- bool setString(TAdaptedString value, ResourceManager *resources);
-
- template <typename TAdaptedString>
- static void setString(VariantData *var, TAdaptedString value,
- ResourceManager *resources) {
- if (!var)
- return;
- var->clear(resources);
- var->setString(value, resources);
- }
-
- void setLinkedString(const char *s) {
- ARDUINOJSON_ASSERT(type_ ==
- VariantType::Null); // must call clear() first
- ARDUINOJSON_ASSERT(s);
- type_ = VariantType::LinkedString;
- content_.asLinkedString = s;
- }
-
- template <typename TAdaptedString>
- void setTinyString(const TAdaptedString &s) {
- ARDUINOJSON_ASSERT(type_ ==
- VariantType::Null); // must call clear() first
- ARDUINOJSON_ASSERT(s.size() <= tinyStringMaxLength);
-
- type_ = VariantType::TinyString;
-
- auto n = uint8_t(s.size());
- for (uint8_t i = 0; i < n; i++) {
- char c = s[i];
- ARDUINOJSON_ASSERT(c != 0); // no NUL in tiny string
- content_.asTinyString[i] = c;
- }
-
- content_.asTinyString[n] = 0;
- }
-
- void setOwnedString(StringNode *s) {
- ARDUINOJSON_ASSERT(type_ ==
- VariantType::Null); // must call clear() first
- ARDUINOJSON_ASSERT(s);
- type_ = VariantType::OwnedString;
- content_.asOwnedString = s;
- }
-
- size_t size(const ResourceManager *resources) const {
- if (isObject())
- return content_.asObject.size(resources);
-
- if (isArray())
- return content_.asArray.size(resources);
-
- return 0;
- }
-
- static size_t size(const VariantData *var,
- const ResourceManager *resources) {
- return var != 0 ? var->size(resources) : 0;
- }
-
- ArrayData &toArray() {
- ARDUINOJSON_ASSERT(type_ ==
- VariantType::Null); // must call clear() first
- type_ = VariantType::Array;
- new (&content_.asArray) ArrayData();
- return content_.asArray;
- }
-
- static ArrayData *toArray(VariantData *var, ResourceManager *resources) {
- if (!var)
- return 0;
- var->clear(resources);
- return &var->toArray();
- }
-
- ObjectData &toObject() {
- ARDUINOJSON_ASSERT(type_ ==
- VariantType::Null); // must call clear() first
- type_ = VariantType::Object;
- new (&content_.asObject) ObjectData();
- return content_.asObject;
- }
-
- static ObjectData *toObject(VariantData *var, ResourceManager *resources) {
- if (!var)
- return 0;
- var->clear(resources);
- return &var->toObject();
- }
-
- VariantType type() const { return type_; }
-
- // Release the resources used by this variant and set it to null.
- void clear(ResourceManager *resources);
-
- static void clear(VariantData *var, ResourceManager *resources) {
- if (!var)
- return;
- var->clear(resources);
- }
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantDataVisitor.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantDataVisitor.hpp
deleted file mode 100644
index ee97fe2..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantDataVisitor.hpp
+++ /dev/null
@@ -1,20 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Array/ArrayData.hpp>
-#include <ArduinoJson/Numbers/JsonFloat.hpp>
-#include <ArduinoJson/Numbers/JsonInteger.hpp>
-#include <ArduinoJson/Object/ObjectData.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename TResult> struct VariantDataVisitor {
- using result_type = TResult;
-
- template <typename T> TResult visit(const T &) { return TResult(); }
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp
deleted file mode 100644
index d55ee68..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp
+++ /dev/null
@@ -1,146 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Memory/ResourceManager.hpp>
-#include <ArduinoJson/Variant/VariantData.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename T>
-inline void VariantData::setRawString(SerializedValue<T> value,
- ResourceManager *resources) {
- ARDUINOJSON_ASSERT(type_ == VariantType::Null); // must call clear() first
- auto dup = resources->saveString(adaptString(value.data(), value.size()));
- if (dup)
- setRawString(dup);
-}
-
-template <typename TAdaptedString>
-inline bool VariantData::setString(TAdaptedString value,
- ResourceManager *resources) {
- ARDUINOJSON_ASSERT(type_ == VariantType::Null); // must call clear() first
-
- if (value.isNull())
- return false;
-
- if (value.isStatic()) {
- setLinkedString(value.data());
- return true;
- }
-
- if (isTinyString(value, value.size())) {
- setTinyString(value);
- return true;
- }
-
- auto dup = resources->saveString(value);
- if (dup) {
- setOwnedString(dup);
- return true;
- }
-
- return false;
-}
-
-inline void VariantData::clear(ResourceManager *resources) {
- if (type_ & VariantTypeBits::OwnedStringBit)
- resources->dereferenceString(content_.asOwnedString->data);
-
-#if ARDUINOJSON_USE_EXTENSIONS
- if (type_ & VariantTypeBits::ExtensionBit)
- resources->freeExtension(content_.asSlotId);
-#endif
-
- auto collection = asCollection();
- if (collection)
- collection->clear(resources);
-
- type_ = VariantType::Null;
-}
-
-#if ARDUINOJSON_USE_EXTENSIONS
-inline const VariantExtension *
-VariantData::getExtension(const ResourceManager *resources) const {
- return type_ & VariantTypeBits::ExtensionBit
- ? resources->getExtension(content_.asSlotId)
- : nullptr;
-}
-#endif
-
-template <typename T>
-enable_if_t<sizeof(T) == 8, bool>
-VariantData::setFloat(T value, ResourceManager *resources) {
- ARDUINOJSON_ASSERT(type_ == VariantType::Null); // must call clear() first
- (void)resources; // silence warning
-
- float valueAsFloat = static_cast<float>(value);
-
-#if ARDUINOJSON_USE_DOUBLE
- if (value == valueAsFloat) {
- type_ = VariantType::Float;
- content_.asFloat = valueAsFloat;
- } else {
- auto extension = resources->allocExtension();
- if (!extension)
- return false;
- type_ = VariantType::Double;
- content_.asSlotId = extension.id();
- extension->asDouble = value;
- }
-#else
- type_ = VariantType::Float;
- content_.asFloat = valueAsFloat;
-#endif
- return true;
-}
-
-template <typename T>
-enable_if_t<is_signed<T>::value, bool>
-VariantData::setInteger(T value, ResourceManager *resources) {
- ARDUINOJSON_ASSERT(type_ == VariantType::Null); // must call clear() first
- (void)resources; // silence warning
-
- if (canConvertNumber<int32_t>(value)) {
- type_ = VariantType::Int32;
- content_.asInt32 = static_cast<int32_t>(value);
- }
-#if ARDUINOJSON_USE_LONG_LONG
- else {
- auto extension = resources->allocExtension();
- if (!extension)
- return false;
- type_ = VariantType::Int64;
- content_.asSlotId = extension.id();
- extension->asInt64 = value;
- }
-#endif
- return true;
-}
-
-template <typename T>
-enable_if_t<is_unsigned<T>::value, bool>
-VariantData::setInteger(T value, ResourceManager *resources) {
- ARDUINOJSON_ASSERT(type_ == VariantType::Null); // must call clear() first
- (void)resources; // silence warning
-
- if (canConvertNumber<uint32_t>(value)) {
- type_ = VariantType::Uint32;
- content_.asUint32 = static_cast<uint32_t>(value);
- }
-#if ARDUINOJSON_USE_LONG_LONG
- else {
- auto extension = resources->allocExtension();
- if (!extension)
- return false;
- type_ = VariantType::Uint64;
- content_.asSlotId = extension.id();
- extension->asUint64 = value;
- }
-#endif
- return true;
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp
deleted file mode 100644
index 088bf10..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp
+++ /dev/null
@@ -1,175 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Numbers/arithmeticCompare.hpp>
-#include <ArduinoJson/Polyfills/attributes.hpp>
-#include <ArduinoJson/Polyfills/type_traits.hpp>
-#include <ArduinoJson/Variant/VariantTag.hpp>
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-class JsonVariantConst;
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename T>
-CompareResult compare(JsonVariantConst lhs,
- const T &rhs); // VariantCompare.cpp
-
-struct VariantOperatorTag {};
-
-template <typename TVariant> struct VariantOperators : VariantOperatorTag {
- // Returns the default value if the JsonVariant is unbound or incompatible
- //
- // int operator|(JsonVariant, int)
- // float operator|(JsonVariant, float)
- // bool operator|(JsonVariant, bool)
- template <typename T,
- enable_if_t<!IsVariant<T>::value && !is_array<T>::value, int> = 0>
- friend T operator|(const TVariant &variant, const T &defaultValue) {
- if (variant.template is<T>())
- return variant.template as<T>();
- else
- return defaultValue;
- }
- //
- // const char* operator|(JsonVariant, const char*)
- friend const char *operator|(const TVariant &variant,
- const char *defaultValue) {
- if (variant.template is<const char *>())
- return variant.template as<const char *>();
- else
- return defaultValue;
- }
- //
- // JsonVariant operator|(JsonVariant, JsonVariant)
- template <typename T>
- friend enable_if_t<IsVariant<T>::value, JsonVariantConst>
- operator|(const TVariant &variant, const T &defaultValue) {
- if (variant)
- return variant;
- else
- return defaultValue;
- }
-
- // value == TVariant
- template <typename T> friend bool operator==(T *lhs, const TVariant &rhs) {
- return compare(rhs, lhs) == COMPARE_RESULT_EQUAL;
- }
- template <typename T>
- friend bool operator==(const T &lhs, const TVariant &rhs) {
- return compare(rhs, lhs) == COMPARE_RESULT_EQUAL;
- }
-
- // TVariant == value
- template <typename T> friend bool operator==(const TVariant &lhs, T *rhs) {
- return compare(lhs, rhs) == COMPARE_RESULT_EQUAL;
- }
- template <typename T,
- enable_if_t<!is_base_of<VariantOperatorTag, T>::value, int> = 0>
- friend bool operator==(const TVariant &lhs, const T &rhs) {
- return compare(lhs, rhs) == COMPARE_RESULT_EQUAL;
- }
-
- // value != TVariant
- template <typename T> friend bool operator!=(T *lhs, const TVariant &rhs) {
- return compare(rhs, lhs) != COMPARE_RESULT_EQUAL;
- }
- template <typename T>
- friend bool operator!=(const T &lhs, const TVariant &rhs) {
- return compare(rhs, lhs) != COMPARE_RESULT_EQUAL;
- }
-
- // TVariant != value
- template <typename T> friend bool operator!=(const TVariant &lhs, T *rhs) {
- return compare(lhs, rhs) != COMPARE_RESULT_EQUAL;
- }
- template <typename T,
- enable_if_t<!is_base_of<VariantOperatorTag, T>::value, int> = 0>
- friend bool operator!=(TVariant lhs, const T &rhs) {
- return compare(lhs, rhs) != COMPARE_RESULT_EQUAL;
- }
-
- // value < TVariant
- template <typename T> friend bool operator<(T *lhs, const TVariant &rhs) {
- return compare(rhs, lhs) == COMPARE_RESULT_GREATER;
- }
- template <typename T>
- friend bool operator<(const T &lhs, const TVariant &rhs) {
- return compare(rhs, lhs) == COMPARE_RESULT_GREATER;
- }
-
- // TVariant < value
- template <typename T> friend bool operator<(const TVariant &lhs, T *rhs) {
- return compare(lhs, rhs) == COMPARE_RESULT_LESS;
- }
- template <typename T,
- enable_if_t<!is_base_of<VariantOperatorTag, T>::value, int> = 0>
- friend bool operator<(TVariant lhs, const T &rhs) {
- return compare(lhs, rhs) == COMPARE_RESULT_LESS;
- }
-
- // value <= TVariant
- template <typename T> friend bool operator<=(T *lhs, const TVariant &rhs) {
- return (compare(rhs, lhs) & COMPARE_RESULT_GREATER_OR_EQUAL) != 0;
- }
- template <typename T>
- friend bool operator<=(const T &lhs, const TVariant &rhs) {
- return (compare(rhs, lhs) & COMPARE_RESULT_GREATER_OR_EQUAL) != 0;
- }
-
- // TVariant <= value
- template <typename T> friend bool operator<=(const TVariant &lhs, T *rhs) {
- return (compare(lhs, rhs) & COMPARE_RESULT_LESS_OR_EQUAL) != 0;
- }
- template <typename T,
- enable_if_t<!is_base_of<VariantOperatorTag, T>::value, int> = 0>
- friend bool operator<=(TVariant lhs, const T &rhs) {
- return (compare(lhs, rhs) & COMPARE_RESULT_LESS_OR_EQUAL) != 0;
- }
-
- // value > TVariant
- template <typename T> friend bool operator>(T *lhs, const TVariant &rhs) {
- return compare(rhs, lhs) == COMPARE_RESULT_LESS;
- }
- template <typename T>
- friend bool operator>(const T &lhs, const TVariant &rhs) {
- return compare(rhs, lhs) == COMPARE_RESULT_LESS;
- }
-
- // TVariant > value
- template <typename T> friend bool operator>(const TVariant &lhs, T *rhs) {
- return compare(lhs, rhs) == COMPARE_RESULT_GREATER;
- }
- template <typename T,
- enable_if_t<!is_base_of<VariantOperatorTag, T>::value, int> = 0>
- friend bool operator>(TVariant lhs, const T &rhs) {
- return compare(lhs, rhs) == COMPARE_RESULT_GREATER;
- }
-
- // value >= TVariant
- template <typename T> friend bool operator>=(T *lhs, const TVariant &rhs) {
- return (compare(rhs, lhs) & COMPARE_RESULT_LESS_OR_EQUAL) != 0;
- }
- template <typename T>
- friend bool operator>=(const T &lhs, const TVariant &rhs) {
- return (compare(rhs, lhs) & COMPARE_RESULT_LESS_OR_EQUAL) != 0;
- }
-
- // TVariant >= value
- template <typename T> friend bool operator>=(const TVariant &lhs, T *rhs) {
- return (compare(lhs, rhs) & COMPARE_RESULT_GREATER_OR_EQUAL) != 0;
- }
- template <typename T,
- enable_if_t<!is_base_of<VariantOperatorTag, T>::value, int> = 0>
- friend bool operator>=(const TVariant &lhs, const T &rhs) {
- return (compare(lhs, rhs) & COMPARE_RESULT_GREATER_OR_EQUAL) != 0;
- }
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantRefBase.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantRefBase.hpp
deleted file mode 100644
index 928cc28..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantRefBase.hpp
+++ /dev/null
@@ -1,298 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Configuration.hpp>
-#include <ArduinoJson/Variant/Converter.hpp>
-#include <ArduinoJson/Variant/JsonVariantConst.hpp>
-#include <ArduinoJson/Variant/VariantOperators.hpp>
-#include <ArduinoJson/Variant/VariantTo.hpp>
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-class JsonVariant;
-ARDUINOJSON_END_PUBLIC_NAMESPACE
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-template <typename> class ElementProxy;
-
-template <typename, typename> class MemberProxy;
-
-template <typename TDerived> class VariantRefBase : public VariantTag {
- friend class VariantAttorney;
-
- public:
- // Sets the value to null.
- // https://arduinojson.org/v7/api/jsonvariant/clear/
- void clear() const {
- VariantData::clear(getOrCreateData(), getResourceManager());
- }
-
- // Returns true if the value is null or the reference is unbound.
- // https://arduinojson.org/v7/api/jsonvariant/isnull/
- bool isNull() const { return VariantData::isNull(getData()); }
-
- // Returns true if the reference is unbound.
- bool isUnbound() const { return !getData(); }
-
- // Casts the value to the specified type.
- // https://arduinojson.org/v7/api/jsonvariant/as/
- template <typename T> T as() const;
-
- template <typename T, enable_if_t<!is_same<T, TDerived>::value, int> = 0>
- operator T() const {
- return as<T>();
- }
-
- // Sets the value to an empty array.
- // https://arduinojson.org/v7/api/jsonvariant/to/
- template <typename T, enable_if_t<is_same<T, JsonArray>::value, int> = 0>
- JsonArray to() const;
-
- // Sets the value to an empty object.
- // https://arduinojson.org/v7/api/jsonvariant/to/
- template <typename T, enable_if_t<is_same<T, JsonObject>::value, int> = 0>
- JsonObject to() const;
-
- // Sets the value to null.
- // https://arduinojson.org/v7/api/jsonvariant/to/
- template <typename T, enable_if_t<is_same<T, JsonVariant>::value, int> = 0>
- JsonVariant to() const;
-
- // Returns true if the value is of the specified type.
- // https://arduinojson.org/v7/api/jsonvariant/is/
- template <typename T> FORCE_INLINE bool is() const;
-
- // Copies the specified value.
- // https://arduinojson.org/v7/api/jsonvariant/set/
- template <typename T> bool set(const T &value) const {
- using TypeForConverter =
- conditional_t<IsStringLiteral<T>::value, T,
- remove_cv_t<remove_reference_t<T>>>;
- return doSet<Converter<TypeForConverter>>(value);
- }
-
- // Copies the specified value.
- // https://arduinojson.org/v7/api/jsonvariant/set/
- template <typename T,
- detail::enable_if_t<!detail::is_const<T>::value, int> = 0>
- bool set(T *value) const {
- return doSet<Converter<T *>>(value);
- }
-
- // Returns the size of the array or object.
- // https://arduinojson.org/v7/api/jsonvariant/size/
- size_t size() const {
- return VariantData::size(getData(), getResourceManager());
- }
-
- // Returns the depth (nesting level) of the value.
- // https://arduinojson.org/v7/api/jsonvariant/nesting/
- size_t nesting() const {
- return VariantData::nesting(getData(), getResourceManager());
- }
-
- // Appends a new (empty) element to the array.
- // Returns a reference to the new element.
- // https://arduinojson.org/v7/api/jsonvariant/add/
- template <typename T, enable_if_t<!is_same<T, JsonVariant>::value, int> = 0>
- T add() const {
- return add<JsonVariant>().template to<T>();
- }
-
- // Appends a new (null) element to the array.
- // Returns a reference to the new element.
- // https://arduinojson.org/v7/api/jsonvariant/add/
- template <typename T, enable_if_t<is_same<T, JsonVariant>::value, int> = 0>
- T add() const;
-
- // Appends a value to the array.
- // https://arduinojson.org/v7/api/jsonvariant/add/
- template <typename T> bool add(const T &value) const {
- return detail::VariantData::addValue(getOrCreateData(), value,
- getResourceManager());
- }
-
- // Appends a value to the array.
- // https://arduinojson.org/v7/api/jsonvariant/add/
- template <typename T, enable_if_t<!is_const<T>::value, int> = 0>
- bool add(T *value) const {
- return detail::VariantData::addValue(getOrCreateData(), value,
- getResourceManager());
- }
-
- // Removes an element of the array.
- // https://arduinojson.org/v7/api/jsonvariant/remove/
- void remove(size_t index) const {
- VariantData::removeElement(getData(), index, getResourceManager());
- }
-
- // Removes a member of the object.
- // https://arduinojson.org/v7/api/jsonvariant/remove/
- template <typename TChar, enable_if_t<IsString<TChar *>::value, int> = 0>
- void remove(TChar *key) const {
- VariantData::removeMember(getData(), adaptString(key),
- getResourceManager());
- }
-
- // Removes a member of the object.
- // https://arduinojson.org/v7/api/jsonvariant/remove/
- template <typename TString, enable_if_t<IsString<TString>::value, int> = 0>
- void remove(const TString &key) const {
- VariantData::removeMember(getData(), adaptString(key),
- getResourceManager());
- }
-
- // Removes a member of the object or an element of the array.
- // https://arduinojson.org/v7/api/jsonvariant/remove/
- template <typename TVariant,
- enable_if_t<IsVariant<TVariant>::value, int> = 0>
- void remove(const TVariant &key) const {
- if (key.template is<size_t>())
- remove(key.template as<size_t>());
- else
- remove(key.template as<const char *>());
- }
-
- // Gets or sets an array element.
- // https://arduinojson.org/v7/api/jsonvariant/subscript/
- ElementProxy<TDerived> operator[](size_t index) const;
-
- // DEPRECATED: use obj[key].is<T>() instead
- // https://arduinojson.org/v7/api/jsonvariant/containskey/
- template <typename TString, enable_if_t<IsString<TString>::value, int> = 0>
- ARDUINOJSON_DEPRECATED("use obj[key].is<T>() instead")
- bool containsKey(const TString &key) const;
-
- // DEPRECATED: use obj["key"].is<T>() instead
- // https://arduinojson.org/v7/api/jsonvariant/containskey/
- template <typename TChar, enable_if_t<IsString<TChar *>::value, int> = 0>
- ARDUINOJSON_DEPRECATED("use obj[\"key\"].is<T>() instead")
- bool containsKey(TChar *key) const;
-
- // DEPRECATED: use obj[key].is<T>() instead
- // https://arduinojson.org/v7/api/jsonvariant/containskey/
- template <typename TVariant,
- enable_if_t<IsVariant<TVariant>::value, int> = 0>
- ARDUINOJSON_DEPRECATED("use obj[key].is<T>() instead")
- bool containsKey(const TVariant &key) const;
-
- // Gets or sets an object member.
- // https://arduinojson.org/v7/api/jsonvariant/subscript/
- template <typename TString, enable_if_t<IsString<TString>::value, int> = 0>
- FORCE_INLINE MemberProxy<TDerived, AdaptedString<TString>>
- operator[](const TString &key) const;
-
- // Gets or sets an object member.
- // https://arduinojson.org/v7/api/jsonvariant/subscript/
- template <typename TChar,
- enable_if_t<IsString<TChar *>::value && !is_const<TChar>::value,
- int> = 0>
- FORCE_INLINE MemberProxy<TDerived, AdaptedString<TChar *>>
- operator[](TChar *key) const;
-
- // Gets an object member or an array element.
- // https://arduinojson.org/v7/api/jsonvariant/subscript/
- template <typename TVariant,
- enable_if_t<IsVariant<TVariant>::value, int> = 0>
- JsonVariantConst operator[](const TVariant &key) const {
- if (key.template is<size_t>())
- return operator[](key.template as<size_t>());
- else
- return operator[](key.template as<JsonString>());
- }
-
- // DEPRECATED: use add<JsonVariant>() instead
- ARDUINOJSON_DEPRECATED("use add<JsonVariant>() instead")
- JsonVariant add() const;
-
- // DEPRECATED: use add<JsonArray>() instead
- ARDUINOJSON_DEPRECATED("use add<JsonArray>() instead")
- JsonArray createNestedArray() const;
-
- // DEPRECATED: use var[key].to<JsonArray>() instead
- template <typename TChar>
- ARDUINOJSON_DEPRECATED("use var[key].to<JsonArray>() instead")
- JsonArray createNestedArray(TChar *key) const;
-
- // DEPRECATED: use var[key].to<JsonArray>() instead
- template <typename TString>
- ARDUINOJSON_DEPRECATED("use var[key].to<JsonArray>() instead")
- JsonArray createNestedArray(const TString &key) const;
-
- // DEPRECATED: use add<JsonObject>() instead
- ARDUINOJSON_DEPRECATED("use add<JsonObject>() instead")
- JsonObject createNestedObject() const;
-
- // DEPRECATED: use var[key].to<JsonObject>() instead
- template <typename TChar>
- ARDUINOJSON_DEPRECATED("use var[key].to<JsonObject>() instead")
- JsonObject createNestedObject(TChar *key) const;
-
- // DEPRECATED: use var[key].to<JsonObject>() instead
- template <typename TString>
- ARDUINOJSON_DEPRECATED("use var[key].to<JsonObject>() instead")
- JsonObject createNestedObject(const TString &key) const;
-
- // DEPRECATED: always returns zero
- ARDUINOJSON_DEPRECATED("always returns zero")
- size_t memoryUsage() const { return 0; }
-
- // DEPRECATED: performs a deep copy
- ARDUINOJSON_DEPRECATED("performs a deep copy")
- void shallowCopy(JsonVariantConst src) const { set(src); }
-
- private:
- TDerived &derived() { return static_cast<TDerived &>(*this); }
-
- const TDerived &derived() const {
- return static_cast<const TDerived &>(*this);
- }
-
- ResourceManager *getResourceManager() const {
- return VariantAttorney::getResourceManager(derived());
- }
-
- VariantData *getData() const { return VariantAttorney::getData(derived()); }
-
- VariantData *getOrCreateData() const {
- return VariantAttorney::getOrCreateData(derived());
- }
-
- FORCE_INLINE ArduinoJson::JsonVariant getVariant() const;
-
- FORCE_INLINE ArduinoJson::JsonVariantConst getVariantConst() const {
- return ArduinoJson::JsonVariantConst(getData(), getResourceManager());
- }
-
- template <typename T>
- FORCE_INLINE enable_if_t<is_same<T, JsonVariantConst>::value, T>
- getVariant() const {
- return getVariantConst();
- }
-
- template <typename T>
- FORCE_INLINE enable_if_t<is_same<T, JsonVariant>::value, T>
- getVariant() const {
- return getVariant();
- }
-
- template <typename TConverter, typename T>
- bool doSet(const T &value) const {
- return doSet<TConverter>(
- value, is_same<typename function_traits<
- decltype(&TConverter::toJson)>::return_type,
- bool>{});
- }
-
- template <typename TConverter, typename T>
- bool doSet(const T &value, false_type) const;
-
- template <typename TConverter, typename T>
- bool doSet(const T &value, true_type) const;
-
- ArduinoJson::JsonVariant getOrCreateVariant() const;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp
deleted file mode 100644
index 21087b8..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp
+++ /dev/null
@@ -1,175 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Array/JsonArray.hpp>
-#include <ArduinoJson/Object/JsonObject.hpp>
-#include <ArduinoJson/Variant/VariantRefBase.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <typename TDerived>
-inline JsonVariant VariantRefBase<TDerived>::add() const {
- return add<JsonVariant>();
-}
-
-template <typename TDerived>
-template <typename T>
-inline T VariantRefBase<TDerived>::as() const {
- using variant_type = // JsonVariantConst or JsonVariant?
- typename function_traits<decltype(&Converter<T>::fromJson)>::arg1_type;
- return Converter<T>::fromJson(getVariant<variant_type>());
-}
-
-template <typename TDerived>
-inline JsonArray VariantRefBase<TDerived>::createNestedArray() const {
- return add<JsonArray>();
-}
-
-template <typename TDerived>
-template <typename TChar>
-inline JsonArray VariantRefBase<TDerived>::createNestedArray(TChar *key) const {
- return operator[](key).template to<JsonArray>();
-}
-
-template <typename TDerived>
-template <typename TString>
-inline JsonArray
-VariantRefBase<TDerived>::createNestedArray(const TString &key) const {
- return operator[](key).template to<JsonArray>();
-}
-
-template <typename TDerived>
-inline JsonObject VariantRefBase<TDerived>::createNestedObject() const {
- return add<JsonObject>();
-}
-
-template <typename TDerived>
-template <typename TChar>
-inline JsonObject
-VariantRefBase<TDerived>::createNestedObject(TChar *key) const {
- return operator[](key).template to<JsonObject>();
-}
-
-template <typename TDerived>
-template <typename TString>
-inline JsonObject
-VariantRefBase<TDerived>::createNestedObject(const TString &key) const {
- return operator[](key).template to<JsonObject>();
-}
-
-template <typename TDerived>
-inline void convertToJson(const VariantRefBase<TDerived> &src,
- JsonVariant dst) {
- dst.set(src.template as<JsonVariantConst>());
-}
-
-template <typename TDerived>
-template <typename T, enable_if_t<is_same<T, JsonVariant>::value, int>>
-inline T VariantRefBase<TDerived>::add() const {
- return JsonVariant(detail::VariantData::addElement(getOrCreateData(),
- getResourceManager()),
- getResourceManager());
-}
-
-template <typename TDerived>
-template <typename TString, enable_if_t<IsString<TString>::value, int>>
-inline bool VariantRefBase<TDerived>::containsKey(const TString &key) const {
- return VariantData::getMember(getData(), adaptString(key),
- getResourceManager()) != 0;
-}
-
-template <typename TDerived>
-template <typename TChar, enable_if_t<IsString<TChar *>::value, int>>
-inline bool VariantRefBase<TDerived>::containsKey(TChar *key) const {
- return VariantData::getMember(getData(), adaptString(key),
- getResourceManager()) != 0;
-}
-
-template <typename TDerived>
-template <typename TVariant, enable_if_t<IsVariant<TVariant>::value, int>>
-inline bool VariantRefBase<TDerived>::containsKey(const TVariant &key) const {
- return containsKey(key.template as<const char *>());
-}
-
-template <typename TDerived>
-inline JsonVariant VariantRefBase<TDerived>::getVariant() const {
- return JsonVariant(getData(), getResourceManager());
-}
-
-template <typename TDerived>
-inline JsonVariant VariantRefBase<TDerived>::getOrCreateVariant() const {
- return JsonVariant(getOrCreateData(), getResourceManager());
-}
-
-template <typename TDerived>
-template <typename T>
-inline bool VariantRefBase<TDerived>::is() const {
- using variant_type = // JsonVariantConst or JsonVariant?
- typename function_traits<decltype(&Converter<T>::checkJson)>::arg1_type;
- return Converter<T>::checkJson(getVariant<variant_type>());
-}
-
-template <typename TDerived>
-inline ElementProxy<TDerived>
-VariantRefBase<TDerived>::operator[](size_t index) const {
- return {derived(), index};
-}
-
-template <typename TDerived>
-template <typename TChar,
- enable_if_t<IsString<TChar *>::value && !is_const<TChar>::value, int>>
-inline MemberProxy<TDerived, AdaptedString<TChar *>>
-VariantRefBase<TDerived>::operator[](TChar *key) const {
- return {derived(), adaptString(key)};
-}
-
-template <typename TDerived>
-template <typename TString, enable_if_t<IsString<TString>::value, int>>
-inline MemberProxy<TDerived, AdaptedString<TString>>
-VariantRefBase<TDerived>::operator[](const TString &key) const {
- return {derived(), adaptString(key)};
-}
-
-template <typename TDerived>
-template <typename TConverter, typename T>
-inline bool VariantRefBase<TDerived>::doSet(const T &value, false_type) const {
- TConverter::toJson(value, getOrCreateVariant());
- auto resources = getResourceManager();
- return resources && !resources->overflowed();
-}
-
-template <typename TDerived>
-template <typename TConverter, typename T>
-inline bool VariantRefBase<TDerived>::doSet(const T &value, true_type) const {
- return TConverter::toJson(value, getOrCreateVariant());
-}
-
-template <typename TDerived>
-template <typename T, enable_if_t<is_same<T, JsonArray>::value, int>>
-inline JsonArray VariantRefBase<TDerived>::to() const {
- return JsonArray(
- VariantData::toArray(getOrCreateData(), getResourceManager()),
- getResourceManager());
-}
-
-template <typename TDerived>
-template <typename T, enable_if_t<is_same<T, JsonObject>::value, int>>
-JsonObject VariantRefBase<TDerived>::to() const {
- return JsonObject(
- VariantData::toObject(getOrCreateData(), getResourceManager()),
- getResourceManager());
-}
-
-template <typename TDerived>
-template <typename T, enable_if_t<is_same<T, JsonVariant>::value, int>>
-JsonVariant VariantRefBase<TDerived>::to() const {
- auto data = getOrCreateData();
- auto resources = getResourceManager();
- detail::VariantData::clear(data, resources);
- return JsonVariant(data, resources);
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantTag.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantTag.hpp
deleted file mode 100644
index cf6d921..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantTag.hpp
+++ /dev/null
@@ -1,15 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-struct VariantTag {};
-
-template <typename T> struct IsVariant : is_base_of<VariantTag, T> {};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp
deleted file mode 100644
index 029aa67..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include <ArduinoJson/Namespace.hpp>
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-class JsonArray;
-class JsonObject;
-class JsonVariant;
-ARDUINOJSON_END_PUBLIC_NAMESPACE
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-// A metafunction that returns the type of the value returned by
-// JsonVariant::to<T>()
-template <typename T> struct VariantTo {};
-
-template <> struct VariantTo<JsonArray> {
- using type = JsonArray;
-};
-template <> struct VariantTo<JsonObject> {
- using type = JsonObject;
-};
-template <> struct VariantTo<JsonVariant> {
- using type = JsonVariant;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/compatibility.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/compatibility.hpp
deleted file mode 100644
index c0b0bf9..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/compatibility.hpp
+++ /dev/null
@@ -1,133 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-//
-// clang-format off
-
-#include <ArduinoJson/Namespace.hpp>
-
-#ifdef ARDUINOJSON_SLOT_OFFSET_SIZE
-#error ARDUINOJSON_SLOT_OFFSET_SIZE has been removed, use ARDUINOJSON_SLOT_ID_SIZE instead
-#endif
-
-#ifdef ARDUINOJSON_ENABLE_STRING_DEDUPLICATION
-#warning "ARDUINOJSON_ENABLE_STRING_DEDUPLICATION has been removed, string deduplication is now always enabled"
-#endif
-
-#ifdef __GNUC__
-
-#define ARDUINOJSON_PRAGMA(x) _Pragma(#x)
-
-#define ARDUINOJSON_COMPILE_ERROR(msg) ARDUINOJSON_PRAGMA(GCC error msg)
-
-#define ARDUINOJSON_STRINGIFY(S) #S
-
-#define ARDUINOJSON_DEPRECATION_ERROR(X, Y) \
- ARDUINOJSON_COMPILE_ERROR(ARDUINOJSON_STRINGIFY(X is a Y from ArduinoJson 5. Please see https:/\/arduinojson.org/v7/upgrade-from-v5/ to learn how to upgrade to ArduinoJson 7))
-
-#define StaticJsonBuffer ARDUINOJSON_DEPRECATION_ERROR(StaticJsonBuffer, class)
-#define DynamicJsonBuffer ARDUINOJSON_DEPRECATION_ERROR(DynamicJsonBuffer, class)
-#define JsonBuffer ARDUINOJSON_DEPRECATION_ERROR(JsonBuffer, class)
-#define RawJson ARDUINOJSON_DEPRECATION_ERROR(RawJson, function)
-
-#define ARDUINOJSON_NAMESPACE _Pragma ("GCC warning \"ARDUINOJSON_NAMESPACE is deprecated, use ArduinoJson instead\"") ArduinoJson
-
-// DEPRECATED: you don't need to compute the size anymore
-#define JSON_ARRAY_SIZE(N) _Pragma ("GCC warning \"JSON_ARRAY_SIZE is deprecated, you don't need to compute the size anymore\"") (ArduinoJson::detail::sizeofArray(N))
-
-// DEPRECATED: you don't need to compute the size anymore
-#define JSON_OBJECT_SIZE(N) _Pragma ("GCC warning \"JSON_OBJECT_SIZE is deprecated, you don't need to compute the size anymore\"") (ArduinoJson::detail::sizeofObject(N))
-
-// DEPRECATED: you don't need to compute the size anymore
-#define JSON_STRING_SIZE(N) _Pragma ("GCC warning \"JSON_STRING_SIZE is deprecated, you don't need to compute the size anymore\"") (N+1)
-
-#else
-
-// DEPRECATED: you don't need to compute the size anymore
-#define JSON_ARRAY_SIZE(N) (ArduinoJson::detail::sizeofArray(N))
-
-// DEPRECATED: you don't need to compute the size anymore
-#define JSON_OBJECT_SIZE(N) (ArduinoJson::detail::sizeofObject(N))
-
-// DEPRECATED: you don't need to compute the size anymore
-#define JSON_STRING_SIZE(N) (N+1)
-
-#endif
-
-// clang-format on
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-// DEPRECATED: use JsonDocument instead
-template <size_t N>
-class ARDUINOJSON_DEPRECATED("use JsonDocument instead") StaticJsonDocument
- : public JsonDocument {
- public:
- using JsonDocument::JsonDocument;
-
- size_t capacity() const { return N; }
-};
-
-namespace detail {
-template <typename TAllocator> class AllocatorAdapter : public Allocator {
- public:
- AllocatorAdapter(const AllocatorAdapter &) = delete;
- AllocatorAdapter &operator=(const AllocatorAdapter &) = delete;
-
- void *allocate(size_t size) override { return _allocator.allocate(size); }
-
- void deallocate(void *ptr) override { _allocator.deallocate(ptr); }
-
- void *reallocate(void *ptr, size_t new_size) override {
- return _allocator.reallocate(ptr, new_size);
- }
-
- static Allocator *instance() {
- static AllocatorAdapter instance;
- return &instance;
- }
-
- private:
- AllocatorAdapter() = default;
- ~AllocatorAdapter() = default;
-
- TAllocator _allocator;
-};
-} // namespace detail
-
-// DEPRECATED: use JsonDocument instead
-template <typename TAllocator>
-class ARDUINOJSON_DEPRECATED("use JsonDocument instead") BasicJsonDocument
- : public JsonDocument {
- public:
- BasicJsonDocument(size_t capacity)
- : JsonDocument(detail::AllocatorAdapter<TAllocator>::instance()),
- _capacity(capacity) {}
-
- size_t capacity() const { return _capacity; }
-
- void garbageCollect() {}
-
- private:
- size_t _capacity;
-};
-
-// DEPRECATED: use JsonDocument instead
-class ARDUINOJSON_DEPRECATED("use JsonDocument instead") DynamicJsonDocument
- : public JsonDocument {
- public:
- DynamicJsonDocument(size_t capacity) : _capacity(capacity) {}
-
- size_t capacity() const { return _capacity; }
-
- void garbageCollect() {}
-
- private:
- size_t _capacity;
-};
-
-inline JsonObject JsonArray::createNestedObject() const {
- return add<JsonObject>();
-}
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/version.hpp b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/version.hpp
deleted file mode 100644
index 8743d83..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/ArduinoJson/version.hpp
+++ /dev/null
@@ -1,11 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2026, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#define ARDUINOJSON_VERSION "7.4.3"
-#define ARDUINOJSON_VERSION_MAJOR 7
-#define ARDUINOJSON_VERSION_MINOR 4
-#define ARDUINOJSON_VERSION_REVISION 3
-#define ARDUINOJSON_VERSION_MACRO V743
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/CMakeLists.txt b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/CMakeLists.txt
deleted file mode 100644
index 32d5b0e..0000000
--- a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/src/CMakeLists.txt
+++ /dev/null
@@ -1,91 +0,0 @@
-# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2026, Benoit BLANCHON
-# MIT License
-
-# I have no idea what this is about, I simply followed the instructions from:
-# https://dominikberner.ch/cmake-interface-lib/
-
-add_library(ArduinoJson INTERFACE)
-
-include(GNUInstallDirs)
-
-# Adding the install interface generator expression makes sure that the include
-# files are installed to the proper location (provided by GNUInstallDirs)
-target_include_directories(ArduinoJson
- INTERFACE
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
-)
-
-target_compile_definitions(ArduinoJson
- INTERFACE
- ARDUINOJSON_DEBUG=$<CONFIG:Debug>
-)
-
-# locations are provided by GNUInstallDirs
-install(
- TARGETS
- ArduinoJson
- EXPORT
- ArduinoJson_Targets
- ARCHIVE DESTINATION
- ${CMAKE_INSTALL_LIBDIR}
- LIBRARY DESTINATION
- ${CMAKE_INSTALL_LIBDIR}
- RUNTIME DESTINATION
- ${CMAKE_INSTALL_BINDIR}
-)
-
-include(CMakePackageConfigHelpers)
-
-if(${CMAKE_VERSION} VERSION_GREATER "3.14.0")
- set(ARCH_INDEPENDENT "ARCH_INDEPENDENT")
-endif()
-
-write_basic_package_version_file(
- "${PROJECT_BINARY_DIR}/ArduinoJsonConfigVersion.cmake"
- VERSION
- ${PROJECT_VERSION}
- COMPATIBILITY
- SameMajorVersion
- ${ARCH_INDEPENDENT}
-)
-
-configure_package_config_file(
- "${PROJECT_SOURCE_DIR}/extras/ArduinoJsonConfig.cmake.in"
- "${PROJECT_BINARY_DIR}/ArduinoJsonConfig.cmake"
- INSTALL_DESTINATION
- ${CMAKE_INSTALL_DATAROOTDIR}/ArduinoJson/cmake
-)
-
-install(
- EXPORT
- ArduinoJson_Targets
- FILE
- ArduinoJsonTargets.cmake
- DESTINATION
- ${CMAKE_INSTALL_DATAROOTDIR}/ArduinoJson/cmake
-)
-
-install(
- FILES
- "${PROJECT_BINARY_DIR}/ArduinoJsonConfig.cmake"
- "${PROJECT_BINARY_DIR}/ArduinoJsonConfigVersion.cmake"
- DESTINATION
- "${CMAKE_INSTALL_DATAROOTDIR}/ArduinoJson/cmake"
-)
-
-install(
- FILES
- ArduinoJson.h
- ArduinoJson.hpp
- DESTINATION
- include
-)
-
-install(
- DIRECTORY
- "${CMAKE_CURRENT_SOURCE_DIR}/ArduinoJson"
- DESTINATION
- include
-)