{"id":"fd4f1c68-4a98-452d-ba6f-3acb60e8b72d","shortId":"2wuuME","kind":"skill","title":"data-structure-protocol","tagline":"Give agents persistent structural memory of a codebase — navigate dependencies, track public APIs, and understand why connections exist without re-reading the whole repo.","description":"# Data Structure Protocol (DSP)\n\nLLM coding agents lose context between tasks. On large codebases they spend most of their tokens on \"orientation\" — figuring out where things live, what depends on what, and what is safe to change. DSP solves this by externalizing the project's structural map into a persistent, queryable graph stored in a `.dsp/` directory next to the code.\n\nDSP is NOT documentation for humans and NOT an AST dump. It captures three things: **meaning** (why an entity exists), **boundaries** (what it imports and exposes), and **reasons** (why each connection exists). This is enough for an agent to navigate, refactor, and generate code without loading the entire source tree into the context window.\n\n## When to Use\nUse this skill when:\n- The project has a `.dsp/` directory (DSP is already set up)\n- The user asks to set up DSP, bootstrap, or map a project's structure\n- Creating, modifying, or deleting code files in a DSP-tracked project (to keep the graph updated)\n- Navigating project structure, understanding dependencies, or finding specific modules\n- The user mentions DSP, dsp-cli, `.dsp`, or structure mapping\n- Performing impact analysis before a refactor or dependency replacement\n\n## Core Concepts\n\n### Code = graph\n\nDSP models the codebase as a directed graph. Nodes are **entities**, edges are **imports** and **shared/exports**.\n\nTwo entity kinds exist:\n- **Object**: any \"thing\" that isn't a function (module/file/class/config/resource/external dependency)\n- **Function**: an exported function/method/handler/pipeline\n\n### Identity by UID, not by file path\n\nEvery entity gets a stable UID: `obj-<8hex>` for objects, `func-<8hex>` for functions. File paths are attributes that can change; UIDs survive renames, moves, and reformatting.\n\nFor entities inside a file, the UID is anchored with a comment marker in source code:\n\n```js\n// @dsp func-7f3a9c12\nexport function calculateTotal(items) { ... }\n```\n\n```python\n# @dsp obj-e5f6g7h8\nclass UserService:\n```\n\n### Every connection has a \"why\"\n\nWhen an import is recorded, DSP stores a short reason explaining *why* that dependency exists. This lives in the `exports/` reverse index of the imported entity. A dependency graph without reasons tells you *what imports what*; reasons tell you **what is safe to change and who will break**.\n\n### Storage format\n\nEach entity gets a small directory under `.dsp/`:\n\n```\n.dsp/\n├── TOC                        # ordered list of all entity UIDs from root\n├── obj-a1b2c3d4/\n│   ├── description            # source path, kind, purpose (1-3 sentences)\n│   ├── imports                # UIDs this entity depends on (one per line)\n│   ├── shared                 # UIDs of public API / exported entities\n│   └── exports/               # reverse index: who imports this and why\n│       ├── <importer_uid>     # file content = \"why\" text\n│       └── <shared_uid>/\n│           ├── description    # what is exported\n│           └── <importer_uid> # why this specific export is imported\n└── func-7f3a9c12/\n    ├── description\n    ├── imports\n    └── exports/\n```\n\nEverything is plain text. Diffable. Reviewable. No database needed.\n\n### Full import coverage\n\nEvery file or artifact that is imported anywhere must be represented in `.dsp` as an Object — code, images, styles, configs, JSON, wasm, everything. External dependencies (npm packages, stdlib, etc.) are recorded as `kind: external` but their internals are never analyzed.\n\n## How It Works\n\n### Initial Setup\n\nThe skill relies on a standalone Python CLI script `dsp-cli.py`. If it is missing from the project, download it:\n\n```bash\ncurl -O https://raw.githubusercontent.com/k-kolomeitsev/data-structure-protocol/main/skills/data-structure-protocol/scripts/dsp-cli.py\n```\n\nRequires **Python 3.10+**. All commands use `python dsp-cli.py --root <project-root> <command>`.\n\n### Bootstrap (initial mapping)\n\nIf `.dsp/` is empty, traverse the project from root entrypoint(s) via DFS on imports:\n\n1. Identify root entrypoints (`package.json` main, framework entry, `main.py`, etc.)\n2. Document the root file: `create-object`, `create-function` for each export, `create-shared`, `add-import` for all dependencies\n3. Take the first non-external import, document it fully, descend into its imports\n4. Backtrack when no unvisited local imports remain; continue until all reachable files are documented\n5. External dependencies: `create-object --kind external`, add to TOC, but never descend into `node_modules`/`site-packages`/etc.\n\n### Workflow Rules\n\n- **Before changing code**: Find affected entities via `search`, `find-by-source`, or `read-toc`. Read their `description` and `imports` to understand context.\n- **When creating a file/module**: Call `create-object`. For each exported function — `create-function` (with `--owner`). Register exports via `create-shared`.\n- **When adding an import**: Call `add-import` with a brief `why`. For external deps — first `create-object --kind external` if the entity doesn't exist.\n- **When removing import/export/file**: Call `remove-import`, `remove-shared`, `remove-entity`. Cascade cleanup is automatic.\n- **When renaming/moving a file**: Call `move-entity`. UID does not change.\n- **Don't touch DSP** if only internal implementation changed without affecting purpose or dependencies.\n\n### Key Commands\n\n| Category | Commands |\n|----------|----------|\n| **Create** | `init`, `create-object`, `create-function`, `create-shared`, `add-import` |\n| **Update** | `update-description`, `update-import-why`, `move-entity` |\n| **Delete** | `remove-import`, `remove-shared`, `remove-entity` |\n| **Navigate** | `get-entity`, `get-children --depth N`, `get-parents --depth N`, `get-path`, `get-recipients`, `read-toc` |\n| **Search** | `search <query>`, `find-by-source <path>` |\n| **Diagnostics** | `detect-cycles`, `get-orphans`, `get-stats` |\n\n### When to Update DSP\n\n| Code Change | DSP Action |\n|---|---|\n| New file/module | `create-object` + `create-function` + `create-shared` + `add-import` |\n| New import added | `add-import` (+ `create-object --kind external` if new dep) |\n| Import removed | `remove-import` |\n| Export added | `create-shared` (+ `create-function` if new) |\n| Export removed | `remove-shared` |\n| File renamed/moved | `move-entity` |\n| File deleted | `remove-entity` |\n| Purpose changed | `update-description` |\n| Internal-only change | **No DSP update needed** |\n\n## Examples\n\n### Example 1: Setting up DSP and documenting a module\n\n```bash\npython dsp-cli.py --root . init\n\npython dsp-cli.py --root . create-object \"src/app.ts\" \"Main application entrypoint\"\n# Output: obj-a1b2c3d4\n\npython dsp-cli.py --root . create-function \"src/app.ts#start\" \"Starts the HTTP server\" --owner obj-a1b2c3d4\n# Output: func-7f3a9c12\n\npython dsp-cli.py --root . create-shared obj-a1b2c3d4 func-7f3a9c12\n\npython dsp-cli.py --root . add-import obj-a1b2c3d4 obj-deadbeef \"HTTP routing\"\n```\n\n### Example 2: Navigating the graph before making changes\n\n```bash\npython dsp-cli.py --root . search \"authentication\"\npython dsp-cli.py --root . get-entity obj-a1b2c3d4\npython dsp-cli.py --root . get-children obj-a1b2c3d4 --depth 2\npython dsp-cli.py --root . get-recipients obj-a1b2c3d4\npython dsp-cli.py --root . get-path obj-a1b2c3d4 func-7f3a9c12\n```\n\n### Example 3: Impact analysis before replacing a library\n\n```bash\npython dsp-cli.py --root . find-by-source \"lodash\"\n# Output: obj-11223344\n\npython dsp-cli.py --root . get-recipients obj-11223344\n# Shows every module that imports lodash and WHY — lets you systematically replace it\n```\n\n## Best Practices\n\n- ✅ **Do:** Update DSP immediately when creating new files, adding imports, or changing public APIs\n- ✅ **Do:** Always add a meaningful `why` reason when recording an import — this is where most of DSP's value lives\n- ✅ **Do:** Use `kind: external` for third-party libraries without analyzing their internals\n- ✅ **Do:** Keep descriptions minimal (1-3 sentences about purpose, not implementation)\n- ✅ **Do:** Treat `.dsp/` diffs like code diffs — review them, keep them accurate\n- ❌ **Don't:** Touch `.dsp/` for internal-only changes that don't affect purpose or dependencies\n- ❌ **Don't:** Change an entity's UID on rename/move (use `move-entity` instead)\n- ❌ **Don't:** Create UIDs for every local variable or helper — only file-level Objects and public/shared entities\n\n## Integration\n\nThis skill connects naturally to:\n- **context-compression** — DSP reduces the need for compression by providing targeted retrieval instead of loading everything\n- **context-optimization** — DSP is a structural optimization: agents pull minimal \"context bundles\" instead of raw source\n- **architecture** — DSP captures architectural boundaries (imports/exports) that feed system design decisions\n\n## References\n\n- **Full architecture specification**: [ARCHITECTURE.md](https://github.com/k-kolomeitsev/data-structure-protocol/blob/main/ARCHITECTURE.md)\n- **CLI source + reference docs**: [skills/data-structure-protocol](https://github.com/k-kolomeitsev/data-structure-protocol/tree/main/skills/data-structure-protocol)\n- **Introduction article**: [article.md](https://github.com/k-kolomeitsev/data-structure-protocol/blob/main/article.md)\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["data","structure","protocol","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding"],"capabilities":["skill","source-sickn33","skill-data-structure-protocol","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/data-structure-protocol","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34831 github stars · SKILL.md body (9,499 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-24T06:51:00.681Z","embedding":null,"createdAt":"2026-04-18T21:35:36.183Z","updatedAt":"2026-04-24T06:51:00.681Z","lastSeenAt":"2026-04-24T06:51:00.681Z","tsv":"'-11223344':1073,1081 '-3':409,1149 '/etc':647 '/k-kolomeitsev/data-structure-protocol/blob/main/architecture.md)':1273 '/k-kolomeitsev/data-structure-protocol/blob/main/article.md)':1287 '/k-kolomeitsev/data-structure-protocol/main/skills/data-structure-protocol/scripts/dsp-cli.py':536 '/k-kolomeitsev/data-structure-protocol/tree/main/skills/data-structure-protocol)':1281 '1':408,564,926,1148 '2':574,1000,1032 '3':597,1055 '3.10':539 '4':612 '5':627 '7f3a9c12':315,451,972,984,1053 '8hex':275,279 'a1b2c3d4':402,952,968,981,993,1021,1030,1041,1050 'accur':1166 'action':852 'ad':698,869,887,1105 'add':592,635,703,783,865,871,989,1113 'add-import':591,702,782,864,870,988 'affect':654,763,1179 'agent':6,36,128,1246 'alreadi':160 'alway':1112 'analysi':216,1057 'analyz':506,1141 'anchor':303 'anywher':474 'api':17,424,1110 'applic':947 'architectur':1255,1258,1268 'architecture.md':1270 'articl':1283 'article.md':1284 'artifact':470 'ask':165,1321 'ast':100 'attribut':285 'authent':1012 'automat':740 'backtrack':613 'bash':531,934,1007,1062 'best':1095 'bootstrap':170,546 'boundari':111,1259,1329 'break':379 'brief':707 'bundl':1250 'calculatetot':318 'call':678,701,727,745 'captur':103,1257 'cascad':737 'categori':769 'chang':66,288,375,651,752,761,850,912,919,1006,1108,1175,1185 'children':812,1027 'clarif':1323 'class':325 'cleanup':738 'clear':1296 'cli':209,519,1274 'code':35,90,134,181,225,310,483,652,849,1160 'codebas':12,43,230 'command':541,768,770 'comment':306 'compress':1223,1229 'concept':224 'config':486 'connect':21,121,328,1218 'content':436 'context':38,143,673,1222,1239,1249 'context-compress':1221 'context-optim':1238 'continu':620 'core':223 'coverag':466 'creat':177,580,583,589,631,675,680,687,695,714,771,774,777,780,856,859,862,874,889,892,943,957,977,1102,1199 'create-funct':582,686,776,858,891,956 'create-object':579,630,679,713,773,855,873,942 'create-shar':588,694,779,861,888,976 'criteria':1332 'curl':532 'cycl':838 'data':2,30 'data-structure-protocol':1 'databas':462 'deadbeef':996 'decis':1265 'delet':180,796,907 'dep':711,880 'depend':14,58,198,221,256,345,359,415,491,596,629,766,1182 'depth':813,818,1031 'descend':608,640 'describ':1300 'descript':403,439,452,668,788,915,1146 'design':1264 'detect':837 'detect-cycl':836 'dfs':561 'diagnost':835 'diff':1158,1161 'diffabl':459 'direct':233 'directori':86,157,387 'doc':1277 'document':94,575,605,626,931 'doesn':721 'download':529 'dsp':33,67,85,91,156,158,169,186,206,208,210,227,312,321,337,389,390,479,550,756,848,851,921,929,1099,1127,1157,1170,1224,1241,1256 'dsp-cli':207 'dsp-cli.py':521,544,936,940,954,974,986,1009,1014,1023,1034,1043,1064,1075 'dsp-track':185 'dump':101 'e5f6g7h8':324 'edg':238 'empti':552 'enough':125 'entir':138 'entiti':109,237,244,269,296,357,383,396,414,426,655,720,736,748,795,805,809,905,910,1018,1187,1195,1214 'entri':571 'entrypoint':558,567,948 'environ':1312 'environment-specif':1311 'etc':495,573 'everi':268,327,467,1083,1202 'everyth':455,489,1237 'exampl':924,925,999,1054 'exist':22,110,122,246,346,723 'expert':1317 'explain':342 'export':259,316,351,425,427,442,446,454,587,684,692,886,896 'expos':116 'extern':71,490,500,603,628,634,710,717,877,1134 'feed':1262 'figur':52 'file':182,266,282,299,435,468,578,624,744,901,906,1104,1209 'file-level':1208 'file/module':677,854 'find':200,653,659,832,1067 'find-by-sourc':658,831,1066 'first':600,712 'format':381 'framework':570 'full':464,1267 'fulli':607 'func':278,314,450,971,983,1052 'func-7f3a9c12':313,449,970,982,1051 'function':254,257,281,317,584,685,688,778,860,893,958 'function/method/handler/pipeline':260 'generat':133 'get':270,384,808,811,816,821,824,840,843,1017,1026,1037,1046,1078 'get-children':810,1025 'get-ent':807,1016 'get-orphan':839 'get-par':815 'get-path':820,1045 'get-recipi':823,1036,1077 'get-stat':842 'github.com':1272,1280,1286 'github.com/k-kolomeitsev/data-structure-protocol/blob/main/architecture.md)':1271 'github.com/k-kolomeitsev/data-structure-protocol/blob/main/article.md)':1285 'github.com/k-kolomeitsev/data-structure-protocol/tree/main/skills/data-structure-protocol)':1279 'give':5 'graph':81,192,226,234,360,1003 'helper':1206 'http':963,997 'human':96 'ident':261 'identifi':565 'imag':484 'immedi':1100 'impact':215,1056 'implement':760,1154 'import':114,240,334,356,366,411,431,448,453,465,473,563,593,604,611,618,670,700,704,730,784,791,799,866,868,872,881,885,990,1086,1106,1121 'import/export/file':726 'imports/exports':1260 'index':353,429 'init':772,938 'initi':510,547 'input':1326 'insid':297 'instead':1196,1234,1251 'integr':1215 'intern':503,759,917,1143,1173 'internal-on':916,1172 'introduct':1282 'isn':251 'item':319 'js':311 'json':487 'keep':190,1145,1164 'key':767 'kind':245,406,499,633,716,876,1133 'larg':42 'let':1090 'level':1210 'librari':1061,1139 'like':1159 'limit':1288 'line':419 'list':393 'live':56,348,1130 'llm':34 'load':136,1236 'local':617,1203 'lodash':1070,1087 'lose':37 'main':569,946 'main.py':572 'make':1005 'map':76,172,213,548 'marker':307 'match':1297 'mean':106 'meaning':1115 'memori':9 'mention':205 'minim':1147,1248 'miss':525,1334 'model':228 'modifi':178 'modul':202,643,933,1084 'module/file/class/config/resource/external':255 'move':292,747,794,904,1194 'move-ent':746,793,903,1193 'must':475 'n':814,819 'natur':1219 'navig':13,130,194,806,1001 'need':463,923,1227 'never':505,639 'new':853,867,879,895,1103 'next':87 'node':235,642 'non':602 'non-extern':601 'npm':492 'o':533 'obj':274,323,401,951,967,980,992,995,1020,1029,1040,1049,1072,1080 'obj-a1b2c3d4':400,950,966,979,991,1019,1028,1039,1048 'obj-deadbeef':994 'obj-e5f6g7h8':322 'object':247,277,482,581,632,681,715,775,857,875,944,1211 'one':417 'optim':1240,1245 'order':392 'orient':51 'orphan':841 'output':949,969,1071,1306 'owner':690,965 'packag':493,646 'package.json':568 'parent':817 'parti':1138 'path':267,283,405,822,1047 'per':418 'perform':214 'permiss':1327 'persist':7,79 'plain':457 'practic':1096 'project':73,153,174,188,195,528,555 'protocol':4,32 'provid':1231 'public':16,423,1109 'public/shared':1213 'pull':1247 'purpos':407,764,911,1152,1180 'python':320,518,538,543,935,939,953,973,985,1008,1013,1022,1033,1042,1063,1074 'queryabl':80 'raw':1253 'raw.githubusercontent.com':535 'raw.githubusercontent.com/k-kolomeitsev/data-structure-protocol/main/skills/data-structure-protocol/scripts/dsp-cli.py':534 're':25 're-read':24 'reachabl':623 'read':26,664,666,827 'read-toc':663,826 'reason':118,341,362,368,1117 'recipi':825,1038,1079 'record':336,497,1119 'reduc':1225 'refactor':131,219 'refer':1266,1276 'reformat':294 'regist':691 'reli':514 'remain':619 'remov':725,729,732,735,798,801,804,882,884,897,899,909 'remove-ent':734,803,908 'remove-import':728,797,883 'remove-shar':731,800,898 'renam':291 'rename/move':1191 'renamed/moved':902 'renaming/moving':742 'replac':222,1059,1093 'repo':29 'repres':477 'requir':537,1325 'retriev':1233 'revers':352,428 'review':460,1162,1318 'root':399,545,557,566,577,937,941,955,975,987,1010,1015,1024,1035,1044,1065,1076 'rout':998 'rule':649 'safe':64,373 'safeti':1328 'scope':1299 'script':520 'search':657,829,830,1011 'sentenc':410,1150 'server':964 'set':161,167,927 'setup':511 'share':420,590,696,733,781,802,863,890,900,978 'shared/exports':242 'short':340 'show':1082 'site':645 'site-packag':644 'skill':150,513,1217,1291 'skill-data-structure-protocol' 'skills/data-structure-protocol':1278 'small':386 'solv':68 'sourc':139,309,404,661,834,1069,1254,1275 'source-sickn33' 'specif':201,445,1269,1313 'spend':45 'src/app.ts':945,959 'stabl':272 'standalon':517 'start':960,961 'stat':844 'stdlib':494 'stop':1319 'storag':380 'store':82,338 'structur':3,8,31,75,176,196,212,1244 'style':485 'substitut':1309 'success':1331 'surviv':290 'system':1263 'systemat':1092 'take':598 'target':1232 'task':40,1295 'tell':363,369 'test':1315 'text':438,458 'thing':55,105,249 'third':1137 'third-parti':1136 'three':104 'toc':391,637,665,828 'token':49 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'touch':755,1169 'track':15,187 'travers':553 'treat':1156,1304 'tree':140 'two':243 'uid':263,273,289,301,397,412,421,749,1189,1200 'understand':19,197,672 'unvisit':616 'updat':193,785,787,790,847,914,922,1098 'update-descript':786,913 'update-import-whi':789 'use':147,148,542,1132,1192,1289 'user':164,204 'userservic':326 'valid':1314 'valu':1129 'variabl':1204 'via':560,656,693 'wasm':488 'whole':28 'window':144 'without':23,135,361,762,1140 'work':509 'workflow':648","prices":[{"id":"63fff001-40d9-41da-a89c-151bcbf2bac7","listingId":"fd4f1c68-4a98-452d-ba6f-3acb60e8b72d","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:35:36.183Z"}],"sources":[{"listingId":"fd4f1c68-4a98-452d-ba6f-3acb60e8b72d","source":"github","sourceId":"sickn33/antigravity-awesome-skills/data-structure-protocol","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/data-structure-protocol","isPrimary":false,"firstSeenAt":"2026-04-18T21:35:36.183Z","lastSeenAt":"2026-04-24T06:51:00.681Z"}],"details":{"listingId":"fd4f1c68-4a98-452d-ba6f-3acb60e8b72d","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"data-structure-protocol","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34831,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-24T06:41:17Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"eb399400ca86400723b296f029f7f8a932395e8d","skill_md_path":"skills/data-structure-protocol/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/data-structure-protocol"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"data-structure-protocol","description":"Give agents persistent structural memory of a codebase — navigate dependencies, track public APIs, and understand why connections exist without re-reading the whole repo."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/data-structure-protocol"},"updatedAt":"2026-04-24T06:51:00.681Z"}}