From 18893d18d29ca6427c2972c79cac141893361ee0 Mon Sep 17 00:00:00 2001 From: handymenny Date: Mon, 4 Nov 2024 20:25:06 +0100 Subject: [PATCH 1/3] reparsing: store reparsed capabilities only when there're changes The result of reparsing is stored in "reparsing.json" --- .../uecapabilityparser/cli/HelpMessage.kt | 4 +- .../model/index/LibraryIndex.kt | 6 ++ .../model/index/ReparsingIndex.kt | 66 +++++++++++++++++++ .../uecapabilityparser/server/JavalinApp.kt | 58 +++++++++++++--- 4 files changed, 122 insertions(+), 12 deletions(-) create mode 100644 src/main/java/it/smartphonecombo/uecapabilityparser/model/index/ReparsingIndex.kt diff --git a/src/main/java/it/smartphonecombo/uecapabilityparser/cli/HelpMessage.kt b/src/main/java/it/smartphonecombo/uecapabilityparser/cli/HelpMessage.kt index 31ece65b..fc5d5aed 100644 --- a/src/main/java/it/smartphonecombo/uecapabilityparser/cli/HelpMessage.kt +++ b/src/main/java/it/smartphonecombo/uecapabilityparser/cli/HelpMessage.kt @@ -37,8 +37,8 @@ object HelpMessage { const val REPARSE = """Re-parse stored capabilities with the given strategy. Valid values are "off" (feature disabled), - "force" (re-parse all), - "auto" (re-parse when parser version differs). + "force" (always re-parse), + "auto" (re-parse when parser version and resulting capabilities differs). A backup of the re-parsed data is kept in the backup folder. Note: --compression affects the capabilities re-parsed.""" const val ERROR_TYPE_INPUT_MISMATCH = "A --type must be provided for each --input." diff --git a/src/main/java/it/smartphonecombo/uecapabilityparser/model/index/LibraryIndex.kt b/src/main/java/it/smartphonecombo/uecapabilityparser/model/index/LibraryIndex.kt index 3ec3eae4..9886a48c 100644 --- a/src/main/java/it/smartphonecombo/uecapabilityparser/model/index/LibraryIndex.kt +++ b/src/main/java/it/smartphonecombo/uecapabilityparser/model/index/LibraryIndex.kt @@ -36,6 +36,7 @@ data class LibraryIndexImmutable( } class LibraryIndex(outputCacheSize: Int?) { + val reparsingIndex: ReparsingIndex = ReparsingIndex() private val items: MutableMap = mutableMapOf() private val multiItems: MutableMap = mutableMapOf() private val outputCache = LruCache(outputCacheSize) @@ -132,6 +133,7 @@ class LibraryIndex(outputCacheSize: Int?) { val outputDir = "$path/output" val inputDir = "$path/input" val multiDir = "$path/multi" + val reparsingIndexFile = "$path/reparsing.json" // Create directories if they don't exist arrayOf(outputDir, inputDir, multiDir).forEach { createDirectories(it) } @@ -165,6 +167,10 @@ class LibraryIndex(outputCacheSize: Int?) { } jobs.addAll(multiJobs) } + + // read reparsingIndex + ReparsingIndex.fromFile(reparsingIndexFile).getAll().let { reparsingIndex.putAll(it) } + joinAll(*jobs.toTypedArray()) } } diff --git a/src/main/java/it/smartphonecombo/uecapabilityparser/model/index/ReparsingIndex.kt b/src/main/java/it/smartphonecombo/uecapabilityparser/model/index/ReparsingIndex.kt new file mode 100644 index 00000000..c6a40120 --- /dev/null +++ b/src/main/java/it/smartphonecombo/uecapabilityparser/model/index/ReparsingIndex.kt @@ -0,0 +1,66 @@ +package it.smartphonecombo.uecapabilityparser.model.index + +import it.smartphonecombo.uecapabilityparser.extension.custom +import it.smartphonecombo.uecapabilityparser.util.Config +import java.io.File +import java.time.Instant +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.Required +import kotlinx.serialization.Serializable +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.DecodeSequenceMode +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.decodeToSequence + +class ReparsingIndex { + private val map = mutableMapOf() + private val lock = Any() + + operator fun get(id: String) = map[id] + + fun put(line: ReparsingIndexLine) = synchronized(lock) { map.put(line.id, line) } + + fun putAll(lines: List) = + synchronized(lock) { map.putAll(lines.associateBy { it.id }) } + + fun getAll(): List = synchronized(lock) { map.values.toList() } + + fun store(path: String) { + try { + val list = getAll().sortedBy { it.id } + File(path).bufferedWriter().use { out -> + list.forEach { + val str = Json.custom().encodeToString(it) + out.write(str) + out.newLine() + } + } + } catch (_: Exception) {} + } + + companion object { + @OptIn(ExperimentalSerializationApi::class) + fun fromFile(file: String): ReparsingIndex { + val new = ReparsingIndex() + try { + val inputStream = File(file).inputStream() + val list = + Json.custom() + .decodeToSequence( + inputStream, + DecodeSequenceMode.WHITESPACE_SEPARATED, + ) + new.putAll(list.toList()) + } catch (_: Exception) {} + return new + } + } +} + +@Serializable +data class ReparsingIndexLine( + val id: String, + @Required val timestamp: Long = Instant.now().toEpochMilli(), + @Required val parserVersion: String = Config.getOrDefault("project.version", ""), + val error: String? = null, +) diff --git a/src/main/java/it/smartphonecombo/uecapabilityparser/server/JavalinApp.kt b/src/main/java/it/smartphonecombo/uecapabilityparser/server/JavalinApp.kt index 249b1e7f..c4b49c80 100644 --- a/src/main/java/it/smartphonecombo/uecapabilityparser/server/JavalinApp.kt +++ b/src/main/java/it/smartphonecombo/uecapabilityparser/server/JavalinApp.kt @@ -24,6 +24,7 @@ import it.smartphonecombo.uecapabilityparser.model.LogType import it.smartphonecombo.uecapabilityparser.model.Rat import it.smartphonecombo.uecapabilityparser.model.index.IndexLine import it.smartphonecombo.uecapabilityparser.model.index.LibraryIndex +import it.smartphonecombo.uecapabilityparser.model.index.ReparsingIndexLine import it.smartphonecombo.uecapabilityparser.util.Config import it.smartphonecombo.uecapabilityparser.util.Parsing import java.io.File @@ -135,9 +136,25 @@ class JavalinApp { IOUtils.createDirectories("$store/backup/input/") index .getAll() - .filterNot { auto && it.parserVersion == parserVersion } - .map { async { reparseItem(it, index, store, compression) } } + .filter { shouldReparse(it, index, !auto, parserVersion) } + .map { async { reparseItem(it, index, store, compression, !auto) } } .awaitAll() + + index.reparsingIndex.store("$store/reparsing.json") + } + } + + private fun shouldReparse( + indexLine: IndexLine, + indexLibrary: LibraryIndex, + force: Boolean, + parserVersion: String, + ): Boolean { + return when { + force -> true + indexLine.parserVersion == parserVersion -> false + indexLibrary.reparsingIndex[indexLine.id]?.parserVersion == parserVersion -> false + else -> true } } @@ -146,11 +163,15 @@ class JavalinApp { index: LibraryIndex, store: String, compression: Boolean, + force: Boolean, ) { + val id = indexLine.id val oldCapCompressed = indexLine.compressed - val capPath = "/output/${indexLine.id}.json" - val parsingResult: Parsing + val capPath = "/output/$id.json" + val oldCapabilities: Capabilities + val newCapabilities: Capabilities + val parsingResult: Parsing try { val capText = @@ -173,20 +194,36 @@ class JavalinApp { parsingResult = Parsing.fromRequest(request) - ?: throw NullPointerException("Reparsed ${indexLine.id} Capabilities is null") + ?: throw NullPointerException("Reparsed $id Capabilities is null") + + newCapabilities = parsingResult.capabilities + // Reset capabilities id, timestamp and processingTime + newCapabilities.id = id + newCapabilities.timestamp = oldCapabilities.timestamp + val newProcessingTime = newCapabilities.getStringMetadata("processingTime") + oldCapabilities.getStringMetadata("processingTime")?.let { + newCapabilities.setMetadata("processingTime", it) + } - // Reset capabilities id and timestamp - parsingResult.capabilities.id = oldCapabilities.id - parsingResult.capabilities.timestamp = oldCapabilities.timestamp + val capChanged = oldCapabilities != newCapabilities + if (capChanged) echoSafe("Capabilities $id changed") - // store in temp - parsingResult.store(index, "$store/temp", compression) + index.reparsingIndex.put(ReparsingIndexLine(id)) + + if (!force && !capChanged) return // skip storage + + // restore newProcessingTime + newProcessingTime?.let { newCapabilities.setMetadata("processingTime", it) } } catch (ex: Exception) { echoSafe("Error re-parsing ${indexLine.id}:\t${ex.message}", true) + index.reparsingIndex.put(ReparsingIndexLine(id, error = ex.message)) return } try { + // store in temp + parsingResult.store(index, "$store/temp", compression) + val newIndex = index.find(oldCapabilities.id)!! // Move old -> bak @@ -202,6 +239,7 @@ class JavalinApp { } } catch (ex: Exception) { echoSafe("Error storing reparsed ${indexLine.id}:\t${ex.message}", true) + index.reparsingIndex.put(ReparsingIndexLine(id, error = ex.message)) } } From 5d0ca09403384d73e985e7b80522a13aef2b4c4d Mon Sep 17 00:00:00 2001 From: handymenny Date: Mon, 4 Nov 2024 20:25:12 +0100 Subject: [PATCH 2/3] fix tests --- .../resources/server/oracleForReparse/auto/reparsing.json | 2 ++ .../server/oracleForReparse/autoCompress/reparsing.json | 2 ++ .../resources/server/oracleForReparse/force/reparsing.json | 5 +++++ .../server/oracleForReparse/forceBad/reparsing.json | 7 +++++++ .../server/oracleForReparse/forceCompress/reparsing.json | 5 +++++ 5 files changed, 21 insertions(+) create mode 100644 src/test/resources/server/oracleForReparse/auto/reparsing.json create mode 100644 src/test/resources/server/oracleForReparse/autoCompress/reparsing.json create mode 100644 src/test/resources/server/oracleForReparse/force/reparsing.json create mode 100644 src/test/resources/server/oracleForReparse/forceBad/reparsing.json create mode 100644 src/test/resources/server/oracleForReparse/forceCompress/reparsing.json diff --git a/src/test/resources/server/oracleForReparse/auto/reparsing.json b/src/test/resources/server/oracleForReparse/auto/reparsing.json new file mode 100644 index 00000000..972aef7a --- /dev/null +++ b/src/test/resources/server/oracleForReparse/auto/reparsing.json @@ -0,0 +1,2 @@ +{"id":"0dfbcad1-41be-4dc1-bcea-8407f6a2c907","timestamp":1730748179933,"parserVersion":"staging"} +{"id":"0dfbcad1-41be-4dc1-bcea-8407f6a2c908","timestamp":1730748179903,"parserVersion":"staging"} diff --git a/src/test/resources/server/oracleForReparse/autoCompress/reparsing.json b/src/test/resources/server/oracleForReparse/autoCompress/reparsing.json new file mode 100644 index 00000000..8fb2ec54 --- /dev/null +++ b/src/test/resources/server/oracleForReparse/autoCompress/reparsing.json @@ -0,0 +1,2 @@ +{"id":"0dfbcad1-41be-4dc1-bcea-8407f6a2c907","timestamp":1730748179709,"parserVersion":"staging"} +{"id":"0dfbcad1-41be-4dc1-bcea-8407f6a2c908","timestamp":1730748179664,"parserVersion":"staging"} diff --git a/src/test/resources/server/oracleForReparse/force/reparsing.json b/src/test/resources/server/oracleForReparse/force/reparsing.json new file mode 100644 index 00000000..88680dc5 --- /dev/null +++ b/src/test/resources/server/oracleForReparse/force/reparsing.json @@ -0,0 +1,5 @@ +{"id":"0dfbcad1-41be-4dc1-bcea-8407f6a2c907","timestamp":1730748180760,"parserVersion":"staging"} +{"id":"0dfbcad1-41be-4dc1-bcea-8407f6a2c908","timestamp":1730748180727,"parserVersion":"staging"} +{"id":"bc8f5359-c997-47c2-836d-8a4df2d1c417","timestamp":1730748180199,"parserVersion":"staging"} +{"id":"c3e783c9-54bc-42ee-970c-d871117399b2","timestamp":1730748180660,"parserVersion":"staging"} +{"id":"cd7eb9db-196d-46a5-938d-68061a100cdb","timestamp":1730748180358,"parserVersion":"staging"} diff --git a/src/test/resources/server/oracleForReparse/forceBad/reparsing.json b/src/test/resources/server/oracleForReparse/forceBad/reparsing.json new file mode 100644 index 00000000..71dfbb20 --- /dev/null +++ b/src/test/resources/server/oracleForReparse/forceBad/reparsing.json @@ -0,0 +1,7 @@ +{"id":"0dfbcad1-41be-4dc1-bcea-8407f6a2c907","timestamp":1730748179089,"parserVersion":"staging"} +{"id":"0dfbcad1-41be-4dc1-bcea-8407f6a2c908","timestamp":1730748179073,"parserVersion":"staging","error":"Something weird, inputs list >= rat List"} +{"id":"7dc8d574-7a05-4ee4-b370-059ddd38d144","timestamp":1730748178859,"parserVersion":"staging","error":"Extension count cannot be 0. This procedure is only invoked if there is at least one extension addition being encoded."} +{"id":"bc8f5359-c997-47c2-836d-8a4df2d1836d","timestamp":1730748179057,"parserVersion":"staging","error":"Reparsed bc8f5359-c997-47c2-836d-8a4df2d1836d Capabilities is null"} +{"id":"bc8f5359-c997-47c2-836d-8a4df2d1c417","timestamp":1730748179057,"parserVersion":"staging","error":"Reparsed bc8f5359-c997-47c2-836d-8a4df2d1c417 Capabilities is null"} +{"id":"bc8f5359-c997-47c2-9999-8a4df2d1836d","timestamp":1730748178875,"parserVersion":"staging"} +{"id":"db8f5359-c997-47c2-9999-8a4df2d1836d","timestamp":1730748178859,"parserVersion":"staging","error":"Reparsed db8f5359-c997-47c2-9999-8a4df2d1836d Capabilities is null"} diff --git a/src/test/resources/server/oracleForReparse/forceCompress/reparsing.json b/src/test/resources/server/oracleForReparse/forceCompress/reparsing.json new file mode 100644 index 00000000..1e6f2c3b --- /dev/null +++ b/src/test/resources/server/oracleForReparse/forceCompress/reparsing.json @@ -0,0 +1,5 @@ +{"id":"0dfbcad1-41be-4dc1-bcea-8407f6a2c907","timestamp":1730748181215,"parserVersion":"staging"} +{"id":"0dfbcad1-41be-4dc1-bcea-8407f6a2c908","timestamp":1730748181197,"parserVersion":"staging"} +{"id":"bc8f5359-c997-47c2-836d-8a4df2d1c417","timestamp":1730748180994,"parserVersion":"staging"} +{"id":"c3e783c9-54bc-42ee-970c-d871117399b2","timestamp":1730748181144,"parserVersion":"staging"} +{"id":"cd7eb9db-196d-46a5-938d-68061a100cdb","timestamp":1730748181076,"parserVersion":"staging"} From 17c6b4e1c73c2990a3fcfdb45a3a7c2050cf7624 Mon Sep 17 00:00:00 2001 From: handymenny Date: Mon, 4 Nov 2024 21:04:29 +0100 Subject: [PATCH 3/3] test: add a test with reparsing index --- .../server/ServerModeReparseTest.kt | 19 ++++++++++++++++++ .../bc8f5359-c997-47c2-836d-8a4df2d1c417-0 | 1 + .../c3e783c9-54bc-42ee-970c-d871117399b2-0.gz | Bin 0 -> 9162 bytes .../bc8f5359-c997-47c2-836d-8a4df2d1c417.json | 1 + ...e783c9-54bc-42ee-970c-d871117399b2.json.gz | Bin 0 -> 8873 bytes .../inputForReparse/withIndex/reparsing.json | 1 + .../bc8f5359-c997-47c2-836d-8a4df2d1c417-0 | 1 + .../c3e783c9-54bc-42ee-970c-d871117399b2-0.gz | Bin 0 -> 9162 bytes .../bc8f5359-c997-47c2-836d-8a4df2d1c417.json | 1 + ...e783c9-54bc-42ee-970c-d871117399b2.json.gz | Bin 0 -> 8873 bytes .../autoWithIndex/reparsing.json | 2 ++ 11 files changed, 26 insertions(+) create mode 100644 src/test/resources/server/inputForReparse/withIndex/input/bc8f5359-c997-47c2-836d-8a4df2d1c417-0 create mode 100644 src/test/resources/server/inputForReparse/withIndex/input/c3e783c9-54bc-42ee-970c-d871117399b2-0.gz create mode 100644 src/test/resources/server/inputForReparse/withIndex/output/bc8f5359-c997-47c2-836d-8a4df2d1c417.json create mode 100644 src/test/resources/server/inputForReparse/withIndex/output/c3e783c9-54bc-42ee-970c-d871117399b2.json.gz create mode 100644 src/test/resources/server/inputForReparse/withIndex/reparsing.json create mode 100644 src/test/resources/server/oracleForReparse/autoWithIndex/input/bc8f5359-c997-47c2-836d-8a4df2d1c417-0 create mode 100644 src/test/resources/server/oracleForReparse/autoWithIndex/input/c3e783c9-54bc-42ee-970c-d871117399b2-0.gz create mode 100644 src/test/resources/server/oracleForReparse/autoWithIndex/output/bc8f5359-c997-47c2-836d-8a4df2d1c417.json create mode 100644 src/test/resources/server/oracleForReparse/autoWithIndex/output/c3e783c9-54bc-42ee-970c-d871117399b2.json.gz create mode 100644 src/test/resources/server/oracleForReparse/autoWithIndex/reparsing.json diff --git a/src/test/java/it/smartphonecombo/uecapabilityparser/server/ServerModeReparseTest.kt b/src/test/java/it/smartphonecombo/uecapabilityparser/server/ServerModeReparseTest.kt index 4a8b5188..fa0b072b 100644 --- a/src/test/java/it/smartphonecombo/uecapabilityparser/server/ServerModeReparseTest.kt +++ b/src/test/java/it/smartphonecombo/uecapabilityparser/server/ServerModeReparseTest.kt @@ -40,6 +40,7 @@ internal class ServerModeReparseTest { createEmptyDirs("$resourcesPath/oracleForReparse") copyDirectory("$resourcesPath/inputForReparse", tmpStorePath) replaceVersion("$tmpStorePath/good", "staging", parserVersion) + replaceVersion("$tmpStorePath/withIndex", "staging", parserVersion) } catch (_: Exception) {} } @@ -123,6 +124,24 @@ internal class ServerModeReparseTest { ) } + @Test + fun testReparseAutoWithIndex() { + test( + arrayOf( + "server", + "-p", + "0", + "--store", + "$tmpStorePath/withIndex", + "--reparse", + "auto", + "--compression", + ), + "$resourcesPath/oracleForReparse/autoWithIndex", + "$tmpStorePath/withIndex", + ) + } + fun test(args: Array, oraclePath: String, storePath: String) { Main.main(args) dispatcher.scheduler.advanceUntilIdle() diff --git a/src/test/resources/server/inputForReparse/withIndex/input/bc8f5359-c997-47c2-836d-8a4df2d1c417-0 b/src/test/resources/server/inputForReparse/withIndex/input/bc8f5359-c997-47c2-836d-8a4df2d1c417-0 new file mode 100644 index 00000000..0237305f --- /dev/null +++ b/src/test/resources/server/inputForReparse/withIndex/input/bc8f5359-c997-47c2-836d-8a4df2d1c417-0 @@ -0,0 +1 @@ +A107E026A846000080810302130E0D80003D021C8BC56000080810302130E0D8006134006E043848883FCAC00010102060426181B0389A0000D8087081107A918000202040C084C389A0000D008722F958000202040C084C389A00184D001D010E10221720D8000202240C5C1B00007E45E2300004040818383600184D000E810E12220FE2300004040818B83600184D001C810E12220FE2300004044818383600184D001A810E12220FF2300004040818B036071340001C010E10220FF23000040448183036071340001D810E10220FF23000040408183036071340000D810E10220FF1B00004040818389A10010408708110728D8000202240C5C4D00007845F2300004044818389A00184D0021010E102217F918000202040C1C4D000C26800CC08708110BFC8C00010102062E2680061340080043840885EA46000080810302060E26800000021C89E4600008089031713400309A003E08110B906C00010112130E0D80004422711800020204261C1B000C268007424441DE4600008081098606C0E2680001B081107A0980002020E12800043021C8BC360000808383600184D0010010E12220EE1B00004045C1B000C268009824441DE360000808B0360713400013840883FC6C0001010606C0E26800021021C20441FE260000808389A100010087081107F8D80002020E2680061340032043840885DE360000808B89A00184D000A840885FC4600008181098706C00309A001D022E12220FF23000040C084C3036071340000D8117081107F0D80002060E0D80061340040043848883F86C0001031706C00309A0026021C24441FE36000081830360713400010810E10220FF1B000040C581B0389A00009C087081107F8980002060E26840004021C20441FE360000818389A00184D000C810E102217F8D80002062E268006134002A043840885E844000C08010302130E0D800002021C8BC54000C08010302130E0D80061340010043848883FCA800181002060426181B0389A000030087081107A910003020040C084C389A00006008722F950003020040C084C389A00184D0001810E10221720D0003022040C5C1B00005C45E2200060400818B83600184D0015010E12220FE2200060440818383600184D000A010E12220FE2200060400818383600184D0003010E12220FF22000604008183036071340000F810E10220FF2200060400818B0360713400014010E10220FF220006044081830360713400016010E10220FF1A00060400818389A10003C08708110728D0003022040C5C4D00001245F2200060400818389A00184D0008010E102217F910003022040C1C4D000C268003408708110BFC8800181002062E2680061340014043840885EA44000C08010302060E26800032021C89E44000C0881031713400309A000708110B906800181102130E0D80003022711000302004261C1B000C268001824441DE44000C0801098606C0E2680001F081107A0900030200E1280002F021C89C34000C088383600184D000E048883F8680018100706C00309A0031021C24441DE34000C0883036071340000F040883FC680018100606C0E26800011021C20441FE24000C080389A1000B4087081107F8D00030200E268006134001C043840885DE34000C088389A00184D0005840885E844000808183002130E0D800046021C8BC54000808183002130E0D800613400BA043848883FCA800101030600426181B0389A000150087081107A91000202060C0084C389A00015C08722F95000202060C0084C389A00184D002F010E10221720D000202260C41C1B00009C45E220004040C188383600184D002B010E12220FE220004040C180383600184D0024810E12220FE220004044C180383600184D0026810E12220FF220004040C18030360713400025810E10220FF220004044C18030360713400024010E10220FF220004040C18830360713400028010E10220FF1A0004040C180389A10011C08708110728D000202260C41C4D0000B4455220004040C1801030713400022810E45F220004040C188389A00184D002D810E102217791000202260C41C4D000C268017020442FF220004044C180389A00184D002C810E102217F91000202060C01C4D000C268016008708110BD088001010206062601C1B0000C20439178A8001010206062601C1B000C2680194087091107A91000202040C0C4C0389A00019808722F95000202040C0C4C0389A00184D0032010E10221720D000202262601C1B0000CE44E220004040C4C0383600184D0031048883F88800183002130E0D8006134000C045C24441FE44000C1801098606C0E2680001F022E10220FE1A00060C01C1B000C26800C4087091107F0D00030620E0D80061340038043848883FC680018310606C0E2680001E021C20441FE34000C18030360713400008810E10220FF1200060C01C4D08005A043840883FC680018300713400309A000E021C20442FF1A00060C41C4D000C268002C08708110BF88800103031300E0D800613400C4045C24441DC34000C4C0383600184D0034048883F88C08010302130E0D8006134003A043848883FC8C08010302130C0D81C4D000036043840883D46C08810302130E26800012021C8BC360440818B83600184D0014810E12220FE1B020040C5C1B000C2680098087091107F0D81002060E0D80061340040043848883B86C0881030706C00309A0022091107F8D81002060C0D81C4D000042043840883BC6C0881030606C0E26800024081107F8D81102062C0D81C4D000056043840883FC6C0801031606C0E26800027021C20441FE260400818389A100010087081107F8D81002060E2680061340032043840885DE360440818389A00184D000B840885FE360400818B89A00184D000A810E102217F8D81102062E2680061340026043840885EA46040080810302060E26800000021C89C36044084C383600184D0012848883BC6C0881098606C0E26800023081107F8D81002130E268006134000A043840885DC260441C1B000C268006824441DE26044181B0389A00000420441DE260441C4D000C268005820442FE2202060C0084C383600184D0003010E12220FF2202060C0084C3036071340000F810E10220F51A02260C0084C389A0001280872270D01130600E0D800613400AA12220FE1A02060C41C1B000C2680070087091107F0D01130620E0D80061340098043848883F8680818300706C00309A0031021C24441FE34044C18830360713400027810E10220FF1A02060C4181B0389A000078087081107F8D01030600C0D81C4D000022043840883BC680898300606C0E26800051081107F8901030600E2684002D021C20441FE34040C188389A00184D0005810E102217A91010202060C00818389A00011408722F8D01130620E26800613400A6043840885FE34040C180389A00184D0007010E10221778D01130600E26800613400A4102217F11010206062601C1B000C2680188087091107A8D011206062601C4D0000BE0439138680898980706C00309A0063091107F8D01031300E26800613400C0043840885FC260C41C1B000C268006808B848883FC4C188303607134000008117081107F898310713400309A0016022E1022172058980709400035113C2C4C0389A1001A420441C0300000401809C025803701344D010952C04D489D3A74E9DB1CF872A74E9D3A74ED8E7C3953A74E9D3A16C73E1C89D3A74E85B1CF872A74E9D3A14ED8E7C38D3A74E9DB1CF872274E9D3A76C73E1C89D3A74E9DB1CF872274E9D3A76C73E1C89D3A74E85B1CF872274E9D3A16C73E1C89D3A74E85B1CF871A74E9D0B639F0E34E9D3A16C73E1C89D3A7429DB1CF872274E9D0A76C73E1C89D3A7429DB1CF872274E9D3A16C73E1C89D3A7429DB1CF871A74E9D3B639F0E44E9D3A74ED8E7C3913A74E9D0B639F0E24E9D03639F0E34E9D3A76C73E1C69D3A74ED8E7C38D3A74E85B1CF871A74E9D0B639F0E24E9D0B639F0E34E9D0A76C73E1C69D3A14ED8E7C3913A74E9D3B639F0E44E9D3A742D8E7C38D3A74E9DB1CF871A74E9D3B639F0E34E9D3A16C73E1C69D3A742D8E7C3893A742D8E7C38D3A7429DB1CF871A74E853B639F0E44E9D3A74ED8E7C3953A74E9D3A76C73E1CA9D3A74E9D0B639F0E44E9D3A742D8E7C3953A74E9D0A76C73E1C69D3A74ED8E7C3913A74E9D3B639F0E44E9D3A74ED8E7C3913A74E9D3B639F0E44E9D3A742D8E7C3913A74E9D0B639F0E44E9D3A742D8E7C38D3A74E85B1CF871A74E9D0B639F0E44E9D3A14ED8E7C3913A74E853B639F0E44E9D3A14ED8E7C3913A74E9D0B639F0E44E9D3A14ED8E7C38D3A74E9DB1CF872274E9D3A76C73E1C89D3A74E85B1CF871274E81B1CF871A74E9D3B639F0E34E9D3A76C73E1C69D3A742D8E7C38D3A74E85B1CF871274E85B1CF871A74E853B639F0E34E9D0A76C73E1C89D3A74E9DB1CF872A74E9D3A74ED8E7C3953A74E9D3A16C73E1C89D3A74E85B1CF872A74E9D3A14ED8E7C38D3A74E9DB1CF872274E9D3A76C73E1C89D3A74E9DB1CF872274E9D3A76C73E1C89D3A74E85B1CF872274E9D3A16C73E1C89D3A74E85B1CF871A74E9D0B639F0E34E9D3A16C73E1C89D3A74E85B1CF872274E9D0A76C73E1C89D3A7429DB1CF872274E9D0A76C73E1C89D3A7429DB1CF872274E9D3A76C73E1CA9D3A74E9D3B639F0E44E9D3A742D8E7C3953A74E9D0A76C73E1C69D3A74ED8E7C3913A74E9D3B639F0E44E9D3A74ED8E7C3913A74E9D0B639F0E34E9D3A76C73E1C69D3A74ED8E7C38D3A74E85B1CF871A74E9D0B639F0E24E9D0B639F0E34E9D0A76C73E1C69D3A14ED8E7C3913A74E9D3B639F0E34E9D3A76C73E1C89D3A74E9DB1CF872274E9D3A16C73E1C69D3A742D8E7C38D3A74E9DB1CF871A74E9D3B639F0E34E9D3A76C73E1C69D3A74ED8E7C38D3A74E85B1CF871A74E9D0B639F0E34E9D3A16C73E1C69D3A742D8E7C3893A742D8E7C38D3A7429DB1CF871A74E853B639F0E34E9D0A76C73E1C69D3A14ED8E7C3913A74E9D0B639F0E34E9D3A76C73E1C69D3A742D8E7C38D3A7429DB1CF871274E9DB1CF871274E85B1CF87127429DB1CF872274E9D3A76C73E1C89D3A74E85B1CF871A74E9D0B639F0E34E9D3A76C73E1C69D3A74ED8E7C38D3A74E9DB1CF871A74E9D3B639F0E34E9D3A16C73E1C69D3A742D8E7C38D3A74E85B1CF871A74E9D0B639F0E24E9D0B639F0E34E9D0A76C73E1C89D3A74E85B1CF871A74E853B639F0E34E9D0A76C73E1C69D3A14ED8E7C3913A74E9D3B639F0E34E9D3A16C73E1C69D3A74ED8E7C38D3A7429DB1CF871274E9DB1CF871274E85B1CF87127429DB1CF870A740D8E7C3853A16C73E180C7404D0843108421086318842108421086210863108421884318842108621084210C63108421084210C4210C6210842188421084318C421084210842108421884318842108431084210C63188421084218843108621084218C631084210842108431084041A880003010000C000003000000C0002004008800080201004000040080120000C000003010000C000001000080200450000800000202000080000020001002004040080010000C040003000080300230001808000200010020040400800200004000003010000400020080100801000400008000004020001000040200301008000A0001000000404000100000040002008010080100030001800000802000200004008012000040000010100008000200400808010003000180000040201002004040080028000400000101000040000010000802000020040090000200000100800020001002004040080018000C000003010080100202004000C00020000018080002000100600480001000000C040001000080100202004000C000600000180804010000100200460004010000C00000100008010023000100800040001002004040080020000400000201000040002008010080100030001808000400010020040400800100010040200400808010003000100800060001002004040080020000C000003010000C00000100008010023000180800060001002004040080010001004020080100801000400018080002000000800040100001002004600030000008040200801008010004000180800020000008000401002010020006000300000080402008000080100240000800000602000080004010000100200460003010000C0002008010080100030001808000600010040000400801180008040003000080200402004000C000402000080004010000100200460002010000C000200800008010023000100800020001004008040080018000C040002000080200402004000C0006020001000040100001002004800010000004040002000080200002004008C0004020001000040100201002000800010000004040002000080200402004000C000402000100004010000100200480001000000804000100008020000200400880006000001808040180118000C0000040100010000200801080006000001808040280418000C00000401000040002008010C000600000180804010020100200080003000000C040003000000C00020040090000602000080000020001002004040080020000C040003000000C0000010000801002400008080004000000800040100201002000A00010100004000001000000400020080000801002500008080002000000800000200010040080400800200004040001000000800020080000801002400008080002000001000040100201002000A00010100004000001000000400020040080801000400008080004000000800040100001002004600030100010000004000080100240001808000600000180000020001004008800010100008000002000080400602010000C000602000200000080001004008800010100004000002000080100202004000C00060200008000002000100600480001010000800000100008010020200400080006020001800040280418000C04000400000040002008011000060000018000006020001800040080120000C000003000000C0400010000802004300008000002000001808040180120000400000200000040402008000080100240000800000200000180804010020100200060004000000C04000100008010024000080000020000018080401000010020046000200000080402008010080100040000800000400000080804010020100200060003000001000000401008020043000100000040201004000040080120000400000100000080402008000080100230001000000602010040000400801180008000003010080100202004000C0004000001008040080101002000A0001000000400000101000040002008000080100230001000000602010040080400800200004000001000000804020080100801000400018000006000001808000200010020048000100000040000030100801002020040010000200000100000020201002004040080018000C00000400000100402004009000020000008000004020100200404008002000040000020000008040201001808040005000080000020000008080002000100400804008002800040000010000004040001000080100202004000C000800000180000020201002004600030000004040200400808010004000180000060000018000002020100400880001000000C000001010080200402004000C0004000000808040100201002000A0001000000400000100000040402004008080100050000800000200000080000020201004008040080020000C000003000000C0000010100801002300018000008000000808040100218000C0000010100802004020040004000202010060042000101008050080 \ No newline at end of file diff --git a/src/test/resources/server/inputForReparse/withIndex/input/c3e783c9-54bc-42ee-970c-d871117399b2-0.gz b/src/test/resources/server/inputForReparse/withIndex/input/c3e783c9-54bc-42ee-970c-d871117399b2-0.gz new file mode 100644 index 0000000000000000000000000000000000000000..4174d498f3c56d9787b481dc8c0bf2e5cbe4360e GIT binary patch literal 9162 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 literal 0 HcmV?d00001 diff --git a/src/test/resources/server/inputForReparse/withIndex/reparsing.json b/src/test/resources/server/inputForReparse/withIndex/reparsing.json new file mode 100644 index 00000000..a6f09c50 --- /dev/null +++ b/src/test/resources/server/inputForReparse/withIndex/reparsing.json @@ -0,0 +1 @@ +{"id":"bc8f5359-c997-47c2-836d-8a4df2d1c417-0","timestamp":1730748514633,"parserVersion":"staging"} diff --git a/src/test/resources/server/oracleForReparse/autoWithIndex/input/bc8f5359-c997-47c2-836d-8a4df2d1c417-0 b/src/test/resources/server/oracleForReparse/autoWithIndex/input/bc8f5359-c997-47c2-836d-8a4df2d1c417-0 new file mode 100644 index 00000000..0237305f --- /dev/null +++ b/src/test/resources/server/oracleForReparse/autoWithIndex/input/bc8f5359-c997-47c2-836d-8a4df2d1c417-0 @@ -0,0 +1 @@ +A107E026A846000080810302130E0D80003D021C8BC56000080810302130E0D8006134006E043848883FCAC00010102060426181B0389A0000D8087081107A918000202040C084C389A0000D008722F958000202040C084C389A00184D001D010E10221720D8000202240C5C1B00007E45E2300004040818383600184D000E810E12220FE2300004040818B83600184D001C810E12220FE2300004044818383600184D001A810E12220FF2300004040818B036071340001C010E10220FF23000040448183036071340001D810E10220FF23000040408183036071340000D810E10220FF1B00004040818389A10010408708110728D8000202240C5C4D00007845F2300004044818389A00184D0021010E102217F918000202040C1C4D000C26800CC08708110BFC8C00010102062E2680061340080043840885EA46000080810302060E26800000021C89E4600008089031713400309A003E08110B906C00010112130E0D80004422711800020204261C1B000C268007424441DE4600008081098606C0E2680001B081107A0980002020E12800043021C8BC360000808383600184D0010010E12220EE1B00004045C1B000C268009824441DE360000808B0360713400013840883FC6C0001010606C0E26800021021C20441FE260000808389A100010087081107F8D80002020E2680061340032043840885DE360000808B89A00184D000A840885FC4600008181098706C00309A001D022E12220FF23000040C084C3036071340000D8117081107F0D80002060E0D80061340040043848883F86C0001031706C00309A0026021C24441FE36000081830360713400010810E10220FF1B000040C581B0389A00009C087081107F8980002060E26840004021C20441FE360000818389A00184D000C810E102217F8D80002062E268006134002A043840885E844000C08010302130E0D800002021C8BC54000C08010302130E0D80061340010043848883FCA800181002060426181B0389A000030087081107A910003020040C084C389A00006008722F950003020040C084C389A00184D0001810E10221720D0003022040C5C1B00005C45E2200060400818B83600184D0015010E12220FE2200060440818383600184D000A010E12220FE2200060400818383600184D0003010E12220FF22000604008183036071340000F810E10220FF2200060400818B0360713400014010E10220FF220006044081830360713400016010E10220FF1A00060400818389A10003C08708110728D0003022040C5C4D00001245F2200060400818389A00184D0008010E102217F910003022040C1C4D000C268003408708110BFC8800181002062E2680061340014043840885EA44000C08010302060E26800032021C89E44000C0881031713400309A000708110B906800181102130E0D80003022711000302004261C1B000C268001824441DE44000C0801098606C0E2680001F081107A0900030200E1280002F021C89C34000C088383600184D000E048883F8680018100706C00309A0031021C24441DE34000C0883036071340000F040883FC680018100606C0E26800011021C20441FE24000C080389A1000B4087081107F8D00030200E268006134001C043840885DE34000C088389A00184D0005840885E844000808183002130E0D800046021C8BC54000808183002130E0D800613400BA043848883FCA800101030600426181B0389A000150087081107A91000202060C0084C389A00015C08722F95000202060C0084C389A00184D002F010E10221720D000202260C41C1B00009C45E220004040C188383600184D002B010E12220FE220004040C180383600184D0024810E12220FE220004044C180383600184D0026810E12220FF220004040C18030360713400025810E10220FF220004044C18030360713400024010E10220FF220004040C18830360713400028010E10220FF1A0004040C180389A10011C08708110728D000202260C41C4D0000B4455220004040C1801030713400022810E45F220004040C188389A00184D002D810E102217791000202260C41C4D000C268017020442FF220004044C180389A00184D002C810E102217F91000202060C01C4D000C268016008708110BD088001010206062601C1B0000C20439178A8001010206062601C1B000C2680194087091107A91000202040C0C4C0389A00019808722F95000202040C0C4C0389A00184D0032010E10221720D000202262601C1B0000CE44E220004040C4C0383600184D0031048883F88800183002130E0D8006134000C045C24441FE44000C1801098606C0E2680001F022E10220FE1A00060C01C1B000C26800C4087091107F0D00030620E0D80061340038043848883FC680018310606C0E2680001E021C20441FE34000C18030360713400008810E10220FF1200060C01C4D08005A043840883FC680018300713400309A000E021C20442FF1A00060C41C4D000C268002C08708110BF88800103031300E0D800613400C4045C24441DC34000C4C0383600184D0034048883F88C08010302130E0D8006134003A043848883FC8C08010302130C0D81C4D000036043840883D46C08810302130E26800012021C8BC360440818B83600184D0014810E12220FE1B020040C5C1B000C2680098087091107F0D81002060E0D80061340040043848883B86C0881030706C00309A0022091107F8D81002060C0D81C4D000042043840883BC6C0881030606C0E26800024081107F8D81102062C0D81C4D000056043840883FC6C0801031606C0E26800027021C20441FE260400818389A100010087081107F8D81002060E2680061340032043840885DE360440818389A00184D000B840885FE360400818B89A00184D000A810E102217F8D81102062E2680061340026043840885EA46040080810302060E26800000021C89C36044084C383600184D0012848883BC6C0881098606C0E26800023081107F8D81002130E268006134000A043840885DC260441C1B000C268006824441DE26044181B0389A00000420441DE260441C4D000C268005820442FE2202060C0084C383600184D0003010E12220FF2202060C0084C3036071340000F810E10220F51A02260C0084C389A0001280872270D01130600E0D800613400AA12220FE1A02060C41C1B000C2680070087091107F0D01130620E0D80061340098043848883F8680818300706C00309A0031021C24441FE34044C18830360713400027810E10220FF1A02060C4181B0389A000078087081107F8D01030600C0D81C4D000022043840883BC680898300606C0E26800051081107F8901030600E2684002D021C20441FE34040C188389A00184D0005810E102217A91010202060C00818389A00011408722F8D01130620E26800613400A6043840885FE34040C180389A00184D0007010E10221778D01130600E26800613400A4102217F11010206062601C1B000C2680188087091107A8D011206062601C4D0000BE0439138680898980706C00309A0063091107F8D01031300E26800613400C0043840885FC260C41C1B000C268006808B848883FC4C188303607134000008117081107F898310713400309A0016022E1022172058980709400035113C2C4C0389A1001A420441C0300000401809C025803701344D010952C04D489D3A74E9DB1CF872A74E9D3A74ED8E7C3953A74E9D3A16C73E1C89D3A74E85B1CF872A74E9D3A14ED8E7C38D3A74E9DB1CF872274E9D3A76C73E1C89D3A74E9DB1CF872274E9D3A76C73E1C89D3A74E85B1CF872274E9D3A16C73E1C89D3A74E85B1CF871A74E9D0B639F0E34E9D3A16C73E1C89D3A7429DB1CF872274E9D0A76C73E1C89D3A7429DB1CF872274E9D3A16C73E1C89D3A7429DB1CF871A74E9D3B639F0E44E9D3A74ED8E7C3913A74E9D0B639F0E24E9D03639F0E34E9D3A76C73E1C69D3A74ED8E7C38D3A74E85B1CF871A74E9D0B639F0E24E9D0B639F0E34E9D0A76C73E1C69D3A14ED8E7C3913A74E9D3B639F0E44E9D3A742D8E7C38D3A74E9DB1CF871A74E9D3B639F0E34E9D3A16C73E1C69D3A742D8E7C3893A742D8E7C38D3A7429DB1CF871A74E853B639F0E44E9D3A74ED8E7C3953A74E9D3A76C73E1CA9D3A74E9D0B639F0E44E9D3A742D8E7C3953A74E9D0A76C73E1C69D3A74ED8E7C3913A74E9D3B639F0E44E9D3A74ED8E7C3913A74E9D3B639F0E44E9D3A742D8E7C3913A74E9D0B639F0E44E9D3A742D8E7C38D3A74E85B1CF871A74E9D0B639F0E44E9D3A14ED8E7C3913A74E853B639F0E44E9D3A14ED8E7C3913A74E9D0B639F0E44E9D3A14ED8E7C38D3A74E9DB1CF872274E9D3A76C73E1C89D3A74E85B1CF871274E81B1CF871A74E9D3B639F0E34E9D3A76C73E1C69D3A742D8E7C38D3A74E85B1CF871274E85B1CF871A74E853B639F0E34E9D0A76C73E1C89D3A74E9DB1CF872A74E9D3A74ED8E7C3953A74E9D3A16C73E1C89D3A74E85B1CF872A74E9D3A14ED8E7C38D3A74E9DB1CF872274E9D3A76C73E1C89D3A74E9DB1CF872274E9D3A76C73E1C89D3A74E85B1CF872274E9D3A16C73E1C89D3A74E85B1CF871A74E9D0B639F0E34E9D3A16C73E1C89D3A74E85B1CF872274E9D0A76C73E1C89D3A7429DB1CF872274E9D0A76C73E1C89D3A7429DB1CF872274E9D3A76C73E1CA9D3A74E9D3B639F0E44E9D3A742D8E7C3953A74E9D0A76C73E1C69D3A74ED8E7C3913A74E9D3B639F0E44E9D3A74ED8E7C3913A74E9D0B639F0E34E9D3A76C73E1C69D3A74ED8E7C38D3A74E85B1CF871A74E9D0B639F0E24E9D0B639F0E34E9D0A76C73E1C69D3A14ED8E7C3913A74E9D3B639F0E34E9D3A76C73E1C89D3A74E9DB1CF872274E9D3A16C73E1C69D3A742D8E7C38D3A74E9DB1CF871A74E9D3B639F0E34E9D3A76C73E1C69D3A74ED8E7C38D3A74E85B1CF871A74E9D0B639F0E34E9D3A16C73E1C69D3A742D8E7C3893A742D8E7C38D3A7429DB1CF871A74E853B639F0E34E9D0A76C73E1C69D3A14ED8E7C3913A74E9D0B639F0E34E9D3A76C73E1C69D3A742D8E7C38D3A7429DB1CF871274E9DB1CF871274E85B1CF87127429DB1CF872274E9D3A76C73E1C89D3A74E85B1CF871A74E9D0B639F0E34E9D3A76C73E1C69D3A74ED8E7C38D3A74E9DB1CF871A74E9D3B639F0E34E9D3A16C73E1C69D3A742D8E7C38D3A74E85B1CF871A74E9D0B639F0E24E9D0B639F0E34E9D0A76C73E1C89D3A74E85B1CF871A74E853B639F0E34E9D0A76C73E1C69D3A14ED8E7C3913A74E9D3B639F0E34E9D3A16C73E1C69D3A74ED8E7C38D3A7429DB1CF871274E9DB1CF871274E85B1CF87127429DB1CF870A740D8E7C3853A16C73E180C7404D0843108421086318842108421086210863108421884318842108621084210C63108421084210C4210C6210842188421084318C421084210842108421884318842108431084210C63188421084218843108621084218C631084210842108431084041A880003010000C000003000000C0002004008800080201004000040080120000C000003010000C000001000080200450000800000202000080000020001002004040080010000C040003000080300230001808000200010020040400800200004000003010000400020080100801000400008000004020001000040200301008000A0001000000404000100000040002008010080100030001800000802000200004008012000040000010100008000200400808010003000180000040201002004040080028000400000101000040000010000802000020040090000200000100800020001002004040080018000C000003010080100202004000C00020000018080002000100600480001000000C040001000080100202004000C000600000180804010000100200460004010000C00000100008010023000100800040001002004040080020000400000201000040002008010080100030001808000400010020040400800100010040200400808010003000100800060001002004040080020000C000003010000C00000100008010023000180800060001002004040080010001004020080100801000400018080002000000800040100001002004600030000008040200801008010004000180800020000008000401002010020006000300000080402008000080100240000800000602000080004010000100200460003010000C0002008010080100030001808000600010040000400801180008040003000080200402004000C000402000080004010000100200460002010000C000200800008010023000100800020001004008040080018000C040002000080200402004000C0006020001000040100001002004800010000004040002000080200002004008C0004020001000040100201002000800010000004040002000080200402004000C000402000100004010000100200480001000000804000100008020000200400880006000001808040180118000C0000040100010000200801080006000001808040280418000C00000401000040002008010C000600000180804010020100200080003000000C040003000000C00020040090000602000080000020001002004040080020000C040003000000C0000010000801002400008080004000000800040100201002000A00010100004000001000000400020080000801002500008080002000000800000200010040080400800200004040001000000800020080000801002400008080002000001000040100201002000A00010100004000001000000400020040080801000400008080004000000800040100001002004600030100010000004000080100240001808000600000180000020001004008800010100008000002000080400602010000C000602000200000080001004008800010100004000002000080100202004000C00060200008000002000100600480001010000800000100008010020200400080006020001800040280418000C04000400000040002008011000060000018000006020001800040080120000C000003000000C0400010000802004300008000002000001808040180120000400000200000040402008000080100240000800000200000180804010020100200060004000000C04000100008010024000080000020000018080401000010020046000200000080402008010080100040000800000400000080804010020100200060003000001000000401008020043000100000040201004000040080120000400000100000080402008000080100230001000000602010040000400801180008000003010080100202004000C0004000001008040080101002000A0001000000400000101000040002008000080100230001000000602010040080400800200004000001000000804020080100801000400018000006000001808000200010020048000100000040000030100801002020040010000200000100000020201002004040080018000C00000400000100402004009000020000008000004020100200404008002000040000020000008040201001808040005000080000020000008080002000100400804008002800040000010000004040001000080100202004000C000800000180000020201002004600030000004040200400808010004000180000060000018000002020100400880001000000C000001010080200402004000C0004000000808040100201002000A0001000000400000100000040402004008080100050000800000200000080000020201004008040080020000C000003000000C0000010100801002300018000008000000808040100218000C0000010100802004020040004000202010060042000101008050080 \ No newline at end of file diff --git a/src/test/resources/server/oracleForReparse/autoWithIndex/input/c3e783c9-54bc-42ee-970c-d871117399b2-0.gz b/src/test/resources/server/oracleForReparse/autoWithIndex/input/c3e783c9-54bc-42ee-970c-d871117399b2-0.gz new file mode 100644 index 0000000000000000000000000000000000000000..4174d498f3c56d9787b481dc8c0bf2e5cbe4360e GIT binary patch literal 9162 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 literal 0 HcmV?d00001 diff --git a/src/test/resources/server/oracleForReparse/autoWithIndex/reparsing.json b/src/test/resources/server/oracleForReparse/autoWithIndex/reparsing.json new file mode 100644 index 00000000..8562a77b --- /dev/null +++ b/src/test/resources/server/oracleForReparse/autoWithIndex/reparsing.json @@ -0,0 +1,2 @@ +{"id":"bc8f5359-c997-47c2-836d-8a4df2d1c417","timestamp":1730750565078,"parserVersion":"staging"} +{"id":"bc8f5359-c997-47c2-836d-8a4df2d1c417-0","timestamp":1730748514633,"parserVersion":"staging"}