diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000000..094a26db29
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2021 Jason2866
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000000..8f00715a2a
--- /dev/null
+++ b/README.md
@@ -0,0 +1,39 @@
+[![Build_special_firmware](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner-direct.svg)](https://github.com/vshymanskyy/StandWithUkraine/blob/main/docs/README.md)
+
+![Tasmota logo](https://github.com/arendst/Tasmota/blob/development/tools/logo/TASMOTA_FullLogo_Vector.svg#gh-light-mode-only)![Tasmota logo](https://github.com/arendst/Tasmota/blob/development/tools/logo/TASMOTA_FullLogo_Vector_White.svg#gh-dark-mode-only)
+
+
+## These special Tasmota binaries are not official stable releases
+
+## :warning: No support/warranty with these binaries! :warning:
+
+[![Build_special_firmware](https://github.com/Jason2866/Tasmota-build/actions/workflows/Build_special_firmware.yml/badge.svg)](https://github.com/Jason2866/Tasmota-build/actions/workflows/Build_special_firmware.yml)
+
+## The special firmware files are [here](https://github.com/Jason2866/Tasmota-specials/tree/firmware/firmware). [Source code](https://github.com/Jason2866/Tasmota-build)
+Official ✨ Tasmota ✨ firmware files are [here](https://github.com/arendst/Tasmota-firmware)
+
+## For easy flashing Tasmota use:
+- [Tasmota WebInstaller](https://tasmota.github.io/install/) Only Chrome or Edge Browser needed!
+- [ESP_Flasher](https://github.com/Jason2866/ESP_Flasher/releases)
+
+## Build variants:
+ - tasmota32c3 - Support for ESP32-C3 2M no OTA variant (tasmota32c3_2M)
+ - tasmota32(c3/s3)-bluetooth - Support for BLE
+ - tasmota-battery - extremely cut down build for battery powered Tuya sensors
+ - tasmota32(c3/s2/s3/c6)-teleinfo - (ESP32 only) for Teleinfo French metering system, MQTT and TLS included
+ - tasmota32-zigbeebridge - ESP32 based [ZigbeeBridge](https://templates.blakadder.com/ewelink_ZB-GW03.html)
+ - tasmota-zigbee - Zigbee for TI based chips (Esp8266 and ESP32)
+ - tasmota-fullrules - Rules with all the features (expressions, If statements, MQTT subscription)
+ - tasmota-minicustom - even smaller minimal build, **only for Updates (warning MQTT only! No Webserver)**
+ - tasmota-gps - GPS driver enabled
+ - tasmota-mega - big binary, almost every sensor included, OTA possible only with minimal
+ - tasmota-allsensors - guess whats in ;-)
+ - tasmota-platinum - IT...IS...HUGE!!! nearly everything is enabled (only for devices with >=4Mb flash)
+ - tasmota-titanium - as platinum with scripting enabled
+ - tasmota-rangeextender - Experimental build where Tasmota acts as AP range extender
+ - tasmota-scripting - all scripting features instead of rules + Smart Meter Interface enabled
+ - tasmota-thermostat - Thermostat driver and temperature sensors (ESP32 has Bluetooth included)
+ - tasmota32solo1-thermostat - ESP32 Single Core Thermostat driver and Bluetooth temperature sensors (used on Shelly Plus 1PM for example)
+ - tasmota-teleinfo - For Teleinfo French metering system, MQTT enabled but No TLS due to lack of ressources
+ - tasmota-tls - MQTT TLS enabled
+ - tasmota32(c3/s3)-mi-homebridge - Homebridge for MI BLE devices (Apple Homekit support)
diff --git a/genManifest.py b/genManifest.py
new file mode 100644
index 0000000000..1f590b4be8
--- /dev/null
+++ b/genManifest.py
@@ -0,0 +1,128 @@
+#!/usr/bin/python3
+
+from curses.ascii import isupper
+from platform import release
+import sys
+from os import listdir
+from os import mkdir
+from os import remove
+from os import path
+import json
+
+def convertJSON(infile,outfile):
+ with open(infile) as json_file:
+ data = json.load(json_file)
+ for build in data['builds']:
+ for path in build['parts']:
+ # print(path['path'])
+ path['path'] = path['path'].replace("..", "https://Jason2866.github.io/Tasmota-specials")
+ # print(data)
+ j = json.dumps(data,indent=4)
+ f = open(outfile,"w")
+ f.write(j)
+ f.close()
+
+def getManifestEntry(manifest):
+ entry = {}
+ with open(manifest) as json_file:
+ data = json.load(json_file)
+ entry['path'] = "https://Jason2866.github.io/Tasmota-specials/" + manifest
+ entry['name'] = data['name']
+ entry['chipFamilies'] = []
+ for build in data['builds']:
+ entry['chipFamilies'].append(build['chipFamily'])
+ return entry
+
+
+
+def main(args):
+ path_manifests = path.join('manifest')
+ path_manifests_ext = path.join('manifest_ext')
+ if not path.exists(path_manifests):
+ print("No manifest folder, exiting ...")
+ return -1
+ files = listdir(path_manifests)
+ if len(files) == 0:
+ print("Empty manifest folder, exiting ...")
+ return -1
+ if path.exists(path_manifests_ext):
+ m_e_files = listdir(path_manifests_ext)
+ # for file in m_e_files:
+ # remove(file)
+ else:
+ mkdir(path_manifests_ext)
+
+
+ output = {}
+
+ for file in files:
+ # create absolute path-version of each manifest file in /manifest_ext
+ convertJSON(path.join(path_manifests,file),path.join(path_manifests_ext,file))
+ line = file.split('.')
+ if len(line) != 4:
+ print("Incompatible path name, ignoring file:",file)
+ continue
+ # print(line[1])
+ if line[0] not in output:
+ output[line[0]] = [[],[],[],[],[],[]]
+ if line[1] == "tasmota":
+ output[line[0]][0].insert(0,getManifestEntry(path.join(path_manifests_ext,file))) # vanilla first
+ continue
+ elif line[1] == "tasmota32":
+ output[line[0]][1].insert(0,getManifestEntry(path.join(path_manifests_ext,file)))
+ continue
+ else: #solo1,4M,...
+ output[line[0]][2].append(getManifestEntry(path.join(path_manifests_ext,file)))
+ continue
+ name_components = line[1].split('-')
+ if name_components[0] == "tasmota":
+ if len(name_components[1]) and name_components[1].isupper():
+ output[line[0]][1].append(getManifestEntry(path.join(path_manifests_ext,file))) # language versions last
+ continue
+ output[line[0]][0].append(getManifestEntry(path.join(path_manifests_ext,file)))
+ continue
+ elif name_components[0] == "tasmota32":
+ if len(name_components[1]) and name_components[1].isupper():
+ output[line[0]][3].append(getManifestEntry(path.join(path_manifests_ext,file))) # language versions last
+ continue
+ output[line[0]][2].append(getManifestEntry(path.join(path_manifests_ext,file)))
+ continue
+ else: #solo1,4M,...
+ if len(name_components[1]) and name_components[1].isupper():
+ output[line[0]][5].append(getManifestEntry(path.join(path_manifests_ext,file))) # language versions last
+ continue
+ output[line[0]][4].append(getManifestEntry(path.join(path_manifests_ext,file)))
+ # print(output)
+
+ for section in output:
+ merged = sorted(output[section][0],key=lambda d: d['name']) + sorted(output[section][1],key=lambda d: d['name']) + sorted(output[section][2],key=lambda d: d['name']) + sorted(output[section][3],key=lambda d: d['name']) + sorted(output[section][4],key=lambda d: d['name']) + sorted(output[section][5],key=lambda d: d['name'])
+ output[section] = merged
+
+ #release = output.pop("release")
+ #development = output.pop("development")
+ unofficial = output.pop("unofficial")
+
+
+ final_json = {}
+ #final_json["release"] = release
+ #final_json["development"] = development
+ final_json["unofficial"] = unofficial
+ for key in output:
+ final_json[key] = output[key] # just in case we have another section in the future
+
+ print(final_json)
+
+ j = json.dumps(final_json,indent=4)
+ f = open("manifests.json", "w")
+ f.write(j)
+ f.close()
+
+ # intermediate version with double output (DEPRECATED)
+ f = open("manifests_new.json", "w")
+ f.write(j)
+ f.close()
+ # end deprecated version
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv))
+# end if
diff --git a/genManifestRelease.py b/genManifestRelease.py
new file mode 100644
index 0000000000..c02551baa1
--- /dev/null
+++ b/genManifestRelease.py
@@ -0,0 +1,138 @@
+#!/usr/bin/python3
+
+from curses.ascii import isupper
+from platform import release
+import sys
+from os import listdir
+from os import mkdir
+from os import remove
+from os import path
+import json
+import requests
+
+def convertJSON(infile, outfile, tag):
+ with open(infile) as json_file:
+ data = json.load(json_file)
+ for build in data['builds']:
+ for path in build['parts']:
+ components = path['path'].split("/")
+ path['path'] = "https://github.com/Jason2866/Tasmota-specials/releases/download/" + tag + "/" + components[-1]
+ # print(data)
+ j = json.dumps(data,indent=4)
+ f = open(outfile,"w")
+ f.write(j)
+ f.close()
+
+def firmwareVersion(tag):
+ commit = tag.split(".")[2]
+ url = "https://raw.githubusercontent.com/arendst/Tasmota/"+commit+"/tasmota/include/tasmota_version.h"
+ response = requests.get(url)
+ for line in response.text.split("\n"):
+ if "const uint32_t VERSION =" in line:
+ return line.split("//")[1].strip()
+
+def getManifestEntry(manifest, tag):
+ entry = {}
+ with open(manifest) as json_file:
+ data = json.load(json_file)
+ components = manifest.split("/")
+ entry['path'] = "https://github.com/Jason2866/Tasmota-specials/releases/download/" + tag + "/" + components[-1]
+ entry['name'] = data['name']
+ entry['version'] = firmwareVersion(tag)
+ entry['chipFamilies'] = []
+ for build in data['builds']:
+ entry['chipFamilies'].append(build['chipFamily'])
+ return entry
+
+def getTag():
+ with open("tag_latest.txt") as tag:
+ tag_latest = tag.readline().strip()
+ return tag_latest
+
+
+def main(args):
+ path_manifests = path.join('manifest')
+ path_manifests_release = path.join('manifest_release')
+ if not path.exists(path_manifests):
+ print("No manifest folder, exiting ...")
+ return -1
+ files = listdir(path_manifests)
+ if len(files) == 0:
+ print("Empty manifest folder, exiting ...")
+ return -1
+ if path.exists(path_manifests_release):
+ m_e_files = listdir(path_manifests_release)
+ # for file in m_e_files:
+ # remove(file)
+ else:
+ mkdir(path_manifests_release)
+
+ tag_latest = getTag()
+
+ output = {}
+
+ for file in files:
+ # create absolute path-version of each manifest file in /manifest_ext
+ convertJSON(path.join(path_manifests,file),path.join(path_manifests_release,file),tag_latest)
+ line = file.split('.')
+ if len(line) != 4:
+ print("Incompatible path name, ignoring file:",file)
+ continue
+ # print(line[1])
+ if line[0] not in output:
+ output[line[0]] = [[],[],[],[],[],[]]
+ if line[1] == "tasmota":
+ output[line[0]][0].insert(0,getManifestEntry(path.join(path_manifests_release,file)),tag_latest) # vanilla first
+ continue
+ elif line[1] == "tasmota32":
+ output[line[0]][1].insert(0,getManifestEntry(path.join(path_manifests_release,file)),tag_latest)
+ continue
+ else: #solo1,4M,...
+ output[line[0]][2].append(getManifestEntry(path.join(path_manifests_release,file),tag_latest))
+ continue
+ name_components = line[1].split('-')
+ if name_components[0] == "tasmota":
+ if len(name_components[1]) and name_components[1].isupper():
+ output[line[0]][1].append(getManifestEntry(path.join(path_manifests_release,file)),tag_latest) # language versions last
+ continue
+ output[line[0]][0].append(getManifestEntry(path.join(path_manifests_release,file)),tag_latest)
+ continue
+ elif name_components[0] == "tasmota32":
+ if len(name_components[1]) and name_components[1].isupper():
+ output[line[0]][3].append(getManifestEntry(path.join(path_manifests_release,file)),tag_latest) # language versions last
+ continue
+ output[line[0]][2].append(getManifestEntry(path.join(path_manifests_release,file)),tag_latest)
+ continue
+ else: #solo1,4M,...
+ if len(name_components[1]) and name_components[1].isupper():
+ output[line[0]][5].append(getManifestEntry(path.join(path_manifests_release,file)),tag_latest) # language versions last
+ continue
+ output[line[0]][4].append(getManifestEntry(path.join(path_manifests_release,file)),tag_latest)
+ # print(output)
+
+ for section in output:
+ merged = sorted(output[section][0],key=lambda d: d['name']) + sorted(output[section][1],key=lambda d: d['name']) + sorted(output[section][2],key=lambda d: d['name']) + sorted(output[section][3],key=lambda d: d['name']) + sorted(output[section][4],key=lambda d: d['name']) + sorted(output[section][5],key=lambda d: d['name'])
+ output[section] = merged
+
+ #release = output.pop("release")
+ #development = output.pop("development")
+ unofficial = output.pop("unofficial")
+
+
+ final_json = {}
+ #final_json["release"] = release
+ #final_json["development"] = development
+ final_json["unofficial"] = unofficial
+ for key in output:
+ final_json[key] = output[key] # just in case we have another section in the future
+
+ print(final_json)
+ j = json.dumps(final_json,indent=4)
+ f = open("manifests_release.json", "w")
+ f.write(j)
+ f.close()
+ # end deprecated version
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv))
+# end if
diff --git a/genManifestWithFeatureas.py b/genManifestWithFeatureas.py
new file mode 100644
index 0000000000..a71aad675c
--- /dev/null
+++ b/genManifestWithFeatureas.py
@@ -0,0 +1,197 @@
+#!/usr/bin/python3
+
+from platform import release
+import sys
+from os import listdir
+from os import mkdir
+from os import remove
+from os import path
+import json
+import requests
+import gzip
+import re
+
+
+
+def handle_map_gz(data):
+ decompressed = gzip.decompress(data).decode()
+
+ features = {"Xdrv":[],"Xlgt":[],"Xnrg":[],"Xsns":[]}
+ for line in decompressed.splitlines():
+ m = re.search('Xdrv\d\d', line)
+ if(m):
+ number = int(m.group()[4:])
+ if(number not in features["Xdrv"]):
+ features["Xdrv"].append(number)
+ features["Xdrv"].sort()
+ m = re.search('Xlgt\d\d', line)
+ if(m):
+ number = int(m.group()[4:])
+ if(number not in features["Xlgt"]):
+ features["Xlgt"].append(number)
+ features["Xlgt"].sort()
+ m = re.search('Xnrg\d\d', line)
+ if(m):
+ number = int(m.group()[4:])
+ if(number not in features["Xnrg"]):
+ features["Xnrg"].append(number)
+ features["Xnrg"].sort()
+ m = re.search('Xsns\d\d', line)
+ if(m):
+ number = int(m.group()[4:])
+ if(number not in features["Xsns"]):
+ features["Xsns"].append(number)
+ features["Xsns"].sort()
+
+ # print("Features:",features)
+ return features
+
+
+def add_features_from_map(infile):
+ print("Processing ",infile)
+ file_name = infile.split('/')[1]
+ file_name = file_name.split('.')[1]
+ # We need a repo, which holds all the map.gz files too
+ # This is perhaps not the final solution
+ url = ' https://github.com/arendst/Tasmota-firmware/raw/main/firmware/map/'+file_name+'.map.gz'
+ r = requests.get(url)
+ if(r):
+ # print("Found map for ",infile)
+ features = handle_map_gz(r.content)
+ return features
+ else:
+ # Fallback to Jasons special builds
+ # print("No map for: ",url, " , will try:")
+ url = ' https://github.com/Jason2866/Tasmota-specials/raw/firmware/firmware/map/'+file_name+'.map.gz'
+ r = requests.get(url)
+ # print(url)
+ if(r):
+ # print("On 2nd try found map for ",infile)
+ features = handle_map_gz(r.content)
+ return features
+ print("Could not find map.gz for",infile)
+ return {"Xdrv":[],"Xlgt":[],"Xnrg":[],"Xsns":[]}
+
+
+def convertJSON(infile,outfile):
+ with open(infile) as json_file:
+ data = json.load(json_file)
+ for build in data['builds']:
+ for path in build['parts']:
+ # print(path['path'])
+ path['path'] = path['path'].replace("..", "https://Jason2866.github.io/Tasmota-specials")
+
+ features = add_features_from_map(infile)
+ # print(features)
+ if 'features' not in data:
+ data['features'] = features
+ # print(data)
+ j = json.dumps(data,indent=4)
+ f = open(outfile,"w")
+ f.write(j)
+ f.close()
+
+def getManifestEntry(manifest):
+ entry = {}
+ with open(manifest) as json_file:
+ data = json.load(json_file)
+ entry['path'] = "https://Jason2866.github.io/Tasmota-specials/" + manifest
+ entry['name'] = data['name']
+ entry['chipFamilies'] = []
+ for build in data['builds']:
+ entry['chipFamilies'].append(build['chipFamily'])
+ return entry
+
+
+
+def main(args):
+ path_manifests = path.join('manifest')
+ path_manifests_ext = path.join('manifest_ext')
+ if not path.exists(path_manifests):
+ print("No manifest folder, exiting ...")
+ return -1
+ files = listdir(path_manifests)
+ if len(files) == 0:
+ print("Empty manifest folder, exiting ...")
+ return -1
+ if path.exists(path_manifests_ext):
+ m_e_files = listdir(path_manifests_ext)
+ # for file in m_e_files:
+ # remove(file)
+ else:
+ mkdir(path_manifests_ext)
+
+
+ output = {}
+
+ for file in files:
+ # create absolute path-version of each manifest file in /manifest_ext
+ convertJSON(path.join(path_manifests,file),path.join(path_manifests_ext,file))
+ line = file.split('.')
+ if len(line) != 4:
+ print("Incompatible path name, ignoring file:",file)
+ continue
+ # print(line[1])
+ if line[0] not in output:
+ output[line[0]] = [[],[],[],[],[],[]]
+ if line[1] == "tasmota":
+ output[line[0]][0].insert(0,getManifestEntry(path.join(path_manifests_ext,file))) # vanilla first
+ continue
+ elif line[1] == "tasmota32":
+ output[line[0]][1].insert(0,getManifestEntry(path.join(path_manifests_ext,file)))
+ continue
+ elif len(line[1].split('-')) == 1: #solo1,4M,...
+ output[line[0]][2].append(getManifestEntry(path.join(path_manifests_ext,file)))
+ continue
+ name_components = line[1].split('-')
+ if name_components[0] == "tasmota":
+ if len(name_components[1]) == 2 and name_components[1].isupper():
+ output[line[0]][1].append(getManifestEntry(path.join(path_manifests_ext,file))) # language versions last
+ continue
+ output[line[0]][0].append(getManifestEntry(path.join(path_manifests_ext,file)))
+ continue
+ elif name_components[0] == "tasmota32":
+ if len(name_components[1]) == 2 and name_components[1].isupper():
+ output[line[0]][3].append(getManifestEntry(path.join(path_manifests_ext,file))) # language versions last
+ continue
+ output[line[0]][2].append(getManifestEntry(path.join(path_manifests_ext,file)))
+ continue
+ else: #solo1,4M,...
+ if len(name_components[1]) == 2 and name_components[1].isupper():
+ output[line[0]][5].append(getManifestEntry(path.join(path_manifests_ext,file))) # language versions last
+ continue
+ output[line[0]][4].append(getManifestEntry(path.join(path_manifests_ext,file)))
+ # print(output)
+
+ for section in output:
+ merged = sorted(output[section][0],key=lambda d: d['name']) + sorted(output[section][1],key=lambda d: d['name']) + sorted(output[section][2],key=lambda d: d['name']) + sorted(output[section][3],key=lambda d: d['name']) + sorted(output[section][4],key=lambda d: d['name']) + sorted(output[section][5],key=lambda d: d['name'])
+ output[section] = merged
+
+ #release = output.pop("release")
+ #development = output.pop("development")
+ unofficial = output.pop("unofficial")
+
+
+ final_json = {}
+ #final_json["release"] = release
+ #final_json["development"] = development
+ final_json["unofficial"] = unofficial
+ for key in output:
+ final_json[key] = output[key] # just in case we have another section in the future
+
+ # print(final_json)
+
+ j = json.dumps(final_json,indent=4)
+ f = open("manifests.json", "w")
+ f.write(j)
+ f.close()
+
+ # intermediate version with double output (DEPRECATED)
+ f = open("manifests_new.json", "w")
+ f.write(j)
+ f.close()
+ # end deprecated version
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv))
+# end if
diff --git a/genManifestsForAllReleases.py b/genManifestsForAllReleases.py
new file mode 100644
index 0000000000..7c963dfc41
--- /dev/null
+++ b/genManifestsForAllReleases.py
@@ -0,0 +1,50 @@
+#!/usr/bin/python3
+
+from curses.ascii import isupper
+from platform import release
+import sys
+from os import listdir
+from os import mkdir
+from os import remove
+from os import path
+import json
+import requests
+import gzip
+
+
+def getManifestsForTag(tag):
+ url = "https://github.com/Jason2866/Tasmota-specials/releases/download/" + tag + "/manifests_release.json"
+ response = requests.get(url)
+ print(url)
+ try:
+ manifests = json.loads(response.content)
+ return manifests
+ except:
+ return {"Failed":tag}
+
+def getTags():
+ tags = []
+ with open("tag.txt") as tag:
+ tag_latest = tag.readline().strip()
+ while tag_latest:
+ tags.append(tag_latest)
+ tag_latest = tag.readline().strip()
+ return tags
+
+
+def main(args):
+ all_tags = getTags()
+ all_releases = []
+ for tag in all_tags:
+ manifests = getManifestsForTag(tag)
+ all_releases.append(manifests)
+
+ # print(all_releases)
+ j = json.dumps(all_releases,indent=4)
+ with gzip.open('all_manifests_in_releases.json.gz', 'wt') as f:
+ f.write(j)
+ f.close()
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv))
+# end if
diff --git a/index.html b/index.html
new file mode 100644
index 0000000000..7bc5ff2c00
--- /dev/null
+++ b/index.html
@@ -0,0 +1,498 @@
+
+
+
+
+
+ Install Tasmota
+
+
+
+
+
+
+
+
+
Install Tasmota
+
+
+
+ - Connect the ESP device to your computerusing USB or serial-to-USB adapter
+ - Select the firmware variant suitable foryour device
+ - Hit "Install" and select the correct portor find help if no device found
+
+
+
+
+
+
+
+ Your browser does not support Web Serial.Open this page in Google Chrome orMicrosoft Edge instead
+ (but not on your iOS device).
+
+
+
+
+
+
↑
+
+
+
+
+
+
diff --git a/index_no_release.html b/index_no_release.html
new file mode 100644
index 0000000000..fed31d42da
--- /dev/null
+++ b/index_no_release.html
@@ -0,0 +1,124 @@
+
+
+
+
+
+ Install Tasmota
+
+
+
+
+
+
+
+
Install Tasmota
+
+
+
+ - Connect the ESP device to your computerusing USB or serial-to-USB adapter
+ - Select the firmware variant suitable foryour device
+ - Hit "Install" and select the correct portor find help if no device found
+
+
+
+
+
+
+
+
+ Your browser does not support Web Serial.Open this page in Google Chrome orMicrosoft Edge instead
+ (but not on your iOS device).
+
+
+
+
+
+
+
+
+
diff --git a/index_old.html b/index_old.html
new file mode 100644
index 0000000000..faf105898d
--- /dev/null
+++ b/index_old.html
@@ -0,0 +1,411 @@
+
+
+
+
+
+ Install Tasmota
+
+
+
+
+
+
+
+
Install Tasmota
+
+
+
+ - Connect the ESP device to your computerusing USB or serial-to-USB adapter
+ - Select the firmware variant suitable foryour device
+ - Hit "Install" and select the correct portor find help if no device found
+
+
+
+
+
+
+
+
Filter by date:
+
+
+
Filter by type:
+
+
+
+
+
+
+
+
+
+ Your browser does not support Web Serial.Open this page in Google Chrome orMicrosoft Edge instead
+ (but not on your iOS device).
+
+
+
+
+
+
+
+
+
diff --git a/js/tasmota_gh_helper.js b/js/tasmota_gh_helper.js
new file mode 100644
index 0000000000..5238c72338
--- /dev/null
+++ b/js/tasmota_gh_helper.js
@@ -0,0 +1,15 @@
+import { Octokit, App } from "https://esm.sh/octokit";
+
+window.octokit = new Octokit();
+
+const r = await window.octokit.request("GET /repos/{owner}/{repo}/releases", {
+ owner: "Jason2866",
+ repo: "Tasmota-specials",
+ per_page: 999
+ });
+
+window.rel = r.data
+
+console.log("Releases:", r.data);
+
+// export octokit as octo;
\ No newline at end of file
diff --git a/manifest/unofficial.tasmota-allsensors.manifest.json b/manifest/unofficial.tasmota-allsensors.manifest.json
new file mode 100644
index 0000000000..8159b32977
--- /dev/null
+++ b/manifest/unofficial.tasmota-allsensors.manifest.json
@@ -0,0 +1,19 @@
+{
+ "name": "Tasmota Allsensors (english)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32-allsensors.factory.bin", "offset": 0 }
+ ]
+ },
+ {
+ "chipFamily": "ESP8266",
+ "improv": true,
+ "parts": [{ "path": "../firmware/tasmota/other/tasmota-allsensors.bin", "offset": 0 }]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota-battery.manifest.json b/manifest/unofficial.tasmota-battery.manifest.json
new file mode 100644
index 0000000000..4b346720dd
--- /dev/null
+++ b/manifest/unofficial.tasmota-battery.manifest.json
@@ -0,0 +1,19 @@
+{
+ "name": "Tasmota Battery (english)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32-battery.factory.bin", "offset": 0}
+ ]
+ },
+ {
+ "chipFamily": "ESP8266",
+ "improv": true,
+ "parts": [{ "path": "../firmware/tasmota/other/tasmota-battery.bin", "offset": 0 }]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota-fullrules.manifest.json b/manifest/unofficial.tasmota-fullrules.manifest.json
new file mode 100644
index 0000000000..73a6e9629c
--- /dev/null
+++ b/manifest/unofficial.tasmota-fullrules.manifest.json
@@ -0,0 +1,26 @@
+{
+ "name": "Tasmota Fullrules (english)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32-fullrules.factory.bin", "offset": 0}
+ ]
+ },
+ {
+ "chipFamily": "ESP32-C3",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32c3-fullrules.factory.bin", "offset": 0}
+ ]
+ },
+ {
+ "chipFamily": "ESP8266",
+ "improv": true,
+ "parts": [{ "path": "../firmware/tasmota/other/tasmota-fullrules.bin", "offset": 0 }]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota-gps.manifest.json b/manifest/unofficial.tasmota-gps.manifest.json
new file mode 100644
index 0000000000..8c2f3263d3
--- /dev/null
+++ b/manifest/unofficial.tasmota-gps.manifest.json
@@ -0,0 +1,19 @@
+{
+ "name": "Tasmota GPS (english)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32-gps.factory.bin", "offset": 0}
+ ]
+ },
+ {
+ "chipFamily": "ESP8266",
+ "improv": true,
+ "parts": [{ "path": "../firmware/tasmota/other/tasmota-gps.bin", "offset": 0 }]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota-mega.manifest.json b/manifest/unofficial.tasmota-mega.manifest.json
new file mode 100644
index 0000000000..3c8962ab0a
--- /dev/null
+++ b/manifest/unofficial.tasmota-mega.manifest.json
@@ -0,0 +1,19 @@
+{
+ "name": "Tasmota Mega (english)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32-mega.factory.bin", "offset": 0}
+ ]
+ },
+ {
+ "chipFamily": "ESP8266",
+ "improv": true,
+ "parts": [{ "path": "../firmware/tasmota/other/tasmota-mega.bin", "offset": 0 }]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota-platinum.manifest.json b/manifest/unofficial.tasmota-platinum.manifest.json
new file mode 100644
index 0000000000..461b86a7ff
--- /dev/null
+++ b/manifest/unofficial.tasmota-platinum.manifest.json
@@ -0,0 +1,19 @@
+{
+ "name": "Tasmota Platinum (english)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32-platinum.factory.bin", "offset": 0}
+ ]
+ },
+ {
+ "chipFamily": "ESP8266",
+ "improv": true,
+ "parts": [{ "path": "../firmware/tasmota/other/tasmota-platinum.bin", "offset": 0 }]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota-rangeextender.manifest.json b/manifest/unofficial.tasmota-rangeextender.manifest.json
new file mode 100644
index 0000000000..ff801c4f49
--- /dev/null
+++ b/manifest/unofficial.tasmota-rangeextender.manifest.json
@@ -0,0 +1,18 @@
+{
+ "name": "Tasmota Rangeextender (english)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32-rangeextender.factory.bin", "offset": 0}
+ ]
+ },
+ {
+ "chipFamily": "ESP8266",
+ "parts": [{ "path": "../firmware/tasmota/other/tasmota-rangeextender.bin", "offset": 0 }]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota-scripting.manifest.json b/manifest/unofficial.tasmota-scripting.manifest.json
new file mode 100644
index 0000000000..63ed15ae1d
--- /dev/null
+++ b/manifest/unofficial.tasmota-scripting.manifest.json
@@ -0,0 +1,19 @@
+{
+ "name": "Tasmota Scripting (english)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32-scripting.factory.bin", "offset": 0}
+ ]
+ },
+ {
+ "chipFamily": "ESP8266",
+ "improv": true,
+ "parts": [{ "path": "../firmware/tasmota/other/tasmota-scripting.bin", "offset": 0 }]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota-teleinfo.manifest.json b/manifest/unofficial.tasmota-teleinfo.manifest.json
new file mode 100644
index 0000000000..c6f504b55b
--- /dev/null
+++ b/manifest/unofficial.tasmota-teleinfo.manifest.json
@@ -0,0 +1,39 @@
+{
+ "name": "Tasmota Teleinfo (english)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32-teleinfo.factory.bin", "offset": 0}
+ ]
+ },
+ {
+ "chipFamily": "ESP8266",
+ "improv": true,
+ "parts": [{ "path": "../firmware/tasmota/other/tasmota-teleinfo.bin", "offset": 0 }]
+ },
+ {
+ "chipFamily": "ESP32-C3",
+ "improv": true,
+ "parts": [{ "path": "../firmware/tasmota32/other/tasmota32c3-teleinfo.bin", "offset": 0 }]
+ },
+ {
+ "chipFamily": "ESP32-S2",
+ "improv": true,
+ "parts": [{ "path": "../firmware/tasmota32/other/tasmota32s2-teleinfo.bin", "offset": 0 }]
+ },
+ {
+ "chipFamily": "ESP32-S3",
+ "improv": true,
+ "parts": [{ "path": "../firmware/tasmota32/other/tasmota32s3-teleinfo.bin", "offset": 0 }]
+ },
+ {
+ "chipFamily": "ESP32-C6",
+ "improv": true,
+ "parts": [{ "path": "../firmware/tasmota32/other/tasmota32c6-teleinfo.bin", "offset": 0 }]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota-thermostat.manifest.json b/manifest/unofficial.tasmota-thermostat.manifest.json
new file mode 100644
index 0000000000..4b6954a5c4
--- /dev/null
+++ b/manifest/unofficial.tasmota-thermostat.manifest.json
@@ -0,0 +1,19 @@
+{
+ "name": "Tasmota Thermostat (english)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32-thermostat.factory.bin", "offset": 0}
+ ]
+ },
+ {
+ "chipFamily": "ESP8266",
+ "improv": true,
+ "parts": [{ "path": "../firmware/tasmota/other/tasmota-thermostat.bin", "offset": 0 }]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota-titanium.manifest.json b/manifest/unofficial.tasmota-titanium.manifest.json
new file mode 100644
index 0000000000..da33ad9c19
--- /dev/null
+++ b/manifest/unofficial.tasmota-titanium.manifest.json
@@ -0,0 +1,19 @@
+{
+ "name": "Tasmota Titanium (english)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32-titanium.factory.bin", "offset": 0}
+ ]
+ },
+ {
+ "chipFamily": "ESP8266",
+ "improv": true,
+ "parts": [{ "path": "../firmware/tasmota/other/tasmota-titanium.bin", "offset": 0 }]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota-tls.manifest.json b/manifest/unofficial.tasmota-tls.manifest.json
new file mode 100644
index 0000000000..b1d4c4909c
--- /dev/null
+++ b/manifest/unofficial.tasmota-tls.manifest.json
@@ -0,0 +1,12 @@
+{
+ "name": "Tasmota TLS (english)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP8266",
+ "improv": true,
+ "parts": [{ "path": "../firmware/tasmota/other/tasmota-tls.bin", "offset": 0 }]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota32-bluetooth.manifest.json b/manifest/unofficial.tasmota32-bluetooth.manifest.json
new file mode 100644
index 0000000000..2d6d2724fe
--- /dev/null
+++ b/manifest/unofficial.tasmota32-bluetooth.manifest.json
@@ -0,0 +1,21 @@
+{
+ "name": "Tasmota32 BT for C3 and S3",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32-C3",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32c3-bluetooth.factory.bin", "offset": 0 }
+ ]
+ },
+ {
+ "chipFamily": "ESP32-S3",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32s3-bluetooth.factory.bin", "offset": 0 }
+ ]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota32-lvgl.manifest.json b/manifest/unofficial.tasmota32-lvgl.manifest.json
new file mode 100644
index 0000000000..990f21a7a8
--- /dev/null
+++ b/manifest/unofficial.tasmota32-lvgl.manifest.json
@@ -0,0 +1,28 @@
+{
+ "name": "Tasmota32 lvgl (english)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32-C3",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32c3-lvgl.factory.bin", "offset": 0}
+ ]
+ },
+ {
+ "chipFamily": "ESP32-S2",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32s2-lvgl.factory.bin", "offset": 0}
+ ]
+ },
+ {
+ "chipFamily": "ESP32-S3",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32s3-lvgl.factory.bin", "offset": 0}
+ ]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota32-mi32.manifest.json b/manifest/unofficial.tasmota32-mi32.manifest.json
new file mode 100644
index 0000000000..1e5ab0def5
--- /dev/null
+++ b/manifest/unofficial.tasmota32-mi32.manifest.json
@@ -0,0 +1,28 @@
+{
+ "name": "Tasmota32 MI BLE (english)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32-mi32.factory.bin", "offset": 0}
+ ]
+ },
+ {
+ "chipFamily": "ESP32-C3",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32c3-mi32.factory.bin", "offset": 0}
+ ]
+ },
+ {
+ "chipFamily": "ESP32-S3",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32s3-mi32.factory.bin", "offset": 0}
+ ]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota32-zigbee.manifest.json b/manifest/unofficial.tasmota32-zigbee.manifest.json
new file mode 100644
index 0000000000..e778bc59cf
--- /dev/null
+++ b/manifest/unofficial.tasmota32-zigbee.manifest.json
@@ -0,0 +1,14 @@
+{
+ "name": "Tasmota Zigbee (english)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32-zigbee.factory.bin", "offset": 0}
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/manifest/unofficial.tasmota32-zigbeebridge.manifest.json b/manifest/unofficial.tasmota32-zigbeebridge.manifest.json
new file mode 100644
index 0000000000..b6090acc04
--- /dev/null
+++ b/manifest/unofficial.tasmota32-zigbeebridge.manifest.json
@@ -0,0 +1,15 @@
+{
+ "name": "Tasmota32 ZigbeeBridge (english)",
+ "home_assistant_domain": "tasmota",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32-zigbeebridge.factory.bin", "offset": 0}
+ ]
+ }
+ ]
+ }
\ No newline at end of file
diff --git a/manifest/unofficial.tasmota32c2.manifest.json b/manifest/unofficial.tasmota32c2.manifest.json
new file mode 100644
index 0000000000..cbd1405daf
--- /dev/null
+++ b/manifest/unofficial.tasmota32c2.manifest.json
@@ -0,0 +1,14 @@
+{
+ "name": "Tasmota32-C2 4M (english)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32-C2",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32c2-arduino30.factory.bin", "offset": 0}
+ ]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota32c3_2M.manifest.json b/manifest/unofficial.tasmota32c3_2M.manifest.json
new file mode 100644
index 0000000000..33780fe04a
--- /dev/null
+++ b/manifest/unofficial.tasmota32c3_2M.manifest.json
@@ -0,0 +1,14 @@
+{
+ "name": "Tasmota32-C3 2M (english)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32-C3",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32c3_2M.factory.bin", "offset": 0}
+ ]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota32c6.manifest.json b/manifest/unofficial.tasmota32c6.manifest.json
new file mode 100644
index 0000000000..516d3417b3
--- /dev/null
+++ b/manifest/unofficial.tasmota32c6.manifest.json
@@ -0,0 +1,14 @@
+{
+ "name": "Tasmota32-C6 4M (english)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32-C6",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32c6-arduino30.factory.bin", "offset": 0}
+ ]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota32c6cdc.manifest.json b/manifest/unofficial.tasmota32c6cdc.manifest.json
new file mode 100644
index 0000000000..ccafee36ce
--- /dev/null
+++ b/manifest/unofficial.tasmota32c6cdc.manifest.json
@@ -0,0 +1,14 @@
+{
+ "name": "Tasmota32-C6 CDC 4M (english)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32-C6",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32c6cdc-arduino30.factory.bin", "offset": 0}
+ ]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota32s3-opi_opi.manifest.json b/manifest/unofficial.tasmota32s3-opi_opi.manifest.json
new file mode 100644
index 0000000000..025d0246e1
--- /dev/null
+++ b/manifest/unofficial.tasmota32s3-opi_opi.manifest.json
@@ -0,0 +1,14 @@
+{
+ "name": "Tasmota32-S3 (OPI Flash/OPI PSRAM)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32-S3",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32s3-opi_opi.factory.bin", "offset": 0}
+ ]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota32s3cdc-box.manifest.json b/manifest/unofficial.tasmota32s3cdc-box.manifest.json
new file mode 100644
index 0000000000..06cb6a3ae4
--- /dev/null
+++ b/manifest/unofficial.tasmota32s3cdc-box.manifest.json
@@ -0,0 +1,14 @@
+{
+ "name": "Tasmota32-S3 BOX (english)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32-S3",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32s3cdc-box.factory.bin", "offset": 0}
+ ]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota32s3cdc-opi_opi.manifest.json b/manifest/unofficial.tasmota32s3cdc-opi_opi.manifest.json
new file mode 100644
index 0000000000..6cd73d2c26
--- /dev/null
+++ b/manifest/unofficial.tasmota32s3cdc-opi_opi.manifest.json
@@ -0,0 +1,14 @@
+{
+ "name": "Tasmota32-S3 CDC (OPI Flash/OPI PSRAM)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32-S3",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32s3cdc-opi_opi.factory.bin", "offset": 0}
+ ]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota32s3cdc-qio_opi.manifest.json b/manifest/unofficial.tasmota32s3cdc-qio_opi.manifest.json
new file mode 100644
index 0000000000..befc0733ee
--- /dev/null
+++ b/manifest/unofficial.tasmota32s3cdc-qio_opi.manifest.json
@@ -0,0 +1,14 @@
+{
+ "name": "Tasmota32-S3 (QIO Flash/OPI PSRAM)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32-S3",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32s3cdc-qio_opi.factory.bin", "offset": 0}
+ ]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota32solo1-bluetooth.manifest.json b/manifest/unofficial.tasmota32solo1-bluetooth.manifest.json
new file mode 100644
index 0000000000..1b032592c1
--- /dev/null
+++ b/manifest/unofficial.tasmota32solo1-bluetooth.manifest.json
@@ -0,0 +1,14 @@
+{
+ "name": "Tasmota32 Solo1 Bluetooth (english)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32solo1-bluetooth.factory.bin", "offset": 0}
+ ]
+ }
+ ]
+}
diff --git a/manifest/unofficial.tasmota32solo1-thermostat.manifest.json b/manifest/unofficial.tasmota32solo1-thermostat.manifest.json
new file mode 100644
index 0000000000..2b2c58f76c
--- /dev/null
+++ b/manifest/unofficial.tasmota32solo1-thermostat.manifest.json
@@ -0,0 +1,14 @@
+{
+ "name": "Tasmota32 Solo1 Thermostat (english)",
+ "new_install_prompt_erase": true,
+ "funding_url": "https://paypal.me/tasmota",
+ "builds": [
+ {
+ "chipFamily": "ESP32",
+ "improv": true,
+ "parts": [
+ { "path": "../firmware/tasmota32/other/tasmota32solo1-thermostat.factory.bin", "offset": 0}
+ ]
+ }
+ ]
+}
diff --git a/manifest_ext/.keep.me b/manifest_ext/.keep.me
new file mode 100644
index 0000000000..8b13789179
--- /dev/null
+++ b/manifest_ext/.keep.me
@@ -0,0 +1 @@
+
diff --git a/manifest_test.json b/manifest_test.json
new file mode 100644
index 0000000000..65d4b148f1
--- /dev/null
+++ b/manifest_test.json
@@ -0,0 +1,167 @@
+{
+ "unofficial": [
+ {
+ "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-allsensors.manifest.json",
+ "name": "Tasmota Allsensors (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-battery.manifest.json",
+ "name": "Tasmota Battery (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-fullrules.manifest.json",
+ "name": "Tasmota Fullrules (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-gps.manifest.json",
+ "name": "Tasmota GPS (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-mega.manifest.json",
+ "name": "Tasmota Mega (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-platinum.manifest.json",
+ "name": "Tasmota Platinum (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-rangeextender.manifest.json",
+ "name": "Tasmota Rangeextender (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-scripting.manifest.json",
+ "name": "Tasmota Scripting (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-tls.manifest.json",
+ "name": "Tasmota TLS (english)",
+ "chipFamilies": [
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-teleinfo.manifest.json",
+ "name": "Tasmota Teleinfo (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266",
+ "ESP32-C3",
+ "ESP32-S2"
+ ]
+ },
+ {
+ "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-thermostat.manifest.json",
+ "name": "Tasmota Thermostat (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-titanium.manifest.json",
+ "name": "Tasmota Titanium (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota32-zigbee.manifest.json",
+ "name": "Tasmota Zigbee (english)",
+ "chipFamilies": [
+ "ESP32"
+ ]
+ },
+ {
+ "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota32-mi32-homebridge.manifest.json",
+ "name": "Tasmota32 MI Homebridge (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP32-C3",
+ "ESP32-S3"
+ ]
+ },
+ {
+ "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota32solo1-bluetooth.manifest.json",
+ "name": "Tasmota32 Solo1 Bluetooth (english)",
+ "chipFamilies": [
+ "ESP32"
+ ]
+ },
+ {
+ "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota32solo1-thermostat.manifest.json",
+ "name": "Tasmota32 Solo1 Thermostat (english)",
+ "chipFamilies": [
+ "ESP32"
+ ]
+ },
+ {
+ "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota32-zigbeebridge.manifest.json",
+ "name": "Tasmota32 ZigbeeBridge (english)",
+ "chipFamilies": [
+ "ESP32"
+ ]
+ },
+ {
+ "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota32c3_2M.manifest.json",
+ "name": "Tasmota32-C3 2M (english)",
+ "chipFamilies": [
+ "ESP32-C3"
+ ]
+ },
+ {
+ "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota32-bluetooth.manifest.json",
+ "name": "Tasmota32-C3 S3 Bluetooth (english)",
+ "chipFamilies": [
+ "ESP32-C3",
+ "ESP32-S3"
+ ]
+ },
+ {
+ "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota32s3cdc-qio_opi.manifest.json",
+ "name": "Tasmota32-S3 (QIO Flash/OPI PSRAM)",
+ "chipFamilies": [
+ "ESP32-S3"
+ ]
+ },
+ {
+ "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota32s3cdc-box.manifest.json",
+ "name": "Tasmota32-S3 BOX (english)",
+ "chipFamilies": [
+ "ESP32-S3"
+ ]
+ }
+ ]
+}
diff --git a/manifests.json b/manifests.json
new file mode 100644
index 0000000000..00e09f2e03
--- /dev/null
+++ b/manifests.json
@@ -0,0 +1,177 @@
+{
+ "unofficial": [
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-allsensors.manifest.json",
+ "name": "Tasmota Allsensors (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-battery.manifest.json",
+ "name": "Tasmota Battery (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-fullrules.manifest.json",
+ "name": "Tasmota Fullrules (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-gps.manifest.json",
+ "name": "Tasmota GPS (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-mega.manifest.json",
+ "name": "Tasmota Mega (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-platinum.manifest.json",
+ "name": "Tasmota Platinum (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-rangeextender.manifest.json",
+ "name": "Tasmota Rangeextender (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-scripting.manifest.json",
+ "name": "Tasmota Scripting (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-tls.manifest.json",
+ "name": "Tasmota TLS (english)",
+ "chipFamilies": [
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-teleinfo.manifest.json",
+ "name": "Tasmota Teleinfo (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266",
+ "ESP32-C3",
+ "ESP32-S2",
+ "ESP32-S3"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-thermostat.manifest.json",
+ "name": "Tasmota Thermostat (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-titanium.manifest.json",
+ "name": "Tasmota Titanium (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32-zigbee.manifest.json",
+ "name": "Tasmota Zigbee (english)",
+ "chipFamilies": [
+ "ESP32"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32-mi32-homebridge.manifest.json",
+ "name": "Tasmota32 MI Homebridge (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP32-C3",
+ "ESP32-S3"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32-zigbeebridge.manifest.json",
+ "name": "Tasmota32 ZigbeeBridge (english)",
+ "chipFamilies": [
+ "ESP32"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32-lvgl.manifest.json",
+ "name": "Tasmota32 lvgl (english)",
+ "chipFamilies": [
+ "ESP32-C3",
+ "ESP32-S2",
+ "ESP32-S3"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32c3_2M.manifest.json",
+ "name": "Tasmota32-C3 2M (english)",
+ "chipFamilies": [
+ "ESP32-C3"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32-bluetooth.manifest.json",
+ "name": "Tasmota32-C3 S3 Bluetooth (english)",
+ "chipFamilies": [
+ "ESP32-C3",
+ "ESP32-S3"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32solo1-bluetooth.manifest.json",
+ "name": "Tasmota32 Solo1 Bluetooth (english)",
+ "chipFamilies": [
+ "ESP32"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32solo1-thermostat.manifest.json",
+ "name": "Tasmota32 Solo1 Thermostat (english)",
+ "chipFamilies": [
+ "ESP32"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32s3cdc-qio_opi.manifest.json",
+ "name": "Tasmota32-S3 (QIO Flash/OPI PSRAM)",
+ "chipFamilies": [
+ "ESP32-S3"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32s3cdc-box.manifest.json",
+ "name": "Tasmota32-S3 BOX (english)",
+ "chipFamilies": [
+ "ESP32-S3"
+ ]
+ }
+ ]
+}
diff --git a/manifests_new.json b/manifests_new.json
new file mode 100644
index 0000000000..00e09f2e03
--- /dev/null
+++ b/manifests_new.json
@@ -0,0 +1,177 @@
+{
+ "unofficial": [
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-allsensors.manifest.json",
+ "name": "Tasmota Allsensors (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-battery.manifest.json",
+ "name": "Tasmota Battery (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-fullrules.manifest.json",
+ "name": "Tasmota Fullrules (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-gps.manifest.json",
+ "name": "Tasmota GPS (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-mega.manifest.json",
+ "name": "Tasmota Mega (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-platinum.manifest.json",
+ "name": "Tasmota Platinum (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-rangeextender.manifest.json",
+ "name": "Tasmota Rangeextender (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-scripting.manifest.json",
+ "name": "Tasmota Scripting (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-tls.manifest.json",
+ "name": "Tasmota TLS (english)",
+ "chipFamilies": [
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-teleinfo.manifest.json",
+ "name": "Tasmota Teleinfo (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266",
+ "ESP32-C3",
+ "ESP32-S2",
+ "ESP32-S3"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-thermostat.manifest.json",
+ "name": "Tasmota Thermostat (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-titanium.manifest.json",
+ "name": "Tasmota Titanium (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP8266"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32-zigbee.manifest.json",
+ "name": "Tasmota Zigbee (english)",
+ "chipFamilies": [
+ "ESP32"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32-mi32-homebridge.manifest.json",
+ "name": "Tasmota32 MI Homebridge (english)",
+ "chipFamilies": [
+ "ESP32",
+ "ESP32-C3",
+ "ESP32-S3"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32-zigbeebridge.manifest.json",
+ "name": "Tasmota32 ZigbeeBridge (english)",
+ "chipFamilies": [
+ "ESP32"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32-lvgl.manifest.json",
+ "name": "Tasmota32 lvgl (english)",
+ "chipFamilies": [
+ "ESP32-C3",
+ "ESP32-S2",
+ "ESP32-S3"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32c3_2M.manifest.json",
+ "name": "Tasmota32-C3 2M (english)",
+ "chipFamilies": [
+ "ESP32-C3"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32-bluetooth.manifest.json",
+ "name": "Tasmota32-C3 S3 Bluetooth (english)",
+ "chipFamilies": [
+ "ESP32-C3",
+ "ESP32-S3"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32solo1-bluetooth.manifest.json",
+ "name": "Tasmota32 Solo1 Bluetooth (english)",
+ "chipFamilies": [
+ "ESP32"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32solo1-thermostat.manifest.json",
+ "name": "Tasmota32 Solo1 Thermostat (english)",
+ "chipFamilies": [
+ "ESP32"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32s3cdc-qio_opi.manifest.json",
+ "name": "Tasmota32-S3 (QIO Flash/OPI PSRAM)",
+ "chipFamilies": [
+ "ESP32-S3"
+ ]
+ },
+ {
+ "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32s3cdc-box.manifest.json",
+ "name": "Tasmota32-S3 BOX (english)",
+ "chipFamilies": [
+ "ESP32-S3"
+ ]
+ }
+ ]
+}
diff --git a/tag.txt b/tag.txt
new file mode 100644
index 0000000000..a1d981e623
--- /dev/null
+++ b/tag.txt
@@ -0,0 +1,584 @@
+2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1
+2023-03-13.d.2ce93bddddf1977cc7c369572cbea6cf1221c923
+2023-03-13.d.bda32739a8d55f970f537435c12c4e36bb4f7926
+2023-03-14.d.52227b029477b338ef1a0dc986a154deff1c97e7
+2023-03-14.d.0d3302ad04adc9315ad78650257cc6021b08797d
+2023-03-14.d.1131ffada1e60234edb407e529d058e76bdfc0fa
+2023-03-15.d.da4a1db300a17fc2dcb07627d2375a12f94593dd
+2023-03-15.d.cc09ff21e1ddd6b9b92fac5fa9dafdd21fc5dfcc
+2023-03-16.d.09255d6373805ddebe5b4d6c5c81eb366ba2455a
+2023-03-16.d.d0f463761105ae11439bbdce1105f54494cbc775
+2023-03-17.d.9a3a479c4f20197f6836582860475f7534d62fc3
+2023-03-18.d.e92e115451e81c591f79bd84b86807d03f4f2f72
+2023-03-19.d.948a82d75e3f626e3c08a7a573c22f434f2a1e1d
+2023-03-20.d.59677d7e4a3c9553b8df4fbcff8748d579351d40
+2023-03-20.d.fbbb4eaf84100ef32f62f7d9f55024bcff1300f3
+2023-03-21.d.a68bc49cabff8239a5854c0b79c705bf062f28fa
+2023-03-21.d.b71968729f4cbceb9ac9551160ab15f6daf34578
+2023-03-21.d.d6ed4adcf689ba1a4df6d9e5614e2ce4c03e9a6e
+2023-03-22.d.ab03654e02c42fc58f03d0577833f7e90c9c9395
+2023-03-22.d.00c60450c6de05e4ac646f551f9043b5c009227e
+2023-03-22.d.d7370e72110e035c00e38636e22cf3d5845fe082
+2023-03-24.d.938399e086b544ad0817c4c60f1e881a38435804
+2023-03-25.d.9ae7b86efc7eb5fb1dbff3983e9a01d1fdf258eb
+2023-03-25.d.ebe308acfc4cac691078f5f2803fbf871587239f
+2023-03-25.d.a04c77138659c7cacb769652b3cefc71153a2a1d
+2023-03-26.d.215c9cc30f2bf87f9fa3de1e0bb31412b3b8447e
+2023-03-26.d.0f08a076580e52ec681c9bf219ad748a67ce2b5e
+2023-03-26.d.2afa863e54df160d19cb9f17742b4097c0b87ae4
+2023-03-26.d.bbdd8e1eda785fb9477aa90b399373e9ed64e066
+2023-03-26.d.25b9bef5978519af77a6ed5f22e66854de7c2c64
+2023-03-27.d.50dfd3014829c34dba78dffdc08e3b7f01c3ab6c
+2023-03-27.d.b321fab8680affc61c4d2818c8e6380e9151b2ca
+2023-03-29.d.3cbe3dbf8b4cb59a206e5de457cd89fa98ab7804
+2023-03-30.d.736ac74f538991d73f5075b3ace50e69c1d2b3bb
+2023-03-31.d.d8f9a920cebeaed5c6e2445de0faaf930c284075
+2023-04-02.d.6499ec7142a487cfe984059764d82e26bc134624
+2023-04-02.d.1c72afbc1ace519b92cb90206a5902cc9e72c7d2
+2023-04-03.d.96e5f0dd3855535f8b6da41d867d3085189e020f
+2023-04-03.d.d9353cf1e3c44cc29ced448f336adab54575f11b
+2023-04-03.d.b1ea413eae126270143896d98b7cca29bda66178
+2023-04-03.d.d7af0ae0772b187700eaeabcd7bdf53c7ddfe7c4
+2023-04-04.d.f109d6ff72a3dada2caa7c53676b5d02f3dc4fc5
+2023-04-05.d.9c6fdc7027a7a15cd986a3bdaeba2d48c86c813f
+2023-04-05.d.864c60c579f7fc4238e7e4d460093c87cd80071f
+2023-04-06.d.d8bdcebc786cd24d2cc3064f1afcf93de189a103
+2023-04-06.d.1a42320a16b01a5033548d3374500e5c56440a07
+2023-04-07.d.97993934f2acf2e2eff559223c5e39b8a905b78d
+2023-04-08.d.86be6c8a3da1f4bdc5567cce5bf9ecf9ebc8372c
+2023-04-08.d.52060259cecd1919bb6b1f8d3dc6327e92b8c835
+2023-04-10.d.506248be9967b7da36153df7844e7dcdee464c9e
+2023-04-10.d.3354e2acbfcff1fdf45ad19e68ddceeb6dcd5af8
+2023-04-10.d.44dad1245d6c34e1acb217cdbce45ffdab914937
+2023-04-11.d.5bf605340ca6c2a0592f2f66220e7b2ec1c61eee
+2023-04-12.d.6d9beb5d794428a32ede7ec5c6f7522c5bfa3e23
+2023-04-12.d.b8483dfb6fa5461ee83415acb63ce40641d936db
+2023-04-13.d.870874d181596ab3a62abeb91ec2a2f0122e2c6a
+2023-04-13.d.009e07fd074218c6f6b334adb2665322249dc180
+2023-04-14.d.8402f49d0e08eebe998a754aaf10b0e9a3fb170c
+2023-04-15.d.538b5a0aa65b7586518dac8719f952018949d38b
+2023-04-15.d.21c381282697c6a33c99af536ab4580ac8f23fca
+2023-04-15.d.0feba56d8e63d56005712aff3db4105717735033
+2023-04-16.d.3d0354b6fbbd139fe452d2f3b837c97398970942
+2023-04-16.d.2a8b859e37150ae6e2da450cf7563d845ebb64d0
+2023-04-16.d.96f6f69f13e048c97d24a263418826375c45eb8c
+2023-04-16.d.de45a7af26264b3fee6f33614665a4fd9ea55633
+2023-04-16.d.e2e142f2898dfa217da5d5aaf318f0fbe07e18e7
+2023-04-17.d.05f6bcf211a52848f89b6f2b85b7d6e00ad0e305
+2023-04-17.d.4bac940a407c68bca1c6ee2cc4d34bd7f0bb7087
+2023-04-18.d.eb40496e4bf347a5aa86d482554aefcf5d014df5
+2023-04-18.d.65eb9142a26ae596d4b47c8bfc95748682a65bf2
+2023-04-19.d.b235dffb291075c51730cac3e605ff2478b6f8ed
+2023-04-20.d.49d5356ea312db41101ec9a4fd908ddb006cde99
+2023-04-21.d.ca88aa2519218c5775bce10b8e3bab2efd6f30e2
+2023-04-21.d.112c254d54a535378ccca0beb46ed8dfb91d0ccf
+2023-04-21.d.d9eeb8bf57a63e28533be032d5a4378ad0263da9
+2023-04-21.d.045f8b4aec50fb5cf3d44cfda110d24513dd6024
+2023-04-22.d.a2b9574ec995ceffaa98ac82c5ee335185134640
+2023-04-22.d.f9e3b25c9b2eecce33a8129d519075126cb2f6e4
+2023-04-23.d.21bb822dec0cd13f8af66a532297cfa70db4ef7a
+2023-04-23.d.c1db67ce376ae5bf93c8abc0092632cbe595157d
+2023-04-24.d.763a8671ab320dd16856da7b8275840a1b93de7b
+2023-04-24.d.fba15dea717b98258b0ad5313beac60ad0eac9d5
+2023-04-25.d.39abde258393321f35b9adc78b2c2fcde3dd43de
+2023-04-25.d.c8318248bb7d853104e3c288e6c8ba9cd33eb24b
+2023-04-26.d.afbdb3d54f29b5878a452d3f976e2031c1698173
+2023-04-26.d.ee9d086abacbec1d9d0d4d5850212661ad0656e3
+2023-04-27.d.60855bf367f7ee62cf22196e700f606a1dd72160
+2023-04-27.d.e4e2fcdc6d30574e5d924e0174d5ef58d0c0906c
+2023-04-27.d.c33472d9b63f93b0fb425bf6014eefe2a9fd7419
+2023-04-27.d.53bd49ddcd0164947e7432e3528596f6649df8ef
+2023-04-27.d.f86bc7d8ab612588bde1b8976696a0cf9a455b29
+2023-04-28.d.d206de52f11780264cc5401ae5173fbc1ff0955d
+2023-04-29.d.c5612a50fb85bcffe84b2ebcde3caafb334bc4fc
+2023-05-01.d.cda2bf157dd5dec61a5621e220321d21d1e3784d
+2023-05-02.d.c498995f7902a3c2a0f771531869269bccd7326d
+2023-05-03.d.ec00f0f7e2ead311de113462e20b5995aa491ad3
+2023-05-03.d.9097f508fd49bf1404db28999d78c15c4d6b67ac
+2023-05-04.d.13de7a486348e5cabc764b03682fa6f5f4f9bdb5
+2023-05-05.d.687b26ad1351cbd10285e783e2addf663194e203
+2023-05-05.d.08ce63863e6e4a36a4c2e15e791f7765d76d32b4
+2023-05-06.d.8b2539a35a26af2744a0225ff7ad3fac27d8d0a1
+2023-05-06.d.b9464a21a8eb064264888fe2c5cd1c689d932115
+2023-05-06.d.e9d1e8c7250d89a24ade0c42a64731d6c492bbb2
+2023-05-07.d.0287291cd9fe2be7938e31339dc46544b6b37747
+2023-05-07.d.a46b926530616dd7f73ada91c50bb1d1f1c6ad4e
+2023-05-07.d.519ea557c7f6a10b274391d828822a5e8b09e3d8
+2023-05-07.d.da5396a080bf46a182704ca5a101addf5d2cfedb
+2023-05-07.d.c42f9595203d1b3bc7a18217a2751c53015ecff5
+2023-05-07.d.ba9c7651a785d393a66b62bd4deeb17e596871d3
+2023-05-07.d.ae6d435aaf94aa2e2f2d6e890ec57e931fd248dc
+2023-05-08.d.45eb82bc3fe01d4ab32d1a105f5e20c61c82db3f
+2023-05-08.d.faff39ca11be659c28db5fe92ffecd9027ae1832
+2023-05-08.d.ffedb96702ab65d17746fd9b1ca4de4a890a6ff7
+2023-05-08.d.4cd1136f4c3a3a8f04851909edf057ade9f9f789
+2023-05-09.d.652a8edefa670223a17278eef1d7725d3cd1fcaa
+2023-05-10.d.3a6cd9b63c6bc3fc6e69654bec1901af5a9a3fa9
+2023-05-11.d.86979646fff377a0acfdd88b1c7e1d202f97a5a6
+2023-05-14.d.9b8f3b6b4c688323a5fa722e5a46a89967d69a65
+2023-05-14.d.951b9b4682c857f2c37a3695e5dc67aa7186f9ae
+2023-05-15.d.81d7785f66de9c0540f96c3ae2fbcbd8825db9cf
+2023-05-16.d.f8b26a90f6c09c2575e7311b9552c8821478e540
+2023-05-16.d.0385204ca781e0d041a0c2f6aa96012c2cad101b
+2023-05-17.d.4d131fd543f29f9a8c4f260ac54199a6e38bb896
+2023-05-17.d.57f85ae4783c0ba64d8833e86650a908b4badda9
+2023-05-17.d.d48c826d420b7e63aed38fb4459f7d45d560cd56
+2023-05-19.d.77103baa0a31cbe953d8300bc76cc91b94a5a640
+2023-05-19.d.4afcdc11d628f060ca2a7421a02c3f87905ec9b3
+2023-05-19.d.f5d6578fb5efe2123aa78fcbc9140401c0a069ba
+2023-05-20.d.63a83c72897b69708d52782e8ce5d6fcffdc50ec
+2023-05-20.d.d5ad79985bce8d32c86a8f8f189417d31de4da5f
+2023-05-21.d.a76ebaae48bc7ec573fa277c1c9bed6e810b2607
+2023-05-21.d.ae518424bc122c2800ff21e1849d387eeabeea40
+2023-05-21.d.a39d1eee0e412d981da71854dcefda89c78b4b7e
+2023-05-22.d.80afc8793f63cb4aa2e6e78727e1839c674d3c2b
+2023-05-22.d.9a88677122da9dd7c3dfa7c2d0e1547e08fb68aa
+2023-05-22.d.fd7b18a11ff7f39812d26285afc0b036b25e0e7f
+2023-05-23.d.b715f03db651ca4ef22f03d791d8e241769602d5
+2023-05-24.d.4be618fe7b6d3d4eb22870b89ea494f0884883a0
+2023-05-24.d.fc67cca8b42265c909b2d84ec6e906d511e6f7b1
+2023-05-24.d.d0e88c9dae9e6382d15714a5e7c93d5a44a7f62f
+2023-05-25.d.75f634dc71e2ca9fceb6ed6b2ef5979fa5843a06
+2023-05-25.d.e05d75248e0444b0966a0b4d1803c4512e787a44
+2023-05-25.d.6fa22aae6b1b2a84fef6d592b1aebb0caa661091
+2023-05-26.d.e87714dbcdb5e03a70384a329ed3ea8095bcfb89
+2023-05-26.d.7f8f75d19694cce58d727095d63ecb8fd23826b4
+2023-05-27.d.d91e1e8bcc0a8d67636fdbb39e17656041ef7ed6
+2023-05-27.d.7b55e1aca23aff2089a4af6afd7522114d92b9a8
+2023-05-29.d.b053cf87ece5eb14b013c51ab457fe372d5a153c
+2023-05-29.d.8e741052b8f8db722fdc52f228575d578fa25da0
+2023-05-29.d.bf2982854bc1e243debdc7933b8597603048b12a
+2023-05-29.d.07b7a7ee9a5b1e7d5ffbb676502431293c69b6f3
+2023-05-29.d.83e47fa4a8018199cb58135498721f87830e09c1
+2023-05-29.d.83e47fa4a8018199cb58135498721f87830e09c1
+2023-05-29.d.596482284cab41ae04800cf0f548347619c6ed6a
+2023-05-30.d.87547657ec1ec5d298ad95fb6c7cdbda59a120f9
+2023-05-31.d.10821b7e2487f9f543c11ae15b9252525ebf7a2b
+2023-05-31.d.74f9973b8b703731a50f56b72f2636edf0f68bfa
+2023-06-01.d.b9d855ef79e8634d66f513dfc2892ddeea296f34
+2023-06-01.d.9d57a19be3b2d48acb2885dd8435cd0bc204b029
+2023-06-01.d.55b109de68f25206c3d56bba54ce9cd76eea7d9f
+2023-06-02.d.4e7475dbd44ce1ec861869815a51721062b9bdaf
+2023-06-02.d.f8df9e5f00f12f9ff383fa4484965ff92fc2f992
+2023-06-02.d.61f17221d0b1eab2b7a3228b1e5d7142bae668d7
+2023-06-03.d.6fdfdb847597f91086d9fb5c1fa0593c63fd6d2b
+2023-06-04.d.844caf51f9dd9a426b1274ba8300516db932f03e
+2023-06-04.d.844caf51f9dd9a426b1274ba8300516db932f03e
+2023-06-04.d.31b93f8d4820c51431911a97d80bdfc34c334c0e
+2023-06-06.d.a0a1b89dfbe43bae95df0c307d35e994d7bcea1b
+2023-06-06.d.18c2bc8320e7cdd0e0e8709b15d2ead5ec3c6e42
+2023-06-06.d.5c3a6d9170f56350fa867a2ed2ab8d7633733734
+2023-06-06.d.73c48ff5f0b3a1c07799196711ad59a60f9cc667
+2023-06-07.d.5a8f13d57ffb63efdfdaa01a578f46af63cc321e
+2023-06-07.d.f572d93ac6580f8f45147a2ac1d72cd82948deae
+2023-06-07.d.4ce3e5c544cc4577ba998646e7882ad2e71c8089
+2023-06-08.d.2ffd4311c3afc4a3fa30e4c01d43aa8994a0697f
+2023-06-08.d.ae67c6cfa1cb793cb35b4a8d4ac314a27aadc48d
+2023-06-08.d.676165f3f6e5b62201c422ab6ca3c1d216a1c79e
+2023-06-09.d.fc92dc0995b9f430725f8d41babf590de4b20975
+2023-06-09.d.6aed929e17d6367cf48e046994881d52b17d8be0
+2023-06-10.d.63cc575c8b3a0af4254e3d7592a426a50f78a8fd
+2023-06-10.d.2f616eef2c0b414c7683b69b2218ab76dcad59fc
+2023-06-10.d.827c14e4bdd8d599abd43e7bc52898188a63ba3f
+2023-06-10.d.5cb9bae72c1297a7aa415efa96d1e4a3a472503c
+2023-06-10.d.5da84c52ff696203e2bb004b503816cc2547e5d5
+2023-06-11.d.a014f5495b406d03243f56cb59c2779af0ec3191
+2023-06-11.d.c88bff5a4698813ce37435af6a00d07435835c02
+2023-06-11.d.badf064ab4f490742f379d4fdd604d9fdef16404
+2023-06-12.d.ae773895f83083dede1c180e5941cc517ab9d920
+2023-06-12.d.bc213289cdd24c26f801cab10b6f1a0c26cd835f
+2023-06-12.d.69b2b93d611b3f1a64cd039d7dea1313318445da
+2023-06-12.d.69b2b93d611b3f1a64cd039d7dea1313318445da
+2023-06-13.d.558819c7488e4d67c2f2ecb05ab46601024af070
+2023-06-14.d.bbd6fa7202f74aac61dcecfac602cecbdc4dac2c
+2023-06-14.d.156a3551b0f663158c5723f12ddd51c5ece6d00c
+2023-06-14.d.bd6aff77f7536edca6e9532c7d4be796ee246389
+2023-06-14.d.28861821a684886637470b0f7a7603ce902843b8
+2023-06-16.d.3fc932d38aa56cf58bb348d6623facf8e75e2a62
+2023-06-18.d.4a3b6457ca4c21f587f2e6de7fca2ab4a9130e07
+2023-06-18.d.5059a11b9f835cf3c452ceafc47722fe07ae377a
+2023-06-18.d.d5c727129ed071557b383f9bc65795edb3968f1e
+2023-06-20.d.2d515dc91f7a8ed26b0343922c0fb4a19cf97581
+2023-06-21.d.635e240293e18eacb79c49a8a0e91e4f2375b4df
+2023-06-21.d.1a460926f61443f7328c50e26f08d6ebc1e9583e
+2023-06-21.d.325ceef839707a51daff1ee9b06aed5170b51649
+2023-06-22.d.04521e554223811ec12a4b77eb32a49a57bd4877
+2023-06-22.d.85f357096a94aea663a538efb202076c700a48b2
+2023-06-22.d.bf36868813d1d5e2b2e479f97b96ef7f71a6aad3
+2023-06-23.d.7d68c55b380c2b317fa6b77ee64b59fd6eb1721f
+2023-06-23.d.5792dad12bb56f3cfb155f5f2c55b977074a6145
+2023-06-23.d.0ac5d0945b6d1d8a1cacb5bf3f9d5cd360180093
+2023-06-24.d.9a3d3988a2ceeaf35eab30b8bf42e238049667d9
+2023-06-24.d.01abf97410f5df22468f3d59c376e6f00b08c0cd
+2023-06-24.d.81ded35a2c9506fe4da5210502f552e1e32a58b8
+2023-06-25.d.89a815f196061278baee61b78d27bc0c6d575e8d
+2023-06-25.d.3642d8ef37faf406cbf1b6fc1093de6997941858
+2023-06-25.d.99a0f2add16c459f739be034fd2b96cfe91da489
+2023-06-25.d.30a65edd7abe56021b5222d2e73960005f3e9647
+2023-06-25.d.090a4bb4b523ff8735c6384a3c5b01a9b3b86bb8
+2023-06-26.d.b53a161106fc8498e12386552a05947e8d8e2d3a
+2023-06-26.d.d9a66547aae9a5058cdf53f782141b37e0c46073
+2023-06-26.d.0930bbddf5d3c566b173fad54b7fbe2bc8d557fa
+2023-06-26.d.7892a3879589cb7c9aed6409baed1dc6504f273a
+2023-06-27.d.9cf3d16065e37c320ac624af14a8f03b07c1497e
+2023-06-27.d.694bebb5741cbe276a43030e96306990d9faa0ab
+2023-06-27.d.b9588e6192a870e6483469c1c102616e3f565b25
+2023-06-27.d.1e19e13c6f0bec007d41586c80a8b923763b65f8
+2023-06-28.d.504b51a9b4d74a8006bc6da2950770f5647868ee
+2023-06-28.d.952811b4eba64770aca3e6b935b92cd690ddd1ad
+2023-06-29.d.c303c80add230258827f64d471a6a8b0e3b3bb97
+2023-06-29.d.48e1dd4d7fce82400db90e5c49182e1a03e6ea0f
+2023-06-29.d.ef304a8ba84bd7900beec5e192305bc03a4b24d2
+2023-06-29.d.465ae023ab65d45a9878a9088a22ce843424c54e
+2023-06-29.d.ff865d8005b287dd7dbc9c75b118a57a82c0a114
+2023-06-29.d.52392a2b48131b209ff082ffd7d3947048236f10
+2023-06-30.d.ad404dfc0c86d0463ce771ecd730b36ee37d2d02
+2023-06-30.d.ad404dfc0c86d0463ce771ecd730b36ee37d2d02
+2023-06-30.d.2705374160bb0cd6f2c14ea9fa2d9093315caf82
+2023-07-01.d.3edb5bb0964e92a9000cafd8be950974b94067bd
+2023-07-01.d.85aed3a17de1cb74d3f147d51a7fa5cfecb713a7
+2023-07-02.d.7cd2d78b2611e5b03e6f5b43ea3a276995b262a2
+2023-07-02.d.d72f3b99782fb926e0fa57c62b914cafea9c2478
+2023-07-03.d.8f06552eeeedda4e8ac694e327d58b10bfc153a9
+2023-07-03.d.cc55cf0bb18af44f3a5eb184b56d4220b03bfcf6
+2023-07-06.d.4c0535687f901d4c8dcab5b7022d77dbb0a1a84b
+2023-07-06.d.dd2dab4609de7061ccc66a823d22a615badde81d
+2023-07-06.d.f462fa772dedc5dd228e42d3e5f9963163037e9a
+2023-07-06.d.57c4825ccd1ef0f34defb4161f4559fc0065f336
+2023-07-06.d.5c9c4e6dad2a9156cc27240d331a0e68bf024878
+2023-07-07.d.d9d9ca2651363ac364f720403657e557e8a0efe8
+2023-07-08.d.7afc4865e191474702c32c3b8079d90b0b9ef4c7
+2023-07-08.d.0502c15ce34c230d0b80bd178fc2e54be7871ee6
+2023-07-08.d.05d589f2d74256419bb74688f08e721ebdcddaa1
+2023-07-08.d.8d161d04f7dbf0b42c570f24a5f3114840d73bc2
+2023-07-09.d.b7c9182c1433a31ff68b4d4efc2ef11ebfa1d78e
+2023-07-09.d.fcfc3ecb3780983fe5106334096849747ccbe290
+2023-07-10.d.b1cc87d24f9eb8f5dfd7836307cc040038d11d12
+2023-07-10.d.43bc81010fb7a042a402355214981b2879d2bb02
+2023-07-10.d.cefd42c820ba54da24dc3443fc85614b42153fc9
+2023-07-11.d.8c31acd3769766ba8528845c38baeb91ef2b5f65
+2023-07-11.d.889e6ea54d8541ba713eb305d7d15d7695abc5e5
+2023-07-12.d.5b6a25a7a00791986a1a0596f4470b933e4e2697
+2023-07-12.d.9638beacec1418b2d18d97a3fe0aaf148f3ebdba
+2023-07-14.d.ebca2f0a075b9635883572307253bf1f1c60f293
+2023-07-15.d.ada754c582ed835798dbc66e023e997e2059e0a9
+2023-07-15.d.af27d65a8a0aa57d5258679928aa2220d94e44e0
+2023-07-15.d.0c0ca82198fe7d5fba650d0aaef9b8dc7f6c1cd8
+2023-07-15.d.ca8ec6a0066b3475d9d411c380f195c134569743
+2023-07-15.d.315fe36727e2089f67d970acdb3cac0c872aef0c
+2023-07-16.d.f4ff0010af0a12d13f2745bce303f794ba387094
+2023-07-16.d.410a6b99d9c7c8155f89cf1cc64fb0335f756105
+2023-07-18.d.6382c2806cceac90c6068a613545ded9b9ec3728
+2023-07-19.d.3da5124348958d9cc7f4669fc27edb3f15b7d014
+2023-07-20.d.d1a4296867fb8d48d06de1f05761fe6db2f2fe20
+2023-07-20.d.2cc0964a5fe0dff8ba0dcdb8d51ac6ebec77fb37
+2023-07-21.d.c7a22f175b11da35aee55146a30401f69d883c36
+2023-07-22.d.bc41500d9c4045a66e4a240b72c0b717c221e7c4
+2023-07-22.d.421c95a51bd9bee13667e20cfe26368b8c392702
+2023-07-22.d.6d3aedcafe6851bee060b860d25b563f5bb8f6a5
+2023-07-23.d.31c3555d4de1f91f22ff721efb0dc0e25b27a2b2
+2023-07-23.d.994c105bdaa4e55ef62add32da30af0bc74f15dc
+2023-07-23.d.c5be85f4437333bab6965649a0e16bf122933ec9
+2023-07-24.d.f626539c1845175eef43e36ae18de238f31da1df
+2023-07-24.d.17cf73595f77b2d1bfc0c767aa301098d4b7789d
+2023-07-24.d.978a21240cb98ee06912c51e9b41d2120ba543c7
+2023-07-24.d.3b9ae4c553f613b7de14423f201a07d28ae1a983
+2023-07-26.d.9f16f09f29548c9e86a23906c4a31fea14b2cf67
+2023-07-26.d.11f056040ed72bc41464aa9e549b02a92749d29f
+2023-07-29.d.fb45e73384e9bc2f260694489a99dae00c271be4
+2023-07-29.d.2e9cd6a57d76c0272481117f0e65c8d179ef1976
+2023-07-29.d.2c15cfe4da37610a52095bf55d487fbc3c4ae025
+2023-07-30.d.355b1e3b746fc89cfa657a8fa1442dc520c008e1
+2023-07-31.d.80617e96e1238a57bc3f2df1ecaae0a64e3e0963
+2023-07-31.d.222b47627f9cce81733ed10c79d8beb4516266ef
+2023-08-02.d.58fce333123c84cc8e027815a4259f1111474d2d
+2023-08-02.d.76662ab236d6fd4b267f97144b228666cccfc38b
+2023-08-03.d.39643611d498ecadd612af312b4723469888566b
+2023-08-03.d.b6129f2ab7a6a28dbed56946dac066ec6bed82b8
+2023-08-04.d.7736ba8af1c073bc8447edfa3b134f84d2dd4c87
+2023-08-04.d.e2c79b45e4689af88ba2b0c04947e934cdcf2912
+2023-08-04.d.732e4106b83dcd075f9d4e3b18c47faabb3c84e1
+2023-08-05.d.70ced65aafe744a18970cda30c228c210ab73551
+2023-08-05.d.fc798540b7dd717760e9d0fdf38aa0d4ada43946
+2023-08-05.d.7c3c3855c4a30236da538863d38193891a588509
+2023-08-05.d.e52c6105c6e74c7cbcd924195689d1e45748aba8
+2023-08-05.d.0b3d6fd146722eb92c57f5a0855facbac0a98be1
+2023-08-06.d.7488ed03f0753f7608968e49cc9b904a64ece94f
+2023-08-06.d.76aa6747a5058a7804e4033bfd13c037a3847353
+2023-08-08.d.c3fadde3e8aa16b0de25b18587c16cece553f7aa
+2023-08-09.d.bfe0857094211a4c0c7084353be076d908d79bf5
+2023-08-09.d.d85557711d176100b293d6e203a8ccfa3286426f
+2023-08-10.d.7544d2f23c52d79a93052efd6c1803974304e375
+2023-08-10.d.314af22ae3bd41a55b4d09d5f6831c219809625a
+2023-08-12.d.df1a526f028e9599d9a5e4399f0bbdc503363f80
+2023-08-12.d.f40f4a1947f0a1f8004cae1f7d70a03201bfcc7c
+2023-08-14.d.7d18dd0e9e5d46f880cc3aadc7bcfd6d2fe16c22
+2023-08-14.d.2710693453886bb23e44affe8ed5a83432d74998
+2023-08-14.d.fd46fb5acaf1da31bd845ca894c990ffe2a90137
+2023-08-15.d.be88e701d9e5e69d5aafa3c376b4233f3adbb727
+2023-08-15.d.d9530f32a66e29f64a602354a75ae30f05bfb3bc
+2023-08-15.d.53819a146505caf3d89e3b6807aebeb61d37f5ba
+2023-08-16.d.aa097e9034cea4cf7aac171e842a06415767e165
+2023-08-17.d.b8804cf2a8fc85b2235d18d4921121ce4c487722
+2023-08-17.d.2eaa0fcb67c0c7e24c883c625c74091c8d7fe8c8
+2023-08-18.d.7927c989c4655cdb5aa961b28d4c2981333714c8
+2023-08-18.d.5b3b2a7a62c8e8e50b1efb1e876ff7d642f3afcd
+2023-08-20.d.0acd5335d52e24eb319eb029f3ea22b5d651b1c0
+2023-08-20.d.eccfbc334ceb8627487f588c7d30fc4680b3637e
+2023-08-21.d.37a527696a040e7af0a3de1a3534f37ed93da7b6
+2023-08-21.d.dc68232f421aa1ba44ea446cd170847d491b1218
+2023-08-21.d.dc68232f421aa1ba44ea446cd170847d491b1218
+2023-08-22.d.c9b5e5ab1f35139d9182fd77df8796b2b5dfd2bb
+2023-08-22.d.ca14dc550744bbd6fbeb4e340ca9bfc71b063643
+2023-08-23.d.fe6a0fd7b0bbd70a07934c1d809dfb1d11a2a41f
+2023-08-23.d.0d80e639efc171625b0153bfdbae88ba12e6b467
+2023-08-23.d.8861e779e3d7b309860ec474b4fce61512ac8960
+2023-08-24.d.65a1a4feeb85d30c450e6c124b9cdd9aa815cfe4
+2023-08-24.d.d1e85635e3bdc48fbd53ae45995e134385cc2575
+2023-08-24.d.75e4a4654ca5e3e7df724b45511c51eaa3a7495e
+2023-08-24.d.312bbbb7b6082ae028a08ab866ff5a1bb0f31f8b
+2023-08-24.d.c4e57e49c242666bdb5707a865eb2e4770e35686
+2023-08-24.d.d340c91cd717f4d8cd2a9769e919c25a473c63a0
+2023-08-25.d.87735fb23226c99a50283044e65739e510d50672
+2023-08-25.d.b1fba92e87ee3fd858d94e76cbbed0d74b5bb568
+2023-08-25.d.343618411c00ec496a1b26ab81e461557ca38009
+2023-08-25.d.16b1c5577a60dde78d43b4fed41271de16e5a3e2
+2023-08-25.d.7f24d2027f81717bcc42807fce3625d157e14b00
+2023-08-26.d.4ad30705580e8b0009cf8f67f9298607afc940b8
+2023-08-26.d.ab94b16d8dfb692820f317d5431cb661812ba3e9
+2023-08-26.d.3ed1bead44a3146b2eb109b5ebe26ea819b6547b
+2023-08-27.d.dd8b85282a29c115495eb1eac280568b89fa68df
+2023-08-27.d.23d6c0f5d5f2882a3c744669cdcbfee832f5ab52
+2023-08-27.d.5395b8c4bd76550a86cf97fbc1fff676b3864c26
+2023-08-29.d.34a26fea2280fe31f045d210046b349cc928ab02
+2023-08-29.d.39083b6add93df27b3fde0976b386e7a67df26b1
+2023-08-30.d.8e8e019e0fda0ed756a7626e9e3e5248aa33d14d
+2023-08-30.d.62c36a49b3109ba942d7901c31dacd9af80067d6
+2023-08-30.d.1e57419e713b69780a6e259139da6a969c22ffcf
+2023-08-30.d.2872e1b3792b32f59d4a853d1bdeba5681a745ea
+2023-08-31.d.33018759833057f100d3d36b745fb91172ab1ef0
+2023-08-31.d.2bae1f4368fa44f5c2dd1b9061c7a8901a3a2401
+2023-08-31.d.48cf04db3a94d89d101e019f926ad07f67a76ed1
+2023-09-01.d.f7c4c16a9c5973746021a024298534b7d1794b59
+2023-09-02.d.f4b3574ed4dd34c78ed48a06953068e14dc501f6
+2023-09-02.d.4f6afbf8498588125e3d9fc2482c7aa57f5efd17
+2023-09-03.d.262c8b421bf7fc4f6d4dd7811105ee0f5de25dd0
+2023-09-03.d.8a514a07580ccf3c45c8d45873befeb11249f79e
+2023-09-03.d.a781ba3fc2bfcb07f1884c67d46ecc5856d1a57e
+2023-09-03.d.fe0423c6cdd77e589367b7cfeb58e4adf2e3b337
+2023-09-03.d.c6938e2048fb7a91ad4bf987717d822c8588011b
+2023-09-04.d.434da4a62ae32260e158a87b17407169361c0609
+2023-09-04.d.1ea12583d1c9c9947013a94b05ecbf5cdd9726c8
+2023-09-05.d.3cd7950d3b5dd19a7819170d1f61e13be2afd508
+2023-09-06.d.1c6db35d96c184cd9018cc4c0a6c7d5795f36a08
+2023-09-06.d.f4bc7c34c6387a542320cb6f5f32dfb612660b29
+2023-09-06.d.f7775b5194f036ab7931d52bba4b6782e5306f6b
+2023-09-06.d.41006822973d50c4f1af9e4684b9f24da98123f8
+2023-09-06.d.d9acd2adb0697da17c10fbbef27e0d9b70e0eeb1
+2023-09-07.d.7726f1eef430d7c64159ae14d058c0f1781b33e9
+2023-09-09.d.4cc81f0dbc399bb01263f41ac671cf28fad71057
+2023-09-09.d.4c6ff44e420de991bcb12d093c85e20e25552125
+2023-09-09.d.0e6a0124996f212550c232a5f3ea0378ae7acab6
+2023-09-10.d.ad00d9ec5bfe8323c5a5aaaffc9d0dcb5a2accda
+2023-09-10.d.728b1b2d369ab2dd943dfa62140942774b0274aa
+2023-09-11.d.16aab339e788c4841cdd7231836f8192cd3be689
+2023-09-12.d.ee43b43add9af833871a09fc4b3068a13358e9f6
+2023-09-12.d.088ac1815b2e71f80e4d1780753bcdeaacad0991
+2023-09-13.d.cb4671ee8833fbc695c3aff36ea92cfe1c223e9c
+2023-09-13.d.6d0b2f6bc38d62698e229a5fbe0ec917cffe7c34
+2023-09-13.d.f9bfa1c41bafbfd1de932c76391db95ce64bcb49
+2023-09-13.d.860e12b88a9118a2c14e0a72ea8871b8ae5a4218
+2023-09-13.d.156f1988b211402e7128bee40274660fc2be3c19
+2023-09-13.d.2682d82628186ce10525e81963d50aa91f9a1085
+2023-09-14.d.81fc4e336b554a3cf08628d420cb8570b14e8af6
+2023-09-14.d.d595e646007f07967441d12ca485291baa533ec1
+2023-09-14.d.e5916337ef4f83ccfb8bb110a5e75c72fdc75b70
+2023-09-14.d.d6f0b7595970f03ae22d6ed4194308b460630391
+2023-09-15.d.d2aee662fdb8dd6f4d4c56c972e30b8cbf484939
+2023-09-16.d.141a38191af595420e19fb7433a0f6eef1f2dbb1
+2023-09-16.d.ed33d61ab73efa1719567a85ac317730ffd6f191
+2023-09-17.d.2d0339e8bf2b6d05f634f179e6920ec9df3ecbd5
+2023-09-18.d.d6a9eaf8aa32cebcc7d86b9bfa9cb3f7e4756e91
+2023-09-18.d.aa4464389f691bf98645b6f0b3b08deaa1780972
+2023-09-18.d.ddeb380a19f7252bf5d10402222a786f1d1d82f9
+2023-09-19.d.ffd09da89a80d72d39c55bbcda08c3fba195c9a1
+2023-09-20.d.f8b5a38dc9df46a5c02ff9fd58d1112cc41196bb
+2023-09-20.d.fc513af351e43d06bc3675e0e54946896448fc55
+2023-09-21.d.7de25acac0a8ddd171dd6a745bde377fc2d5d4e1
+2023-09-21.d.257112e2a787bb73ff1457bc33b2d01334d5b404
+2023-09-22.d.7a75eb7021d7321cea5f5e7b9207f6c448a46599
+2023-09-22.d.3061b06f3b57a226022ed421e88d75b736aa7055
+2023-09-22.d.63fd3e753a1ff4598d699576cee469f3818551e9
+2023-09-23.d.375c825d32325f02150aa7d8edb02e328e35ba3b
+2023-09-23.d.81d287a3b0fead9c2dc00c4b4b7dcd8a15a620ac
+2023-09-23.d.9ff65d76ccfca3467e716014fccd4200cc106e70
+2023-09-24.d.0d7c2dee721738b3838031a2567b04ab1e53468e
+2023-09-24.d.74900edc96bb8d5b615c26647aeb2c77946a5011
+2023-09-25.d.0f6b59f67e45c4b79b6f8475c36b098d8fd2e81d
+2023-09-25.d.0f6b59f67e45c4b79b6f8475c36b098d8fd2e81d
+2023-09-25.d.31e56903c502de1ce315afbd913a057c9d42051e
+2023-09-27.d.955d2d86dd4002b373d4471633841602e377f988
+2023-09-27.d.3bcdf9487d5e59150bc78471ef145176e9af5b66
+2023-09-28.d.d79ef1bb2ad92cfa883960a9037c463bdc86f9d3
+2023-09-29.d.335e18e8cbea52de200c573686a5ff47d6a75e7b
+2023-09-29.d.f0b79844661c8aa9d93e27ce2e509c86b80aaaef
+2023-09-30.d.f0b79844661c8aa9d93e27ce2e509c86b80aaaef
+2023-09-30.d.d1c643a591857bfe28ab044755de5df622ccccf1
+2023-10-01.d.2e0c958b9795c82df3c63743e98cfd074ebbe7f8
+2023-10-01.d.0be4613cf95e733939e19819cca356460bf84eea
+2023-10-02.d.795a194d6552a6f799cad87883976cf083723d8e
+2023-10-02.d.86deee4e85697c606ccf5b96fb9a4393b643a2e2
+2023-10-02.d.2ad6353a2dda459fd40b3b56ca904c037da0a23f
+2023-10-02.d.77cba731b91ec9cf8dd88b2046e0efff9791dee5
+2023-10-03.d.ee7e3cab150bed502fc373b5847ba7979227c689
+2023-10-03.d.58d43333f5d22a43e6a3b3477e81816463ddca7a
+2023-10-03.d.e32c39f21dd1cd45c34b28a0922e173736535e5b
+2023-10-03.d.473a8ee99981545c278acda031ce879a720b918b
+2023-10-04.d.99df8edc2dee3b311c5744852d3f9c5b725b4f04
+2023-10-04.d.d96ed15e95d9e31b839d3bb78bad30bb98b64160
+2023-10-04.d.9e142c1d3c2afc2613ef7a7e2f6d1b8d75874660
+2023-10-05.d.69a3573f7ec2412e31d0b8b0dafd3dc8808999ce
+2023-10-05.d.11aad19800ca8f534ffff5abf1955211b7f15a01
+2023-10-06.d.c5c78f45d00a0e0dafa706db11dc18ccfd384ceb
+2023-10-06.d.21ac018d70d87670c050df236f19504f8d9ab000
+2023-10-06.d.74bcbd898e07c4612abc4fd19dd34d78298c32bc
+2023-10-06.d.bf9c5b86c6f0d5bc7f65fc5fd0fc525395284fb7
+2023-10-06.d.23a3c3396815efb0af3866359da6701988548365
+2023-10-06.d.906a12f21d855b189d6c8cf20b05e7b502b01773
+2023-10-07.d.cad9d5fdd821885adcd20fd67bf071331532bfd7
+2023-10-07.d.6bde92eef81525ca7e38a811d5bbf67aa4489144
+2023-10-07.d.8c6788c6bc88fff1349f8ef22e499012015759bd
+2023-10-07.d.c8679df3ff5185b5c094dd6421f539647ac19eba
+2023-10-08.d.9fbb4a8b0b78ed7f414a9074bc033fae378e3c26
+2023-10-09.d.6bec09b23fcc3297ef056b9106471e03e4048e5f
+2023-10-09.d.a1cce95c08036c2ab6d874eef7fe8d91bbd9513d
+2023-10-09.d.39e0cf574d02e19cb7adfe7a68d53f93715ef4bf
+2023-10-09.d.663e6ab21b8deffa892950ac37acbf97a68b50bb
+2023-10-09.d.663e6ab21b8deffa892950ac37acbf97a68b50bb
+2023-10-10.d.b5d11091631fca031c41156c5b589610e09f34ec
+2023-10-11.d.4eefed79ac27be72605bb2b0cb822ea9704f3ea5
+2023-10-12.d.a3dcbc666107c632de88d4e340c289e4a31e94e9
+2023-10-13.d.32cbd330aa760691440ffcbe08a0dd56db479035
+2023-10-13.d.5cee525d022e9a387a9de9ce5ae3f8c5953333a8
+2023-10-13.d.0984c018285709b9e45bf6fb163004ca30abce9d
+2023-10-13.d.17087d1b08f77c955d2ffae6c435415a0bac8233
+2023-10-13.d.2950de0016e6d4e34bf1300ccfdde4e54a0e47be
+2023-10-13.d.67deceeba840c9e33515b3c9f2e389ab126fb42a
+2023-10-14.d.7e6267313b91395f834eaa8c990a644b7cb1924c
+2023-10-14.d.2d1ee3903ab0a8a2cf456590ee34fc2a1968346e
+2023-10-14.d.baef3eed91f40a027ef70a1b4baba2d6e3108819
+2023-10-15.d.715b64dc2821f4cb6e03404118ec49b8afa33cb0
+2023-10-15.d.715b64dc2821f4cb6e03404118ec49b8afa33cb0
+2023-10-15.d.56314e5423ef966607aec0da5bee233b5a252733
+2023-10-15.d.124fbf8dcbf4a062a78d51ba7e6f11951fac705e
+2023-10-15.d.d3784a26ab8ddf91394170545133c4cf5798fe5d
+2023-10-16.d.91ba05ac3b3494cce7157654aec8af6e6f81e622
+2023-10-16.d.a04995a3f4106472ac2e0c7bf78073068b82d576
+2023-10-16.d.367768b00e0d10042e40272d19730171a79133c2
+2023-10-16.d.b8988d91a0ce27ca8771358d765bb9fca423acf1
+2023-10-16.d.d05d76b4812dd391e3b366814bd8ac9c3c49bb51
+2023-10-16.d.8e9299ec9757a85b4f21dbcd801c603173e99b8e
+2023-10-17.d.82858616f678c513f6f7ad553a7e7c1ed334fe2b
+2023-10-17.d.ab420b6cc1d52f17f6540ee3899d4ed94c78cccb
+2023-10-17.d.17143cea4453077a0926743a972b9e12c8860109
+2023-10-18.d.2daaa367ff1f1139db676d5a0909a36f827c6920
+2023-10-18.d.13c6bc91cced21ef2ef9626acd5ea4138243c7c1
+2023-10-18.d.58324da242487c04f7e8f75bd34d05e48a587e57
+2023-10-18.d.26e9d7e49c7606628c1373aadb5ade751ede410b
+2023-10-18.d.385408dcfd1347dc8298991fa70c54f71625a584
+2023-10-18.d.d5f506b1e3df9396253c6754900e2f18367699cb
+2023-10-19.d.d5f506b1e3df9396253c6754900e2f18367699cb
+2023-10-19.d.70287d90ad0bb166b594be5e48614f8fd0bb3904
+2023-10-19.d.b6811b2f4e50deaf8e0fc499f858ae82f437b0a0
+2023-10-19.d.88a3d6cb7e54139f86f35c48e40d75dabc0239da
+2023-10-19.d.6844bb606d3f379bf5c252cf57c1869c08249b95
+2023-10-20.d.f05470bf81dcb67a4b7cf33f322c2813ba40a922
+2023-10-20.d.7238d857e9fc4fe646e4554443a53081df2ff18e
+2023-10-20.d.c91882daeb216e2b699ce4b35f26dd7f72374f48
+2023-10-20.d.3412c17e2d772ed8f0ea6797c959a1e9c279d2e9
+2023-10-21.d.bd90363565a0a3e8eac81093d31e44356d1b708e
+2023-10-21.d.356de1a16aaa9b8aa0d02261286156560ccc870a
+2023-10-21.d.0ae793a8d4fbebd09c3ce0ec4a60474776e4e1e2
+2023-10-22.d.30521027ab8aab6c7760f519fc8f66b27991fc68
+2023-10-22.d.4fb02cd22e9da67a08caf5c6a6c011b1d0c7d1cb
+2023-10-22.d.4f9c7ada0485da6963fb5631ee46724da485214c
+2023-10-23.d.1d5f55d3748162b87bcfad344626716ff5821f3d
+2023-10-24.d.84eaae572c8026e33e88ad399463f180c49a54b9
+2023-10-24.d.d2b370ab44dc49c3562aa591b497b16c9460e223
+2023-10-26.d.f45b55a18b17cffc95a780507ceb3ecfcb516705
+2023-10-27.d.18c56f92bb819600d311b95e640cfc9a4fb407a2
+2023-10-28.d.dfa6f9a7714584289b97acdb5927c383c9c50e40
+2023-10-28.d.75ec9da8a297223152f392b796c0f499339bade0
+2023-10-28.d.75ec9da8a297223152f392b796c0f499339bade0
+2023-10-28.d.b65f32c5f3f3a080a9439ded193fd27d221232e7
+2023-10-28.d.26f14caee9df9d053927e41e853d352467bdeae4
+2023-10-29.d.be94a6cac84a645e3e962c05f3ee36c7de49dd6b
+2023-10-30.d.8540ee37fcf9c3cac76a65d4650b0d9c558d3ac1
+2023-10-30.d.444f4fcd626253243ad7449b063fd6d8fb7bf309
+2023-10-30.d.b0d5cffe16b35e86aad03aceffe2cd30cf539e70
+2023-10-30.d.6410e72b6c58e1e9649e62aeafa2f54c0660c79a
+2023-10-31.d.53bd4635d934e4735c86a93e8270bc261f017e85
+2023-10-31.d.d148cc21f61ec355f9e76946cea835b9d49aa96b
+2023-10-31.d.0cd1ae965c1b2bad97d4fb96b9de3a5ae8a66841
+2023-11-01.d.ba4d031cc65f54bcfcebe1229523b450b850fa5b
+2023-11-01.d.2e95f454586c2fac18ad4f98e8623128c10412fb
+2023-11-01.d.c238d8d4d1a84b648b53424fce2b6ab56beb5c36
+2023-11-01.d.8d9f76d52dc3c20836c06f4457acb2bb585b1baa
+2023-11-02.d.62675a37a0e7b46283e2fdfe459bb8fd29d1cc2a
+2023-11-02.d.580c46177f4282380366cfabe517c308c51ab404
+2023-11-02.d.63297ec5c9c7957d78288a970672e7dc7ea91caf
+2023-11-02.d.217c568301e96d46edf2845530493f1a96914f22
+2023-11-03.d.2791087f3c6474d89ebf37875c8f293ae7cb700c
+2023-11-03.d.2791087f3c6474d89ebf37875c8f293ae7cb700c
+2023-11-03.d.dab1a5302ea3504e123c99dd1b8dbe96e9db6d04
+2023-11-03.d.11e9b7375d30d874423a6dde793c40ba955b4bd6
+2023-11-03.d.8e6a8b6cff6017b39068b74ef62bbaf83c686279
+2023-11-03.d.dcbb22a25617d4d6706dcdae588cf57eec84338c
+2023-11-04.d.fbe31ab294d869855b2aae014096b4b357946a5e
+2023-11-04.d.fbe31ab294d869855b2aae014096b4b357946a5e
+2023-11-04.d.361c15d63b28316f6ce63197eb2351ac1b364700
+2023-11-04.d.5d4330611afe1175de47d3c4c608d4221ff50a15
+2023-11-04.d.3207d542c148a9c73deb53fd3f36fc3097457487
+2023-11-05.d.625b204cb22139f069fdc7cd72e5988d2e1a8312
+2023-11-06.d.9cfe78a8a09bd8576ac47f9465dbb0d61dc5eebc
+2023-11-06.d.4e8e01fd62711e2a567873ee9be81cd65f4e1428
+2023-11-06.d.ceda8782c87936f030d04a330e4aae871023128e
+2023-11-07.d.1e4f069c3fddc5344a61b633ff262e34d3ee794d
+2023-11-07.d.06bacdf48b49e3a7f52f7a7b7d194c140d0df478
+2023-11-08.d.b04d26a7a32b5814308b3a59c6520a6e15003aa0
+2023-11-09.d.c6ca0ff10fe422c227ad3029124c7db320a11b82
+2023-11-09.d.c6ca0ff10fe422c227ad3029124c7db320a11b82
+2023-11-09.d.211da123425173b3790f4e7ee2bc1d9587c99ebd
+2023-11-10.d.7febc11b8c284790907400d6d40e8a7400abfd57
+2023-11-10.d.098e29d7e07d00f3aae0814229c037d56c4911d9
+2023-11-11.d.c88b773dd3aa99fea557b70d597517b9c092890b
+2023-11-11.d.de1b5929b83f9706c7d0d1f122e0fac589b1825b
+2023-11-12.d.64f0520b23ae9f07cd8bb8ce2a70ed6abee61669
+2023-11-12.d.5021b917da5a92f1a624ed27a21132bcdd66e8d9
+2023-11-12.d.44ef425b89dd5838a6db8966a35360044377e1b4
+2023-11-12.d.65e07e838703d2f91b5f5379050289088f1d895f
+2023-11-12.d.34fba6e21e58edbbba421c8802ce3ac075b4c9c7
+2023-11-13.d.c1fa07dd51abdb9292c8fc5bb112ece7951bb6e8
+2023-11-13.d.c1fa07dd51abdb9292c8fc5bb112ece7951bb6e8
+2023-11-13.d.0ee62e597bcb877f3c4b2c4a2e8d0197d0ee51cf
+2023-11-13.d.null
+2023-11-14.d.0b54b7df40c86f7496a8f96fe40629225602d2c8
+2023-11-14.d.52a0d5b365c9dbf4dc8d5bbcf14c3dcd26d602f6
+2023-11-14.d.7abf8c469b76acd4380f9e27e74dcfd392463578
+2023-11-14.d.dd9e2a7409148c3d4e5894816ef3b20d8a43221f
+2023-11-14.d.dd9e2a7409148c3d4e5894816ef3b20d8a43221f
+2023-11-14.d.bc8dd8894e7ebafe6ca7b4ae9ca502a24fdb0f14
+2023-11-14.d.a01bed3928d74306f5f138c0b9a341ae5ddf981e
+2023-11-15.d.a01bed3928d74306f5f138c0b9a341ae5ddf981e
+2023-11-15.d.a01bed3928d74306f5f138c0b9a341ae5ddf981e
+2023-11-16.d.df2bb8e95cecaf6c6e40de5f3cd736f12511f923
+2023-11-17.d.040e25a92c8b91c7e5ad0a81f1fd71b5db6c457b
+2023-11-17.d.b02a66a1b6440b61c0fdb8e2a3e4527a136ed8ba
+2023-11-17.d.5297bab041ffe63faf5e1edaa33a5758b65fcd78
+2023-11-17.d.74aa056650e2bfb9a3c4910bad3c14af38a2b51d
+2023-11-18.d.458eb3670283cbda751a5896c00a7f46229f84e3
+2023-11-18.d.458eb3670283cbda751a5896c00a7f46229f84e3
+2023-11-18.d.1e7c2a9dd2a10d7ac3843e9abcd61c09150fbc72
+2023-11-18.d.bbe173b5343fbb3015a17feb46bdddfc92826ef2
+2023-11-19.d.f1fe32b541a3f7798d5a66ce836b66b5c97b7e89
+2023-11-20.d.7d30ab5929ae4d48328e52f3a24b9ab912a5df87
diff --git a/tag_latest.txt b/tag_latest.txt
new file mode 100644
index 0000000000..fe90dc0c8d
--- /dev/null
+++ b/tag_latest.txt
@@ -0,0 +1 @@
+2023-11-20.d.7d30ab5929ae4d48328e52f3a24b9ab912a5df87