diff --git a/docs/evidence/spa-3.5.2/README.md b/docs/evidence/spa-3.5.2/README.md new file mode 100644 index 000000000..8960eada2 --- /dev/null +++ b/docs/evidence/spa-3.5.2/README.md @@ -0,0 +1,187 @@ +# Published 3.5.2 full-SPA follow-up + +The six post-login full-SPA recovery cases passed **6/6, zero failures/retries/skips** +on product `ba9014958f7ab0dc0636a18edd1339d9e9e76e60` and published +`@lyyzka/lingxios@3.5.2` / schema12. This closes the previously unverified **3.5.2 +SPA session/human-message recovery** portion. It does not qualify captcha login, +live model answers, a complete sandboxed product Worker, or 3.5.2 durability. + +The run uses the newly built actual React application, a separate local control +Worker and D1 session store, the signed gateway, separate PostgreSQL/Redis, +real pinned WuKongIM and separate storage. It does not use a component recovery +page or mock successful API responses. Synthetic post-login sessions use the +existing test secret; ordinary session validation and authorization stay active. + +| Full SPA scenario | Observed result | +| --- | --- | +| Session restore/reload/expire/renew | Session200 →401 → restored; protected workspace hidden while expired | +| Network fails before acceptance | One original acceptance/message and one next acceptance/message; draft survives | +| Independent PostgreSQL container pause/unpause | Same one/one durable counts; draft survives; recovery without page refresh | +| Independent Web process stop/start | Same one/one durable counts; lifecycle records confirm real stop/start/readiness | +| Send rejected by expired session | Old send remains at zero acceptances/messages after renewal; next send succeeds once | +| Typing401 races the send response | Old send remains unsent after login renewal; next send succeeds once | + +[Report](full-spa/report.json), [counts](full-spa/counts), [13 screenshots](full-spa/screenshots), +[6 videos](full-spa/video), [Web lifecycle](web-lifecycle.jsonl), +[build hashes](build-manifest.json) and [checks/log hashes](checks.json) retain +repeatable evidence. Screenshot names include the case hash so the two expired +session screenshots cannot overwrite each other. Request events/cookies/traces +and raw response bodies are omitted. + +The runner captured the product commit while the prewritten isolated harness +was still uncommitted at startup. The unchanged executed harness is now commit +`ac7f9d4b2e5179de6c438ac8c5db9ae9b5d3fb15`; its dirty-start VCS fact remains in +the report. No product files changed between the qualified main and this run. +The SPA is freshly built from that product tree; its index and all asset hashes +are retained, rather than reusing the earlier3.5.1 build. + +## Isolation and checks + +The explicit `E2E_SPA_ISOLATED=1` profile has fixed disposable endpoints: +Web5280, API5281, runtime5282, supervisor5285, control8897, PG55433, +Redis56380, WuKong55002/55201 and storage59001. D1 uses +`.e2e/spa352-control-state`. The compose project is `lingxiloop-spa352`. +[Container identities/images/bindings](isolated-services.json) were captured. + +The old helper would pause `lingxiloop-e2e-postgres-1`, which the original soak +uses. Two safety tests first failed; the new profile now verifies the exact new +container's label and loopback binding before pause/unpause, and rejects unknown +profile selections. Safety2/2, existing fixture safety3/3 and E2E typecheck passed. +The new compose services and API/control/preview processes were stopped after +qualification to release this executor's disk space. No original soak service +was stopped, paused, restarted, relabelled or reseeded. + +## Complete Worker boundary: concrete failure + +[The current preflight receipt](worker-preflight.json) binds public +`releaseVersions`3.5.2/schema12 and executes the same bubblewrap command required +by `server/src/agent-runtime/runtime.ts:startLingxiOSWorker`: + +```sh +bwrap --die-with-parent --unshare-all --new-session --ro-bind / / \ + --proc /proc --dev /dev -- /usr/bin/true +``` + +It exited1 with **`bwrap: setting up uid map: Read-only file system`** on kernel +6.18.55. This cloud executor cannot satisfy the product's required production +Worker preflight. No privilege, namespace/sysctl, AppArmor, seccomp or production +configuration was changed. A complete product Worker was not started, and no +model call was made. This receipt is a host preflight, not a claimed immutable +3.5.2 Worker-image run. A second, disposable no-network container probe also failed with +`No permissions to create new namespace`. It used the already-cached base +image with the exact registry3.5.2 package mounted read-only, read only its public +version export, and ran the identical preflight under the image's default UID0 +without additional privileges. The original soak container was not used. This +corroborates the container boundary without calling the mixed diagnostic image +an immutable3.5.2 release image. The upstream confined-image CI gate is separate +evidence. + +The successful six SPA cases do not require generation: session validation, +signed API access, human-message acceptance, actual WuKong durability, draft +preservation and retry/session control can be tested independently. Full Worker +restart after an action, model-assisted complete-SPA conversations and live +provider behavior remain outside this executor's qualified results. + +## Four-issue code review and acceptance mapping + +Read-only review of product main `ba901495…` and upstream main +`e09fc03437804ec80bc2f6d6b3258dc3e2f35540` found **no additional product/runtime +code gap in the requested scope**. The follow-up changes only the acceptance +harness and evidence. This finding does not turn missing environmental or +long-duration evidence into a pass. + +Reviewed ownership: product `server/src/agent-runtime/runtime.ts`, +`server/src/db/pool.ts`, shared `server/src/llm.ts`, native authorization, +terminal delivery, published model recovery/execution/embedding/fallback, +`src/model/child-admission.ts`, `PgModelBudgetStore.reserve/record`, terminal +schema/outbox/read APIs and background scheduling. The verified package uses +atomic root-budget locking, startup/closing holds, one-time usage settlement, +current authorization/request-version checks, stable terminal identity and +`suppressAgentWake`; failed/cancelled states are not rewritten as success. + +Earlier evidence below is versioned explicitly. Upstream +[release39015169232](https://github.com/LingXi-Org/LingxiOS/actions/runs/39015169232) +and [publication39015407648](https://github.com/LingXi-Org/LingxiOS/actions/runs/39015407648) +qualified3.5.2 with422/422; product +[main39016358468](https://github.com/LingXi-Org/LingxiLoop/actions/runs/39016358468) +passed245 integration checks with21 prerequisite skips. The +[3.5.2 development evidence](../runtime-development/README.md) records the11/11 +runtime browser fixture cases,17 owning integration passes and20/20 dedicated +real-WuKong checks. Those11 cases use a synthetic model and fixture login and +are not relabelled as complete-SPA/model-provider execution. + +| Issue / original acceptance item | Concrete coverage | Remaining condition, not a new code fix | +| --- | --- | --- | +| #153.1 idle/load/profile/24h | Published scheduler tests cover bounded background connections, cancellation, coalesced notifications, backoff, passive roles and periodic recovery. Prior paired image measurement is3.5.1 Web/API-only. | Qualified Worker/model-dialogue load and retained-heap measurement need an authorized suitable executor/provider; complete24h duration is still outstanding. There is no3.5.2 endurance result. | +| #153.2 Web/Worker/DB fault E2E | This3.5.2 full SPA passes real independent Web stop/start and PG pause/unpause with durable-count and continuation assertions. | Complete sandboxed product Worker restart remains blocked by the recorded preflight. | +| #153.3 health/operations | Readiness/liveness, pool/timeouts and gateway retry boundaries reviewed; owning tests remain qualified by the3.5.2 product CI. | Komodo entry repair, deployment/update-state and production rollout were explicitly removed by the user; they are not development blockers or implied passes. | +| #155.1 provider fault matrix/bounds/ledger | Exact3.5.2 upstream422 gate covers classification, recovery/circuits, cancellation and metadata. Product timeout/total-deadline integration proves bounded requests, disconnection, settled usage, one terminal notice and successful next turn. | Controlled real-provider behavior requires existing authorized endpoint/model/key, prices and explicit spend/call limits. | +| #155.2 fallback/embedding | Upstream fallback tests require current authorization, compatible capability and matching price; no attempt reset. Embedding quota/auth circuits preserve vector-space identity. | No approved live secondary route/provider is configured; none was created or enabled. | +| #155.3 runtime+browser+real provider |3.5.2 product owning tests and11-case runtime fixture passed; this follow-up adds6 complete-SPA session/send cases. | Actual provider-assisted full-SPA conversation is not claimed; external provider configuration and qualified Worker are still required. | +| #157.1 token/cost/deadline/concurrent admission | Atomic budget/closing holds, pending-fanout bound, rollback and settled near-limit cost/idempotency tests pass in3.5.2. | Controlled settlement uses deterministic usage/prices, not an actual supplier bill; live near-cost-limit acceptance remains external. | +| #157.2 one root notification/results preserved | Runtime browser fanout fixture rejects two starts, creates zero child tasks, preserves the successful root answer and emits one aggregate notice without Agent wake. | No additional code blocker found; do not infer live billing from this fixture. | +| #157.3 group mentions/new human turn | Existing group-mention integration and3.5.2 runtime browser continuation pass with no active runs afterwards. | Real multi-agent provider run needs the same provider/pricing/Worker prerequisites above. | +| #161.1 fault matrix and durable replay |3.5.2 package/product tests cover budget/context/provider/authorization/recovery/fencing;20 real-WuKong cases retain one send/message, same result identity and unchanged action/model ledger. This SPA adds actual reconnect/session/Web/DB recovery. | Full product Worker crash-after-action and controlled real-provider matrix require a suitable authorized cloud executor. | +| #161.2 partial/blocked/cancel/revocation | Terminal feedback remains separate from results; request/fence/audience checks and revoked-delivery tests pass. Runtime browser cancellation has no extra model call and permits the next request. | No additional code gap found in this review. | +| #161.3 historical regressions | Package lease-recovery bounds and inherited evidence, product receipt reconciliation/FK regression remain covered; no old defect is reported as newly reproduced. | No additional issue-specific code gap found. | +| #161.4 public API+browser+provider | Exact public3.5.2 package, product CI, runtime fixture11/11 and this complete-SPA6/6 have retained artifacts. | Real provider and complete Worker isolation remain unqualified; captcha/login itself is also excluded from these post-login tests. | + +[Provider prerequisites](provider-prerequisites.json) records presence checks +only: none of the required provider/model/key/input/output-price environment +variables was supplied. No values, secrets or prompts were exported. Open +issues153/155/157/161 therefore retain **external configuration/environment and +observation-window acceptance conditions**, not an identified unimplemented +product repair. The3.5.2 durability exercise is unperformed, not silently passed. + +## Existing soak and independent follow-up + +[Isolation receipt](soak-isolation.json) confirms the original image start time, +restart count0, unpaused state, unchanged observation start and zero violations +after this suite. That observation remains **3.5.1 Web/API-only**, started +2026-10-17T06:42:47.900Z, earliest completion2026-10-18T06:42:47.901Z. +It cannot qualify3.5.2, model dialogue or a production Worker. + +Monitor285092 writes state/heartbeats/terminal receipt. Evidence watcher363050 +pushes initial/hourly/final snapshots to +[codex/runtime-soak-evidence](https://github.com/LingXi-Org/LingxiLoop/tree/codex/runtime-soak-evidence/docs/evidence/runtime-measurements/soak) +and reports terminal/stale failures. A separate existing ChatGPT Automation, +**LingxiLoop soak 复查**, is enabled for **2026-10-18 06:50UTC**, with exact one-time +schedule `DTSTART;TZID=Etc/UTC:20261018T065000`. It reads public remote state, +handoff, heartbeats and terminal receipt independently of the shell watcher. +The existing task identifier was verified and reported privately to the parent; +no second task was created. Its schedule/enabled flag are saved; execution or +notification delivery has not yet occurred. Missing/stale evidence or an absent +terminal receipt must be reported incomplete. It performs no production action. + +## Reproduce + +Use Node22, the exact published dependency and existing synthetic test-service +images (override `E2E_WUKONG_IMAGE`/`E2E_STORAGE_IMAGE` only with the matching +already-authorized images). No developer/provider dotenv is loaded in this run. + +```sh +docker compose -f e2e/acceptance/compose.yaml up -d --wait +E2E_SPA_ISOLATED=1 node e2e/local-api.mjs --seed-only +E2E_SPA_ISOLATED=1 node e2e/admin/start-control.mjs +# In another terminal: +E2E_SPA_ISOLATED=1 ACCEPTANCE_FIXTURE_ROOT="$PWD" node scripts/runtime-acceptance/spa-web-supervisor.mjs +# Build, then preview (another terminal): +VITE_TURNSTILE_SITE_KEY=1x00000000000000000000AA \ +LINGXILOOP_DEV_API_TARGET=http://127.0.0.1:8897 LINGXILOOP_DEV_WS_TARGET=ws://127.0.0.1:5281 \ +node node_modules/vite/bin/vite.js build --outDir .e2e/spa352-dist +LINGXILOOP_DEV_API_TARGET=http://127.0.0.1:8897 LINGXILOOP_DEV_WS_TARGET=ws://127.0.0.1:5281 \ +node node_modules/vite/bin/vite.js preview --outDir .e2e/spa352-dist --host 127.0.0.1 --port 5280 --strictPort +# Official engine: +E2E_SPA_ISOLATED=1 ACCEPTANCE_FIXTURE_ROOT="$PWD" E2E_BASE_URL=http://127.0.0.1:5280 \ +E2E_BUILD_INDEX=.e2e/spa352-dist/index.html PLAYWRIGHT_BROWSERS_PATH=/workspace/.lingxi-setup/cache/ms-playwright \ +npm run test:e2e:web -- --config e2e.acceptance.config.ts --output .e2e/full-spa-acceptance --video on +node --test e2e/acceptance/isolation-safety.test.mjs e2e/server/fixture-safety.test.mjs +npm run test:e2e:typecheck +``` + +Stop only the new profile's API/control/preview processes, then run +`docker compose -f e2e/acceptance/compose.yaml down`. Never stop the original +soak project or use a shared PostgreSQL pause for this selection. The scoped +repository CI may skip product suites for harness/docs-only changes; the cloud +commands and retained results above are the actual owning checks, not a claim +that skipped CI jobs executed the browser suite. diff --git a/docs/evidence/spa-3.5.2/build-manifest.json b/docs/evidence/spa-3.5.2/build-manifest.json new file mode 100644 index 000000000..387be2f50 --- /dev/null +++ b/docs/evidence/spa-3.5.2/build-manifest.json @@ -0,0 +1,1128 @@ +{ + "assets/AccountSettingsPanel-xVIRHa69.js": "3d25e2949776db627327ad125486cf101c8f53172498ac6b8e83c9629ec90bd4", + "assets/App-7nL5TePy.js": "8b277bc155a090ff695b842f598d0365f28432c44749c67444e42e8c5679be8e", + "assets/AppearanceSoundSettingsPanel-Dl9SIWZV.js": "d92b183d1e2e222f3e42a45677a8fdf0e4005108d655d1f9f6e21b0bf174ffb5", + "assets/Assistant-Bold-gm-uSS1B.woff2": "e0cdd332ce039770e93ec44336b6db65f931940f42b0342aad35a06e7f991d29", + "assets/Assistant-Medium-DrcxCXg3.woff2": "81a9f280ce6a790f20ca8cd521183caa430f1f7fdc0752c36ef1cc6dc828ac57", + "assets/Assistant-Regular-DVxZuzxb.woff2": "76945f09225aae65bdbd204cb4ac40d4caa4ff67150e5074bab1a04d1b778fc3", + "assets/Assistant-SemiBold-SCI4bEL9.woff2": "bba47a7d1b185a4a2e0d265ec82aeac5dbc2dc9cb0f482a2ff57cbdfe4e5045d", + "assets/AuthedApp-DK6fBNrx.js": "8218d00bd10f6d7c0680e54cf10a1ad7f6267ace92e9d1f5be843e39a9c51988", + "assets/AvatarEditor-D92JNesf.js": "f0064bf6f166e4d18220d7cedb702e67c321860c498af8c5965d15c9191d6ccc", + "assets/CanvasPreview-HdLyCCn0.js": "b05d1ffe8e36fc4a97c2dc0c65efa9deff78fbf4e1e31742d65fac24ab9cc8af", + "assets/CanvasView-RvL-1Fo-.js": "dbbe832fd62fd09030cf8e503a04466a522438fcc777d6625975b36283bacd3f", + "assets/CheckmarkCircle02Icon-D-PTcbNP.js": "8c0290e3f815d726e220a0c943279b7214b206559d1ebc723dde147bbc59135d", + "assets/DataAccountSettingsPanel-D7-KGh_h.js": "6c8d1ad9147555eadc63097633ab8b14b8c7d9eafecaf43a98fc7075a3e810f0", + "assets/Delete02Icon-BJr_Zw5R.js": "f1e02a5905318181af65f2ee6322c0003677d750bab9f0cae22b03744205e93b", + "assets/DocumentPeekPane-D-UVW-ca.js": "17b25fe312691233ca5d470e1ea7a88295981b0e42cb3bdec56849758032fd2d", + "assets/Excalifont-Regular-41b173a47b57366892116a575a43e2b6-BJAJQqlB.woff2": "c96649a5f96e2faa9143ee94e5b590b5afb08092f8d67c67f09cef332d66e4a7", + "assets/Excalifont-Regular-a88b72a24fb54c9f94e3b5fdaa7481c9-DBEDukyo.woff2": "e4423b318e11432aff2e6e865e300b7ca270f92321a3f56632268fede01c1b48", + "assets/Excalifont-Regular-b9dcf9d2e50a1eaf42fc664b50a3fd0d-C6QjyRMU.woff2": "b424d16da4398be3e9852857a54ff70e043c8e2ec5c4444dbf7f88d7469b9859", + "assets/Excalifont-Regular-be310b9bcd4f1a43f571c46df7809174-CwOnC3Ii.woff2": "4fb8ad69be9aeac5664d99e5aa3a68a27ea40c98943b80387f7cd55c034fcc93", + "assets/File01Icon-BGmMMIco.js": "ec3990990ff3f06505e9ebfcc47176f67457ec6300f37096a9e41dfb986a7467", + "assets/GlobalInteractionProvider-DR9_y63E.js": "ac18e2dd09767a5e49f2b13dd2e824ed88d8e120a1ea7dd97f8015dd7d09a09d", + "assets/InformationCircleIcon-CUKxAkIj.js": "d4c349110aa12dba41d2267a92aa5152357a5ae47b0a28cf1ad400f714966c6c", + "assets/KaTeX_AMS-Regular-BQhdFMY1.woff2": "0cdd387c9590a1a9f9794560022dbb59654a7d86f187aa0c81495ad42d3a7308", + "assets/KaTeX_AMS-Regular-DMm9YOAa.woff": "30da91e84c893f875e252689faebdc590b2871145e8adc7f9a9d4dbd8ce0b251", + "assets/KaTeX_AMS-Regular-DRggAlZN.ttf": "68534840bcfdd2bffb6f0e8deb48684dd01e7f04ea2813267577afb906de1d13", + "assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf": "07d8e303ce4fc12b4bb54f1004170dd190a1f3db45d400fe68060df3e0897268", + "assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff": "1ae6bd7475590e97e7f145a89e09ccde322f7a6bc0b91607b1c8b8ee28290fed", + "assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2": "de7701e42cf1f4cf0b766c03fb27977207eee2f4fd5d76fa82188406da43ea4c", + "assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff": "3398dd02302557a793f2863f88e02d96ce10df2abffa07c8e9fa90775116e65c", + "assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2": "5d53e70ad607c2352162dec9e0923fb54ecdafaccbf604cd8dcf7d00facb989b", + "assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf": "ed0b74372feefcbb9c0666b2e210da37b7e49fa7fbbf3eeb11db5f693dacfbb7", + "assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf": "9163df9c7122432e6495b4229fa9071cf9ae86a758ae5efc4924ec2e1a6dbce1", + "assets/KaTeX_Fraktur-Bold-BsDP51OF.woff": "9be7ceb88004ab8ad124082246fbfcca4091e36385d4ec6ed1df67375dad50fb", + "assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2": "74444efd593c005e3f4573b44524704c0af0a937fe911cca9e94068d0d140d3f", + "assets/KaTeX_Fraktur-Regular-CB_wures.ttf": "1e6f9579e90e2cac37f8f60a597c436e075c114385652b7cbeb0dec0421291b3", + "assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2": "51814d270d06ff0255dba0799994fa4d8c84d11f09951d47595f4abb1f3602dc", + "assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff": "5e28753be717dac97f559f49bc10be9cf3c124ddcabda6659d11cb68febc6463", + "assets/KaTeX_Main-Bold-Cx986IdX.woff2": "0f60d1b897938ec918c8ce073092411baf9438f6739465693ff18b0f9d20b021", + "assets/KaTeX_Main-Bold-Jm3AIy58.woff": "c76c5d696297d51b9cb1639c7da4334f0e7dec81b42b11213b5e25ef671bb822", + "assets/KaTeX_Main-Bold-waoOVXN0.ttf": "138ac28d1663b3037e9c5f52371fa5c63d8324f4a38d22cd573e6ea3a3fd0cf8", + "assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2": "99cd42a3c072d918f2f44984a807cf7aa16e13545fd0875fc07c6c65f99e715b", + "assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf": "70ee1f64a20f2048c21940ef46d0144fd215baa953ca69afd1e31e98544f708f", + "assets/KaTeX_Main-BoldItalic-SpSLRI95.woff": "a6f7ec0d846ac7ad975adb8959c37ed49b94acbc4ae436db9ce9e20287e4a64c", + "assets/KaTeX_Main-Italic-3WenGoN9.ttf": "0d85ae7cc30f23790a7f1a58c4a112fdca8aae769b6ba11429af1d98b1b6cb3a", + "assets/KaTeX_Main-Italic-BMLOBm91.woff": "f1d6ef86f3b11a528bd5185199bd2443ecb2b0dead96d88674b5a2c12be24bdf", + "assets/KaTeX_Main-Italic-NWA7e6Wa.woff2": "97479ca6cce906abc961ecac96faa5f9ca2e61b8e7670d475826bcdee9a7c267", + "assets/KaTeX_Main-Regular-B22Nviop.woff2": "c2342cd8b869e01752a9321dc17213fc40d4d04c79688c1d43f2cf316abd7866", + "assets/KaTeX_Main-Regular-Dr94JaBh.woff": "c6368d87e8a1a3a5d337623d83d8dc4b868f242a9ad476237d6f8d1e0f168cdc", + "assets/KaTeX_Main-Regular-ypZvNtVU.ttf": "d0332f52868370fd83ae7fa46470f90c8f2eab2fcf12bc4f88080b340c95a830", + "assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf": "f9377ab0271cda59af24bcffbd46a4d0c8a3572ffafdbb38de2ad5ea7b0d5ee5", + "assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2": "dc47344dbb6cb5b655c8460d561f4df5f501b90c804ad3c6cec65fe322351ab1", + "assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff": "850c0af5c2238497febaf5e461d880bf458c341f42f4f330f1b1ab5698b1998e", + "assets/KaTeX_Math-Italic-DA0__PXp.woff": "8a8d244581371912b8f3f5a23e2437cb2a59cd9bcaebb0346e722c05737a2571", + "assets/KaTeX_Math-Italic-flOr_0UB.ttf": "08ce98e51b04d58945a301e639e02b6998af29fdfd61a7b8afdd07bbfc479d4a", + "assets/KaTeX_Math-Italic-t53AETM-.woff2": "7af58c5ec8f132a2ddde9027c6d7814decce4d3b822a11192a42a20e2e973264", + "assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf": "1ece03f79f95277d57dc7f6b435a74e1379b0d46104a8530286b60ff49369ea0", + "assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2": "e99ae51144bf1232efcc1bfe5add36262c6866b0faab24fa75740e1b98577a62", + "assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff": "ece03cfd83e22c212cdef66feb8442d25a083beb988db3f1883f3f9738d750ba", + "assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2": "00b26ac825e2095056396e0553b8ac26d3f8ad158c3826e28b4c45b385c4714a", + "assets/KaTeX_SansSerif-Italic-DN2j7dab.woff": "91ee67500cc0129aa0ace3ac5c61ff1692102f0f31d02b69347fba35dcb75bf2", + "assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf": "3931dd81faed86ba021bb2bbdc36f5bed9a38d6b4f4077aca59b265aa1b02083", + "assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf": "f36ea897e19f4a2e571d1e900e4e3710e438deb05a842486045ba0a3e616a4ad", + "assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff": "11e4dc8a6471ff6d6ee561d53d10fde8f7489e798257ff449c5d37c197435605", + "assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2": "68e8c73ef42afd3ccec58bf0fba302cce448938e7fc020a5e31f8a952eee1342", + "assets/KaTeX_Script-Regular-C5JkGWo-.ttf": "1c67f068fea8bb09bf099c088b1cf64bd27516a6e07f4684344873564bb66a67", + "assets/KaTeX_Script-Regular-D3wIWfF6.woff2": "036d4e95149b69ff9bcc0cd55771efeb25ffa3947293e69acd78d5ac328c684b", + "assets/KaTeX_Script-Regular-D5yQViql.woff": "d96cdf2b3bdd4d64a8fd5f74a4c467f123a8a73931cd435889f08ffaf9bf947a", + "assets/KaTeX_Size1-Regular-C195tn64.woff": "c943cc986384f59e86bea5fd7dc50a9c4dfe567a7c05eb40d6790720dead97c9", + "assets/KaTeX_Size1-Regular-Dbsnue_I.ttf": "95b6d2f1a50173bfedb8c63e1d1c99b10427d0a4df4201cb44513b226951a22b", + "assets/KaTeX_Size1-Regular-mCD8mA8B.woff2": "6b47c40166b6dbe21a5dfca7718413f2147fd2399be1ba605d8ad39cedf25dfe", + "assets/KaTeX_Size2-Regular-B7gKUWhC.ttf": "a6b2099fb555c60e3a0db3a08842ebf1d732c6eb4e4bf44913613bed4fc4e39b", + "assets/KaTeX_Size2-Regular-Dy4dx90m.woff2": "d04c54219f9eaec6d4d4fd42dfb28785975a4794d6b2fc71e566b9cd6db842dd", + "assets/KaTeX_Size2-Regular-oD1tc_U0.woff": "2014c523c3210bcc166648c4d4cc57f05b747df07a24277bf71c51e67dc79e3d", + "assets/KaTeX_Size3-Regular-CTq5MqoE.woff": "6ab6b62e9b62dae2c00dd90f791bd10950be0ecc3490d7d6045f51c2e8fe0949", + "assets/KaTeX_Size3-Regular-DgpXs0kz.ttf": "500e04d54f0d51666332c9d2089aa803be22aa878eca539e59fa53c6e522b082", + "assets/KaTeX_Size4-Regular-BF-4gkZK.woff": "99f9c6750b489c9462bf04900bd3f939df9b829339daaaaa99ef5495cdddea58", + "assets/KaTeX_Size4-Regular-DWFBv043.ttf": "c647367d1dd4e162468717d020e1fc0f1dc5c26ebfdffbe55261713bf88c5877", + "assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2": "a4af7d414440a1c1790825cfb700cf9cf43b0f2c4b04f0ebc523011ad9853ec0", + "assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff": "e14fed02b1aba7ce9f5afd5844b5d0321b22351febc720e0de8b8723527609f7", + "assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2": "71d517d67827787cfabdf186914cc3358eda539e37931941f2b2fd4a21f68c0b", + "assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf": "f01f3e87d9c6a61c0c081ceb577abd864eb00a612f7ac1620dd6915fad2ef5aa", + "assets/Loading03Icon-BZs6zdd3.js": "cd8526d9210dc741f360197479676085f73c9fd98685332758cf40e62b2b706b", + "assets/MathMarkdownRenderer-C4rRGD5N.js": "5f2f8a21aa38d028ef6906bb9e86fb66b20c42f088073044745fcd8f2fc2cee0", + "assets/NotificationSettingsPanel-DI5jKwc7.js": "7a5b1aa145789c6deea2b8da27666d3af53ecae00935dc4437ecb6b0179759e5", + "assets/PersonalDashboard-B7Dyl759.css": "b3dba0288ac5885e93b552a4dd21268877c1e55d27362683355e39243ae9db96", + "assets/PersonalDashboard-aR7VuiT-.js": "164d2f7a4761f686a72abfd59b700d3ce590852702cc5c2e4c56e4beb1c2082e", + "assets/PresentationDrawerContent-BIIrjEzB.js": "053fc61ca99dff6d7dc92d3a61389bf3eef465ee34c25f379f6def0063de3d3b", + "assets/Xiaolai-Regular-019d66dcad46dc156b162d267f981c20--ng5YhL1.woff2": "7404ad8086cf238269c6f6aa3ecb754dac903c7b28be88d1f683b9eab7c463e6", + "assets/Xiaolai-Regular-04b718e5623574919c8b0dea5f301444-DVmpwAT_.woff2": "cfdf67b97d5eee43f06d4fd6c8d8a1136d66e3391c3500341cef41bf39672559", + "assets/Xiaolai-Regular-069e77aac84590e2e991d0a0176d34f2-UpJa-tL5.woff2": "9a8e521a24e531cbeadfbd2750108c48aef9c0f13b0c0840e2cc9fae3257aed4", + "assets/Xiaolai-Regular-06c77b8c66e51ed6c63ccb502dd8b8af-1FyG5Ivq.woff2": "cc2e553954218cc43f5f6f7cf54136d4d0a4317b88d670ae1940797545bdec61", + "assets/Xiaolai-Regular-08e0dc436ad0ad61ba5558db0674d762-CU9-FjM2.woff2": "101960c709c4a146a181f002808861249fe13ede28fc2d9cff24175715191abc", + "assets/Xiaolai-Regular-093b9ef39a46ceae95a1df18a0a3a326-Dz38OfKx.woff2": "819bbcac2468e1b44363442bca0a7a894883c32ce5cf9b28f707d94304a8a3ed", + "assets/Xiaolai-Regular-095c169f3314805276f603a362766abd-x6BO_Oyy.woff2": "7f05badb0edb31118c69aa6f9bd20b13e737b5719f816617d342a50dc51c9506", + "assets/Xiaolai-Regular-09850c4077f3fffe707905872e0e2460-BUsveLop.woff2": "4cd090f380a82950208e5ff0b83b63f82d9a998881dfa12a8b8a8e6c7fd298bf", + "assets/Xiaolai-Regular-0986d134c05864f5025962eef9f994a0-wPOiKfkA.woff2": "76cdc801e75369e01fe0907f0e603a699dccf1fa0d880a717b8dceb0c8751806", + "assets/Xiaolai-Regular-0b5d723fdc4e249c140f0909e87d03b4-D_L8Pv09.woff2": "4a5ab634a6839e983344645d82d31d85a1786fd4e81d344f8544181158a86c45", + "assets/Xiaolai-Regular-0f626226ba1272e832aea87bafd9720e-_NF7pkOz.woff2": "c261de5643a0b6fdfeb3fa6c43548dc6270f19756532c2953a4c8f74a1bb670d", + "assets/Xiaolai-Regular-0f7fb1e0d5015bb1371343153ecf7ce3-DDSgvIvg.woff2": "7d92022e9005636c778ebccb89ca8ab3a17c7d99e17201c422ce833e4d4e0e04", + "assets/Xiaolai-Regular-0fa55a080fcd0f9dc2e0b0058b793df8-DUCJAQ8t.woff2": "a3531eb15218eca282196405dca5e502a0b0ce14d82824ee5c3104e241f12c56", + "assets/Xiaolai-Regular-0facdf1ea213ba40261022f5d5ed4493-A3C5LsMs.woff2": "4692019d3f011ff2b8c012ef4d5bcb9d649259bb3e68b8d5eded06fd5f6948ff", + "assets/Xiaolai-Regular-10a7ae9a371830a80c3d844acf1c02d7-DYzWTkBs.woff2": "343e81a0225cf0848a0c5c3df11589aba1386a8ea954fa549dd8749384e54c15", + "assets/Xiaolai-Regular-112c051027b2d766c19a519f6ee1f4f7-BiGIv8Hz.woff2": "64d5521ca4b191e41422c2a1e775aae43a831a720a96c64b42d70a2229e1bec7", + "assets/Xiaolai-Regular-11c345711937f0ba4b8f7b6b919c8440-D_B67cIm.woff2": "cb5cc5380aa885e6ea2d9502f15673ffe1e96d08a8e240cadc8a9a9e727a85d2", + "assets/Xiaolai-Regular-12b52b58eb3df36804b9a654ec9ee194-wvU-ONA_.woff2": "d10137e035185e36212a9ec70ea8c2b0b10f30b175f9543f57412a6f48abfddf", + "assets/Xiaolai-Regular-13ae07ed2e272d26d59bc0691cd7117a-DyG0IaBy.woff2": "4f0db89e7086b5eef3a83dc41d81ee3d46f9d7ae761e150e5689684e95ceb022", + "assets/Xiaolai-Regular-13d2887ec8ee73c43acdabc52a05af7b-INMPDEA4.woff2": "b8a3f1ac2323db2a1ef228f021be3d13b1190ed7c1f4af6b0d50d0c4d454adbc", + "assets/Xiaolai-Regular-145aa02cdd91946e67dc934e1acffe75-DCSMho3r.woff2": "96f696dd01f2534ceca68a6c9795f927c7c1dd276f7e97069cc7d76d85c9156c", + "assets/Xiaolai-Regular-15dc6d811c9cd078f9086a740d5a1038-DoCPLXur.woff2": "b62e88759e83e6898a7c7588f8587d064aba185b9e6b9b79c15c22c7b195225f", + "assets/Xiaolai-Regular-173945821411c09f70c95f98d590e697-B7fq8LyN.woff2": "ef5693cd230dcc67a120cf627d59d9b66acab7b8f356f9a36c3a1e2edf479f0a", + "assets/Xiaolai-Regular-1b611157cd46bb184d4fa4dae2d6a2b8-C33wfJzC.woff2": "5b79154058f247d013a6561ba070b044911b3206e872ce8a2476392245f9de27", + "assets/Xiaolai-Regular-1e6fd68f1f3902ce48ce8c69df385622-DGzb6yKi.woff2": "7a1db91b8de7dee60467eafa390af5aa6e8ad313e6b6fb62c31e7a03ea26f385", + "assets/Xiaolai-Regular-1ee544f0f1dac422545c505baa788992-NU09-aQM.woff2": "4c478c0638b0ede25838805d6f99badcc57fbf022e44562c9194c0c75118f1c1", + "assets/Xiaolai-Regular-1fdc0c67ed57263a80fd108c1f6ccf24-DoICQ1xS.woff2": "cdc443c022e8300966f91ec8b3185953579979dd5bffbcc66b498fe6b71e6c39", + "assets/Xiaolai-Regular-203b0e569e3b14aac86a003dc3fa523e-BV5OlbX8.woff2": "ddfc3cd617e83e271190a01fcfeb8625cd5ff9c105ca362c8804b7f762e595b2", + "assets/Xiaolai-Regular-20cc1bbf50e7efb442756cb605672c1f-CBSpKsgx.woff2": "27dce6f37362f4ad1495da86e9aa9ec808237d41d69d3f2f13d54ccbfe504c83", + "assets/Xiaolai-Regular-20e7bf72fa05de9adf7dbcc7bf51dde6-ta1Pyi_c.woff2": "d9742a018d17fea1da72556502ef20d02b5cb80ddd571e539b60ce26cd19d4df", + "assets/Xiaolai-Regular-21430ee05a1248901da8d0de08744d47-Dlud8_SW.woff2": "d7d7130ac4a5ce5cf5f0a01f408267133cde16ef2966dfb35a9fc5a37f762cf8", + "assets/Xiaolai-Regular-23686f7f29da6e8008c36dd3a80c83d6-z8BxibDJ.woff2": "ab60b69500468e81eb3a6796b8e23560699e2de1be596956bd1832256fae9d44", + "assets/Xiaolai-Regular-23ad2d71b280f00b1363b95b7bea94eb-CWNdSzDH.woff2": "e8dec71d8ede1b9b9f3d7325e1ea31432474a83095719bd2149852fef4794ed5", + "assets/Xiaolai-Regular-23f228f3999c01983860012330e4be08-Dp04nUAL.woff2": "20a7232989878afcad6de84b68872facaf96fb85c6827f0457d532c1cbf6bbcc", + "assets/Xiaolai-Regular-24476a126f129212beb33f66853ea151-CDbhuij5.woff2": "c0c147e916a32a86306f2f9864982d87fdf41b6a0c3d1ed77c2aabd2ed772a94", + "assets/Xiaolai-Regular-24a21c1e4449222e8d1898d69ff3a404-Du4Tdt_c.woff2": "e49f1063fddb7928f50c6490912df4bce1042795bd372ce0673cc0d87beec559", + "assets/Xiaolai-Regular-25b7f38e18f035f96cb5e547bd2bd08c-BqNQjXDu.woff2": "a6ec4baa25d737b49526c152b69a98e66373e3ab2a337ca1c7a895d7a6d8b45b", + "assets/Xiaolai-Regular-29cec36cd205b211da97acabaa62f055-ASJmclkg.woff2": "9ab470df6c456a0a376521f52fc8a857849ad15c640b6c8fae020fbdeb0cde0b", + "assets/Xiaolai-Regular-2a26d20a23b00898ce82f09d2ee47c3f-DPPTIdnV.woff2": "d85471a49823e8757af9c1c7d920fbfb4ccdb9660e06f7b43ea2b2325b438d0f", + "assets/Xiaolai-Regular-2adbc89c11e65905393d3dfc468b9d5b-CyGgH9ZL.woff2": "896a9145f32c6db6eb6ccdff9986859f08e349f505628dd9eeff2139def675cc", + "assets/Xiaolai-Regular-2b7441d46298788ac94e610ffcc709b6-DRo87U0f.woff2": "d0493edd4b70aab6e7c4d78be1d5976d2fb0113c486f20bc2114d8d0f8256f5d", + "assets/Xiaolai-Regular-2b77e8ebfb2367ab2662396a60e7d320-cUCgsOXo.woff2": "6cba567589067e182dd06054fa24e52ce5e8ac8d07278861125e3b6f6d2d2a31", + "assets/Xiaolai-Regular-2cf96d082d35ea3d8106851223ad0d16-FhQpdGIu.woff2": "714626f97e78b4ee72f935408a48508e9f9855399429ba23dc0c9ef0f4074368", + "assets/Xiaolai-Regular-2d43040e86ff03ba677f6f9c04cd0805-P1nHHNOe.woff2": "cb1ac8f87c3e4c2e3dd925480e2b6c659100acd59266e957065708c5c46d7385", + "assets/Xiaolai-Regular-2e33e8dc771ef5e1d9127d60a6b73679-DaWsAHu4.woff2": "13941783dc59754f2bcdcd3c54e7bb665e433fc1ffe1cafa0e273ddcd4f62dbe", + "assets/Xiaolai-Regular-33432927cd87d40cfe393c7482bf221f-D1eSACaa.woff2": "9b2a6cb479d1b3d2966a5beb93ba63f30d6b05e83c2985b3f9aab447d802a4b5", + "assets/Xiaolai-Regular-353f33792a8f60dc69323ddf635a269e-LFRkdvBZ.woff2": "aee4567e54a8428067774cbcc9ca8faf2d9bbb10d0a780a374c950d286e1d8d3", + "assets/Xiaolai-Regular-36925dfe329a45086cbb7fc5c20d45ac-B8ozVdIh.woff2": "542fd6f0fb2eabcd2cfd79b0cecafb376691aa74afcfbf718c8d26160d0cd9ab", + "assets/Xiaolai-Regular-3717077e38f98d89eae729b6c14e56dc-Cl5hf5Gu.woff2": "34718d3ab2e153ea66994f9b20475c76bcbe61c73dcef6b7d4096f0eec2eef6b", + "assets/Xiaolai-Regular-3756e81d3e149cf6099163ee79944fec-Bbj-MfTu.woff2": "9db5961935f12cad41726aa81c08c9783b6c71ecaaf7dfea1e4b8f5768defb4d", + "assets/Xiaolai-Regular-395c35dd584b56b0789f58a0559beaf1-6rT349CV.woff2": "8d6bb509725a27cd4cde2daaf743be8ec74114ad3719add4c805cd1c2fdd0f13", + "assets/Xiaolai-Regular-3c9de2ae0ea4bc91a510942dfa4be8d2-pAEHE2sG.woff2": "9c4e535e741d6a13ec36bb2909058db1321919cb14561e661c62be8f0ffda7f9", + "assets/Xiaolai-Regular-3cc70dbb64df5b21f1326cc24dee2195-D2ESX3iw.woff2": "71a3287e8998e47016b5159ae03f636939516b4f5b251ee71f0c5a5212e4df6b", + "assets/Xiaolai-Regular-3e1f8f654357353bf0e04ba5c34b5f7f-C8RFwjKr.woff2": "8c3887fce9435759019e1ecba3ee315164d0f8a598ce24b94c8bfecebbb724a4", + "assets/Xiaolai-Regular-3e63ed8162808a9e425ed80a8bc79114-DU58dBuz.woff2": "cfafe77006c4bbd7ece2231a735f8c219a3faa6831d4d5733ab14bd91779157a", + "assets/Xiaolai-Regular-3eaa538115d76932653c21d8dc28f207-RyXogWdy.woff2": "04a7b1244c272a46ca740937e1a3e790e8ff142d6fcf53934be0e4a167eacdc9", + "assets/Xiaolai-Regular-4095eb84ef3874e2600247bee0b04026-BWquGSc0.woff2": "6ab6ac356c313d98d26c9a23e9b1d5239330974b090d8aba8184ce99c24fcf16", + "assets/Xiaolai-Regular-41521fade99856108931b4768b1b2648-zfoWCXW-.woff2": "2c096e4a843896d2d735c8f19b8e2e8e1293202d2e0a41adfab16995e32ae07e", + "assets/Xiaolai-Regular-450da755d5bcb70906e1295e559b9602-BE-fZWpf.woff2": "e07fdcb886eb2f90a49b22e3d369eb1f480fdef7c509249d0437ba95af3aedc6", + "assets/Xiaolai-Regular-452225341522a7942f0f6aab1a5c91a3-BItH6NkO.woff2": "a432715f6fed8499a420cb44acfe8f71e600afe0aa340ff2e63b741fa05f6fae", + "assets/Xiaolai-Regular-4535823663ad81405188a528d8f2b1a2-Dp0AnvC2.woff2": "f3c72f094659af2e6fbdbb0e5dba91089c4f5990d479dd9bbe5fa5ae4f95ab41", + "assets/Xiaolai-Regular-4806e761d750087c2d734fc64596eaff-B2q7cCEy.woff2": "29aa32e6f5a6f5cee931aed56aaedb8d974b2913c71591c605ce5729842497ba", + "assets/Xiaolai-Regular-4a0fdb40036e87b40aa08dd30584cb85-DkU1vQUn.woff2": "9be1f8a2fd341f5058d483304063535b6ac5be04294846c89a0a946f7fb33f9d", + "assets/Xiaolai-Regular-4a38cc3e9cf104e69ba246d37f8cf135-D1OvtD9u.woff2": "b3aebf243c2be02360a1452ba3b0090d223faf7a76fde5f7495bf25cedfda5a1", + "assets/Xiaolai-Regular-4aca6a43e59aceee2166b0c7e4e85ef1-C01jEbNZ.woff2": "cdf1f8c3ff1154762aa390d8babe5ee12450d7ad5cdc3a0b8e58a66dcb75b8ea", + "assets/Xiaolai-Regular-4bfaa8ffa64c5ee560aa2daba7c9cbd3-VO85AMZO.woff2": "0405baa428ee4175650f5ea85196d2e2950c3749da32c902f94381ee69b3b72c", + "assets/Xiaolai-Regular-4dc6d5f188d5c96d44815cd1e81aa885-BlDy-N61.woff2": "a206f427ff843dbdeaddc1509a92d7b69faebc24871c3138d94baf9b1922b335", + "assets/Xiaolai-Regular-4ddc14ed3eb0c3e46364317dfc0144a3-8XYGXkgK.woff2": "033809b0d9848a6161681c8e9c5e7ee2bf10e0b639feb800eba43f87dd32a5c2", + "assets/Xiaolai-Regular-4ee10ae43505e2e0bc62656ced49c0fa-D_An8dTW.woff2": "a70dd8aa91b85b3a92f4edec64307dbeba67a3e829300abf38bb9ca206c318c5", + "assets/Xiaolai-Regular-4f50e5136e136527280bc902c5817561-99JNeEWV.woff2": "59f4770cf5df29b54036ca5f42e6eafdd70d2dd28acbdcea6e8275c30d2208f0", + "assets/Xiaolai-Regular-51502f1206be09c565f1547c406e9558-CPAuIUuC.woff2": "27f0dd9bee1139710abf7ab0f51c0e37df058bef7f2e41a5f8f919dc0ce54fa7", + "assets/Xiaolai-Regular-51a0e808bbc8361236ac521a119758a3-CTKgvLQn.woff2": "6f7d20f47fee620a9b6cfac10202ee7350a21667bacd5398084d6781841e9d4c", + "assets/Xiaolai-Regular-52a84a22fd1369bffeaf21da2d6158dc-CnByBwne.woff2": "bb00bece144c8b55b92445e0bcf013c64eb7250588ebcd8d33d4e972feceba1d", + "assets/Xiaolai-Regular-5330a2119a716e4e7224ed108b085dac-DLHuUpCJ.woff2": "c3d926f24f41fa042951f940854f7094b394929ba2b393c1ad0f69b8ac1e18d7", + "assets/Xiaolai-Regular-543fa46ace099a7099dad69123399400-Br7yvPzX.woff2": "dc52bcf986f21c5ecf4f95614edc3fb086008bc4589a606a5545d7be83c6aae7", + "assets/Xiaolai-Regular-544fc28abe2c5c30e62383fd4dac255f-BM5xhwXP.woff2": "1822913d0e7128a0d6b8affd019c551f06023368ef8608aa3a9718320d16011c", + "assets/Xiaolai-Regular-54acdfc2166ad7fcbd074f75fd4a56ba-BXjFfWgz.woff2": "7c5ee14e16e509b359baef1bc7aed848475cf6286bd449a56e9afaaa0b5d8c5d", + "assets/Xiaolai-Regular-5572b3513ba8df57a3d5d7303ee6b11b-DXLuSVir.woff2": "3faaa516fc74d539ca46940b392648c9e3cc4c031e9ad52242aa8b54f7d9e2f8", + "assets/Xiaolai-Regular-56467a5c8840c4d23a60b2f935114848-B_Gij8P8.woff2": "0535fd40943797bebaab03292f269eeb09b9844e28ee0a9b20bafcfe6d6f253c", + "assets/Xiaolai-Regular-56a32a7689abd0326e57c10c6c069bb4-DKLxWxQ9.woff2": "0861a51a85640834a936afe816dc9262712a3b5fceb9d268c3ef013131b7f1c9", + "assets/Xiaolai-Regular-57862b464a55b18c7bf234ce22907d73-CTU7oQrI.woff2": "2ab06e5e9dc995faad6240b1b1f6edee7e8865ecfd24aa041dad0bf71aab94f9", + "assets/Xiaolai-Regular-583d166e56ba0de4b77eabb47ef67839-DftKZHfW.woff2": "fbc085efd02787634c45076cfcd3f9a943919b1fd491953bd3199338d3655681", + "assets/Xiaolai-Regular-5882ffa04f32584d26109137e2da4352-DJQgQUHU.woff2": "0bca2dd7bf9c581d3b9aa2485571f919272790e346a37ead6522d169b9af2d4a", + "assets/Xiaolai-Regular-58fd02350d0bc52cf1ca3bb32ce9766e-CSOGA1MS.woff2": "3f843a854c82af7042965ae7f00b6f8698a05e87bbce715cbe087a3ec47899ff", + "assets/Xiaolai-Regular-5935a5775af3d5c6307ac667bd9ae74e-CEy4fyLt.woff2": "c54f2d93aa1b89e19903c4abc3008742613dcc52b45055a058ec13de99d3a91f", + "assets/Xiaolai-Regular-59e9ff77b0efaf684bc09274fb6908c9-lS7CMV6S.woff2": "57426b72fb5d6a406df24e2b60c9b3f8d09c095aade40ae55c23972e5b7d9e1c", + "assets/Xiaolai-Regular-5a1ce3117cfe90c48e8fb4a9a00f694d-DI9unF3q.woff2": "164d468fbdee79c04b3898c7e62959de3ff43729c407ba60f0f8f27974352292", + "assets/Xiaolai-Regular-5a45d991244d4c7140217e1e5f5ca4f4-98-Y7C70.woff2": "b7bc4c809953df9d0ed98cf11a9542ba959ed3c66a94d3090bb466395f945184", + "assets/Xiaolai-Regular-5a7fac4b8b23a6e4e5ba0c9bf1756c91-CjrL9S9S.woff2": "2802ab8038ff5266fe6303d79665f0b6cf370361aa67b22639e10e1f4634726b", + "assets/Xiaolai-Regular-5b0ed6971aaab9c8ad563230bd5471a7-BwoEwHC3.woff2": "ec7e47923ed16e54d1a25bf22ad0638846be78be6e8f46009649d9cf7727e58b", + "assets/Xiaolai-Regular-5d2898fbc097a7e24c6f38d80587621e-NT0paPap.woff2": "9473d9ba649a6a614fb877bc6051590cb19da98e54ef6104d25f31f1ff52ed55", + "assets/Xiaolai-Regular-603aefd23e350ba7eb124273e3c9bcf1-BYoHqIbm.woff2": "cdd0e13364c932bb3cb2c9ae58369716ce47c8d55cbabe86585bf742e710fb5e", + "assets/Xiaolai-Regular-60a3089806700d379f11827ee9843b6b-BcMf768o.woff2": "d964d94147e46e90fd06f0e271a19aacde808acfffb23e66b896be7fcb359544", + "assets/Xiaolai-Regular-60a41c7e1c68f22424e6d22df544bc82-BoWJxPNW.woff2": "0534b52a8dbb84d43b13773bba5cd15bb6d256aa4fb96c58a435ebe391904f66", + "assets/Xiaolai-Regular-642b26e2e5f5fb780b51b593dbc8c851-aDynz8WJ.woff2": "961bf60030e7c8b4f5395cd8b748c6979d967b7629e6c582d68e5c11b5d2dfc8", + "assets/Xiaolai-Regular-66493ba5a8367f2928812f446f47b56a-De2P_-o1.woff2": "3b759c89aca9110eddc48220362b6e1113bf8e390f40ddeaccade9bec603028e", + "assets/Xiaolai-Regular-670ba603758d94268e8606f240a42e12-CHg9Oajp.woff2": "1c0d75c27b530030e64e77d99967230f71d4ea9db40ecdc2e10a6f1eaf1f150d", + "assets/Xiaolai-Regular-671a2c20b1eb9e4ef8a192833940e319-DWgMdwez.woff2": "3dd77c6fa69a4f80de93433e2868e457b7d04d68662d8d042e6348e7b6ffaf15", + "assets/Xiaolai-Regular-684d65f1793cac449dde5d59cb3c47fb-R45B_P5q.woff2": "079d03e554628ed20a18018875b1bb5681ae892dd56604074969619ebd9f36f2", + "assets/Xiaolai-Regular-69c09cc5fa3e55c74fc4821f76909cc3-DShxBpgc.woff2": "dde445e5fe69c7ab363f034df157c89750b421f31e52757f7a642be3c5644f2a", + "assets/Xiaolai-Regular-6ae5b42180ad70b971c91e7eefb8eba2-BKomNj9m.woff2": "dc1eea8f0592ee505adb539566a9cebefa81ece39c3e70624afd06af0e323729", + "assets/Xiaolai-Regular-6e092f71c1e634059ada0e52abadce67-BjEU8N4B.woff2": "9b771d7ec93aab9efc47096f33c16c724d57a462b99d54735080759cc56e749d", + "assets/Xiaolai-Regular-6f3256af8454371776bc46670d33cc65-Dvbx_4Bw.woff2": "4d1cd583547d080c6b94552d1473685c60e6a96340c74a659616e16cdde6bbae", + "assets/Xiaolai-Regular-6fe5c5973cc06f74b2387a631ea36b88-D4XbZvS1.woff2": "7142a02b00a992b9a57b75c05ddfaa28956c11f554fb9f1e3fe0333285dd6791", + "assets/Xiaolai-Regular-70c2eb8d64e71a42a834eb857ea9df51-B8Q8dLrh.woff2": "89474028dcdfc03b27f45d5adc112d9d53a4d810c7e8f0ebf95f599b50ae84ed", + "assets/Xiaolai-Regular-70e811fd7994e61f408c923de6ddd078-BBqqndEV.woff2": "e6818bb44f7d47d16cd8935ed9f5b29b8f10ac0e80043f85957b80501f85bcd9", + "assets/Xiaolai-Regular-7197d6fda6cba7c3874c53d6381ca239-DmV0suSY.woff2": "66b77ead39e2479ee3bf4911920fb5cf39217c6b60e3cd84080c7fe429432430", + "assets/Xiaolai-Regular-72252d73220fa3cd856677888cee1635-Bq-N2WPs.woff2": "1e34a49b238d61c6a723e79c2957f309687bcca89eeaebe99221883f302b80a2", + "assets/Xiaolai-Regular-72536a3d71b694a0d53dd90ddceae41e-BRNq3of2.woff2": "4058683136a7bf8ebaadc59aaba8644044eff3b91776f6b0206954bf805a3132", + "assets/Xiaolai-Regular-726303e0774b4e678bff8c2deb6ca603-6tgHIrFH.woff2": "1ad344f682254b66d56187f673f817fe1ac8117d59cb26614796ebba9f2494aa", + "assets/Xiaolai-Regular-733171b4ffcd17ea1fe1c0ba627173bf-Cn6MTdmv.woff2": "af32f1c4a193d9866655c866d4067b190b121fdc538b380cd45e99f172b4355b", + "assets/Xiaolai-Regular-739bc1a567439c7cffcd1614644593d2-BlCjFBco.woff2": "9bbdcb718fa1010f13c0a6058cca89d75774371e766eb1edf319ac25dc057f0b", + "assets/Xiaolai-Regular-73e309718fd16cea44b4d54a33581811-Bgi9wxzs.woff2": "6507fb8092efc309d9fdcc301fab6c90330b89931e7007fe7ed7fd1e722a738b", + "assets/Xiaolai-Regular-7494dc504ae00ee9cd0505f990f88c5d-DFW79wrT.woff2": "df7f6131e265282b00981c86f4c8d0fbae08c8fa3b3464909609abdafebe5d03", + "assets/Xiaolai-Regular-74e2263a91439c25b91d5132ce9f4d62-DDSUx7zl.woff2": "322645e0e2737aed64e43e45e97276930f67ce5aa1bfe845eb6090b27b0acc29", + "assets/Xiaolai-Regular-761d05e3cd968cf574166867998ef06a-CZFfuY-d.woff2": "5da4dd830dbcb73f6228469f49b12a1cc3db1edf00e5875e3f530ba62c907538", + "assets/Xiaolai-Regular-7718fe60986d8b42b1be9c5ace5ccf25-DX1GSUc5.woff2": "ed029431ebadd93a1ffae89347ced2b6835ed92703613d10f3dcd3d37c3ce19b", + "assets/Xiaolai-Regular-774d4f764a1299da5d28ec2f2ffe0d69-DFvc_KBt.woff2": "6238cf7ea6f5e88177688f281f55c8d427f0110ca56a0786d8577ab748fb5f8e", + "assets/Xiaolai-Regular-79d494361ae093b69e74ee9dbe65bfd4-aR6GxXbw.woff2": "6f78f52b32b85a686bae2602b6f4bd9197e508140a87c23eb38ced0fa501808e", + "assets/Xiaolai-Regular-79f007c1c6d07557120982951ea67998-P9vwfW59.woff2": "ecd5160dfe937d1e8271e2c7efe45569c2d3f53c94f5d7acaf600434c758a423", + "assets/Xiaolai-Regular-7a07ddc0f0c0f5f4a9bad6ee3dda66b5-muaIVjGr.woff2": "e1443444d7865b4650e51da424a02e2b58a75ce1d3b5d125b9d4424c0cc5cff7", + "assets/Xiaolai-Regular-7ab2bed91166a9dca83a5ebfbe2a7f38-CqBj-Qda.woff2": "3d692c33792626f84eaf48e73fb2c9dfd237ffd3a5b8a882d0f1e4a7301949c7", + "assets/Xiaolai-Regular-7ccce86603f80a099ddb0cb21d4ae3e3-DYT8zuBS.woff2": "ba4c2f8e126245571624eb841623e3a13a394fba39fc215c60786e786d4e4f35", + "assets/Xiaolai-Regular-7e4bde7e9c7f84cd34d8a845e384c746-CY7aQsOr.woff2": "934ad4e8abe120c1dba1ff0427a04bfa431ecf61e8402d93965fdfc000198e66", + "assets/Xiaolai-Regular-7e929f262f30c8ee78bf398150b1a7cd-Df7H3giT.woff2": "03de58036f102830f522035221d660524c01ff4ad4240d6273d6cb0aa8ccbccc", + "assets/Xiaolai-Regular-7eb9fffd1aa890d07d0f88cc82e6cfe4-C3Av6KgO.woff2": "ccf132ae51caa20dd14896b26c829b3e45f676d933bcf91f8068bf658a4f2860", + "assets/Xiaolai-Regular-7f855356ab893b0d2b9c1c83b8116f0e-CG5GHAm9.woff2": "1060f535a62ceaa15c3709cc71d5ba65aa7b25ca9f175b039b692a2f36427c3a", + "assets/Xiaolai-Regular-829615148e6357d826b9242eb7fbbd1e-CQnMGA0L.woff2": "4252a1dcca7da24ba065620e30429e9a2de3ee8b5ec7cbfb672c8a008779fefc", + "assets/Xiaolai-Regular-866fa7613df6b3fd272bcfd4530c0bb9-zSIef9FS.woff2": "a4a710432761544ce376c443375cd3c30212a7eac28fe3e02c38fb6a51b30808", + "assets/Xiaolai-Regular-87599f94b6cc129d505b375798d0d751-CDmW2qxZ.woff2": "3cb8e87a420ef7412eac2b1e7acd90557e3133f5926ab23b307cdd35d3293f7c", + "assets/Xiaolai-Regular-8c2f33cee3993174f7e87c28e4bf42ee-COlFQ_za.woff2": "6b01fcbbd25e0588b009efee8aa02c56315c13b071e42f27b3a1b9ded83b9f4b", + "assets/Xiaolai-Regular-8d3bcabb847b56243b16afe62adaaf21-CrzFs4NG.woff2": "5a27b08a7634da4e22ef40981ff0b4376a5c667fe6d315013c8283660bb3c175", + "assets/Xiaolai-Regular-8de5b863cb50dfefdd07cb11c774d579-B2Svs0Cp.woff2": "8dc7c9aa8d7932d8a62b0d7e556cb7a94c1bb1728a84d50a7952d75b9f159ae0", + "assets/Xiaolai-Regular-8e9f97f01034820170065b2921b4fb5e-CiuljCyr.woff2": "e053872045b6e69fa2b374386a30985985700925ea09831eb411299d61cc48a5", + "assets/Xiaolai-Regular-8f476c4c99813d57cbe6eca4727388ad-D8Agzw0q.woff2": "018d866b5eef3c096a75a56f53df14e4f3ed2b69fc546178b61095736a0cf92e", + "assets/Xiaolai-Regular-903bb6865f3452e2fda42e3a25547bc5-Bz4zUyIJ.woff2": "4f9d77b306f63f69dc23f187858c688f20590a582f4d614f8934b8fcb31cc01b", + "assets/Xiaolai-Regular-91ddb2969bf2d31ba02ad82998d1314c-Bqis6-fO.woff2": "b1c7f6ba934a56bb9ef3c85602de346d594654798004ebfed86cb68fdec23a9f", + "assets/Xiaolai-Regular-938d90c10ff8c20386af7f242c05d6b0-6YCEBCbg.woff2": "3d4cb06a72e43dcee4114ca345cfbb93c3a037cc27164cad3ecd979b0affc62c", + "assets/Xiaolai-Regular-93fc8f28a33234bcadf1527cafabd502-BHNEsYyK.woff2": "950ff7a9d636ca4b7684833ff898ca7b4c3d21072c322dd6ca482825aaf6f06d", + "assets/Xiaolai-Regular-95429962233afd82db1c27df1500a28c-BOD8NMmf.woff2": "63474c129283d98a4426f2af09ce89e7e0fc0a8bf897a5423c3230d513a2816d", + "assets/Xiaolai-Regular-9544732d2e62d1a429674f8ee41b5d3a-BaDZtDqe.woff2": "b67f74ffa8e1b8ea3b4617c3fa4c68408ec54e34cc532ec71031adc8b15c3343", + "assets/Xiaolai-Regular-9592bfc861f07bcb8d75c196b370e548-BBE7nH6u.woff2": "aae1aaab500a71b28d1ec96380b49ccaf7550d06b57db71e75737d17715f5261", + "assets/Xiaolai-Regular-95bfd249da4902577b4b7d76ebdd0b44-DJ99d5J9.woff2": "ce77aebaeee894d03a85f1d9ccecdb3447ab27f77eb8e3f685c961464119c5ef", + "assets/Xiaolai-Regular-968cffdc8ee679da094e77ebf50f58ef-DphJr-Hf.woff2": "7af27211f5491341d85b051445a7ddbc9e28bec438b8124a18783708fef68667", + "assets/Xiaolai-Regular-97f7f48ce90c9429bf32ae51469db74d-B_Yo-75I.woff2": "b61251e62c3ecd8d556201f75e5d46e48f1e7619e67ecad2c36690e8d5a9ed4f", + "assets/Xiaolai-Regular-982b630266d87db93d2539affb1275c6-CFRzRvRC.woff2": "64ffc06d05e0eb263f161fc3ab45747bc09c916c92195450600576b0867a43cf", + "assets/Xiaolai-Regular-98f2ad84457de7f3740d9920b8fa8667-XAyjv85k.woff2": "20e0422c76332e759d6daabb96bfa9ccdc02be80b17e9928e3873683ae5b9995", + "assets/Xiaolai-Regular-99a16ef6a64934d5781933dbd9c46b2e-Bh6otvMw.woff2": "8bdc8f9731f8730a61043729f403e06e6b9bcfed2fb65e71f7fc421ae51b37b7", + "assets/Xiaolai-Regular-9cfb2a77a4e45025105ad29a1748b90d-Qv9a4Fc8.woff2": "8a83a1c27c1dc42db2653f37bb39fb95e3bb8180e99ea372766366c995248cee", + "assets/Xiaolai-Regular-9d81066dd2b337c938df6e90380a00dc-DLRmjQlt.woff2": "3e7444c5704402da829c61e1cdeee82c1867939590d9b25290793c58de548867", + "assets/Xiaolai-Regular-9eb5a99df4e76ac3363453ac9ca288b1-DmMSd5xT.woff2": "c464198e0903b1025c20e23e6df719933adbcea5f5e3b68fa67bd388e66dc738", + "assets/Xiaolai-Regular-a004ddfcb26e67bd6e678c8ed19e25ce-D1-58AFU.woff2": "429f417980fd11df51d1b7c6e2481e65e2f1a2bf3f16531b3d189556b22be20d", + "assets/Xiaolai-Regular-a0ca5df4258213d7fc9fce80f65ce760-CT6hW-Vs.woff2": "4577ce8d2f2161ddcbb02f1154a9899bc55a77d3a715a3650261c56839153ee6", + "assets/Xiaolai-Regular-a1f916d6039285c4ffb900cd654e418f-DUW-gGcA.woff2": "355bbd7b9ccfe3501325f51a8b14fcbac0a784b72b5629f7e54d28ab00060ea9", + "assets/Xiaolai-Regular-a203b91dad570bf05a58c3c3ddb529bf-CooKDCDC.woff2": "664f032ffd3d67ac08c988cb9df5ed9e14ef1bd29b599085aae5ce019535b8f4", + "assets/Xiaolai-Regular-a365e82ed54697a52f27adcea1315fe8-BetXsMK2.woff2": "7431d7c929b66ddef73132026c17ba2bdd1c749a2733b12b15a2bd53da10cee9", + "assets/Xiaolai-Regular-a4c34be6d42152e64b0df90bc4607f64-dx_ow7yL.woff2": "85c4fb4d97312f0260a0db861ddcd8e1f14cc031db4c0fa8bfff098114eed1a1", + "assets/Xiaolai-Regular-a7accba310e821da5505f71c03b76bdb-BKwpaO5_.woff2": "a630539dbb8b53eeef26d3c14c65e8aa65056e6ee70ed55d02bad8c6e2cc34b1", + "assets/Xiaolai-Regular-aa0d470430e6391eca720c7cfa44446f-D6T8ixw4.woff2": "9e7d4e67d3026e623581bbb8ffb9767e5cc8ae4208ea1ad9589e1c877a396ae0", + "assets/Xiaolai-Regular-aa5c9ca6cf4fba00433b7aa3fa10671a-Bj5H4-IL.woff2": "a612a4deee08c188d304a75acfaa1a5f606ec0e959ee36572585a21d63a05767", + "assets/Xiaolai-Regular-ac9ceb44437becc3e9c4dbfebab7fc2d-CHo95gRn.woff2": "88cdb98b8b47719cb34de6d927db93102845979729309ed7c9d81c2eca267d18", + "assets/Xiaolai-Regular-b1220a3c61f85cc0408deedb4c5f57a2-Cg5napYa.woff2": "0c5b4365bec5a439a325347b8e373ce2d733e69a31227d9be1a6bfb1a81f8339", + "assets/Xiaolai-Regular-b358f7a51ece39a3247942b1feabdb29-DcXJ4EOb.woff2": "da427d935e5286ddb7bc67bbddb53f19f21b1b22a08eb18b81202d6a0d7104ff", + "assets/Xiaolai-Regular-b57aaedfd8ebdf3931f25119dc6a5eb2-Jpbm8DAm.woff2": "489368f841681abe8c4a10d8c04eb1f3dd7ca0431866ee6d998738cb5d953e94", + "assets/Xiaolai-Regular-b5c1596551c256e0e9cf02028595b092-xiki3FDZ.woff2": "53ddc8aec903cc6923e7bea4290f8c22748d8a9d3fef9310c8db45144b8602f5", + "assets/Xiaolai-Regular-b6d128682ee29e471486354d486a1b90-DH244Txe.woff2": "6fec9175d81ae947476b6e3d23d8a952b3f6f2abf3a236a16d3b2030aec8ee2f", + "assets/Xiaolai-Regular-b6fd38ca30869792244804b04bc058da-BWYJNrXl.woff2": "729394216762fa8e54dcf7d8a6623812c68ee868fa423cb150eb730fa142d5fe", + "assets/Xiaolai-Regular-b7d203b051eff504ff59ddca7576b6a9-DPl0t9Ky.woff2": "012348fc81bad86733c10d93edc49b31fa98d161162a7b9c7cbe2d02f184e684", + "assets/Xiaolai-Regular-b96d9226ce77ec94ceca043d712182e6-CXE-0LqQ.woff2": "55f3829b501cf10b929c86d8703be025941489012ae3a237a0f7d4bde532e316", + "assets/Xiaolai-Regular-ba3de316d63c7e339987b16f41a0b879-BVZpoS1j.woff2": "204c98c6d957da9076afe9318003ced09bd3b44a4ce8365b555337fdd574a04b", + "assets/Xiaolai-Regular-bafff7a14c27403dcc6cf1432e8ea836-jMZ8zBn3.woff2": "16a0b6a3f5462fc87a5043bb89dfaeab6070f9b15bf7bb33d74c6f1f0e945d7e", + "assets/Xiaolai-Regular-bd77e3c7f9e0b072d96af37f73d1aa32-C26w6Bzb.woff2": "762f6b930564a70639a89c41e38b55e4fe93753fe30063aee0577ee6a57b14ed", + "assets/Xiaolai-Regular-be549ab72f0719d606a5c01e2c0219b6-Bl31pZPo.woff2": "51f88e333f2a5b2ed3b6670c7b7ff122d16e6b0a09d0297ae4dec70de721bcf3", + "assets/Xiaolai-Regular-c16ed9740b85badf16e86ea782a3062f-DXOGpILP.woff2": "2650a650f03c1d5736cc0f1d774f778639d4df2eee805766ec69410108996344", + "assets/Xiaolai-Regular-c1f94158256bb1f3bf665b053d895af9-BXjTNLYa.woff2": "0d5a4da13c00111ae6e921de8a5d3e7e407773ceb415771997a9e08d490fc603", + "assets/Xiaolai-Regular-c40533fdf4cc57177b12803598af7e59-D4Ealvhp.woff2": "bf57ac6c74823d2193e4fd637e0fef9f3cf65867dc573bf287cab541eee2862e", + "assets/Xiaolai-Regular-c4a687ac4f0c2766eefc9f77ed99cddf-DuPL2stk.woff2": "fbd978baf163d2cf637804b525e7df206e0657d217d3d4339aa204ec584460a0", + "assets/Xiaolai-Regular-c69f61a4ab18d0488c8d1fc12e7028e8-Da9RJiGz.woff2": "1d7f8daeee505d3f7830d0c0c74af7af68abc2a0b01b2e92147a85239b72249f", + "assets/Xiaolai-Regular-c8b71798409ccc126ee264a00aadcf21-CqUaHeHR.woff2": "5e78c653a12851d95e2754fd01052e65c952fa2cc603e6e40a7c1a104fe366e8", + "assets/Xiaolai-Regular-c99eda15fc26a2941579560f76c3a5cf-DdGqdS8t.woff2": "234ca0a3ee22640185863709a91ed8574ee10cdc97103c74913ef9e7aae8b399", + "assets/Xiaolai-Regular-cb17fc3db95f6d139afc9d31a8e93293-C8HBTfH0.woff2": "366d1d64220e84149380d851590fa86decac06ab04af7b5d6b84b1593fbc03a7", + "assets/Xiaolai-Regular-cbaaefaaf326668277aa24dfa93c4d28-BiJWP4PP.woff2": "d912c56af1eb36e3cf58ee3fd05a54cfaa2474d721bf6ebbeafde0163c10d6b3", + "assets/Xiaolai-Regular-cd145ce4a0ea18469358df53c207bc1b-B_Gy08DW.woff2": "3ef057732d62da9572e373f78d282b218e0f5cb8e003d275adaef15abd2d2cbf", + "assets/Xiaolai-Regular-cdbce89e82cc1ab53a2decbf5819278f-CNN_ffhm.woff2": "fc2ac910be82739b996e39063360efcccc5b82f4c99a048d8655885afc3ef933", + "assets/Xiaolai-Regular-ce4884f96f11589608b76b726a755803-DykwPGPo.woff2": "ea1d4e3f3fa68c9193a72d5df249986350e892091e3edac9025baf7e1759cdee", + "assets/Xiaolai-Regular-cf2cc71752631e579e35b0e423bf2638-rw5kSffK.woff2": "ce5a8058ed21535db620e89a942f8d4fe33968cbb4557c26c4521c536d5e8c66", + "assets/Xiaolai-Regular-cf6ff4e0f491ca0cf3038187a997b9b4-BxJd8aoS.woff2": "996fd1d3fe4f0783b30ffec0912ea858cadf71a077eef41bcbb6f488aa1853ed", + "assets/Xiaolai-Regular-cfb211578629b7e8153b37240de6a9d5-B19K-Mti.woff2": "d07bdf1bc149ae52b05fff010bf5a5c97da67d7bd612cd7975939102446da207", + "assets/Xiaolai-Regular-d0cf73942fea1c74edbdf0b3011f4656-DPlqnxc1.woff2": "e802ce5eb6306d4272a9188ba65c41423894ccaa71e679d1b8f53df3acf7298f", + "assets/Xiaolai-Regular-d2666cbed13462c5dc36fa2f15c202ca-LVJkJYDK.woff2": "6d157af83341041b1110824b12bcad95a1267c6088aadb7cfebc1fee77c81a27", + "assets/Xiaolai-Regular-d3716376641d615e2995605b29bca7b6-DhZcpdHo.woff2": "9b9fa9f96d1ed9160912efab73c4883324225fe1096e6aa6c6f5a534fcac292b", + "assets/Xiaolai-Regular-dac48066b5883d8b4551fc584f0c2a3e-cH5j5HvW.woff2": "50fd052c2e0b0ebf8f304eae64965486d1721da85fbbce115683055f05785bf0", + "assets/Xiaolai-Regular-dbea1af6dcd9860be40c3d18254338f5-DaxMnA87.woff2": "4bb0a8345e803f659aca813aadca25703c16bfddf5d89b82ddcec2a50e338471", + "assets/Xiaolai-Regular-e11567fd2accf9957cd0d3c2be937d87-C8FP60-W.woff2": "dc6a09381a42ce3aa802d029bc61ed01b4302f0303a1defa8234f130dafa5428", + "assets/Xiaolai-Regular-e2ead7ea7da0437f085f42ffc05f8d13-IVEFJWhf.woff2": "b4648f5ae511c1d0d4b2aa75a72a547e8436aaa5f1ca15c042e722a9fa8c77f4", + "assets/Xiaolai-Regular-e3fcf5180fd466c8915c4e8069491054-ByA6SUO_.woff2": "29a56eb3d183f71ddb753f000c8bd902d1b9a35ca08ff2d403c6af19934661fa", + "assets/Xiaolai-Regular-e480d9c614742d05f0e78f274f1e69e6-BIMxIjlk.woff2": "0ceef1123d1f46d7c9434f5d7f1d3896ba4d1f1b0fe0076383d920ea8da94ec5", + "assets/Xiaolai-Regular-e4bca6cfa53e499cae0a6be4894a90e9-3nXTr6rh.woff2": "3cc764666e9c2c6483c73c911b3823d74ee680bae209fb3ddee6b976c599f9f1", + "assets/Xiaolai-Regular-e51ef413167c6e14e0c0fdcc585f2fc9-CqK-7_-R.woff2": "931c27e602508ea6d712803d5647dabb164438140e309fd0be4f15917943f480", + "assets/Xiaolai-Regular-e5f453bb04da18eed01675eeebd88bf8-Dd7gBkJd.woff2": "ab6c969a6b7c481d03f26f68e77eec932b55232608c9b86d710c48f5c200f259", + "assets/Xiaolai-Regular-e656f091b9dc4709722c9f4b84d3c797-C9ZtrMvP.woff2": "b90cfb35e64c7f9f5b7e1fb48d0c396c44f757349e5669e64a25d98806d642fc", + "assets/Xiaolai-Regular-ec181b795ac1fb5a50d700b6e996d745-DP6VjqFu.woff2": "6b18e2adafaad34cf0544c53915d65af94806ab621f5de6a60f718ef60c9cb1e", + "assets/Xiaolai-Regular-ee8bae97908d5147b423f77ad0d3c1bb-BVUlCPsw.woff2": "6ccb9581b563074b1e101d2f5ed1efe5c1c53e2406f23139543a139f81a4ae5f", + "assets/Xiaolai-Regular-f0f13b5c60e0af5553bd359f5513be1b-D5XEMqoO.woff2": "75eac42c2d875a86029c0a684b728abb0dc8baa56e503aaaacb1c457f0a01aa6", + "assets/Xiaolai-Regular-f2b54d4e7be0eaefe1c2c56836fa5368-CSLTOWqO.woff2": "da1a8fde33ea6a56d70b5c87b1a4030c3fe663772effcbe45019fde0b336d3dc", + "assets/Xiaolai-Regular-f56414bf9bced67990def8660e306759-BhdNe6yT.woff2": "ffb6a7253b90f6f82b90619935ab41e063db09686921f6dace943f5ec183b16b", + "assets/Xiaolai-Regular-f5d079153c99a25b9be5b8583c4cc8a7-DOWF0G8S.woff2": "b8ec5b4516ddc269a99f306b9d63ff0bdecd37a800736cd0eab28f254291b15e", + "assets/Xiaolai-Regular-f6032fc06eb20480f096199713f70885-D_kClYIg.woff2": "937b4d5222bb42c0e190a3f40a1aa9f984edcaa9e8d275e9d4bf1d88ef74754c", + "assets/Xiaolai-Regular-f8ee5d36068a42b51d0e4a1116cfcec1-B9Fb-jqT.woff2": "ae083037bfb691cf96205e109a287255f87a45a90848fe2a63cb0b3e7af3e904", + "assets/abap-BXYWi5l2.js": "d0a7972c37e141f01cc3aaf9aabbbb3e87c4778b9fdd3ccb575d1e1ff279c0fc", + "assets/abap-BdImnpbu.js": "d0a7972c37e141f01cc3aaf9aabbbb3e87c4778b9fdd3ccb575d1e1ff279c0fc", + "assets/abnfDiagram-VCTEODGH-C2fnsxDO.js": "45575d93b779e8a41ac32d53d146967e342aa17a5953eeaacaef79f372b8fb14", + "assets/actionscript-3-B3316cI-.js": "34dcf5394cb476db026a03b23ebd94a8e72da98dc3303d958c8136a8287294b0", + "assets/actionscript-3-CoDkCxhg.js": "cc3e3792f3b16d9244f17680e20712184eac64175649df8add097ca3be123c84", + "assets/ada-DeReRNhg.js": "fc5d05054dc584a01ec795083de1774ef07f3a29fc6cfbc1902c208a09862313", + "assets/ada-bCR0ucgS.js": "fc5d05054dc584a01ec795083de1774ef07f3a29fc6cfbc1902c208a09862313", + "assets/ahk-CsyLZFj1.js": "34bd9fb05b422d5bf8f532fbcdc6e68e0015b9115421252a79b0a755b01d1992", + "assets/ahk2-8Zs4aa1G.js": "4c1fb4b6b82030376c3eb176b1e1019540706a406ff627ccdc80c27e04ebed1f", + "assets/alert-dialog-D9AVEZZs.js": "f8417b8dc0b8edad0fe76169a6a53a713addb5f6e39a2e53cec12c91f4ab9add", + "assets/andromeeda-C4gqWexZ.js": "7fcfeda6c4e4d7cc1ce1c72aaca6d802bc7e107858bf0d34eca95ff4223669bd", + "assets/andromeeda-CF6_y_Qj.js": "7fcfeda6c4e4d7cc1ce1c72aaca6d802bc7e107858bf0d34eca95ff4223669bd", + "assets/angular-html-CU67Zn6k.js": "8b8969f7cdcc7690bbf9a1c6421e3c823293438e7f2261c43fe8b72e33a7ce88", + "assets/angular-html-DA-rfuFy.js": "20c25efd0ad9b3afd86114f4ec9bf568ef3fd651ae9db9701bcf6f5e4e1c514f", + "assets/angular-ts-BrjP3tb8.js": "a3b92221d8274ae68a84ffbc7c90a91c3c9b7814fc4740ed0337d6e18a014231", + "assets/angular-ts-BwZT4LLn.js": "635b4186a60332a7951ec43858e8b0020e08e4c36127f2b1885e1070de7f1b5c", + "assets/apache-CCUDgqAf.js": "35abb1e73308f0f43a4f76af3a4c1157bf524cbfb2908581305f6fb1cf743b24", + "assets/apache-Pmp26Uib.js": "35abb1e73308f0f43a4f76af3a4c1157bf524cbfb2908581305f6fb1cf743b24", + "assets/apex-D8_7TLub.js": "9dfc38d42bc443b42f6bb4ddc6fa16c6634977292fd5e9d1e5e0b74fcd480f80", + "assets/apex-DhZFqWV2.js": "391beb490d3d3517672f6fb51ae3c714a93f9178ce716226d852bd7c3189b683", + "assets/apl-CORt7UWP.js": "58ef1a2c61333c9fabb96cfa3c78094fc98ad04b1df39e6d44e7de076fc780ee", + "assets/apl-dKokRX4l.js": "56e152c88b86ed1488ff5851bdd9fe9a5b7e92d4e0dc66fe96ceba395181cc89", + "assets/applescript-Co6uUVPk.js": "e681551fbe1ac7d862ad06eae5833e6a32871de76532de01b27c5004c71c79df", + "assets/applescript-Dd26Nb5t.js": "e681551fbe1ac7d862ad06eae5833e6a32871de76532de01b27c5004c71c79df", + "assets/ara-BRHolxvo.js": "f3c7f066af4d1907c2249c7089ae8b763d88ad2f25e88f867f20e3dbb256cffb", + "assets/ara-D6vCOKVX.js": "f3c7f066af4d1907c2249c7089ae8b763d88ad2f25e88f867f20e3dbb256cffb", + "assets/arc-BJWbEgms.js": "b94dc5ea58e50136531c68addfafbb601eef9fbe4c286ce3dbefc7a93ee83aec", + "assets/architectureDiagram-5GKGNRK7-BLd6hp6a.js": "f5293ba80ee87de39e8980ee0477cb8c132ccdab06116bdf73a126f0974978b1", + "assets/asciidoc-CSVQ5wI8.js": "9b414e47f97214f443fc137698fc42b6d4a633b91cb476241f8a1e7f2e84c4ae", + "assets/asciidoc-Ve4PFQV2.js": "31a90af692b01a0eb491b19725d0abe705a13cf6baf2cef9de85467aab4b2b0c", + "assets/asm-CbVMAfFB.js": "a43218a06da8dd93a8dd3c2b458479674d973079fe18922fe556dafa17be50a9", + "assets/asm-D_Q5rh1f.js": "a43218a06da8dd93a8dd3c2b458479674d973079fe18922fe556dafa17be50a9", + "assets/astro-CbQHKStN.js": "1ba34d62178b804e9c49cbe8f7c45c349c8e9cd701ccad01c655b8db87a93f96", + "assets/astro-HNnZUWAn.js": "9b8a5d4447eba31ec8f9e61b25b3612ebd07c584ecc4c14eaf11727c6576eb20", + "assets/aurora-x-D-2ljcwZ.js": "e47c699d4515a3e898860e171aa49e276c80d475e49d57ec002afdccdd760781", + "assets/aurora-x-DOuLBLNn.js": "e47c699d4515a3e898860e171aa49e276c80d475e49d57ec002afdccdd760781", + "assets/avatarCache-DD1ImMyC.js": "1fe353467c4efdd26f9efe420024547d2906a57b436fd6388764ee440a2e09fe", + "assets/awk-DMzUqQB5.js": "ff7d9aed38679838b5bbaae495275ae2e8fc5215811062e4eef19f6f786089cb", + "assets/awk-UmR4Ublb.js": "ff7d9aed38679838b5bbaae495275ae2e8fc5215811062e4eef19f6f786089cb", + "assets/ayu-dark-BXQCOcka.js": "7a9244f8489f4c2f8d98500f3b9d33bf84d934cde79120ddd1de6078b8c9dbc1", + "assets/ayu-dark-DYE7WIF3.js": "7a9244f8489f4c2f8d98500f3b9d33bf84d934cde79120ddd1de6078b8c9dbc1", + "assets/ayu-light-BA47KaF1.js": "3bfa9a52cf22931b3f65091b27f150d07deba32f82ec02488e36a4a24fe8ae31", + "assets/ayu-light-McBaoK3Y.js": "3bfa9a52cf22931b3f65091b27f150d07deba32f82ec02488e36a4a24fe8ae31", + "assets/ayu-mirage-32ctXXKs.js": "93f93dd14750e6e3453f99e549701050a9ca11ead2186befb232bb7bc6a173d1", + "assets/ayu-mirage-urwrJgdN.js": "93f93dd14750e6e3453f99e549701050a9ca11ead2186befb232bb7bc6a173d1", + "assets/ballerina-BFfxhgS-.js": "148a30bb0b51d5e1f00536337facfc90f70e659b3310d5875fc6d8db62c98f0c", + "assets/ballerina-BMbY-1wP.js": "148a30bb0b51d5e1f00536337facfc90f70e659b3310d5875fc6d8db62c98f0c", + "assets/band-CquvqAHh.js": "c7cc067eab79e64461f91efd0cdb4aef3ba82bca596974b763bb26ebf8637386", + "assets/bat-BkioyH1T.js": "132a59df54049c90dfab94c0a95eae938352a227a86ad53d37bcabc8be4b13ef", + "assets/bat-CickPsom.js": "0bd1f69ed1594d1e3832ca1d1108c52060f732c435e5cd2f10a1503bebeeca54", + "assets/beancount-B92nBv9q.js": "62cf81ef2432aa71aba4a8559e5c5970ce13576b19db0d75c421de19f0a662c6", + "assets/beancount-k_qm7-4y.js": "62cf81ef2432aa71aba4a8559e5c5970ce13576b19db0d75c421de19f0a662c6", + "assets/berry-C9fz7p0n.js": "6f2394fb74b945c92dea425f90c70222f319b72a6dd9c093a7e32ebfdf60d026", + "assets/berry-uYugtg8r.js": "6f2394fb74b945c92dea425f90c70222f319b72a6dd9c093a7e32ebfdf60d026", + "assets/bibtex-CHM0blh-.js": "0a3dd8093d3aa1baaad2d1d98ecbf09c7f093517baee20e4d8e7de768c8dca37", + "assets/bibtex-DELXwv0g.js": "0a3dd8093d3aa1baaad2d1d98ecbf09c7f093517baee20e4d8e7de768c8dca37", + "assets/bicep-Bmn6On1c.js": "77925b291b8d048086f7fd14d23fa4ab0a4831551b1e9512c035948cfab402ee", + "assets/bicep-D2njIRU5.js": "77925b291b8d048086f7fd14d23fa4ab0a4831551b1e9512c035948cfab402ee", + "assets/bird2-Bx8U0n9b.js": "9f2aedc9354dddaa9574b7baab60c748aaa6eb48f31cd7646dd76a700e061a24", + "assets/bird2-DPOp833l.js": "13099dd59c5fc002eeafc5275ca7f741d08de1c36c63ffeb4b3273822dce7794", + "assets/blade-2xfisSek.js": "55754627bc31371bfa60ea497ac49efe9be109fbbd457825ff43d54a53773ec4", + "assets/blade-D4QpJJKB.js": "b90446141cc91956721af5d8aef50fd0819e6af63bdb5cc5818c612c41d957a3", + "assets/blockDiagram-I7D4REHJ-Ceo2zqGD.js": "282fe723698d8a417595de20605acf39421cd94aeb8dd63035f289e31350ffbe", + "assets/bsl-BO_Y6i37.js": "b9f7294b744652f494389fbdff06c427ea8a239a891647186c4ffe76779993a8", + "assets/bsl-DlhNcFeZ.js": "6db7989b1130ede453710f4bf57d59dc680598a075a3cd0b1d73dc946ea130a9", + "assets/c-BIGW1oBm.js": "d6cf83167ef5e3f3ce64b34b57082b5ad6824eba4970eae9a278ab9285c9f3d8", + "assets/c-CyUOlKFr.js": "d6cf83167ef5e3f3ce64b34b57082b5ad6824eba4970eae9a278ab9285c9f3d8", + "assets/c3-Dp5svz6Z.js": "467fcff92b5f23370ec946832136c846c3dbe31b7af2cd3682f012e4f48a02c5", + "assets/c3-eo99z4R2.js": "d9cb0a3eb6e94d7f49445602ee073bf051042e6913129fb61a19f781ce952e80", + "assets/c4Diagram-7LVT6UL2-DC3SiEi_.js": "4d2460f4aface025f04e317bc09de678bec312137ec33acfa38692f9ae87c29e", + "assets/cadence-Bv_4Rxtq.js": "eb6ab19c5a35cd1da0a04c8a01c5be50284f5655462475a7f8656a32075de3df", + "assets/cadence-bIHbUj02.js": "eb6ab19c5a35cd1da0a04c8a01c5be50284f5655462475a7f8656a32075de3df", + "assets/cairo-C_mOTUpN.js": "845de4b0fcf96cb5ad0c34e396bae9adfd5b814e520c9ece871e29957d1d7633", + "assets/cairo-KRGpt6FW.js": "cb3ef520248905e08410aa414b326b0a1ad308ef13c23dc9741340ba5d1ba610", + "assets/canvas-Ba7LfORz.js": "3b996d2bfc408ca74af3591856c29f75d3b5d9502f585cb7fb8d93f85b251d92", + "assets/canvas-BmUXZjkm.css": "d3dd2b3493843d0342c9e34678f1268f3fe68faa38635b2359e019bd5793a034", + "assets/catppuccin-frappe-CZL1YF0i.js": "c8cfacccb41906025c57884bb351fb1f809a99f23144db317bbf5067af8d2a8a", + "assets/catppuccin-frappe-DFWUc33u.js": "af29d7afc5c6014349681c54ab1e9ef49c368d7ed84cff5e864caff0a233d085", + "assets/catppuccin-latte-C9dUb6Cb.js": "621f81dbc7293ff13fd2b0085dc3a84d5d0dbc3bfca4c1414c9e59b4ac43b3e8", + "assets/catppuccin-latte-DH-8KZSZ.js": "e223e1b9c2cae4e162dc524cc871ed8a627ac9126537c9f2509f1b259d365503", + "assets/catppuccin-macchiato-B7yYVSCf.js": "756df570870dd0585fc565f0076d939d008d3e0ac4ffa5ea6f97157c459be69a", + "assets/catppuccin-macchiato-DQyhUUbL.js": "4b0c204a8d4775c3b97c90fd9ebdf8734bd8fb4d270f4eda4398997a75e72505", + "assets/catppuccin-mocha-Ct7hS0mc.js": "efcbf0856a38b2a1c57cf545593de5327a6713418b157da1017fdc21a7003f4d", + "assets/catppuccin-mocha-D87Tk5Gz.js": "b10b92891fde2ac93b551d568f8ca2ce7deb12701a0cdab40d13ad1bc7cd6872", + "assets/channel-CXx49Y8Y.js": "59acab7fb10d02c4f47eec01f5f3436d62b33c21036ebc17617f4ae27c400ea8", + "assets/chapel-DTp_pixX.js": "de05b7c33c1f66b95b2bcc4a1146c9e7df65eb8d3bd5468d8882df7e32639f31", + "assets/chunk-2Q5K7J3B-Cdc-NcKI.js": "482fe1e1a26f84ba023d40afadaf9df4764fd12037543c843098839b6aa9e1f6", + "assets/chunk-5VM5RSS4-Bp4eXuhp.js": "73ba8734ebfdd81ba9dbee72eee124e1c5a221eb840a803602ebceb6f4b8b3a2", + "assets/chunk-F27PBJKO-DVMm275y.js": "265d7aa6cabe4337809357566fd835593fb1c65a767124e2ebe344243a4d302c", + "assets/chunk-IMKFNOWR-BOAO235J.js": "8eb0d14207213e170ff567efdff05a495f26725e3e5c248fe756f8b46a2fdb5f", + "assets/chunk-JWPE2WC7-BZVeHEvy.js": "c12fcd5b86f406241b402667b77d11d1ee97f833be3d64095f5957a3f93ece2b", + "assets/chunk-POPQ4Y6H-BjddxT5A.js": "8f6fc0254dd21459123cf6c62c6a5554aa8bcdafadb9351077c5f4a2c19aaf64", + "assets/chunk-SVP7TREG-BqMjoWEV.js": "eed861d0d774a71ce09b5bc72a51803344b9fec5320def3d77474fbcddb37803", + "assets/chunk-TICWLB2K-D1w24gcE.js": "d28a09fa5192f8bddc8085dc56cc47540d7701c059ef8173abc6941af4b4ed46", + "assets/chunk-XXDRQBXY-BBDgbUki.js": "be788cc807d60967882893d253518e68c5755fd3ad373fed5bedd9cfe64cbc2f", + "assets/clarity-D53aC0YG.js": "fb9051f589b58016a4aa61d4a5e54fd1495cc6ef104ea387971ce67df8ac8bcb", + "assets/clarity-Dn5IMItf.js": "cbde6347a4a9b2e7ddedb4a9240bf3889a722281d1f735b3ebe92c8198918e40", + "assets/classDiagram-ZZMXUADV-COkkPEIX.js": "c90c3d9feb488386b9951a8b6d7452d88598ae860619dccc69b72de70712dd7f", + "assets/classDiagram-v2-VYDZK3BY-COkkPEIX.js": "c90c3d9feb488386b9951a8b6d7452d88598ae860619dccc69b72de70712dd7f", + "assets/clojure-Bb2-3A0I.js": "d84e3798038c4ac8cc2748cd8a7b606de826d38cda40fcd1af0157a2c205fad3", + "assets/clojure-P80f7IUj.js": "d84e3798038c4ac8cc2748cd8a7b606de826d38cda40fcd1af0157a2c205fad3", + "assets/cmake-Cv5ljclQ.js": "20de18825679753afc48318521d760d4daea701c95137a58b7343f6ad6bed4f9", + "assets/cmake-D1j8_8rp.js": "20de18825679753afc48318521d760d4daea701c95137a58b7343f6ad6bed4f9", + "assets/cobol-nBiQ_Alo.js": "f98dfbee2d2418176706e93bdc4fd4e2395d5f8e5367b1f2d7546e40bdd4bfce", + "assets/cobol-nwyudZeR.js": "eaf6edc5d2a50ea8a6b21d857e035f60b7aae6860c71bd63258a0938dad94955", + "assets/codeowners-Bp6g37R7.js": "748b547cc141abd1b350d2f2e3b0562606ffaf23e88bb89c8b4e7f7df3c425f7", + "assets/codeowners-CKT8dJip.js": "748b547cc141abd1b350d2f2e3b0562606ffaf23e88bb89c8b4e7f7df3c425f7", + "assets/codeql-DXd8ggn3.js": "d06a0d7ec54beba6ac8aac8db0675b696bda5a7756273663bf7b5cdab0d3285e", + "assets/codeql-DsOJ9woJ.js": "d06a0d7ec54beba6ac8aac8db0675b696bda5a7756273663bf7b5cdab0d3285e", + "assets/coffee-CSg58a7P.js": "f2c2773952d0745ee482dbf76b7844d2f1abbf43bd4417f4378fa1f4be659ae1", + "assets/coffee-Ch7k5sss.js": "2cf05264d5ada366f643b56fa1145af2af574ed8bcd8ce653ffff95b24d8ab89", + "assets/common-lisp-Cg-RD9OK.js": "2fc697c25d367e1f9f950e7bae36f1a739b500bb1e646396484edb3c7e23a96b", + "assets/common-lisp-v102bg8X.js": "2fc697c25d367e1f9f950e7bae36f1a739b500bb1e646396484edb3c7e23a96b", + "assets/confirmAction-cDoYomEI.js": "fc8155cdd65c45e8b1fa010f9cb6449efe48e11ed20a7c84d9b10e33955fdbf8", + "assets/coq-C7JzOVbR.js": "0beffc40a3f6beae1448824d4633b9c7841253b7d2df5ad29e4e80ebc5ee358a", + "assets/coq-DkFqJrB1.js": "142db296843c6d3167305b3c9da4abee5ac6bf9c901947299e0853fce02216f3", + "assets/cose-bilkent-JH36ORCC-BjoSgqJy.js": "1ae86cd65e6b085d49fc17b731889c40e7b1cf3795f9d8d120b31097af4dc62b", + "assets/cpp-BMRokrvK.js": "9bdd62255290eee24c269533ffaefeb9d7c5959c3cdbd8b0a8b3ecfa5a84fdfe", + "assets/cpp-CofmeUqb.js": "dc4aa50510e3eebba4fde0eb3f11c2f4ca51da37953fb2518553272497b316d4", + "assets/crystal-DGywbUpC.js": "653f4f17edf076f6653e35bb1fc62e234c52d905fe603a0092f3fbfd68a7e933", + "assets/crystal-tKQVLTB8.js": "de1fc7a75f97f97be146fdd7d3890ecd28384ed44db8da9dc4932c92c9a8e714", + "assets/csharp-COcwbKMJ.js": "cf21c0244a3f8883cb070f404dcf629acfc640079e3edf473d91cb0960237ecb", + "assets/csharp-DSvCPggb.js": "1ed6cae3a3f91c58b1ce9d8da2f95090c1804cd330b3ef813d35df14da2b88c6", + "assets/css-CLj8gQPS.js": "2848016b846e4595ae4798cb70305f259eb0e8d297b0cc9fa4ac5b0b612a3166", + "assets/css-DPfMkruS.js": "ecb96a4c835492cc7ca23bbfbfaa97e5213dddb412363bdb4d2ca4851057f193", + "assets/csv-AZNL9t8Q.js": "e78e725cd6790c0062e5e941943b776280c971046b16144a117a28f248156091", + "assets/csv-fuZLfV_i.js": "e78e725cd6790c0062e5e941943b776280c971046b16144a117a28f248156091", + "assets/cue-D82EKSYY.js": "d462534c02551b41f1b3198ef6faa32fdfda6bc5aa14e441e6df367fb0485ea7", + "assets/cue-nzsbQn5T.js": "d462534c02551b41f1b3198ef6faa32fdfda6bc5aa14e441e6df367fb0485ea7", + "assets/cynefin-OW5HDTMX-C48WptF4.js": "882a83aafaa411af8a3cfb9930123ccd356a8102b46bc8a8f33f54f97a51b244", + "assets/cynefinDiagram-5FMLGOSQ-CjBhBzJN.js": "56f47b431c85ad19b3b5ce2aa41734e1e547e4c5c024da35318675dee871b770", + "assets/cypher-BM7Pwunj.js": "6953f20dbca19c201dd4a7845f0fb4f3f52a82ad0a0ec6e4a418e49dd7f50666", + "assets/cypher-COkxafJQ.js": "6953f20dbca19c201dd4a7845f0fb4f3f52a82ad0a0ec6e4a418e49dd7f50666", + "assets/cytoscape.esm-C5JX3QLV.js": "a2116416699b9bdb120908dbf05d8f3e0669858281f0b86fe96a636a9af5ee52", + "assets/d-85-TOEBH.js": "bc9e087cec1757269bb3e28c1df26140f6fc454de2ec7e453385d27ed3b39c18", + "assets/d-TG9YRPoI.js": "bc9e087cec1757269bb3e28c1df26140f6fc454de2ec7e453385d27ed3b39c18", + "assets/dagre-GXQ25YYZ-BLEUJY_J.js": "b756cde16c221a02269c7d57f7905accaf43aededc4d52d131d68bd2fa6da302", + "assets/dark-plus-C3mMm8J8.js": "b8b869d6edc688a6855924a0fcbb663d8c22897e84f94f8273f53cb432be2d3a", + "assets/dark-plus-DNUujdjh.js": "b8b869d6edc688a6855924a0fcbb663d8c22897e84f94f8273f53cb432be2d3a", + "assets/dart-CF10PKvl.js": "0b3d4673f8a761354d95b580fd5b46c05715ffc9f5e203860de51e62d50a407e", + "assets/dart-bE4Kk8sk.js": "2cdb81143af7036eaaee976385babd4e4610838e94e72c95eea43825a6d8260d", + "assets/dax-B28Cho4e.js": "e112cfc4f22edb11cf16e6cc9c6f30c1bc44d399442a826e1c2fa68be217f4b1", + "assets/dax-CEL-wOlO.js": "e112cfc4f22edb11cf16e6cc9c6f30c1bc44d399442a826e1c2fa68be217f4b1", + "assets/defaultLocale-DX6XiGOO.js": "0cefbd76f932c4eea4758d28169802589b1ad15b46607253de4bd82328998ece", + "assets/desktop-BmXAJ9_W.js": "fbbe32cc99e0e74b11e742aaae97dfaf0a7b553719ec179638313cc8a8039cbe", + "assets/desktop-Z9LhWKWr.js": "fbbe32cc99e0e74b11e742aaae97dfaf0a7b553719ec179638313cc8a8039cbe", + "assets/diagram-S7CK7UJ4-dTHBkGFB.js": "166ca9d48205f4973ff7289fa6c78cef6a8e3c566ad0bdf1dc74eca8225f75e2", + "assets/diagram-UQ7AKVKN-fmQfe-WQ.js": "468af6bf537f0f6185aaedce56d694feefd35c5b7f21ab79be392d2f86eb1bfb", + "assets/diagram-VSXAHHWV-BH6fVNec.js": "e05b632f93617b516bfcd1664db42aaccf0fbd768e0494356da93f5ab27dffb1", + "assets/diagram-VX7I27RA-C9xVWlDt.js": "315e9fc8320f408596ebcf938a54b7f4e59f3104f418bc96051f47ed01c58225", + "assets/diagram-Z3DM3KII-DL8voKzB.js": "8a68567b8b97f934a93f006f83f824a7e47ab7ace60f701798d8c5d63ab25c4c", + "assets/diff-BlzBhZx2.js": "071f6c7f36d51227bb0701147c7508f96a0f342ba5df808ed83a820ee486c17b", + "assets/diff-D97Zzqfu.js": "071f6c7f36d51227bb0701147c7508f96a0f342ba5df808ed83a820ee486c17b", + "assets/docker-BcOcwvcX.js": "0995ae194f7a702d1572e90b064fd0b1ee0a8da03b8f587c12261c00306eb145", + "assets/docker-DIG_IqVK.js": "0995ae194f7a702d1572e90b064fd0b1ee0a8da03b8f587c12261c00306eb145", + "assets/dotenv-Bf0GLMGc.js": "551287cfbe5723329a252cc084780c0511bcf7e9fc6370c241cc458fe2b7dc62", + "assets/dotenv-Da5cRb03.js": "551287cfbe5723329a252cc084780c0511bcf7e9fc6370c241cc458fe2b7dc62", + "assets/dracula-BzJJZx-M.js": "6349dc749f3cf65b72d22a359e6dff84401fee8b3fccb62812bd8463e9e838c9", + "assets/dracula-Dl-8puSV.js": "6349dc749f3cf65b72d22a359e6dff84401fee8b3fccb62812bd8463e9e838c9", + "assets/dracula-soft-BXkSAIEj.js": "77ad2cd2bdedc3fb6c78edb3fc9bacf6838ffcad1ec6927f3a7bb6e75e1cd8b7", + "assets/dracula-soft-CSMZw4vz.js": "77ad2cd2bdedc3fb6c78edb3fc9bacf6838ffcad1ec6927f3a7bb6e75e1cd8b7", + "assets/dream-maker-BtqSS_iP.js": "44d40108b2579475555c0727913f37bf2f696a0ed48a68fd264cb601fde06cb6", + "assets/dream-maker-DBhfoDN-.js": "44d40108b2579475555c0727913f37bf2f696a0ed48a68fd264cb601fde06cb6", + "assets/ebnfDiagram-PWID7BFC-DHgMUFmY.js": "a6263c752e71ebc315d52cd44acfeea3abeae73a80584314f27f83967c9a12c3", + "assets/edge-BkV0erSs.js": "00bc29007f0aff82154ad02b269087703e4ffadb454ec2099d9da603d13b84e6", + "assets/edge-FbVlp4U3.js": "bf1429f74790f95513474f928e77b7c8f10cc3929d1d93d3012066831f8938d1", + "assets/elixir-CDX3lj18.js": "e48d53b18b22d40fd0822880baaf55fc521b6398087ac49e878cdaf3fc99cf9f", + "assets/elixir-CkH2-t6x.js": "9778eff237e88bd73b380237b13b4a812a644dd67c9659c3800232f200b856a7", + "assets/elm-BX_9EnK8.js": "288d254e48898a0632b11ace9d72d255c31488878737c2addce3cc65eba831a7", + "assets/elm-DbKCFpqz.js": "7deaadb185bfb1298a8ac5fed1a531457c7fdc5745a583ad0f783e16b8bcc1d6", + "assets/emacs-lisp-C9XAeP06.js": "096ee2b27ea479a6d9ce76ea4de53edad90a0d1d7f4b17639caa170824296775", + "assets/emacs-lisp-C_m_b--Z.js": "3781ad56dc7351e3002090ecb5da37a5da738b922592e397f8a9d000afa9641f", + "assets/erDiagram-RLTQ6QDP-CSLXHyEo.js": "66bf03c5887d89c1d64e8c82b99a1a33a68582e4722fa54f0a4ead2de6599d61", + "assets/erb-B12qg9BL.js": "c7a12b8ac182947d30165edb44f2ed4065d89b552d4062a616ff30596560225a", + "assets/erb-DXfck5VN.js": "75bfcd8caa36f9d2daa3732ac62743964a1e39b83a779803f97b4a68d7d9427e", + "assets/erlang-Dh270pQQ.js": "bc6c1d2e61d014976739f106dd46d3b3f0841de7e178b9e4877e9b1d90aa0e94", + "assets/erlang-DsQrWhSR.js": "5dea30124e59e6a84f9519a5da5944d3470182989e62d9aa65bb9b068df90c13", + "assets/everforest-dark-BgDCqdQA.js": "826c6890db7a065c9d4ac75850fbadde410ca10872705c74bb6c1f543f051676", + "assets/everforest-dark-BxQkAq-6.js": "826c6890db7a065c9d4ac75850fbadde410ca10872705c74bb6c1f543f051676", + "assets/everforest-light-C8M2exoo.js": "2ac34042eb335675bd7c5035f2c81ccd503e6a60fe8b047396ab6486fa4f20f3", + "assets/everforest-light-CcLVmqFl.js": "2ac34042eb335675bd7c5035f2c81ccd503e6a60fe8b047396ab6486fa4f20f3", + "assets/fennel-BYunw83y.js": "0bb4581df6bc62ce293fd6715c42bfe54b77ffb18ce9761d0262eee728079c6e", + "assets/fennel-CKW7gc4E.js": "0bb4581df6bc62ce293fd6715c42bfe54b77ffb18ce9761d0262eee728079c6e", + "assets/fish-BiaFC76h.js": "31e609691f04394f54edcf86890e0f7a66aa8fed436d63da5480381875b1a3e5", + "assets/fish-BvzEVeQv.js": "31e609691f04394f54edcf86890e0f7a66aa8fed436d63da5480381875b1a3e5", + "assets/flowDiagram-HODETNUW-B_CxfPz_.js": "22a97bcaeef7263c531d88341f124baac80d8be3c958ad21b8a371109916218d", + "assets/fluent-C1VbA1FI.js": "2929a3bca0b053d7bf7abbe02db3da7d65692836a281dc04510baaa635514cb0", + "assets/fluent-C4IJs8-o.js": "2929a3bca0b053d7bf7abbe02db3da7d65692836a281dc04510baaa635514cb0", + "assets/fortran-fixed-form-B5hFr6Yn.js": "55e45d52c5983206ac25101120b6a51807b14043687dfdd9a34d4ab887f24940", + "assets/fortran-fixed-form-CkoXwp7k.js": "5368f7fe5dc74f0601978b78fea6617eaf5c03090f9f8600d67bd126729f9283", + "assets/fortran-free-form-BuX3zftO.js": "9aa28f072525e1fd2c4963431f29d5d0918c6bd422142c98e6182e4b998370dc", + "assets/fortran-free-form-BxgE0vQu.js": "9aa28f072525e1fd2c4963431f29d5d0918c6bd422142c98e6182e4b998370dc", + "assets/fsharp-B6CigNpP.js": "a91f776c51a0fe0702fac9db664c6fd71dca6c8ec0d4916a5ff39bde6c12060e", + "assets/fsharp-CXgrBDvD.js": "2c0618c951b62650650d0c44950072534f0cfe3b4fcd58573a0024a64e53c52a", + "assets/ganttDiagram-EL5Y4UJY-sf_NNMnn.js": "23508daf3dacc4f528e8a95aaf5c5e6f719ec3954a3779080dbdc1640263eabc", + "assets/gdresource-BOOCDP_w.js": "b62c5b30cb3163053b3315e0c340475e6584a76363c80c553641fbeb9d243b9e", + "assets/gdresource-TyuKm33G.js": "2182a7647b0df4685fd22312e036a4d205e4d99524c13c62147988b40e84e4c4", + "assets/gdscript-C5YyOfLZ.js": "05e593d1c80b8f314bd99795db1ebd519c2389ce3850674c1affc5e0472b630d", + "assets/gdscript-DqcFQ5yU.js": "bfc1eee2b816f02cbc065c443c31c47560040b7e34ae9ba256a3e0ecb7569e36", + "assets/gdshader-DkwncUOv.js": "73f353c2c614fec2d8cfae89fb40ee57d4c406bc00b8aeafe4f7a0aa3395f603", + "assets/gdshader-MbeiIFWW.js": "73f353c2c614fec2d8cfae89fb40ee57d4c406bc00b8aeafe4f7a0aa3395f603", + "assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2": "2317fa4bb293c9c0b110e18315d529235c47a0ddd3338cea3d8c7955e927899e", + "assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2": "6894439694946a589d157ece003086960a6a4013d74a813dab7602efdb3d8c09", + "assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2": "824f485b5d26e2f2da3c2b236132ece1bc8e4e43373452950bb0e40548b4313f", + "assets/geist-latin-wght-normal-BgDaEnEv.woff2": "19f9c92546aa300c312235e3125af1b81394d8db9a4bc4a425cd5b641d2d54e1", + "assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2": "8fa40e5d248247735eb97a0bd593b8852440430600d6ba01364c31fe0abc1fe1", + "assets/genie-CTXGoN_z.js": "1ae6367d77ad7ef0abbac818ca67a213ee812abb47d1aefc5427120b1a6fd13c", + "assets/genie-D0YGMca9.js": "1ae6367d77ad7ef0abbac818ca67a213ee812abb47d1aefc5427120b1a6fd13c", + "assets/gherkin-DQeIZrj7.js": "c7bd366597ab12a5977d62813a92022bfbce506f2a3c70d0b3819aa39344c7ae", + "assets/gherkin-DyxjwDmM.js": "c7bd366597ab12a5977d62813a92022bfbce506f2a3c70d0b3819aa39344c7ae", + "assets/git-commit-BicZTByO.js": "1607eda5189b473c6d3f9bc9053b120bf74c64dab6296b92ea325cd9c4c0d206", + "assets/git-commit-F4YmCXRG.js": "783b8cb9af4cb9b869335cd5cca6a2125bb97719b21ef21b004c0974181bcae6", + "assets/git-rebase-Bzlpfr7M.js": "2d9a7332766c8bd04abf69f54de455fd57db7ae447713b675502535400d3a2d2", + "assets/git-rebase-r7XF79zn.js": "88402cafff4897e7d7931bdb17acfcad0916e1f54353e578e876b21055ccbef9", + "assets/gitGraphDiagram-WWUBYQGX-DzH0SKOv.js": "1ed35dee96f5d7cd61321c29234cb118789652fa5db2790f737ec61e8fc96961", + "assets/github-dark-DHJKELXO.js": "8f7ccd8274e8950ef099d389c70d379782cf17f39424090949ba45833eeee022", + "assets/github-dark-default-BuB7GGZr.js": "c748b560af550be6ed802ebe5433b0688f617925feafdd98d8e3d43470c24a1b", + "assets/github-dark-default-Cuk6v7N8.js": "c748b560af550be6ed802ebe5433b0688f617925feafdd98d8e3d43470c24a1b", + "assets/github-dark-dimmed-CQQ2kH1a.js": "8bb97e7c16cb22f8acf952c9e0af4d9bc1e13cc7ad44fadd98b5df37bf3ba5f4", + "assets/github-dark-dimmed-DH5Ifo-i.js": "8bb97e7c16cb22f8acf952c9e0af4d9bc1e13cc7ad44fadd98b5df37bf3ba5f4", + "assets/github-dark-high-contrast-E3gJ1_iC.js": "18f1a70b963db803f141be93c79c80a0dc38f78cd47fea1ff8b05cec409b7fe9", + "assets/github-dark-high-contrast-fZoHxlg3.js": "18f1a70b963db803f141be93c79c80a0dc38f78cd47fea1ff8b05cec409b7fe9", + "assets/github-dark-vbPMK5nw.js": "8f7ccd8274e8950ef099d389c70d379782cf17f39424090949ba45833eeee022", + "assets/github-light-CBO01_j6.js": "9ad9f268476dc0edc85cdb9a9ae940ee7d0ad267d5de82810fef40d2f13462ab", + "assets/github-light-DAi9KRSo.js": "9ad9f268476dc0edc85cdb9a9ae940ee7d0ad267d5de82810fef40d2f13462ab", + "assets/github-light-default-D7oLnXFd.js": "212b28c6987d30991d6bc3f812cf69d93694a557235bd9e1e4460855edb2e4f4", + "assets/github-light-default-DNniaknl.js": "212b28c6987d30991d6bc3f812cf69d93694a557235bd9e1e4460855edb2e4f4", + "assets/github-light-high-contrast-BfjtVDDH.js": "1b1d4ff8b3fccaa0e7cfcf8688e7fb75b086e8b879c62353f6c580f8cd260e54", + "assets/github-light-high-contrast-Kh_Z1r_U.js": "1b1d4ff8b3fccaa0e7cfcf8688e7fb75b086e8b879c62353f6c580f8cd260e54", + "assets/gleam-B-IqXlZK.js": "96ee8ab10150415113386ffb698a6e578947cf099f72daf24984f09da77c2118", + "assets/gleam-BspZqrRM.js": "96ee8ab10150415113386ffb698a6e578947cf099f72daf24984f09da77c2118", + "assets/glimmer-js-ByusRIyA.js": "a6a55b0b40a0414993f5634139e2ba2bcce5e46bcbbb6d40901e84f5b8ef18ce", + "assets/glimmer-js-Rg0-pVw9.js": "41ff2390d3d87dbba88aed68a5dbc6af2a074697412a69d93ecf92c265c615dd", + "assets/glimmer-ts-BfAWNZQY.js": "6c72cbfe6a5a38bb7076b1f3f21b87a6934b697a1e21584bbc914a15e2827fa4", + "assets/glimmer-ts-U6CK756n.js": "90bd2b279afd03f599ec90b7323e3c414cf7f3b44038551ece8f9e59522beaac", + "assets/glsl-Bk7TyU8J.js": "e4630a751aac7b3e5927461d6da1e36f5763d317e9ffc7f3a310abd4a4cb58df", + "assets/glsl-DplSGwfg.js": "d73db15d8c26ce44204eccdc3f250039018f34902874d55920b51f171d75a737", + "assets/gn-deNdZ1en.js": "8ebd06d1b7db73d2b6a50f2072c23af6b2164783b8268fa8c8d643d4d3e72ae0", + "assets/gn-n2N0HUVH.js": "8ebd06d1b7db73d2b6a50f2072c23af6b2164783b8268fa8c8d643d4d3e72ae0", + "assets/gnuplot-BBjkHhdK.js": "44e79156d6f1fda5d964731ffbf67170dfc593edd18e9ad76f2e984d5e90a17c", + "assets/gnuplot-DdkO51Og.js": "44e79156d6f1fda5d964731ffbf67170dfc593edd18e9ad76f2e984d5e90a17c", + "assets/go-C27-OAKa.js": "46ec75c1455e917fb6e0b1b4aa0f0b15686386aba0c8e3ca3615984ae9be696e", + "assets/go-CxLEBnE3.js": "7a9b30622fce8b7e26e4d4fdad80993b0a63471268cdd171d3b9de7b1a273261", + "assets/graphql-By4-2MiP.js": "406db6ca810533a8f68b97a8ae8f06e8add46c44aab96abbaf81ae661f21b844", + "assets/graphql-ChdNCCLP.js": "ce3367ffe23232e3d6d2ce940d1bb233839c0ebf02b9f12b151108c8bc2d4b58", + "assets/groovy-DjMbfbx0.js": "a03245cec1dc1cbbf9d68a083dcc04b77cbf748ad95bdd0291bf7ae3555bc1b2", + "assets/groovy-gcz8RCvz.js": "a03245cec1dc1cbbf9d68a083dcc04b77cbf748ad95bdd0291bf7ae3555bc1b2", + "assets/gruvbox-dark-hard-B-lrt2RD.js": "d298e64968c577792359edbd2bee987149cd3b6252b82836f28dbd96cb521d3f", + "assets/gruvbox-dark-hard-CFHQjOhq.js": "d298e64968c577792359edbd2bee987149cd3b6252b82836f28dbd96cb521d3f", + "assets/gruvbox-dark-medium-DqRMfHwY.js": "cd2d75705169e923822a9f8bc1141e8f5e7c0a5af0b5ded469dc76e5d03ada21", + "assets/gruvbox-dark-medium-GsRaNv29.js": "cd2d75705169e923822a9f8bc1141e8f5e7c0a5af0b5ded469dc76e5d03ada21", + "assets/gruvbox-dark-soft-0cd3aJ5k.js": "fdbd1d78ed6a4fce75feefb8797570a4568edce8ded59af0d99f83e20f3307dc", + "assets/gruvbox-dark-soft-CVdnzihN.js": "fdbd1d78ed6a4fce75feefb8797570a4568edce8ded59af0d99f83e20f3307dc", + "assets/gruvbox-light-hard-CH1njM8p.js": "7b2fa3d574f3ef80a213d88fddb684431e94bdb472d523d8f0caad96d5d376f8", + "assets/gruvbox-light-hard-CdMyBl7-.js": "7b2fa3d574f3ef80a213d88fddb684431e94bdb472d523d8f0caad96d5d376f8", + "assets/gruvbox-light-medium-DRw_LuNl.js": "62a938850d5e4fc934e44213eff465fb3618456b0490adc4887d4a83bd0d9e29", + "assets/gruvbox-light-medium-k_NbMmjL.js": "62a938850d5e4fc934e44213eff465fb3618456b0490adc4887d4a83bd0d9e29", + "assets/gruvbox-light-soft-B_wmbOPu.js": "090f38c249b8bccd7b283926da32fa0095e8c27b5dd88ae2746863f7b7bc4ccd", + "assets/gruvbox-light-soft-hJgmCMqR.js": "090f38c249b8bccd7b283926da32fa0095e8c27b5dd88ae2746863f7b7bc4ccd", + "assets/hack-BWmVpMyf.js": "6f8661b08bbef75cd3c2f200f288389ee81630cb011020ffc471d9ce54369441", + "assets/hack-CaT9iCJl.js": "e1a5064e1ee240147e7a5000884c157de6a4b6ff9a6a140bcd3194a09106d5d2", + "assets/haml-B8DHNrY2.js": "d10c129fed07a700ec284adfba6c8bba53540c90fc6f881d7ff816eba26f16a6", + "assets/haml-D5jkg6IW.js": "e13ab492818afe2c580013d9f4997b6c208af62abe9070db87aca75e57032bb3", + "assets/handlebars-BL8al0AC.js": "7ae55c034a41370a303c867c5e5bd40a4e8eea6baa69a4dd9b10a28e98fc4236", + "assets/handlebars-BpdQsYii.js": "c23cdd9ad3e44c79a7f3ca970c5eb9145f0dafec185d328ef13125503c2edabd", + "assets/haskell-Df6bDoY_.js": "164e3b023115e70432602c2da71d1c0ac7184ea91deea1dc70cf17ef74b84fa6", + "assets/haskell-DtebQ3Kv.js": "164e3b023115e70432602c2da71d1c0ac7184ea91deea1dc70cf17ef74b84fa6", + "assets/haxe-CfZj7gIn.js": "ff0c7a20b0534485bc9a6dae421fcb7bc623bba5d646ba188bd38dcb4b85fff6", + "assets/haxe-CzTSHFRz.js": "9758d15765769f46874c4bc90d672c3a465b8ce0a1b2db6ffed3a116e6d5a7b8", + "assets/hcl-BWvSN4gD.js": "2d11254542388410861c6a6a3c0f57deb9c218fdc2c1c5ffac901bdb876fe80a", + "assets/hcl-shhv74hy.js": "2d11254542388410861c6a6a3c0f57deb9c218fdc2c1c5ffac901bdb876fe80a", + "assets/highlighted-body-KPVGNVTW-CDMbupSV.js": "1498b3f864b4a5285a52b6644f20747e4cf66a1d067a80a5bc5b7eda26a39e76", + "assets/hjson-BEMFYqr7.js": "6a7e74cb9d734dfd58aeeae9224a7b4b69a86edcc6b73d0e3e36e98dacb3300b", + "assets/hjson-D5-asLiD.js": "6a7e74cb9d734dfd58aeeae9224a7b4b69a86edcc6b73d0e3e36e98dacb3300b", + "assets/hlsl-D3lLCCz7.js": "f5bff090211e17e314660363157f351c5a0b8e707db3ef26cdd78c8522c7d133", + "assets/hlsl-Pefxhtaj.js": "f5bff090211e17e314660363157f351c5a0b8e707db3ef26cdd78c8522c7d133", + "assets/horizon-BUw7H-hv.js": "d43f28552f920fd99607f754ce527ee0be5654097c479c446d86df933c911b72", + "assets/horizon-Dr-pOaOB.js": "d43f28552f920fd99607f754ce527ee0be5654097c479c446d86df933c911b72", + "assets/horizon-bright-CUuTKBJd.js": "d0979e7f67f06dcbce9465dc5e78779ff667236e9cffdaa91d1078e6706b6047", + "assets/horizon-bright-Cn-bp-IR.js": "b69099a7451825f86a289c6741582f048f9518965229156fb84552d8d64ca575", + "assets/houston-D7pTNItX.js": "91c981557306d7a18f7ff39d9060dd2b582604a75aff38ae79edc647e4d9ff93", + "assets/houston-DnULxvSX.js": "91c981557306d7a18f7ff39d9060dd2b582604a75aff38ae79edc647e4d9ff93", + "assets/html-GMplVEZG.js": "b50c5444419c4bdd9464606b005a02ec2dab4f9a21f26651bee94332f213c567", + "assets/html-derivative-BFtXZ54Q.js": "8af372f33242dcdabf3c39a52c2354419f00ec560b589269d03c05e0e799b84c", + "assets/html-derivative-DlHx6ybY.js": "5cc909150138a1faf28a69c29c2f97ee0743e4a1493c1ff64c86a5b1e865d6a9", + "assets/html-pp8916En.js": "cdaf69aa50dfcdb8a57fb971c767627a67b11bb472dfad3b9285a044d2cfd6b3", + "assets/http-D0p2QOuJ.js": "4bf2242e820cdd603131362cdedd247bd5665fa6da1085dcb730c76c56b0fac7", + "assets/http-jrhK8wxY.js": "5bb8464898add03e8c22970d9eb4cc467b40ae2888e4d5623c9fde4209dd4d29", + "assets/hurl-CeF7EoTQ.js": "91813eef6f404bb96571c94fe3efe67a845147bb9453b5ee3339b5a13a55d709", + "assets/hurl-irOxFIW8.js": "f87e3fbbc06d52e9d69c1a8cb0a3d64e430ccb85faddeb7a5f87aa12ed6d01a2", + "assets/hxml-2-FPmUDs.js": "99083d2dd0908659f9dff7dce19edf0d572d8bc936dc22795b1f6cf0d1ce4f70", + "assets/hxml-Bvhsp5Yf.js": "59530b894cd868887490a330da6b8366214246b8eef502a261bc99ca7ccf63af", + "assets/hy-CTpXmg0M.js": "22df29d8b5c5119f1bd25e998bf7b359a29dc5b826e50597cee67731679cca68", + "assets/hy-DFXneXwc.js": "22df29d8b5c5119f1bd25e998bf7b359a29dc5b826e50597cee67731679cca68", + "assets/imba-DGztddWO.js": "73402caea94e54100c970c652577abf4995f79310e7528744b46a37227057e35", + "assets/imba-z_cUhu9e.js": "73402caea94e54100c970c652577abf4995f79310e7528744b46a37227057e35", + "assets/index-2lKs2YMF.js": "38318e676191a62941c6ef2fee010ccab100e96b91dce08a1a907443e5cf3314", + "assets/index-B13xcwNY.css": "4d8dbbc0c293da11d88047595cafc95d84e71ec32b682744c9438e3b0448a547", + "assets/index-BfilXHwF.js": "6adf4e2b66369f338d9fdfe41819be8d2b69387989548ebe1643a513c89cd8f5", + "assets/index-BlFvxfHx.js": "800728c1b85fcb6ff3e70a6b260858b0ded38966e88ae36295f871d70bdcc389", + "assets/index-DeqZeDcQ.js": "7d95a32eab7b6f903a1a820b94462b8bdc286b539a6b49a4307d9e6bafb9938a", + "assets/infoDiagram-27XIBGKW-BHVUIVfT.js": "96bfd6b3517781cff05f3cd409de79adb117bda7905595d5c40e806bd1dbcf46", + "assets/ini-BEwlwnbL.js": "7830e62a2a96e22c418b5a1e52ba15545ece3c5684346dd50fc174a60b3c225f", + "assets/ini-DOGW4-0C.js": "7830e62a2a96e22c418b5a1e52ba15545ece3c5684346dd50fc174a60b3c225f", + "assets/init-Dmth1JHB.js": "6dfdcbf6754983698ab29a22640e4942b8ae02ea0a205b896691b2748f2d155e", + "assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2": "ca157063339ac4ad418f214f3abfed119b0798ab4d377386ce5c9e5a7a435ebd", + "assets/inter-cyrillic-wght-normal-DqGufNeO.woff2": "71d5ee93cc1e9f1d520a3a8b66456de18c7879d8df09d57fcd2eaff75fef0075", + "assets/inter-greek-ext-wght-normal-DlzME5K_.woff2": "6e9e020a25f9b56d418f2c085b1d3c09725a4da23fe693a5b463064606732190", + "assets/inter-greek-wght-normal-CkhJZR-_.woff2": "1be3448e292fbf05ffe176fe1e43f135013d50b1e7d324ad1a558f623d3bb6f6", + "assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2": "34b9c504cab7a73e37b746343a449132e56cf7b5481af2cb81dc74dcff25c956", + "assets/inter-latin-wght-normal-Dx4kXJAl.woff2": "3100e775e8616cd2611beecfa23a4263d7037586789b43f035236a2e6fbd4c62", + "assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2": "5c66f9e07e90c6d4ac4922cc68d60de26c17b1858e677fb5e603fce3952b3ff2", + "assets/ishikawaDiagram-5VMMS53U-B8-U6Jf8.js": "a01534e21ceb5d1120858b88d30bbd2e3ac87b65b53fa9dc45b5719da453e098", + "assets/java-B2AjWfgk.js": "2bec4be5ba0dea3d8258669df1e6957e1ba2590a1ad56c6e103ea8c00baeba7e", + "assets/java-CylS5w8V.js": "2bec4be5ba0dea3d8258669df1e6957e1ba2590a1ad56c6e103ea8c00baeba7e", + "assets/javascript-XPxc2APE.js": "a4a56cc72c7d0f1ecbbeb1ba6bf5f532193c8d13fc3de19910f8d64c70aec4e9", + "assets/javascript-wDzz0qaB.js": "a4a56cc72c7d0f1ecbbeb1ba6bf5f532193c8d13fc3de19910f8d64c70aec4e9", + "assets/jinja-4LBKfQ-Z.js": "1801f5eb0d83c09dabe24151cd4cb508b2d0e2c1db33ef92dcf691f240db83f2", + "assets/jinja-f2NsQr07.js": "c2904424088fdd45ae37bc7510c4efa8f353d4c3973d30514d3ff3f999712136", + "assets/jison-DRGa8fbr.js": "331d6f91bc737b0148f8c030a779a3dffac351d61d25f03a06b19ca5399f9a30", + "assets/jison-wvAkD_A8.js": "3d09bd59c47dffe52f1eee5bd2371ecc2c8340daac0400872472affdf0c95392", + "assets/journeyDiagram-3NMN7TZE-5ZejD4ef.js": "c6d7b301688dca324e25ea760d56d1276b5081f947640365325511822a16ad99", + "assets/json-CjLXzM_z.js": "ca32840cab9c2eb61da2afd6581e7a22c9937229f6b1a47115eea432794e7740", + "assets/json-Cp-IABpG.js": "ca32840cab9c2eb61da2afd6581e7a22c9937229f6b1a47115eea432794e7740", + "assets/json5-C9tS-k6U.js": "84985fb6e4953e5eccc4d704e4db9eb5c0045b74a11d3edd3a9b4c0bd3d5c2e4", + "assets/json5-DE06a0U2.js": "84985fb6e4953e5eccc4d704e4db9eb5c0045b74a11d3edd3a9b4c0bd3d5c2e4", + "assets/jsonc-BYi4HS05.js": "1a23e00b91a35d38fba019125c68139ed9c6b9a0bdb953e9b21a709875f41125", + "assets/jsonc-Des-eS-w.js": "1a23e00b91a35d38fba019125c68139ed9c6b9a0bdb953e9b21a709875f41125", + "assets/jsonl-CuhIcKDk.js": "10ebbfda6fda38f977a98ef80441310d350b084c6c27c811296ddcf2d84ba3ea", + "assets/jsonl-DcaNXYhu.js": "10ebbfda6fda38f977a98ef80441310d350b084c6c27c811296ddcf2d84ba3ea", + "assets/jsonnet-DFQXde-d.js": "198a5e9985d5d96fae3f00e0d707841393882f4b9e2bf60ab5145af13c88b513", + "assets/jsonnet-DtQdHwK-.js": "198a5e9985d5d96fae3f00e0d707841393882f4b9e2bf60ab5145af13c88b513", + "assets/jssm-BlhucWo7.js": "5b09940400c8fb823c95c198c9363791948e6a9229da2873bdf27b806452b831", + "assets/jssm-C2t-YnRu.js": "5b09940400c8fb823c95c198c9363791948e6a9229da2873bdf27b806452b831", + "assets/jsx-BGEKFWBk.js": "abb8a7007d9a1f743c33283c233a509dc702eb618d1447d128b1330b73851bf2", + "assets/jsx-g9-lgVsj.js": "abb8a7007d9a1f743c33283c233a509dc702eb618d1447d128b1330b73851bf2", + "assets/julia-5Bft2YPA.js": "38f43b1f39c07cecaec1c4fa90ec4b52917c5b761b74222a84dd982bbb873649", + "assets/julia-CxzCAyBv.js": "44816ad3fcafca4b4b97959c2bec42e38f18bbb02d7a7ed8f4f6ef8a884697a9", + "assets/just-Cw27pwNe.js": "816a83790036ab1865d99440ad98d3cc3d40fb3fc48ea23c1cbee4d52d1bcfa7", + "assets/just-Cwhn7H3k.js": "5e6efd43da230bf3724aeeeeba76295d56b4c34b713f003ba014194fc6a91836", + "assets/kanagawa-dragon-BuwD2xS4.js": "b8c65fd96235e984ceae45fa618fbe6d1e12c351a0bd5ed598740e8626100aa6", + "assets/kanagawa-dragon-CkXjmgJE.js": "d45808ad5de1205ef39b8a53037311667253a7a4b13ed40e4ebd70faf55e4089", + "assets/kanagawa-lotus-C3DzagqV.js": "97f5cb8e805ce43842308ed2fc5d658c45c22b2ebfd5321e4abd3e85bbea3e93", + "assets/kanagawa-lotus-CfQXZHmo.js": "4a9b14832c6f978395fb8fc63107094b3d51ef6aa92003b38bc21e00b769fb54", + "assets/kanagawa-wave-DFGoQZhC.js": "8013315ef8e305c56ab87cfdf3d74a1f284a2cbecde3a6e2e9311217fd522d90", + "assets/kanagawa-wave-DWedfzmr.js": "25c129a062f9ac87decb56e2299d4a6aa652d1b20f3488c4e30f80eb9f8aa78d", + "assets/kanban-definition-UXKFOSKX-Dh6g3fHZ.js": "63497dc946f1985d47386c65bf666b15069a7b58d26487e0d458be15d2dbae8b", + "assets/kdl-DJsF4U57.js": "24eccbf01c8c213cb407ee8b0294e0fe4d362c2a6c173a9516d41bf76e8cd387", + "assets/kdl-DV7GczEv.js": "24eccbf01c8c213cb407ee8b0294e0fe4d362c2a6c173a9516d41bf76e8cd387", + "assets/kotlin-BdnUsdx6.js": "2a95758b9ec1532516fb3fa38cdd82fed5534d944ca791f327e624ec94e829ac", + "assets/kotlin-DwKqsDKK.js": "2a95758b9ec1532516fb3fa38cdd82fed5534d944ca791f327e624ec94e829ac", + "assets/kusto-DZf3V79B.js": "a5d665eee0a12fcab22699da3b1c2cab4a1726b94a9947c1b6da3f3709d0d96b", + "assets/kusto-wEQ09or8.js": "255f5391b61f30323769884f680e235da9cfe6d696f2dd9200543911c361f88c", + "assets/laserwave-Crdg5MSq.js": "d56a0486f8b143d6d31a0b0230ccc5914ffbb751543a7dc97d697cbc1152da69", + "assets/laserwave-DUszq2jm.js": "d56a0486f8b143d6d31a0b0230ccc5914ffbb751543a7dc97d697cbc1152da69", + "assets/latex-CWtU0Tv5.js": "a544f1361ee85779a47677047f3b2f002820d522f10ee48bc98bb045ab06d2af", + "assets/latex-D5pSuvFb.js": "f8a21f5b96903566d1db591922ed566e07acdc687e54bac1421a6b99cd164e62", + "assets/layout-PfRRcifY.js": "e107964b8d3be199a19b24cd51e9f5fedda529322d071a219ec3a374a70cf207", + "assets/lean-BZvkOJ9d.js": "b34bf987976167f4de82af23930eaa4471b06320f236a5d00e3e9098fc704301", + "assets/lean-QIsVZaRF.js": "b34bf987976167f4de82af23930eaa4471b06320f236a5d00e3e9098fc704301", + "assets/less-B1dDrJ26.js": "ed3ea44927fda1db6ba56ae932f08ce7f82f8d8a06d2b3d63e3b29db54ec5c65", + "assets/less-C76OjOdF.js": "ed3ea44927fda1db6ba56ae932f08ce7f82f8d8a06d2b3d63e3b29db54ec5c65", + "assets/light-plus-B7mTdjB0.js": "44ec2993b3cc158ca691da352114658cacc0812ba4678faec2a6370262415979", + "assets/light-plus-Keeg-hmX.js": "44ec2993b3cc158ca691da352114658cacc0812ba4678faec2a6370262415979", + "assets/linear-BHX83IC-.js": "4255184d689419cae246f5bbb3da2f6d4b922022021b93f99b229fbd1d885ede", + "assets/liquid-C0sCDyMI.js": "8527defc32d0d2ad87f4948bbaeaced38ef37ca5850cb2a014d166ce15089874", + "assets/liquid-DYVedYrR.js": "4d5bb9fbbd8f34a140dc9fdbc4e17c56fd7bb686805e5822be6326dd0288233d", + "assets/llvm-BZoOZj88.js": "9a303336a89f1f144e8dd97d8ffe91aa164544e6ab744a1c4b8b50b9fd54f66f", + "assets/llvm-DjAJT7YJ.js": "4937d05e28115e0d9161616a786aecdcce209dfbe4c8ef070150937a58befab4", + "assets/log-2UxHyX5q.js": "784500daa4b6a6ac32f95c19dc166914133189decc3ed10faf43578fe522a786", + "assets/log-CbW7hOWU.js": "784500daa4b6a6ac32f95c19dc166914133189decc3ed10faf43578fe522a786", + "assets/logo-BbooMuDm.js": "0ded9d4454ae3e08017b17f93c117c3e451698f42109e15d69380ec089406060", + "assets/logo-BtOb2qkB.js": "0ded9d4454ae3e08017b17f93c117c3e451698f42109e15d69380ec089406060", + "assets/lua-BaeVxFsk.js": "890724e2d1bc79e6f6498ce6cedd5a4bed0d9489121621c1946ef05e209f5623", + "assets/lua-JmSlR1pZ.js": "9ced2f5286ae171c0cf8693838bb2b7fa83c2d4257bfdf8d740d8402b061ba5d", + "assets/luau-BnpPk5vE.js": "d0910710cdeed2d7202da8c450539dcac97f6507c2e5dc0d25b0ae59a856b9d9", + "assets/luau-C-HG3fhB.js": "b969611adf3271fd488730a32acb9dbbab5c0377231c610ed0bee0bf4719ffa3", + "assets/make-CHLpvVh8.js": "50df72a259773a4ca73a97534238010cdef78d632729871d880b58fcc6d3112f", + "assets/make-s9FKP0VE.js": "50df72a259773a4ca73a97534238010cdef78d632729871d880b58fcc6d3112f", + "assets/markdown-CKXSK5AY.js": "ce6a8b1a6ed9b803b1847231214ba37621c2fa51611ec3037d38b561b360c278", + "assets/markdown-Cvjx9yec.js": "ce6a8b1a6ed9b803b1847231214ba37621c2fa51611ec3037d38b561b360c278", + "assets/marko-CnJfTvn9.js": "c6d06de9c7098dd02d0d4d0b60a78cde16bb039c5cefecc2573f12f8bc124e1a", + "assets/marko-DjSrsDqO.js": "3dfb88732014c232ee9747a330a2ee0101c386838a24dea15364f50dd3b592a5", + "assets/material-theme-BjSij5jK.js": "d0950f3965aecb678089843c133f238db6b308f218e98bdee1412de56b0af425", + "assets/material-theme-D5KoaKCx.js": "d0950f3965aecb678089843c133f238db6b308f218e98bdee1412de56b0af425", + "assets/material-theme-darker-BfHTSMKl.js": "ec892813b7a31e9e2d83f54a05450f9a406de273628838b016e828db7ed72572", + "assets/material-theme-darker-Ci314V8G.js": "ec892813b7a31e9e2d83f54a05450f9a406de273628838b016e828db7ed72572", + "assets/material-theme-lighter-B0m2ddpp.js": "4547e1325624259cb17dfa811e29b0d3e3f9a07c9f37b4cb8d4b4f945d9f2f5b", + "assets/material-theme-lighter-BsHhGFQr.js": "4547e1325624259cb17dfa811e29b0d3e3f9a07c9f37b4cb8d4b4f945d9f2f5b", + "assets/material-theme-ocean-CyktbL80.js": "f80d8209f2d352d0aea9f47759017fa0f994e71e79db1e722be9d82a974692a4", + "assets/material-theme-ocean-DcalBkIS.js": "f80d8209f2d352d0aea9f47759017fa0f994e71e79db1e722be9d82a974692a4", + "assets/material-theme-palenight-Csfq5Kiy.js": "6261dfa64833f4e0c0316a1d41efc5ba6fc43a376bca6f936b4f3b76a6396af7", + "assets/material-theme-palenight-GGCMgrXw.js": "6261dfa64833f4e0c0316a1d41efc5ba6fc43a376bca6f936b4f3b76a6396af7", + "assets/matlab-BQKM-LA_.js": "463b698b6acd5b08065007f5376b060dda4fe19f9e27259da52d40a30bc2bc66", + "assets/matlab-D7o27uSR.js": "463b698b6acd5b08065007f5376b060dda4fe19f9e27259da52d40a30bc2bc66", + "assets/mdc-BMNejdWA.js": "7a05fb8bd772509b14aad9b776fea0e8734c4a3099a3e68f4d1887bbaef0ef00", + "assets/mdc-D1_yUvq7.js": "436b891cc85f4304d2a62009cc417a2a530b35398ea8b9c5f5f38090d3e0a92a", + "assets/mdx-BWRhHdFl.js": "c2c652334464f6085341dd1c46e32717e22556890fbc0d2651d9200f372069bb", + "assets/mdx-Cmh6b_Ma.js": "c2c652334464f6085341dd1c46e32717e22556890fbc0d2651d9200f372069bb", + "assets/mermaid-CQcHuHx7.js": "82f6b9a2ce0fadf1bf76a24d14b621412f28535d2786b60ea65cd656a1ef8576", + "assets/mermaid-HWGCJPDP-DxkEXKK2.js": "d16e06b4548642555108ff725752ec38f0a2657ab28f2c43453f768b6cb23917", + "assets/mermaid-HWGCJPDP-wPEUqzAz.css": "1799c0c828d1662025e99ecd507f02e1f4548233631eb6f84d5cb03094768766", + "assets/mermaid-mWjccvbQ.js": "6802dd4aaed6afb26068d1b0acc945071cd5360809baec6b102fc2ac23d8a322", + "assets/min-dark-CDSXMz5a.js": "4c0956f147c2dd5aef71894b78d7e95b7a766deeb20712ad94e5897bed620792", + "assets/min-dark-CafNBF8u.js": "4c0956f147c2dd5aef71894b78d7e95b7a766deeb20712ad94e5897bed620792", + "assets/min-light-CM5JNFAA.js": "27e91e09c261ea328ed371e734655f83543da150143a49d5ae39598dad6cd844", + "assets/min-light-CTRr51gU.js": "27e91e09c261ea328ed371e734655f83543da150143a49d5ae39598dad6cd844", + "assets/mindmap-definition-YA3MSWOX-BEp9fXlG.js": "e96e96cccf89f953d1c5e746fec177893ed498f57ba0ceadc6d5774028470733", + "assets/mipsasm-BElnB_7Q.js": "c2cdb4e8e7172f68f5bb6e0615696c2a023a2b8bfe008f424c8bbae1e120dd2b", + "assets/mipsasm-CKIfxQSi.js": "c2cdb4e8e7172f68f5bb6e0615696c2a023a2b8bfe008f424c8bbae1e120dd2b", + "assets/mojo-DJz3ZmWd.js": "2ae4b80c95b301f58b8e7d8501dc64f73618221dd6b5614ed21b73b015971df9", + "assets/mojo-rZm6bMo-.js": "9e70dea75c07fa27e22d7f5bce1afe758f65ecfcaa4c48682e67a83f00d17dc5", + "assets/monokai-BRVnQi9A.js": "7fc9211de0c0bb35524c6046c295201246b50441e96820c26aff7899441da823", + "assets/monokai-D4h5O-jR.js": "cff833ee8a81cd91ccfa57ee0d5924577aa1406e209a80087bb9675ad2ea8d0f", + "assets/moonbit-CHtswR0a.js": "d05eeed6319a5c728763648765a96cff3b65640c38cfadea62e464e1a4bfedca", + "assets/moonbit-_H4v1dQx.js": "ce085206edfae15f55e78824eac04480d7169ea96755d6fc4e57642c5641c0a4", + "assets/move-IF9eRakj.js": "e90046ae9e34086d261731f85a1399439ece1b8cd11635066a2fb910eb3f73f5", + "assets/move-el3G9tDJ.js": "b687a211e984e5dceb76fdd7eccdf8626d35241a97bb4f4e135d046db76aa46a", + "assets/narrat-Cy2k80UN.js": "37b1a4a08e1a0d4cf06e1ca8adddf1c51b9600b695f017b911799099ac5d8671", + "assets/narrat-DRg8JJMk.js": "37b1a4a08e1a0d4cf06e1ca8adddf1c51b9600b695f017b911799099ac5d8671", + "assets/nextflow-C-mBbutL.js": "7c78f3d862753953afee76d5ae146df0b7dd4febb549893199ada62ae433b4b9", + "assets/nextflow-Zz6hmt5N.js": "de0fbf3f19a3e632ab10ce7df53ec378e2f7f210b286d5a7dd69aedce0827f9c", + "assets/nextflow-groovy-BeH2EWoN.js": "26c7440b7660ef7115c3b7fd6f6cd4fd1a7215bc8b574def16c547cca3546730", + "assets/nextflow-groovy-vE_lwT2v.js": "b5e6334e56f5db6b389035922e884a0adb984b420b231d71be73d6716b337815", + "assets/nginx-BpAMiNFr.js": "25b53af8ecce64bdefc084c8b7af5f27537ef7022618e8d90e4b20fd1ebe485f", + "assets/nginx-bBKbG2uI.js": "e64d0611ccb62f4dde9cc921b7ed5e2d15f4796ee75a21a1434265db7124bfe0", + "assets/night-owl-C39BiMTA.js": "2b8554d4a01b6e062bb929507c741070c04d4f194b424942c5f208891afa1360", + "assets/night-owl-NZdGqbHT.js": "2b8554d4a01b6e062bb929507c741070c04d4f194b424942c5f208891afa1360", + "assets/night-owl-light-CMTm3GFP.js": "68b5b21d900e1409b772220982c7837bd77003f084069160edc37f9eccd46758", + "assets/night-owl-light-Dx-BWqtN.js": "68b5b21d900e1409b772220982c7837bd77003f084069160edc37f9eccd46758", + "assets/nim-BIad80T-.js": "b96bdcea776f4be0746c22c40c2096ad7404c4ce5ae75f79222621302d8de000", + "assets/nim-CVrawwO9.js": "2a0ac9212274e3ae8926531fdf55664e68594051f02f3e46107551d7fd087cf3", + "assets/nix-CwoSXNpI.js": "1d064eb88b18c48846c1ad0e438c869aa25813361efba72de9725932c0310449", + "assets/nix-DFZZLjuC.js": "1d064eb88b18c48846c1ad0e438c869aa25813361efba72de9725932c0310449", + "assets/nord-BNMOv-tL.js": "243a9dfea9c93c40586d279de5ea4cd8f3de380c2e3c0ea7ba58e93ef12cbcf5", + "assets/nord-Ddv68eIx.js": "243a9dfea9c93c40586d279de5ea4cd8f3de380c2e3c0ea7ba58e93ef12cbcf5", + "assets/nsis-BlV79W_Q.js": "33258d96bfe4dc252fc7c102ecc8f777ff72dbdea8d1d7786e079db5150b448a", + "assets/nushell-Cz2AlsmD.js": "14a523801c0d9238c1c62d5f5055c80cffc460564875f4b3e020f7e4d27a72c6", + "assets/nushell-D3jzshHO.js": "cbc1512887f0c8d9be69dfc2c1f1dee3df53ec9ae8e2e8501b0123c995946db5", + "assets/objective-c-DXmwc3jG.js": "aa3b80179150c0bf74649497bbeb60a36f025631ea64ca23c9e2aca64ec71c44", + "assets/objective-c-sgtl-PdD.js": "aa3b80179150c0bf74649497bbeb60a36f025631ea64ca23c9e2aca64ec71c44", + "assets/objective-cpp-BTQ37cYs.js": "9841e552a948f571c39f594fc27661f1262e589c9f53898c8ac2de469b1d85f3", + "assets/objective-cpp-CLxacb5B.js": "9841e552a948f571c39f594fc27661f1262e589c9f53898c8ac2de469b1d85f3", + "assets/observability-Bw_ZM7JB.js": "bcd9873360e92357a3c60fd5e8ff759068097002c28c55abd5c591d13a1a9256", + "assets/ocaml-BvBP9Lm0.js": "eb5a88927867a33e866a8fea38c91799b28739c6038264e5a3560519951d1dc3", + "assets/ocaml-C0hk2d4L.js": "eb5a88927867a33e866a8fea38c91799b28739c6038264e5a3560519951d1dc3", + "assets/odin-BBf5iR-q.js": "886d9212bdf48ee8eb6ba85adb1a07ca6519e5c60e4e73b5323c1cb4d8969939", + "assets/odin-BTnrxC4P.js": "886d9212bdf48ee8eb6ba85adb1a07ca6519e5c60e4e73b5323c1cb4d8969939", + "assets/one-dark-pro-DVMEJ2y_.js": "7c55d00426abb85391f3432fd1282150e0bd7d54a8e5de7553a1d65c31459eb2", + "assets/one-dark-pro-DnMjqbdW.js": "7c55d00426abb85391f3432fd1282150e0bd7d54a8e5de7553a1d65c31459eb2", + "assets/one-light-C3Wv6jpd.js": "8f9b7f248dd34ae2acccfb35c8c095f0b581ea4e0d3351c7fe25721b914ae177", + "assets/one-light-dsKzgxTn.js": "8f9b7f248dd34ae2acccfb35c8c095f0b581ea4e0d3351c7fe25721b914ae177", + "assets/openscad-C4EeE6gA.js": "36bb06e21f4dae2e8f47a92050501a4c989273bafde4096e151f591635fbed55", + "assets/openscad-Dmi2c_42.js": "36bb06e21f4dae2e8f47a92050501a4c989273bafde4096e151f591635fbed55", + "assets/ordinal-DILIJJjt.js": "8d478555fe7aa2cb7a8be66ee3d2ad9ff3c446610e9fe50564cd5b1a18b9e985", + "assets/org-DM6o9KBp.js": "7dfc51b5e638a4c222c3cc4a3059690668f034ae393480ab51902ef489fdcfb1", + "assets/pascal-D93ZcfNL.js": "65c2b6be568561feb139eb54e384137c54c3d53b49be7be851e28aa0fc2f8c22", + "assets/pascal-DYjw0AuS.js": "65c2b6be568561feb139eb54e384137c54c3d53b49be7be851e28aa0fc2f8c22", + "assets/pegDiagram-XKGWAZYB-CCQnn1CC.js": "a862d929a9f33ac67db8cff26d37619bb3b727d6d1238d4ee6570f76280bc77d", + "assets/perl-B9cMNwum.js": "6f20f61e9849e148d203b9223ab1b304f1f5f39a0a05f58c840d804dd55d9589", + "assets/perl-C0TMdlhV.js": "7e84c2f819dc04b8dabc2f0f1871151fcc710a8822ba9abc849922440eb6de54", + "assets/php-Csjmro_R.js": "37dd4ff1967ca13678fe9b02ee0e057f2f3b5bc7f8b80becc5466902302f3562", + "assets/php-Dhbhpdrm.js": "498359c1dd0c0109bf7aefba4f4ddf6ebabeeae8d0332b0e69d953c79d2ca218", + "assets/pieDiagram-E7YTZNPT-cvrKDohn.js": "375cc643270c2b6428636f0aecd740483faf5d31d81fe09d8ce032f59e434871", + "assets/pkl-Cij4Vm9z.js": "1acafc1de9c65cd06c2b6a3b0bfb928a92fd13fa5182fbc4df0f03f41ca79c24", + "assets/pkl-u5AG7uiY.js": "1acafc1de9c65cd06c2b6a3b0bfb928a92fd13fa5182fbc4df0f03f41ca79c24", + "assets/plastic-3e1v2bzS.js": "f507b7e3105e92c0d7de6346751da2f369d9d10a9237539fb2f41ca22f3f674d", + "assets/plastic-Ckcm5hoS.js": "f507b7e3105e92c0d7de6346751da2f369d9d10a9237539fb2f41ca22f3f674d", + "assets/plsql-Bd6NdBJI.js": "5b08ff2f2caca88ca87a1e02c740ec32d06d8b96d70e210abcc2729858cd9a2e", + "assets/plsql-ChMvpjG-.js": "5b08ff2f2caca88ca87a1e02c740ec32d06d8b96d70e210abcc2729858cd9a2e", + "assets/po-BTJTHyun.js": "c6925708c8b9b9a2793d10218ab601e30f79eab0c2892985fd6b3f8382377b32", + "assets/po-CUhVi7la.js": "c6925708c8b9b9a2793d10218ab601e30f79eab0c2892985fd6b3f8382377b32", + "assets/poimandres-BbcZclLp.js": "f3a6399c5ae3fe8b7ce02c29c7278199a4ca3ff9b39be1b455a9124c17227de3", + "assets/poimandres-CS3Unz2-.js": "f3a6399c5ae3fe8b7ce02c29c7278199a4ca3ff9b39be1b455a9124c17227de3", + "assets/polar-B-qJ3AIy.js": "b6205f4f60671b327a436f3a5c02197826ed563c0c23d22d8231095515274c6d", + "assets/polar-C0HS_06l.js": "b6205f4f60671b327a436f3a5c02197826ed563c0c23d22d8231095515274c6d", + "assets/postcss-BSGhOJ4k.js": "748810304adf9da83f71983e99219a242fac24424483e68c0145e0edb6610136", + "assets/postcss-CXtECtnM.js": "748810304adf9da83f71983e99219a242fac24424483e68c0145e0edb6610136", + "assets/powerquery-CC1XieQO.js": "2560bd4cef47cf5dee7b8c2204ae8008ce73f85f41764683afa1d0988f4d1d7e", + "assets/powerquery-CEu0bR-o.js": "2560bd4cef47cf5dee7b8c2204ae8008ce73f85f41764683afa1d0988f4d1d7e", + "assets/powershell-BmBUJMz7.js": "dc784b8a7baa1ec8a68fe8a790d540ae21c924c3181b239683d48bea87cfb1e0", + "assets/powershell-Dpen1YoG.js": "97259eb4370f2ded7fb394e103aec42e12ff7c2ba37c846a43506410672cb473", + "assets/prisma-Dd19v3D-.js": "82e0167743a332958b14c0e40875bf207de8def0521189323b3ae3066e715615", + "assets/prisma-Vru482bI.js": "b3fde1ec204bd87bc16f820a438db08ec481521edebdf36ab0c033ef0cfd5a1e", + "assets/prolog-CbFg5uaA.js": "3cbc885011b27249f5a0b7660b6f7c87ac5ab4f44487107cc1e92d0c19ebb3cd", + "assets/prolog-bSi0SE3D.js": "3cbc885011b27249f5a0b7660b6f7c87ac5ab4f44487107cc1e92d0c19ebb3cd", + "assets/proto-BZ_yZy5q.js": "2f6893062281306a31a73dcc50949a332ade86a11565f7b78d66e28ed2aaa627", + "assets/proto-C7zT0LnQ.js": "2f6893062281306a31a73dcc50949a332ade86a11565f7b78d66e28ed2aaa627", + "assets/pug-CGlum2m_.js": "1afaa5bff782f8df502f7c03fbeaba94cd8921a5f1f690e27508e45c27e2e8ed", + "assets/pug-DKIMFp6K.js": "80114c6fb80729f6083a281bca3c9fc0f8fa0024a4d63d2e236d49d0636ca6f5", + "assets/puppet-BMWR74SV.js": "a7a22bdeccfe37f60d59da8851019f47f08eef8250f9a1e2f25560c12a021467", + "assets/puppet-ja2MI9-b.js": "a7a22bdeccfe37f60d59da8851019f47f08eef8250f9a1e2f25560c12a021467", + "assets/purescript-CklMAg4u.js": "8fd484a61ea9faa0ef7e299f9188cb74dabea59625c822f537f7ae850d18daac", + "assets/purescript-CxgsQa43.js": "8fd484a61ea9faa0ef7e299f9188cb74dabea59625c822f537f7ae850d18daac", + "assets/python-B6aJPvgy.js": "7652ab863f920a5959c4aa52d6decb8c11d23fd590773977ce8aa0fbb3c555c4", + "assets/python-DgE28U1V.js": "7652ab863f920a5959c4aa52d6decb8c11d23fd590773977ce8aa0fbb3c555c4", + "assets/qml-3beO22l8.js": "5c58408fde8b3b813f2519a720d074dc688eaff4cc4b6db2fb1b6215dd4aff65", + "assets/qml-BEkX6VoX.js": "bd5e08d7e04d0cb7d548b4ab5ced31a088fcf61a675a8de52a1b77d97dfbe602", + "assets/qmldir-C8lEn-DE.js": "ad76c02c2bb338b0314af1cb1514f1fbbd31a1a78d5d931632e313fb9b374480", + "assets/qmldir-DNYHzgow.js": "ad76c02c2bb338b0314af1cb1514f1fbbd31a1a78d5d931632e313fb9b374480", + "assets/qss-BZsEMKxJ.js": "24a87ea2b74ac3f815e14d173752f42380cd4ad6faabba3b0737c66c83d7e8c3", + "assets/qss-IeuSbFQv.js": "24a87ea2b74ac3f815e14d173752f42380cd4ad6faabba3b0737c66c83d7e8c3", + "assets/quadrantDiagram-AXDQQJYC-aTiZOE3g.js": "9894dd0766865951ea20a96c5dfc63771e11a3afa04f1f57bbccfd5e556b9dee", + "assets/r-Cf5RLm7j.js": "128c2bf72b3160e52494e9ee0a7ff6b89bf33eb2ceb8c03de16cacd8cedd1614", + "assets/r-Dspwwk_N.js": "a535cd6fea8b2a66a5f5433a367db740066053ae8ad3a531d8ed351b5fadf5a1", + "assets/racket-BqYA7rlc.js": "34061595fb5ce70cda2139f9d82f5a980821fd92ea3ad48c6bbdde5ce887ff01", + "assets/racket-CzHBKLyy.js": "34061595fb5ce70cda2139f9d82f5a980821fd92ea3ad48c6bbdde5ce887ff01", + "assets/railroadDiagram-O6MQD6OU-CQEkkjIY.js": "09f8bc12d67b536713d47338ec5b88d643507ce9a1a3c8eb1ddf11b4449e2943", + "assets/raku-CPccoUN1.js": "5fcd9c398ef0361d59c9d8122e3f949d13316c2f9dd673a3385c951b768ca711", + "assets/raku-DXvB9xmW.js": "5fcd9c398ef0361d59c9d8122e3f949d13316c2f9dd673a3385c951b768ca711", + "assets/razor-BjBPvh-w.js": "78f60ef678077da100e53688ec5e9f9a650a2ae4e68567b62eca21c3162af6c5", + "assets/razor-Uh8Bk_45.js": "da4924826de242f392eee4bdbc5b6eb9974488520a6bbf81310fc42ba12acc98", + "assets/rbs-CpoqiR4B.js": "bef624b689e102d17e49bdb3305ba7ac1b3f5e3cbba51e1f5e2651adaae68183", + "assets/realtime-BzuRsoPy.js": "32b1955111315e8bf59e84c4cee1ddfbc1e4574116408f16e8ab183c94f2b740", + "assets/red-bN70gL4F.js": "e16c7107408cb6110f4ef29bac94c1769e589df38f271160e6f52b1a4d27b6df", + "assets/red-hvxz__6c.js": "3b40434758594762bb16e5104430da75fc93299f3be3b71b0bb82f1343d9cadb", + "assets/reg-C-SQnVFl.js": "c944196b442e75be8722bce04f9aa6ef7698200cfe314e998cd29b70faa75fff", + "assets/reg-DkqHJyC0.js": "c944196b442e75be8722bce04f9aa6ef7698200cfe314e998cd29b70faa75fff", + "assets/regexp-BW_zLBm-.js": "4f4da7e45d7bac4acaf584b492337cc0fcfc0b2453073026b7f2d2878935ed7a", + "assets/regexp-CDVJQ6XC.js": "4f4da7e45d7bac4acaf584b492337cc0fcfc0b2453073026b7f2d2878935ed7a", + "assets/rel-BIqKdwke.js": "5e46343461aedbfdd92b75bcc78bf3f40b0383490f4e139874221766c4c73158", + "assets/rel-C3B-1QV4.js": "5e46343461aedbfdd92b75bcc78bf3f40b0383490f4e139874221766c4c73158", + "assets/requirementDiagram-BXWQKSXE-C1elOyzx.js": "7c155cdb6be3abee4ab1e3b2669961ccaf866018b8afd82987b8ded070d26e36", + "assets/riscv-BM1_JUlF.js": "287e2bda433a92ccd15dbd75b8b95e2ee9ca016d3501387d1b923660fa69a52c", + "assets/riscv-s6spwTFp.js": "287e2bda433a92ccd15dbd75b8b95e2ee9ca016d3501387d1b923660fa69a52c", + "assets/ron-CloI94uS.js": "c91a2f5aabc02f69e8844c66e8abbb5e2d6997c5868b974679b0dca8e68a6746", + "assets/ron-D8l8udqQ.js": "c91a2f5aabc02f69e8844c66e8abbb5e2d6997c5868b974679b0dca8e68a6746", + "assets/rose-pine-5qJOZa0Y.js": "2792556423027effc6d8f295bc358e0d0d503dc4044d9faa552373b100fc200c", + "assets/rose-pine-dawn-DHQR4-dF.js": "28569d6dc3cdbec1638a55294d4703993fffc7de3c4f96f9a9e7e0ee58271b45", + "assets/rose-pine-dawn-zx0QlTCp.js": "281bac5cda64efc5b80c0227f3be933529a2a8075ef7a7ee79e6391b84181576", + "assets/rose-pine-moon-C9pEdX9L.js": "be365d605f464bd505051701ffe065723ee5cae7cb87126ea49f6e8833229de1", + "assets/rose-pine-moon-D4_iv3hh.js": "54f8cee6d3bb36072d095cf6f3c42304149f984bb8ac005b4329502e469e4f58", + "assets/rose-pine-qdsjHGoJ.js": "bd1f7abe9b7645a7d2ea4769311d5b60b694a0577005cf76f13a76ef5c07034b", + "assets/rosmsg-BJDFO7_C.js": "895c74a701284063ecd96cff31b08b9e7d913b68d069907bd562b6db4f2a078d", + "assets/rosmsg-TcL_zzr8.js": "895c74a701284063ecd96cff31b08b9e7d913b68d069907bd562b6db4f2a078d", + "assets/rst-BrH8l1NY.js": "d6c50859a0348550f4b31759c5538b6a44a7de757022ed08231d4944c7624cc6", + "assets/rst-bs7f0vWN.js": "4dfae3f61d7386919b54ebe73a62ce0175569aaefbc4b04b4d2a49339fc7425b", + "assets/ruby-C0TQ7zu5.js": "c3fce210b7b37093816dd9f0959878568da37f6a093de297817531ae9f4befd6", + "assets/ruby-Dw2BHqvy.js": "ab3d7f8c774ddb0ac21c4666d98177263fa5e5640fb15513b68fcb1331b84e36", + "assets/rust-B1yitclQ.js": "c48161f6b21740ac415d982a627f24bb81081225f7405632784f667cf915d985", + "assets/rust-DJErdhjk.js": "c48161f6b21740ac415d982a627f24bb81081225f7405632784f667cf915d985", + "assets/sankeyDiagram-P5KCCOFB-BVCyTcyj.js": "15ae15263b5a06c189802935a3c8f5eb483dc2515215cc43a0a4c481f86b5ce4", + "assets/sas-DEy46yEz.js": "0c67e604de0d4e3f02965e9ad7e9cb5b6d58757441537f0a929c237fc9939132", + "assets/sas-cz2c8ADy.js": "0605b0f0b9c6e33e0db7008a1ae9ee5d8bfed82f5db17d1124905ab226e320bc", + "assets/sass-CIfQ9yqV.js": "d3d1152bdf9e9582f0d94521982944d7dacd0e8ece70a6a51dc621b146f90c05", + "assets/sass-Cj5Yp3dK.js": "d3d1152bdf9e9582f0d94521982944d7dacd0e8ece70a6a51dc621b146f90c05", + "assets/scala-C151Ov-r.js": "f4811c36dc6a16b2500146c2450c441e8ea673f57505a20c2a03c8b965248c65", + "assets/scala-CqE71os6.js": "49722f789f01275a832469db84cef6009c48b2e9ceb5bf047b798399d5ce6093", + "assets/scheme-ByM66cy_.js": "743503a0223f9e794eaa6e2ec9b1a4b9e23870ea92f8a91c608bd5632159a820", + "assets/scheme-C98Dy4si.js": "743503a0223f9e794eaa6e2ec9b1a4b9e23870ea92f8a91c608bd5632159a820", + "assets/scss-D5BDwBP9.js": "82424791b215254726f7754b2b7ac79cf90ec58a31c023cc959957e832fa0326", + "assets/scss-OYdSNvt2.js": "b1026ec94017417e3c24178ae96e4134fe9ffadc50d1fbd8f622da7961ca70a7", + "assets/sdbl-C5Q1usnU.js": "09bba6eb98cb1660429de423a032b8ecc9e943af9b2ae4dc798fe665b2f4de19", + "assets/sdbl-DVxCFoDh.js": "09bba6eb98cb1660429de423a032b8ecc9e943af9b2ae4dc798fe665b2f4de19", + "assets/select-Dwi05NPH.js": "9e965c5a3884ef6302eeec873b8b6ea73e49dea8138d544e1c04a381ac813c5c", + "assets/sequenceDiagram-WJ2MYXX4-nGC62EVp.js": "a6c21f174b54d0ba5a105faf51fc307a55149af7d0b8f8a7aefc29c857e8484e", + "assets/shaderlab-DNkMdb2B.js": "6c6e8672d9cd4491cbed97adc4b22a8d5b97189aa7710b874326cfc731bd6b79", + "assets/shaderlab-Dg9Lc6iA.js": "0f15272ff852b3807636b594b3f7ee05de4f01acf6cd35622e94c14eed99353f", + "assets/shellscript-CE-5zpiL.js": "6a7311ff85af4098e170435bf140299e6be66e458e51d97ff91b2cea51300438", + "assets/shellscript-Yzrsuije.js": "6a7311ff85af4098e170435bf140299e6be66e458e51d97ff91b2cea51300438", + "assets/shellsession-BADoaaVG.js": "8bb2a6459a5dbbe5364b504567be9b0eec02b9271d893c6377a1bb64d3f13c25", + "assets/shellsession-BhddCRKA.js": "cda2aa0fb3224d6d44c4770011da9e91f2e6c30f01dc325f9b5155a77b703953", + "assets/sizeCapture-INFHLROL-N0oiis8q.js": "9f752d669f99219ffbf1f70e6ff298561fd87d67229e115cdda99cc3bf7d34e4", + "assets/slack-dark-BthQWCQV.js": "f9254bd3bd7981950384332249c3bd31ff108fc659edd24b49ee6716bc23fac0", + "assets/slack-dark-DBfAPHjY.js": "f9254bd3bd7981950384332249c3bd31ff108fc659edd24b49ee6716bc23fac0", + "assets/slack-ochin-DqwNpetd.js": "1ede16ae081bae361e415891901a4aa6dc20de301aef52403863933d74b76783", + "assets/slack-ochin-szRk-9hG.js": "1ede16ae081bae361e415891901a4aa6dc20de301aef52403863933d74b76783", + "assets/smalltalk-BERRCDM3.js": "0920bbda736cbf5dc1c5acdeb961dedcdaf98dec24e153fb473c540f21347d6e", + "assets/smalltalk-BOQMe2GC.js": "8a82ac5a55be2929a527f1f1881f7d14af5d259b1f4982e3986f70427d991866", + "assets/smithy-cds9vsN8.js": "85bdf3806717e727b7a434840d9a3de7ff1f5c89b3ea383b4e9b5174129964ab", + "assets/snazzy-light-Bw305WKR.js": "7721708cf2d4a690c8c599de620236acddccbbfedacf09ab0c6cc463f60ebe00", + "assets/snazzy-light-CBYPMa6b.js": "7721708cf2d4a690c8c599de620236acddccbbfedacf09ab0c6cc463f60ebe00", + "assets/solarized-dark-CpvCGNkr.js": "6b2fb4056522348f65d9b08d2151f1164cf98ab31f47112a170808bfe2f49184", + "assets/solarized-dark-DXbdFlpD.js": "2b283375c0600da201944caca3a2620bb9890d6bc28d69f4b989cca5ec11cb7b", + "assets/solarized-light-Dlz6yCKv.js": "123fd62b5015be797ca48aa510639da5ff1d1a818150a947fe817faab92c2212", + "assets/solarized-light-L9t79GZl.js": "873638320dde0e3d4261407d298960260305fd39179da30458271ffc0d6fae56", + "assets/solidity-DijEV5ha.js": "1220df9d38a31beeaafca62c249ba525d705c53eff4b013b1aa4d354e440bc41", + "assets/solidity-rGO070M0.js": "6c8c7573726b8dec0ce1e54415c33e590f4551b15f97dbb34c2eb4426d21543e", + "assets/soy-8wufbnw4.js": "76369194bfb39409dc6c92fce75d31e4c958db2830b07333913056cd0e6d17a5", + "assets/soy-Brmx7dQM.js": "dcd5c00fd4b67322d89a1930edfb14e841ff11cf98a332303b218d5568dfdecb", + "assets/sparql-CHK3vDkL.js": "667883b06614a7a889038726f1c4f8c446f7828f8140d1055128ded5319fd9c2", + "assets/sparql-rVzFXLq3.js": "7ad999b9fba56728f2297fbee2250f845093f2b57eacd1fcb045d6f5a32d7de2", + "assets/splunk-BtCnVYZw.js": "64ebc92eebd3550e91fbfc5fcbd72bfdec37d3e1d299660140ca28c2cd30cc1f", + "assets/splunk-YU1HCmJX.js": "64ebc92eebd3550e91fbfc5fcbd72bfdec37d3e1d299660140ca28c2cd30cc1f", + "assets/sql-BLtJtn59.js": "e2621cd8e6d6bc3aad625e5da5afd16b8f1c64a40c77649ac6948a4b306174e5", + "assets/sql-CRqJ_cUM.js": "6df4a8b7587aced94ab3c692d791a8095269b8cb3106c7276088aaa3b7a016e7", + "assets/ssh-config-Cpnw3KEt.js": "59773508bec4b474f7a01df0c9a1d67d9cc6a5e90cd8be3355e7a51d45a48718", + "assets/ssh-config-_ykCGR6B.js": "59773508bec4b474f7a01df0c9a1d67d9cc6a5e90cd8be3355e7a51d45a48718", + "assets/stata-BH5u7GGu.js": "11bb422f2421e05ce75bcfb2c8c8c0795309ac0462249ddc6a8f82cccd985ac9", + "assets/stata-DI20mbqo.js": "c1088b99636bbb8fcc125b1ff81b737bdf2f28d610ec6b66e7db8bafcd851e7b", + "assets/state-C-_gIKbF.js": "3001df1018f7b312ac415bdd4702960db9d0d6ed9812cd1b0d3a5ad8a5bfb1ba", + "assets/stateDiagram-D77RDMKH-Dw6qwe9T.js": "bd9a285da64c17b2ee8c425caeb653aa90e7c3dd9726988a15342eb6904664bf", + "assets/stateDiagram-v2-MP3YSRHH-BU6UaXZs.js": "401f8220defd22fc7950f79b258e489ea74e7c8553465d9c9c8b0f61739e09f3", + "assets/stylus-BEDo0Tqx.js": "7f4744cdde011a08696b25091cb57a8af8762c48fe52bda2f929376600a17f23", + "assets/stylus-CHekGIgu.js": "7f4744cdde011a08696b25091cb57a8af8762c48fe52bda2f929376600a17f23", + "assets/surrealql-Bq5Q-fJD.js": "3ca44462a4b2e800e70e918dc6a861fcfb303df674f0109c9373fdac8dfcc130", + "assets/surrealql-Cjom0U5J.js": "e852e92fc26e1592511a97d1db154e34878c28bdfdfc7f7e35c4bda31b9c3a6d", + "assets/svelte-C_ipcX3V.js": "b070641a497d9730f796568d9242c5ac7061f9f839af423649b8647267ad0155", + "assets/svelte-Cy7k_4gC.js": "5d106d5334f6f49edd9837f9f929f67f595c582e99e35ce085f12e0461211880", + "assets/swift-C2oV4EkX.js": "9f7077844a225a537eea5869de8ca98bd00d512cf62674f7d0b903d827cab839", + "assets/swift-D82vCrfD.js": "8b87fd88e98da6fee33e181d3a03ad5e7fdec59008fa592c28a9ab28e28d8fbe", + "assets/swimlanes-42K2YHIH-CAtm2uRD.js": "57a13776ce67455bd60b76aca2360c79c2bc3e97c134285a6973bcf38a56cff8", + "assets/swimlanesDiagram-VR7AAH4N-C2chn3uy.js": "29cd4165b84581dc1039f6eda6b5b72424cca96afc3abca984c1f8d00cbe4dbe", + "assets/switch-CycZIo-J.js": "d29eb82a0775ba877d40385a01516eb74812d86081bf4734fae00240673d9995", + "assets/synthwave-84-CNQ9Fj-_.js": "345be8ec59dedde8193a830c5119b99ab1a263d8a0b8d0d98580b21e5b53856f", + "assets/synthwave-84-CbfX1IO0.js": "345be8ec59dedde8193a830c5119b99ab1a263d8a0b8d0d98580b21e5b53856f", + "assets/system-verilog-0hqHdDBg.js": "94cef5676056c5a825431204170f562e1c4ddddcaf298ed19ed095c079fda2f7", + "assets/system-verilog-CnnmHF94.js": "911a3857f3ec086298e981939056da2893098881fe5c100ec44132ba87f011ba", + "assets/systemd-4A_iFExJ.js": "7ee808ec3ed0bd4d87a6c0b5f034ce21b5522664b1a956381a3c287c674c0ffa", + "assets/systemd-C1FfcI00.js": "7ee808ec3ed0bd4d87a6c0b5f034ce21b5522664b1a956381a3c287c674c0ffa", + "assets/talonscript-CkByrt1z.js": "df10bc43abea3666beac95f07c8082bbd953cfcce01b384cac1e5bb783e3d656", + "assets/talonscript-bksoRmW6.js": "df10bc43abea3666beac95f07c8082bbd953cfcce01b384cac1e5bb783e3d656", + "assets/tasl-Bl4tsGRM.js": "f8ad184dcd423a710bfe0a7c84487334383318e2e1b7b98ef0371be9f3e6c130", + "assets/tasl-QIJgUcNo.js": "f8ad184dcd423a710bfe0a7c84487334383318e2e1b7b98ef0371be9f3e6c130", + "assets/tcl-B2_VAYrd.js": "a1a8b949384eb718737fa7f088b806e0ab6736264dbd3135ca01eaee68295f12", + "assets/tcl-dwOrl1Do.js": "a1a8b949384eb718737fa7f088b806e0ab6736264dbd3135ca01eaee68295f12", + "assets/templ-DhtptRzy.js": "4cbbebb1913c06a209b9334e9ce438ffbb9eec7173f9e20f68ab1da83dd203ed", + "assets/templ-P3uqSqPl.js": "5bc6bac791203f2e943afcfabbeb84ae08128397aefb7a5f319ae1645eaac7b4", + "assets/terraform-BETggiCN.js": "845d38e761505099172e28bb36870b326f66ab907aaa625fcc9c4d0fee4eca49", + "assets/terraform-Ba94thAr.js": "845d38e761505099172e28bb36870b326f66ab907aaa625fcc9c4d0fee4eca49", + "assets/tex-D96PA37w.js": "7ed401f4a81fc4d476c64370bcdb5320b2628c597fd55f3a6c211fd2ac9305ac", + "assets/tex-idrVyKtj.js": "0fb7d18ae0984bfed6a46009afb2a3c59e1b8d2fabd2c9088f66de457306a25a", + "assets/time-B_9R0Ouh.js": "a889f4367007a77627b22d789546159fc0065b33de2593539850cb7587273c58", + "assets/timeline-definition-24CTP7MA-Co3tDu3O.js": "ef97462773dc8c00ff6939aac1f4b72e8b7cb4a0dc5b0e8d9502cb7ecc5bb623", + "assets/tokyo-night-J9jDJp4U.js": "e00a860ce7f328571e523246063124ac104fd16c7c4a1939985c04e2912dc8dc", + "assets/tokyo-night-hegEt444.js": "e00a860ce7f328571e523246063124ac104fd16c7c4a1939985c04e2912dc8dc", + "assets/toml-Btlk-g9G.js": "13957c3e75de850523d59c55223a274de54f38319159b54c11a41e1e909965de", + "assets/toml-vGWfd6FD.js": "13957c3e75de850523d59c55223a274de54f38319159b54c11a41e1e909965de", + "assets/ts-tags-D351s5mN.js": "95477dd86827aa601ca6ce7b66a4c1c8fef6a1c298d6b0d33503f13119322486", + "assets/ts-tags-zn1MmPIZ.js": "69bcc441aa876587e58720c6b99457b56a6b08643249c262d3efee8bd69acd67", + "assets/tsv-B_m7g4N7.js": "1a04ec966e09f3783309f7536dae8e824d4f8ec6ec0b6e1880c1b95a3d17762b", + "assets/tsv-DYfmKMIW.js": "1a04ec966e09f3783309f7536dae8e824d4f8ec6ec0b6e1880c1b95a3d17762b", + "assets/tsx-COt5Ahok.js": "6f65bdaf80285d2241cf747f58b0c2bdd7485e25bbfbc0144840ed8e13f31a4d", + "assets/tsx-Dio8iE-N.js": "6f65bdaf80285d2241cf747f58b0c2bdd7485e25bbfbc0144840ed8e13f31a4d", + "assets/turtle-BsS91CYL.js": "b39750a94e32101604c09b24cbc2b03cfec7089ea6b3af27863d2889003046bd", + "assets/turtle-whXsfw69.js": "b39750a94e32101604c09b24cbc2b03cfec7089ea6b3af27863d2889003046bd", + "assets/twig-27uCiNez.js": "dfbd2ffd14fd05541f21024f89b86432a755381f0e0f819a83566373452aa3d4", + "assets/twig-DNn4PbVi.js": "8522bd1c3bbd67de36a3de2ab1864071d3264513ef45cbe587590a59a74370cb", + "assets/typescript-BPQ3VLAy.js": "fcdcca54a7ccb637627d4dba50774a3dc7a5bae93a9f0a43c7748114b1d1d75f", + "assets/typescript-DttGkNCf.js": "fcdcca54a7ccb637627d4dba50774a3dc7a5bae93a9f0a43c7748114b1d1d75f", + "assets/typespec-BGHnOYBU.js": "5dfdba0ad831c33537dfdd6bceecdde8c788b953500fa5b006027287949fa461", + "assets/typespec-CAFt9gP4.js": "e1c6fefd6eda7001eeff766e90748b59a26bef3d5cbb7e35c3ed02d6b27fad3a", + "assets/typst-BUadGCkm.js": "939d8a4a374df8d24ffbc517df7450a5ae6eb2db795c175077a8c4dc0114f99c", + "assets/typst-DHCkPAjA.js": "ff1b2bfc233e39112abd22f9ac638a833f1a2504929034f4559c9d88a1ecbcb2", + "assets/v-BGw2Nkan.js": "2bb9592de1acc804eed5b3ea93f85a38740130bacc614a1ffdf2604f129607a0", + "assets/v-BcVCzyr7.js": "3580b3a6f9b7d1b570299b26518f866efd3d264369f1569395ddee1c39918af6", + "assets/vala-B_5xOBNr.js": "9ca40f96a2c5ea6c15a4aa070af170b6a4fb19dce1aea0162639c456e88c1ee6", + "assets/vala-CsfeWuGM.js": "9ca40f96a2c5ea6c15a4aa070af170b6a4fb19dce1aea0162639c456e88c1ee6", + "assets/vb-Cu-pLBUe.js": "90340c8b81180fcf3b886697596aa2d9519645c8c2a9cd4eaf92703898338938", + "assets/vb-D17OF-Vu.js": "c07bc7f87b29209a696181ee1952faa6855fc8424975a04514315972d652da0a", + "assets/vennDiagram-4TSXK5OY-DjaocppJ.js": "df5cee512560c066e71b6b3574e536eaf4d1b2d9de9e294811235794d9fa46fe", + "assets/verilog-BQ8w6xss.js": "d4e90d3476e4c94e05271d13254bb7ce735ba6fd8ed49292337d9356368a9eaa", + "assets/verilog-nZwndyjY.js": "4f4570244b06c1271caac10a3993318e7dc8badbba3d36c978500adb673b8e10", + "assets/vesper-DRje8inN.js": "58c6b0d954b34636e4629f8fff94dec40609e9522fb08ebfd615d8063d017b54", + "assets/vesper-DU1UobuO.js": "ad07a972a70962a9f68b1028c90126dc75057cf9dd98f079d050a1bd11e6e19e", + "assets/vhdl-Bmgbkl_-.js": "4aa59b0e56b6ade915050f27c9359de4b33c7435f1e715b1027f6c44ff08d05f", + "assets/vhdl-CeAyd5Ju.js": "4aa59b0e56b6ade915050f27c9359de4b33c7435f1e715b1027f6c44ff08d05f", + "assets/viml-3ZODU9FQ.js": "255a5fbaf5961b394d403c022e2b57baf6855132db6ab4e8b3f8b6ccffdc5fc6", + "assets/viml-CJc9bBzg.js": "255a5fbaf5961b394d403c022e2b57baf6855132db6ab4e8b3f8b6ccffdc5fc6", + "assets/vitesse-black-BeJXV_f5.js": "f25530f6e39e64d7dcc0464821c2fff73bf5aab1e311d61645cd740e886a2160", + "assets/vitesse-black-Bkuqu6BP.js": "f25530f6e39e64d7dcc0464821c2fff73bf5aab1e311d61645cd740e886a2160", + "assets/vitesse-dark-D0r3Knsf.js": "f3a4064c8e89ebd2349cf3dbf3e211d73b05d11cbd9bbc00feefa1820d74990b", + "assets/vitesse-dark-mzFqOv-V.js": "f3a4064c8e89ebd2349cf3dbf3e211d73b05d11cbd9bbc00feefa1820d74990b", + "assets/vitesse-light-BoFwUIac.js": "272401bf8f7fa77313d7d3dbdc609a59bde479c8d69763047b5aa508e16ead9d", + "assets/vitesse-light-CVO1_9PV.js": "272401bf8f7fa77313d7d3dbdc609a59bde479c8d69763047b5aa508e16ead9d", + "assets/vue-BqiEGhQt.js": "7f0994638ef848a02127b7b20f95e6314d957874f3da0cc5291c718d923a2af5", + "assets/vue-DN_0RTcg.js": "f281a5b5a38f6d7aca7ad2c5cfc54c5531603ef963798eddef0ca3a9bbdb600a", + "assets/vue-html-AaS7Mt5G.js": "a9066b052de965759c4456bed9e3e412c25f1050f3585a2dc6714747bbec1c0e", + "assets/vue-html-BM4TQ0nH.js": "9b68c7dcacf973295819e9b8c1bd363a087d7a6a7bc3fae882a3c541b84228c6", + "assets/vue-vine-BoDAl6tE.js": "b6d0574a336aa5d9db78967933acf1628f890c5ead41647a163208c3646f0f9a", + "assets/vue-vine-CQOfvN7w.js": "95c5be9942daee9da06a3a00052df782c2a7f6b1c85ecbe261da63d35d5d09e7", + "assets/vyper-B6NKdirK.js": "ff66f70ed9d0a15a77389cfc35cef85ff1f4932bef9e508f9a19b1c87d7f46e9", + "assets/vyper-CDx5xZoG.js": "ff66f70ed9d0a15a77389cfc35cef85ff1f4932bef9e508f9a19b1c87d7f46e9", + "assets/wardleyDiagram-VM6X3IG4-CyNJK5J0.js": "40a5bcaf74239421c9008df1fc73f300b172da82efada697ac6eb09f249c28dc", + "assets/wasm-CG6Dc4jp.js": "8deb47b0d7b203f733275b554ccf654df3b76026bd14cab89130ae2a61abd719", + "assets/wasm-Ck_ssClF.js": "8deb47b0d7b203f733275b554ccf654df3b76026bd14cab89130ae2a61abd719", + "assets/wasm-LUzQYg3H.js": "ecac025bef526964873260d057a8af935fe8b86da2b9845051051266b019c8da", + "assets/wasm-MzD3tlZU.js": "ecac025bef526964873260d057a8af935fe8b86da2b9845051051266b019c8da", + "assets/wenyan-8fXatRyt.js": "40ed524c0cfce810853c17a6e99f8c357dc1ea9d5df901dcf60a2b7a45e63f7f", + "assets/wenyan-BV7otONQ.js": "40ed524c0cfce810853c17a6e99f8c357dc1ea9d5df901dcf60a2b7a45e63f7f", + "assets/wgsl-CECC3vJ5.js": "97dee41e3f719e15ac2c06cbf36677252c7654e254f178128113744841a4806e", + "assets/wgsl-Dx-B1_4e.js": "97dee41e3f719e15ac2c06cbf36677252c7654e254f178128113744841a4806e", + "assets/wikitext-BaRWL9sq.js": "22c8b6a379a9a1aa4df1fa90a85d054b78c5414e772c062611997d98de2cdb64", + "assets/wikitext-BhOHFoWU.js": "22c8b6a379a9a1aa4df1fa90a85d054b78c5414e772c062611997d98de2cdb64", + "assets/wit-5i3qLPDT.js": "2b2cfcdfceebf61cad332a1b126a7bce2afe89b0b5c6bf8791067154e8229bb9", + "assets/wit-MEd50GYB.js": "2b2cfcdfceebf61cad332a1b126a7bce2afe89b0b5c6bf8791067154e8229bb9", + "assets/wolfram-CmMaIVaG.js": "5077bf9f804422eafafce9c7bc5bfd04f094ae624f0136c9a33daeac942fe75d", + "assets/wolfram-lXgVvXCa.js": "5077bf9f804422eafafce9c7bc5bfd04f094ae624f0136c9a33daeac942fe75d", + "assets/workspace-BSD6nl4j.js": "2f6e34679aea19bf405bdd51cdb7a403e5f95a2c0bf61c2b553ca52275ed03a8", + "assets/xml-DtyAt_xK.js": "496b2880146a69e8ee63c7ec8cca5e6c5d8621ccca1da1442d60efe7ebe34325", + "assets/xml-sdJ4AIDG.js": "50f00554f7503986c098ada8706f8e6a8fdad39e5158c7626d31532a883a51e8", + "assets/xsl-Btrj9DhN.js": "79cf8d3ac5e1852f4628b889221c538cb760e3d1141ceb5ce9a1768662397681", + "assets/xsl-CtQFsRM5.js": "b47bbb39b319947a57525dc114ec30eb2e697bf451be75f0b79850866f6811be", + "assets/xychartDiagram-S5SC5T6Z-Bc96VX4o.js": "227d0e5955cf402f98fb16d5de420dd22bc9a2b7143c4ebab42eebb1ce3a8b7e", + "assets/yaml-B92AUxDB.js": "a7a8b4fc14fa7ba338598f61185a3a13e49d7450830af367407ae61b9634bede", + "assets/yaml-Buea-lGh.js": "a7a8b4fc14fa7ba338598f61185a3a13e49d7450830af367407ae61b9634bede", + "assets/zenscript-DVFEvuxE.js": "58a812eb8d71121ee3bd6e513b8a20555bec44f968f7c378bd7ecbfde05866a7", + "assets/zenscript-Dja4fBOE.js": "58a812eb8d71121ee3bd6e513b8a20555bec44f968f7c378bd7ecbfde05866a7", + "assets/zig-LhWa2ADv.js": "7c369292579d89b781e91b76a4df1bfba604287c7a5e2c426925935ef08c0841", + "assets/zig-VOosw3JB.js": "7c369292579d89b781e91b76a4df1bfba604287c7a5e2c426925935ef08c0841", + "everyone.png": "779008e141e9d7ec77851b1fbb7ab6123585d9e9e3cc5537de57aad8be36d625", + "favicon-32.png": "b4a5ecb2df4fa5f9754cf93f207267941c456ccd2eecfd25e5c7589bed9a6fcd", + "favicon.ico": "574ab48fff05ca5f9c35ead228b50acd0cc818c76cfc22997fe7c949b9cca04a", + "favicon.svg": "d71ed4c63b7ff008e200c2cb38251ca8c3c72bf6cb98e3bad14313f2713caf55", + "icon-192.png": "28a446977731e8abb19c99c40a56c43493099f90a42ef3cf9f7cabec059edc32", + "icon.png": "59c21dc1bf9b202298c8517ec91469de2ca96196a92fa273fee2e8fc98d3e7e9", + "index.html": "c076d5939f2da31b23d8548c543d837d93c352f8aad47e6108ba6b27bf947167", + "licenses/assistant-ui-conversation-map.txt": "eafb05991a572efa34097474b31fef45b14a8879ed1d1a8fd77de62e6fa7d275", + "logo.png": "bc147ece8a93ff18887b9f47e1d239a8d34b16661a2e53fdadaa4cd547ec786b", + "logo.svg": "d71ed4c63b7ff008e200c2cb38251ca8c3c72bf6cb98e3bad14313f2713caf55", + "manifest.webmanifest": "5150e3b56efdd505c5e2fbc0703f9526ddce748d5734bf485f23fe7e0fe1f018", + "mock/grok-data.json": "10762db8e469e3b36cfc6564b3b0da3c6e00a52e4831e5a7fbf12a596bdf4b7a", + "mock/grok-notes.txt": "46e6f79992bfa8e3d9a96bd22208e92f19571841d3358583225115643db65eac", + "mock/grok-preview.pdf": "90152556b0a0f25947dbe0a1fccdaeb469ff03305c8162cdd2c68788f6f33fdc", + "mock/unknown.bin": "31d22880dab41ec409ae8cc97f574a2cbde127890930aaee7b519e1ffdfe9165", + "skype-emojis/anim/angel.png": "7152ee208870b8e929ebf57f2388397abd23c01ee67357e45fd23d3d46947bf8", + "skype-emojis/anim/angry.png": "6dc3294b0e8acc51f9c805f7dc2dd16146fce6bebac82801c37310a26c553b2b", + "skype-emojis/anim/bandit.png": "92bd44ca03d40e617166a220b2c9012cb070bc85aa45d2d54872940b8a062bc9", + "skype-emojis/anim/bartlett.png": "e76b11730e8cf74c202752b58ec299a6b1b0d665c60274d056353706b1b3f7da", + "skype-emojis/anim/beer.png": "7fa9793852be2ba17492acf09424178484b0eaaae90a6f6352ac1f6f73eae6c0", + "skype-emojis/anim/bigsmile.png": "52f6802b723927ed48ba7e9fee06ca3d8bde8629ce4b4968eb03fd9a3358cc3c", + "skype-emojis/anim/bike.png": "6a4cae3d427e3d2710031c284370d480c5557f60ccca285f6f91dc87d57f8807", + "skype-emojis/anim/blackwidow.png": "a825962c5d1c76e7e8c82e692d2aa7522aebec50680d1316898da7ff7ddad277", + "skype-emojis/anim/blushing.png": "d3dee864e00d4509607ce4d8f2239209cff6aeb128965e9d3c698cdf84147a7a", + "skype-emojis/anim/bow.png": "63469cba890714857c859123be2cc4d8b73847297c74a45f62cbcea2539a1eaa", + "skype-emojis/anim/brokenheart.png": "ba1fed935907343b280a270a943b98da7549add27bcc1281df76535d1fbe2802", + "skype-emojis/anim/bucky.png": "9c8da1a5e933d0918afd7e78c730aff6bef8d89eab8e8d01bf2f20c7dad3f66d", + "skype-emojis/anim/bug.png": "f452cd35a7f2bf13ee41bc7f92ec24298b786571e0cc799f325d7263315a09ee", + "skype-emojis/anim/cake.png": "c1818816f1b50598019607f0f474e101ef31c586c549d617d676b94f20040187", + "skype-emojis/anim/call.png": "0989e5d4235abf9acddef77bc701983609fc3c0dfedf9e3a471df7e729f8e9ba", + "skype-emojis/anim/captain.png": "89e803b304d94cc2d9b2c53300496461bfba15067611812862efb3a292eabe3a", + "skype-emojis/anim/cash.png": "5406de7f8143905a22f29cc4ad5d2bc7cf027899750f3430fd7fe764897f2cd8", + "skype-emojis/anim/cat.png": "2da4978c302a8ae5657287f7ef9c5577d6a677a6d1f9c9f5106aaea057b4f2b2", + "skype-emojis/anim/clapping.png": "6bd6df6916dfb7baf345548973706399e7ef600f9fbb671b7b7719948ab4d3db", + "skype-emojis/anim/coffee.png": "fe162e9118228e14187ae58be4b5c4b9f1d4a45ab4b97611496b2152740cd59e", + "skype-emojis/anim/cool.png": "7e682973a02d63f9eb0ab99cc1c8c3a8648bf411b44cf36131f0a8e4c52bd1a6", + "skype-emojis/anim/crying.png": "ab4f8b4cb6881f044559f72d344eef8640409ac739d122af4c44c3c88c7b4df3", + "skype-emojis/anim/dancing.png": "b8ec735a85d86d33b3dc2c88e825c96161bb5a9cb678787e0f67ebab1d21b7d2", + "skype-emojis/anim/devil.png": "0417260812789b58b3353657590b4a740b142402a8c63e56347785037797c9c4", + "skype-emojis/anim/dog.png": "f4fb6ff9d6be6373a2a5ea35e1149faf78a561a9b37857b274c4fd604fe15557", + "skype-emojis/anim/doh.png": "66f83bfe1cd7092388348d5eafc43ba9e449ed346983eb65af125f79b039e33f", + "skype-emojis/anim/drink.png": "5622d3ccd57072a940dc0a7007c2ead65db6815764d1100eb052de05bcdf13cf", + "skype-emojis/anim/drunk.png": "cb51651e52c02e68566996c7059162440bcf4f1107d4ff876d30bd535b198ba1", + "skype-emojis/anim/dull.png": "e5956bb72823245069299865931058f83ac793395517820fbb26e81a7f5cf93e", + "skype-emojis/anim/emo.png": "b1d11a26dd1ad9c14e6f085f64767d2ff57480593279910a12c472a164dc89b0", + "skype-emojis/anim/envy.png": "dc0e90416ab4ca960fbfb37c7151cb63be1b6914dde9901ef4c6b1cabb7f8fa0", + "skype-emojis/anim/evilgrin.png": "8c4e0790d7a9677e1afbcacae1bd82dc9c7c41612ece51f2fe99370ba6c7b62a", + "skype-emojis/anim/facepalm.png": "2cb009d4e6dddf0bec8b8e68623889e39413bb8bc83867a1eadd6f1d31d69549", + "skype-emojis/anim/finger.png": "4e4f693b0c00394ed811319e410f2cf11982316680504e2cbbddc333568c2c2e", + "skype-emojis/anim/fingerscrossed.png": "15720558f2d58da70e47307f941b0d2a1cdb5ad55b7f4ea8e27c5d6f47448db7", + "skype-emojis/anim/flower.png": "642f1a18e73f08e6343775d921be05caeab4aef6fdd312b19c920e8faf6dda3a", + "skype-emojis/anim/fubar.png": "c81201595a365b8f274f704e11489e9ad736a362433c24b8fc2e771db7d517c7", + "skype-emojis/anim/giggle.png": "2e05519473cbf2cdfb3d9917205d5d364ff67095b2990c9cc1ac5c72a651f936", + "skype-emojis/anim/handshake.png": "59dcd03d7fdd78de89ad7df076fb57a6b64f03e26f61433a565d7674595ceacd", + "skype-emojis/anim/happy.png": "e8928ed51a6d371b8622e363ea4250f4e42ed49ab3c84d5782a3ea72045a103c", + "skype-emojis/anim/headbang.png": "198e28ca69bd77a509de09f3903e14c28298d8ae18ebf83a30df7e1ba6a55015", + "skype-emojis/anim/heart.png": "36e634a2cb42cbd80890c0d2356aab3b0e7e7a124e99e5d883bf6971dbf3f2a0", + "skype-emojis/anim/heidy.png": "33382b34e1a1aaeb7c4f38a0221926ae98807d7dfd6d4ddf4a12b36bd162bd9d", + "skype-emojis/anim/hi.png": "cf4e888c87808c4f2751fa4195a4875c2b928365ce47eb15b560a45d554dfd62", + "skype-emojis/anim/highfive.png": "11907413f0bbbecc86756fb0c3e2891843f8da06f3842b48370dddb32168e789", + "skype-emojis/anim/hollest.png": "ca6505cf6d9c7afaeb07adc463df8dec1d6295f92f7ba95a9d4632ce0b654e99", + "skype-emojis/anim/hug.png": "b76a385d9407ffeea0c5293af0e0f4e94fad55ac1af65c88dee3c6442b509bce", + "skype-emojis/anim/idea.png": "e0095285d83514efb714b6c27fe6e14e5b1c696c088b5ba651ea64e4d3477253", + "skype-emojis/anim/inlove.png": "2d82cb9c52654759178f34540b542bf73c43a26c1d3ec1401de39047577313a9", + "skype-emojis/anim/itwasntme.png": "7ca5a63b57a183c38a52cba775adecbe6dd869b54b2ef885e712de89b089e782", + "skype-emojis/anim/kiss.png": "8fcc6967e6fd00e8bbf87b376c4aaea272d8ca0e2e42439daa09be51925b04f2", + "skype-emojis/anim/lalala.png": "89c54aaba43629c13720d842b15e1122eaa6c48caf37f48a74b93aa52c28eb25", + "skype-emojis/anim/lipssealed.png": "680120939e4d30bda5030c1ac7c1eea156c43d456527afafba36a1c3b85f4b60", + "skype-emojis/anim/mail.png": "6be9f0a7046e107328373d8f17eaae7a79d53f298364fae556a8a156f0ce7dbb", + "skype-emojis/anim/makeup.png": "a63e3c803ff8dc0de2288f981954cb87c82789481f30f67f288718cb4efb5086", + "skype-emojis/anim/malthe.png": "a8e63a11fe5a24ed316c3d925fa138200592324e727dd32d17ffd80015d82ec6", + "skype-emojis/anim/mmm.png": "090c3bbf7d4d0915f992a26f646ed66d10b1600926bd7f31065130a89d3f9e14", + "skype-emojis/anim/mooning.png": "3729f182ddc52c9cb9d5dc0aa1bc790fc327f4dd05389de84e4307bccf484116", + "skype-emojis/anim/movie.png": "f2d0a380c0c724c279fa3110d8e6de24bf107e69f01368f5391a9b79a290a162", + "skype-emojis/anim/muscle.png": "0a743552016c0c80489133700002ab1ef521eeff9c24f6fce6d709d6ed95e66f", + "skype-emojis/anim/music.png": "3ee6a39d26251c9d28dbe9646777fa8efa064c3578bd398c41da3887b307ba28", + "skype-emojis/anim/nerd.png": "991f1fac7f9e1ddc5e16fd9cb592c50a2fbfe87308406627d59e01d3013b4e4c", + "skype-emojis/anim/nickfury.png": "fd3e376dcd327a19b2bb724842742334b2d35b711596884812902a71481271c1", + "skype-emojis/anim/ninja.png": "8aab0564ff429d67230779b7b065652d5f2a7088ebe3d31f257705f3d7d7bbea", + "skype-emojis/anim/no.png": "ab0fb077f7b2d2aa6a82aa4aeea1fc6f1570130978eaff676442be074ef317fa", + "skype-emojis/anim/nod.png": "c38b0b15d1a3398791a287a061a96d891e26cfee35677632a10ac7a4c6f5aff4", + "skype-emojis/anim/oliver.png": "353421b2fe9d31b41417a431f9b94ad6118c55ba3e68ad0e8e835d9e557d9d14", + "skype-emojis/anim/party.png": "b0ac3fc4418be72fdaca3799177c64ed238fecc942455aa090c7fb9db3f50e08", + "skype-emojis/anim/phone.png": "732dc0c0048e91290505aea82cc96abefc5acdba8cee2fb0d950c8a7724bb9fb", + "skype-emojis/anim/pizza.png": "819c2bfddd26931c5727c848647cee4882a2725146e7f231d1f14cac58a8728f", + "skype-emojis/anim/poolparty.png": "6b1c432a3431d8dcd8470a443e6234c1b0feabea7938c47288ee59b755fff02a", + "skype-emojis/anim/priidu.png": "4c1a07d03c4e96e05db417bfaa4e97a7507116bcc8f5c237bc3053c0615d428c", + "skype-emojis/anim/puking.png": "bbe0c2c13866ce01bdf767146ada9fa523a4c6f4a34aa52e18513a583460fd70", + "skype-emojis/anim/punch.png": "e20e53f8c6d33bde10f0b78557ba5860a81024d7862830939fdf9aadab2fe11c", + "skype-emojis/anim/rain.png": "0e11ae6cdea9e3479fe191f55135162f418c239b55ae9e2d68352312b595c369", + "skype-emojis/anim/rock.png": "9f86ce515af930ad75f5702a2555bbe13a109409caedd761b039846ea3cd24d6", + "skype-emojis/anim/rofl.png": "ee7130796e5f60b7349bdec7a156b11b0a1731376417102dfe06275b0b0be4a4", + "skype-emojis/anim/sadsmile.png": "16995d72b6fc2ee01f5094d90f8c52527b35187b891b0e208c17690a8df2f60e", + "skype-emojis/anim/shake.png": "c8df1189505704b1bd50f2a5d42c30202f6afbf53b130db8bf7627fc728f0093", + "skype-emojis/anim/sheep.png": "32bcb59568e0710de82a070e28a58d4de0aa022cdd8c6167830442291cf9fb58", + "skype-emojis/anim/shielddeflect.png": "60a830f803161245b9c4e7c9c0a0f73e0591dd9ad638b850249c92e8e9387693", + "skype-emojis/anim/skype.png": "45194dd3e06d10dd79be86ab6aef5154f8f3c84312f663bb9b3b106cddd99dea", + "skype-emojis/anim/sleepy.png": "05e7da9523d7d8430f5c47d0031425bf8e6e172f7f82cefc3c02b07de179a631", + "skype-emojis/anim/smile.png": "a6122e179015cead0a3da59de723ff4921eff7b7f490300f1b0fdc96e3f84f4a", + "skype-emojis/anim/smirk.png": "90d7f1d2f37187ec71b8c96764a0d9cc56a1a8536f814fabb096405ea375398b", + "skype-emojis/anim/smoking.png": "3ab8e9595e14124a236ec3a0ac8f8f75a896f60c2ec728321b83c1670f68004a", + "skype-emojis/anim/speechless.png": "dafd6796fad48f3b7ed8afd3a85195e581a9686c3a198b0104447f92a9b738e0", + "skype-emojis/anim/star.png": "4ad6918c661651a0b19cb8db35a1a550ca7dd4ccb4c1a2a5795d5bf6bc242925", + "skype-emojis/anim/sunshine.png": "f60ca4d28818fd63068506a9d584bcc5ea994fe08616a1f00bacab3f9ca90d80", + "skype-emojis/anim/surprised.png": "235ae6530c3687609673d6f529248ec22b7508c91276980d672350a189978ab8", + "skype-emojis/anim/swear.png": "3699cb796dd2b324d3522b151ea00e49c74e096237da56e84ec2b0989ccfb1ee", + "skype-emojis/anim/sweating.png": "df40dc0d6b7b72d5cb06f9c296ee3136773b479d7465d7bccf198e5e4e0f6ed2", + "skype-emojis/anim/talking.png": "43c3653bb3a66b83448e0729b5331084414b8ce010bc4c8354b20486d322a4fb", + "skype-emojis/anim/talktothehand.png": "e22db27b0a3abfa35a1e99cda142b12f87809bb849a28f42ad2d373c664b32ed", + "skype-emojis/anim/tauri.png": "e01f5ca926f45a0ceaf6355f1a88efca216bfc2ac18f66bfa55c39391c8509e3", + "skype-emojis/anim/thinking.png": "9884f9e689a0c61cd5c3b475e59af83676ea174552e5ad5ee1378d4a495e8975", + "skype-emojis/anim/time.png": "9a21e074b1cb986a3fc0af49d272cdb98197d571e46e8bb0539887201beab8e6", + "skype-emojis/anim/tmi.png": "a640fdbc5f5f7af7f28b732c674f70f0f96a2d86b688a6d0e6ccaa0e220fc436", + "skype-emojis/anim/toivo.png": "38220548bdaf412185851de2a9f6ceea02aec6f42ac72e7bbd8ffde23a2b7168", + "skype-emojis/anim/tongueout.png": "a7518b278ec03d662400288413ea050b144dce0e20bfeba3dcdb2235a2ed9716", + "skype-emojis/anim/tumbleweed.png": "d99e59c93e56f69861ebf7308a553fe7204828554096e04ddd62c5b0112a9cda", + "skype-emojis/anim/wait.png": "cfb7b88c7ba0911c8daebea52087d8e7984c467bec0508c0609c1683f88d03d1", + "skype-emojis/anim/waiting.png": "f08d7b275f74b4b5a0d6795fc65fc62ef4bc158bb5b389496e19f1c469889cb7", + "skype-emojis/anim/wfh.png": "3d877709463751d81b6f0a792f0fccf8413336548b3ba1115388400d90ec6567", + "skype-emojis/anim/whew.png": "286cd79dfdc42ed9a12fd735a674d98d0fadeb794fb67fbfdad7e58c225e02ed", + "skype-emojis/anim/wink.png": "172d673af677505f5c943bd7e96ade601cf259a64d29b40c13a556db4d942890", + "skype-emojis/anim/wondering.png": "f023dd172ab399b4167a855e8aac6b6de3f6de6727c9569c96f0c9471a596a82", + "skype-emojis/anim/worried.png": "e145751ae47fa762354702b4b8269024342cc677855a8610dc50d57fb67d8534", + "skype-emojis/anim/wtf.png": "3c72b9ee1dab1532d7289ace0cf2324e6ca1e62a4ad2c1ef601200d6b596d0f4", + "skype-emojis/anim/yawning.png": "9cbc2ca8a6d7c2429b977ed4723b2a43e0afe0c67f5679077f9ee517ce25e10d", + "skype-emojis/anim/yes.png": "29dd3bae9e762496dfbbcbb726520be16323fb219ebfba61d9bff933e7b3e6c5", + "starter-avatars/atlas.png": "a0a6a962b3154833a544476626107cd9944f1070758ef83226bd391da202b1a2", + "starter-avatars/bram.png": "c8b3e684ab80839fc895f3f26be931878da398809b0a43fa242f16a6f8b45165", + "starter-avatars/iris.png": "33de98637cff8bc1700e931d3e996db344a664f9b90f09bfde4437d3abc142f6", + "starter-avatars/nova.png": "c8c6b3cbdeafdd3360adb2c2ec7314966fb69769dfb1f14cfc7945293b8c2601" +} diff --git a/docs/evidence/spa-3.5.2/checks.json b/docs/evidence/spa-3.5.2/checks.json new file mode 100644 index 000000000..0d8558345 --- /dev/null +++ b/docs/evidence/spa-3.5.2/checks.json @@ -0,0 +1,45 @@ +{ + "productSource": "ba9014958f7ab0dc0636a18edd1339d9e9e76e60", + "harnessSource": "ac7f9d4b2e5179de6c438ac8c5db9ae9b5d3fb15", + "runtime": "3.5.2", + "fullSPA": { + "discovered": 6, + "selected": 6, + "executed": 6, + "passed": 6, + "failed": 0, + "interrupted": 0, + "flaky": 0, + "skipped": 0 + }, + "isolationSafety": { + "red": { + "pass": 0, + "fail": 2 + }, + "green": { + "pass": 2, + "fail": 0 + } + }, + "existingFixtureSafety": { + "pass": 3, + "fail": 0 + }, + "e2eTypecheck": "passed", + "freshReactBuild": "passed", + "screenshots": 13, + "videos": 6, + "workerIsolation": "blocked on host uid-map filesystem and standalone default-security container namespace creation", + "liveProviderCalls": 0, + "productionOperations": 0, + "newAutomationsCreated": 0, + "logSha256": { + "spa352-full-spa.log": "551d81cb9ab95497d37c37ff08a9ccc63ff527f134abdd906365ab4163524d97", + "spa352-isolation-red.log": "11c0ade97a4012fc545c84bd0c94104dbde5e96b71117b969cc0806ee646c293", + "spa352-isolation-green.log": "6bb8a85928130d4d1367a07e30113b7accd39e91710a3b4db5ba9e580cdf9c67", + "spa352-fixture-safety.log": "586b6964c91f95d9754542e3c6c23d1b87ee64bfd5d06fc973fd76042c00ce4f", + "spa352-typecheck.log": "5586c7d8b0c711384c49477e67938b51cda20485d8d6b105bafb4c85f9df1d7a", + "spa352-build.log": "b6b9845d369503fc5c3ec983fd1e33cb722aff6e21b7d1b27f8c1621024323c4" + } +} diff --git a/docs/evidence/spa-3.5.2/full-spa/counts/database-pause.json b/docs/evidence/spa-3.5.2/full-spa/counts/database-pause.json new file mode 100644 index 000000000..9a3ac1825 --- /dev/null +++ b/docs/evidence/spa-3.5.2/full-spa/counts/database-pause.json @@ -0,0 +1,15 @@ +{ + "fault": "database-pause", + "original": { + "acceptances": 1, + "accepted": 1, + "imMessages": 1 + }, + "next": { + "acceptances": 1, + "accepted": 1, + "imMessages": 1 + }, + "fullSPA": true, + "loginCaptchaQualified": false +} \ No newline at end of file diff --git a/docs/evidence/spa-3.5.2/full-spa/counts/expired-session-login-race.json b/docs/evidence/spa-3.5.2/full-spa/counts/expired-session-login-race.json new file mode 100644 index 000000000..1d430596e --- /dev/null +++ b/docs/evidence/spa-3.5.2/full-spa/counts/expired-session-login-race.json @@ -0,0 +1,16 @@ +{ + "fault": "expired-session-login-race", + "expiredUiPath": "login", + "original": { + "acceptances": 0, + "accepted": 0, + "imMessages": 0 + }, + "next": { + "acceptances": 1, + "accepted": 1, + "imMessages": 1 + }, + "fullSPA": true, + "loginCaptchaQualified": false +} \ No newline at end of file diff --git a/docs/evidence/spa-3.5.2/full-spa/counts/expired-session.json b/docs/evidence/spa-3.5.2/full-spa/counts/expired-session.json new file mode 100644 index 000000000..4653fc06d --- /dev/null +++ b/docs/evidence/spa-3.5.2/full-spa/counts/expired-session.json @@ -0,0 +1,16 @@ +{ + "fault": "expired-session", + "expiredUiPath": "blocked-send", + "original": { + "acceptances": 0, + "accepted": 0, + "imMessages": 0 + }, + "next": { + "acceptances": 1, + "accepted": 1, + "imMessages": 1 + }, + "fullSPA": true, + "loginCaptchaQualified": false +} \ No newline at end of file diff --git a/docs/evidence/spa-3.5.2/full-spa/counts/network-before-accept.json b/docs/evidence/spa-3.5.2/full-spa/counts/network-before-accept.json new file mode 100644 index 000000000..7d11c68b5 --- /dev/null +++ b/docs/evidence/spa-3.5.2/full-spa/counts/network-before-accept.json @@ -0,0 +1,15 @@ +{ + "fault": "network-before-accept", + "original": { + "acceptances": 1, + "accepted": 1, + "imMessages": 1 + }, + "next": { + "acceptances": 1, + "accepted": 1, + "imMessages": 1 + }, + "fullSPA": true, + "loginCaptchaQualified": false +} \ No newline at end of file diff --git a/docs/evidence/spa-3.5.2/full-spa/counts/session.json b/docs/evidence/spa-3.5.2/full-spa/counts/session.json new file mode 100644 index 000000000..1e5c04e1a --- /dev/null +++ b/docs/evidence/spa-3.5.2/full-spa/counts/session.json @@ -0,0 +1,8 @@ +{ + "before": 200, + "expired": 401, + "restored": true, + "fullSPA": true, + "realLocalD1": true, + "loginCaptchaQualified": false +} \ No newline at end of file diff --git a/docs/evidence/spa-3.5.2/full-spa/counts/web-restart.json b/docs/evidence/spa-3.5.2/full-spa/counts/web-restart.json new file mode 100644 index 000000000..bc66826f5 --- /dev/null +++ b/docs/evidence/spa-3.5.2/full-spa/counts/web-restart.json @@ -0,0 +1,15 @@ +{ + "fault": "web-restart", + "original": { + "acceptances": 1, + "accepted": 1, + "imMessages": 1 + }, + "next": { + "acceptances": 1, + "accepted": 1, + "imMessages": 1 + }, + "fullSPA": true, + "loginCaptchaQualified": false +} \ No newline at end of file diff --git a/docs/evidence/spa-3.5.2/full-spa/report.json b/docs/evidence/spa-3.5.2/full-spa/report.json new file mode 100644 index 000000000..62c81a9c3 --- /dev/null +++ b/docs/evidence/spa-3.5.2/full-spa/report.json @@ -0,0 +1,87 @@ +{ + "id": "01a148fd-1e6c-7baa-a7ca-48bd43a458b4", + "runner": { + "name": "e2e", + "version": "0.17.0" + }, + "status": "passed", + "exitCode": 0, + "startedAt": "2026-10-17T08:31:50.976Z", + "finishedAt": "2026-10-17T08:32:27.200Z", + "summary": { + "discovered": 6, + "selected": 6, + "executed": 6, + "passed": 6, + "failed": 0, + "interrupted": 0, + "flaky": 0, + "skipped": 0 + }, + "vcs": { + "commit": "ba9014958f7ab0dc0636a18edd1339d9e9e76e60", + "branch": "codex/spa-352-acceptance", + "dirty": true + }, + "productSource": "ba9014958f7ab0dc0636a18edd1339d9e9e76e60", + "harnessSource": "ac7f9d4b2e5179de6c438ac8c5db9ae9b5d3fb15", + "runtime": "3.5.2", + "scope": "Full built React SPA, real isolated D1/control gateway, PostgreSQL, Redis and WuKongIM. Post-login session and human-message recovery; no provider/full sandboxed Worker/captcha qualification.", + "redacted": "Request events, cookies, traces and response bodies omitted", + "results": [ + { + "testId": "e2e/acceptance/full-spa.e2e.ts::full%20SPA%20restores%20a%20synthetic%20D1%20session%2C%20expires%20it%20and%20accepts%20a%20fresh%20session", + "titlePath": [ + "full SPA restores a synthetic D1 session, expires it and accepts a fresh session" + ], + "file": "e2e/acceptance/full-spa.e2e.ts", + "selected": true, + "status": "passed" + }, + { + "testId": "e2e/acceptance/full-spa.e2e.ts::full%20SPA%20network-before-accept%20preserves%20recovery%20and%20never%20duplicates%20a%20durable%20human%20send", + "titlePath": [ + "full SPA network-before-accept preserves recovery and never duplicates a durable human send" + ], + "file": "e2e/acceptance/full-spa.e2e.ts", + "selected": true, + "status": "passed" + }, + { + "testId": "e2e/acceptance/full-spa.e2e.ts::full%20SPA%20database-pause%20preserves%20recovery%20and%20never%20duplicates%20a%20durable%20human%20send", + "titlePath": [ + "full SPA database-pause preserves recovery and never duplicates a durable human send" + ], + "file": "e2e/acceptance/full-spa.e2e.ts", + "selected": true, + "status": "passed" + }, + { + "testId": "e2e/acceptance/full-spa.e2e.ts::full%20SPA%20web-restart%20preserves%20recovery%20and%20never%20duplicates%20a%20durable%20human%20send", + "titlePath": [ + "full SPA web-restart preserves recovery and never duplicates a durable human send" + ], + "file": "e2e/acceptance/full-spa.e2e.ts", + "selected": true, + "status": "passed" + }, + { + "testId": "e2e/acceptance/full-spa.e2e.ts::full%20SPA%20expired-session%20preserves%20recovery%20and%20never%20duplicates%20a%20durable%20human%20send", + "titlePath": [ + "full SPA expired-session preserves recovery and never duplicates a durable human send" + ], + "file": "e2e/acceptance/full-spa.e2e.ts", + "selected": true, + "status": "passed" + }, + { + "testId": "e2e/acceptance/full-spa.e2e.ts::full%20SPA%20expired-session-login-race%20preserves%20recovery%20and%20never%20duplicates%20a%20durable%20human%20send", + "titlePath": [ + "full SPA expired-session-login-race preserves recovery and never duplicates a durable human send" + ], + "file": "e2e/acceptance/full-spa.e2e.ts", + "selected": true, + "status": "passed" + } + ] +} diff --git a/docs/evidence/spa-3.5.2/full-spa/run-metadata.json b/docs/evidence/spa-3.5.2/full-spa/run-metadata.json new file mode 100644 index 000000000..8146ce789 --- /dev/null +++ b/docs/evidence/spa-3.5.2/full-spa/run-metadata.json @@ -0,0 +1,21 @@ +{ + "command": [ + "npm", + "run", + "test:e2e:web", + "--", + "--config", + "e2e.acceptance.config.ts", + "--output", + ".e2e/full-spa-acceptance", + "--video", + "on" + ], + "buildMode": "existing production preview via E2E_BASE_URL", + "browser": "managed official @e2e-dev/web browser", + "build": { + "file": ".e2e/spa352-dist/index.html", + "modifiedAt": "2026-10-17T08:31:12.731Z", + "sha256": "c076d5939f2da31b23d8548c543d837d93c352f8aad47e6108ba6b27bf947167" + } +} \ No newline at end of file diff --git a/docs/evidence/spa-3.5.2/full-spa/screenshots.json b/docs/evidence/spa-3.5.2/full-spa/screenshots.json new file mode 100644 index 000000000..c56af7891 --- /dev/null +++ b/docs/evidence/spa-3.5.2/full-spa/screenshots.json @@ -0,0 +1,67 @@ +[ + { + "case": "e2e_acceptance_full-spa.e2e.ts__full_20SPA_20database-pause_20preserves_20recovery_20and_20never_20duplicates_2-cedcf847", + "originalName": "001-full-spa-database-pause-pending.png", + "retained": "cedcf847--001-full-spa-database-pause-pending.png" + }, + { + "case": "e2e_acceptance_full-spa.e2e.ts__full_20SPA_20database-pause_20preserves_20recovery_20and_20never_20duplicates_2-cedcf847", + "originalName": "002-full-spa-database-pause-recovered.png", + "retained": "cedcf847--002-full-spa-database-pause-recovered.png" + }, + { + "case": "e2e_acceptance_full-spa.e2e.ts__full_20SPA_20expired-session_20preserves_20recovery_20and_20never_20duplicates_-cfacc116", + "originalName": "001-full-spa-expired-session-blocked.png", + "retained": "cfacc116--001-full-spa-expired-session-blocked.png" + }, + { + "case": "e2e_acceptance_full-spa.e2e.ts__full_20SPA_20expired-session_20preserves_20recovery_20and_20never_20duplicates_-cfacc116", + "originalName": "002-full-spa-expired-session-recovered.png", + "retained": "cfacc116--002-full-spa-expired-session-recovered.png" + }, + { + "case": "e2e_acceptance_full-spa.e2e.ts__full_20SPA_20network-before-accept_20preserves_20recovery_20and_20never_20dupli-4b087aca", + "originalName": "002-full-spa-network-before-accept-recovered.png", + "retained": "4b087aca--002-full-spa-network-before-accept-recovered.png" + }, + { + "case": "e2e_acceptance_full-spa.e2e.ts__full_20SPA_20network-before-accept_20preserves_20recovery_20and_20never_20dupli-4b087aca", + "originalName": "001-full-spa-network-before-accept-pending.png", + "retained": "4b087aca--001-full-spa-network-before-accept-pending.png" + }, + { + "case": "e2e_acceptance_full-spa.e2e.ts__full_20SPA_20expired-session-login-race_20preserves_20recovery_20and_20never_20-a200b64c", + "originalName": "002-full-spa-expired-session-login-race-recovered.png", + "retained": "a200b64c--002-full-spa-expired-session-login-race-recovered.png" + }, + { + "case": "e2e_acceptance_full-spa.e2e.ts__full_20SPA_20expired-session-login-race_20preserves_20recovery_20and_20never_20-a200b64c", + "originalName": "001-full-spa-expired-session-blocked.png", + "retained": "a200b64c--001-full-spa-expired-session-blocked.png" + }, + { + "case": "e2e_acceptance_full-spa.e2e.ts__full_20SPA_20web-restart_20preserves_20recovery_20and_20never_20duplicates_20a_-0f907fd3", + "originalName": "002-full-spa-web-restart-recovered.png", + "retained": "0f907fd3--002-full-spa-web-restart-recovered.png" + }, + { + "case": "e2e_acceptance_full-spa.e2e.ts__full_20SPA_20web-restart_20preserves_20recovery_20and_20never_20duplicates_20a_-0f907fd3", + "originalName": "001-full-spa-web-restart-pending.png", + "retained": "0f907fd3--001-full-spa-web-restart-pending.png" + }, + { + "case": "e2e_acceptance_full-spa.e2e.ts__full_20SPA_20restores_20a_20synthetic_20D1_20session_2C_20expires_20it_20and_20-2dfbb68e", + "originalName": "002-full-spa-session-expired.png", + "retained": "2dfbb68e--002-full-spa-session-expired.png" + }, + { + "case": "e2e_acceptance_full-spa.e2e.ts__full_20SPA_20restores_20a_20synthetic_20D1_20session_2C_20expires_20it_20and_20-2dfbb68e", + "originalName": "003-full-spa-session-renewed.png", + "retained": "2dfbb68e--003-full-spa-session-renewed.png" + }, + { + "case": "e2e_acceptance_full-spa.e2e.ts__full_20SPA_20restores_20a_20synthetic_20D1_20session_2C_20expires_20it_20and_20-2dfbb68e", + "originalName": "001-full-spa-session-restored.png", + "retained": "2dfbb68e--001-full-spa-session-restored.png" + } +] diff --git a/docs/evidence/spa-3.5.2/full-spa/screenshots/0f907fd3--001-full-spa-web-restart-pending.png b/docs/evidence/spa-3.5.2/full-spa/screenshots/0f907fd3--001-full-spa-web-restart-pending.png new file mode 100644 index 000000000..97a479731 Binary files /dev/null and b/docs/evidence/spa-3.5.2/full-spa/screenshots/0f907fd3--001-full-spa-web-restart-pending.png differ diff --git a/docs/evidence/spa-3.5.2/full-spa/screenshots/0f907fd3--002-full-spa-web-restart-recovered.png b/docs/evidence/spa-3.5.2/full-spa/screenshots/0f907fd3--002-full-spa-web-restart-recovered.png new file mode 100644 index 000000000..11e182208 Binary files /dev/null and b/docs/evidence/spa-3.5.2/full-spa/screenshots/0f907fd3--002-full-spa-web-restart-recovered.png differ diff --git a/docs/evidence/spa-3.5.2/full-spa/screenshots/2dfbb68e--001-full-spa-session-restored.png b/docs/evidence/spa-3.5.2/full-spa/screenshots/2dfbb68e--001-full-spa-session-restored.png new file mode 100644 index 000000000..09260221d Binary files /dev/null and b/docs/evidence/spa-3.5.2/full-spa/screenshots/2dfbb68e--001-full-spa-session-restored.png differ diff --git a/docs/evidence/spa-3.5.2/full-spa/screenshots/2dfbb68e--002-full-spa-session-expired.png b/docs/evidence/spa-3.5.2/full-spa/screenshots/2dfbb68e--002-full-spa-session-expired.png new file mode 100644 index 000000000..af46f95c4 Binary files /dev/null and b/docs/evidence/spa-3.5.2/full-spa/screenshots/2dfbb68e--002-full-spa-session-expired.png differ diff --git a/docs/evidence/spa-3.5.2/full-spa/screenshots/2dfbb68e--003-full-spa-session-renewed.png b/docs/evidence/spa-3.5.2/full-spa/screenshots/2dfbb68e--003-full-spa-session-renewed.png new file mode 100644 index 000000000..5c538035b Binary files /dev/null and b/docs/evidence/spa-3.5.2/full-spa/screenshots/2dfbb68e--003-full-spa-session-renewed.png differ diff --git a/docs/evidence/spa-3.5.2/full-spa/screenshots/4b087aca--001-full-spa-network-before-accept-pending.png b/docs/evidence/spa-3.5.2/full-spa/screenshots/4b087aca--001-full-spa-network-before-accept-pending.png new file mode 100644 index 000000000..ef3e672b8 Binary files /dev/null and b/docs/evidence/spa-3.5.2/full-spa/screenshots/4b087aca--001-full-spa-network-before-accept-pending.png differ diff --git a/docs/evidence/spa-3.5.2/full-spa/screenshots/4b087aca--002-full-spa-network-before-accept-recovered.png b/docs/evidence/spa-3.5.2/full-spa/screenshots/4b087aca--002-full-spa-network-before-accept-recovered.png new file mode 100644 index 000000000..6fde20c06 Binary files /dev/null and b/docs/evidence/spa-3.5.2/full-spa/screenshots/4b087aca--002-full-spa-network-before-accept-recovered.png differ diff --git a/docs/evidence/spa-3.5.2/full-spa/screenshots/a200b64c--001-full-spa-expired-session-blocked.png b/docs/evidence/spa-3.5.2/full-spa/screenshots/a200b64c--001-full-spa-expired-session-blocked.png new file mode 100644 index 000000000..aa4f32d26 Binary files /dev/null and b/docs/evidence/spa-3.5.2/full-spa/screenshots/a200b64c--001-full-spa-expired-session-blocked.png differ diff --git a/docs/evidence/spa-3.5.2/full-spa/screenshots/a200b64c--002-full-spa-expired-session-login-race-recovered.png b/docs/evidence/spa-3.5.2/full-spa/screenshots/a200b64c--002-full-spa-expired-session-login-race-recovered.png new file mode 100644 index 000000000..7ed7ac9aa Binary files /dev/null and b/docs/evidence/spa-3.5.2/full-spa/screenshots/a200b64c--002-full-spa-expired-session-login-race-recovered.png differ diff --git a/docs/evidence/spa-3.5.2/full-spa/screenshots/cedcf847--001-full-spa-database-pause-pending.png b/docs/evidence/spa-3.5.2/full-spa/screenshots/cedcf847--001-full-spa-database-pause-pending.png new file mode 100644 index 000000000..8e5149cf7 Binary files /dev/null and b/docs/evidence/spa-3.5.2/full-spa/screenshots/cedcf847--001-full-spa-database-pause-pending.png differ diff --git a/docs/evidence/spa-3.5.2/full-spa/screenshots/cedcf847--002-full-spa-database-pause-recovered.png b/docs/evidence/spa-3.5.2/full-spa/screenshots/cedcf847--002-full-spa-database-pause-recovered.png new file mode 100644 index 000000000..e0cbb4d0f Binary files /dev/null and b/docs/evidence/spa-3.5.2/full-spa/screenshots/cedcf847--002-full-spa-database-pause-recovered.png differ diff --git a/docs/evidence/spa-3.5.2/full-spa/screenshots/cfacc116--001-full-spa-expired-session-blocked.png b/docs/evidence/spa-3.5.2/full-spa/screenshots/cfacc116--001-full-spa-expired-session-blocked.png new file mode 100644 index 000000000..ffcda8f27 Binary files /dev/null and b/docs/evidence/spa-3.5.2/full-spa/screenshots/cfacc116--001-full-spa-expired-session-blocked.png differ diff --git a/docs/evidence/spa-3.5.2/full-spa/screenshots/cfacc116--002-full-spa-expired-session-recovered.png b/docs/evidence/spa-3.5.2/full-spa/screenshots/cfacc116--002-full-spa-expired-session-recovered.png new file mode 100644 index 000000000..0b3c60e4b Binary files /dev/null and b/docs/evidence/spa-3.5.2/full-spa/screenshots/cfacc116--002-full-spa-expired-session-recovered.png differ diff --git a/docs/evidence/spa-3.5.2/full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20database-pause_20preserves_20recovery_20and_20never_20duplicates_2-cedcf847.webm b/docs/evidence/spa-3.5.2/full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20database-pause_20preserves_20recovery_20and_20never_20duplicates_2-cedcf847.webm new file mode 100644 index 000000000..d5f9967a6 Binary files /dev/null and b/docs/evidence/spa-3.5.2/full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20database-pause_20preserves_20recovery_20and_20never_20duplicates_2-cedcf847.webm differ diff --git a/docs/evidence/spa-3.5.2/full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20expired-session-login-race_20preserves_20recovery_20and_20never_20-a200b64c.webm b/docs/evidence/spa-3.5.2/full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20expired-session-login-race_20preserves_20recovery_20and_20never_20-a200b64c.webm new file mode 100644 index 000000000..6c983c83c Binary files /dev/null and b/docs/evidence/spa-3.5.2/full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20expired-session-login-race_20preserves_20recovery_20and_20never_20-a200b64c.webm differ diff --git a/docs/evidence/spa-3.5.2/full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20expired-session_20preserves_20recovery_20and_20never_20duplicates_-cfacc116.webm b/docs/evidence/spa-3.5.2/full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20expired-session_20preserves_20recovery_20and_20never_20duplicates_-cfacc116.webm new file mode 100644 index 000000000..0062a3b35 Binary files /dev/null and b/docs/evidence/spa-3.5.2/full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20expired-session_20preserves_20recovery_20and_20never_20duplicates_-cfacc116.webm differ diff --git a/docs/evidence/spa-3.5.2/full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20network-before-accept_20preserves_20recovery_20and_20never_20dupli-4b087aca.webm b/docs/evidence/spa-3.5.2/full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20network-before-accept_20preserves_20recovery_20and_20never_20dupli-4b087aca.webm new file mode 100644 index 000000000..e7598db03 Binary files /dev/null and b/docs/evidence/spa-3.5.2/full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20network-before-accept_20preserves_20recovery_20and_20never_20dupli-4b087aca.webm differ diff --git a/docs/evidence/spa-3.5.2/full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20restores_20a_20synthetic_20D1_20session_2C_20expires_20it_20and_20-2dfbb68e.webm b/docs/evidence/spa-3.5.2/full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20restores_20a_20synthetic_20D1_20session_2C_20expires_20it_20and_20-2dfbb68e.webm new file mode 100644 index 000000000..f08379ea6 Binary files /dev/null and b/docs/evidence/spa-3.5.2/full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20restores_20a_20synthetic_20D1_20session_2C_20expires_20it_20and_20-2dfbb68e.webm differ diff --git a/docs/evidence/spa-3.5.2/full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20web-restart_20preserves_20recovery_20and_20never_20duplicates_20a_-0f907fd3.webm b/docs/evidence/spa-3.5.2/full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20web-restart_20preserves_20recovery_20and_20never_20duplicates_20a_-0f907fd3.webm new file mode 100644 index 000000000..daac278c7 Binary files /dev/null and b/docs/evidence/spa-3.5.2/full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20web-restart_20preserves_20recovery_20and_20never_20duplicates_20a_-0f907fd3.webm differ diff --git a/docs/evidence/spa-3.5.2/isolated-services.json b/docs/evidence/spa-3.5.2/isolated-services.json new file mode 100644 index 000000000..164a4989e --- /dev/null +++ b/docs/evidence/spa-3.5.2/isolated-services.json @@ -0,0 +1,72 @@ +[ + { + "name": "/lingxiloop-spa352-postgres-1", + "id": "26aa9b133a56a7dff7eb77512008a5744cac41a75d87fd5ceff060dc07c8eda2", + "image": "sha256:f1447071e6c8449dcf4056aa0994c81d3566ce5ee232de36b04dc25696a116dd", + "paused": false, + "startedAt": "2026-10-17T08:30:05.612550469Z", + "ports": { + "5432/tcp": [ + { + "HostIp": "127.0.0.1", + "HostPort": "55433" + } + ] + }, + "project": "lingxiloop-spa352" + }, + { + "name": "/lingxiloop-spa352-redis-1", + "id": "755aeadadfb7d49214ce8a9a4b1854c232a850780e94b4c68c2c4e049b978500", + "image": "sha256:f84b0c4678011602b9b98c227a4dcd5468bf8b088b02fdd4165cb7758bad8058", + "paused": false, + "startedAt": "2026-10-17T08:30:05.611903427Z", + "ports": { + "6379/tcp": [ + { + "HostIp": "127.0.0.1", + "HostPort": "56380" + } + ] + }, + "project": "lingxiloop-spa352" + }, + { + "name": "/lingxiloop-spa352-wukongim-1", + "id": "6b932b7c4c2727cd2dc69a7a992ea14bcaff1d0970478bc2d885eb477c776888", + "image": "sha256:383f2d440277db4791562284088cbb144c6e28c858a599cb325d1c2db1263518", + "paused": false, + "startedAt": "2026-10-17T08:30:05.623988292Z", + "ports": { + "5001/tcp": [ + { + "HostIp": "127.0.0.1", + "HostPort": "55002" + } + ], + "5200/tcp": [ + { + "HostIp": "127.0.0.1", + "HostPort": "55201" + } + ] + }, + "project": "lingxiloop-spa352" + }, + { + "name": "/lingxiloop-spa352-storage-1", + "id": "debb515e4e7b9d68867e50776c945db3b547c474592078e99db2494a645d86c0", + "image": "sha256:1b5b55f01e260ac2e5e3d688d6d878530fea4dbce10de1c2a4188a440a3a0364", + "paused": false, + "startedAt": "2026-10-17T08:30:05.609976962Z", + "ports": { + "9000/tcp": [ + { + "HostIp": "127.0.0.1", + "HostPort": "59001" + } + ] + }, + "project": "lingxiloop-spa352" + } +] diff --git a/docs/evidence/spa-3.5.2/manifest.json b/docs/evidence/spa-3.5.2/manifest.json new file mode 100644 index 000000000..6d0c062e3 --- /dev/null +++ b/docs/evidence/spa-3.5.2/manifest.json @@ -0,0 +1,39 @@ +{ + "README.md": "c4f79a551206b77a1735d0978da80d262bc4600250d3d37c54c92cb3e2257bf2", + "build-manifest.json": "1fc3afbf08d0fe11c1c27599fd2d5e894cd101466136236279ef03ff32bfd1e2", + "checks.json": "e784cfab36007914b566f1edc704bb143be124f36d5b2daf9befb3c19256a306", + "full-spa/counts/database-pause.json": "6a2e3146aa5f42e035653e429884470f092c78c665bb3f609443241e7cf31a75", + "full-spa/counts/expired-session-login-race.json": "77adba4579ee1687178381f0cbb495f8bce72e10577aa49b4f58ddcf32c492e7", + "full-spa/counts/expired-session.json": "d09d3c9de18aef23cbbdb039efdba6e21946729017390679df6ed11986fe76bc", + "full-spa/counts/network-before-accept.json": "3e661ec22e3a58bd54e30a3776c6d36a9d4cd389dbac31306a555f0f53a2de7a", + "full-spa/counts/session.json": "33deff8fcd8db62ea6da9bc70dad828379e458bf050c7ed8adca35192bd7195f", + "full-spa/counts/web-restart.json": "b6a7fa21608f5feb33fadabe20c38076debb3e5eaab21197bce5ecc8442aa410", + "full-spa/report.json": "6108acb5ef52b2b7a40d899aa8487cb39d43f46de411a762c41151c894e6c9c5", + "full-spa/run-metadata.json": "5b27c715d2abb397b1b93ae6a0e810358c23621c00c428d1f54dd768f8396501", + "full-spa/screenshots/0f907fd3--001-full-spa-web-restart-pending.png": "8dfd063704d9c8939a9a3e7b212ba9e512c071fc45006d1232d12be39576f1ac", + "full-spa/screenshots/0f907fd3--002-full-spa-web-restart-recovered.png": "7d952bfa555b17c2be53aa01a1cb07ce3bff74e7dc81e76ef940c4a38a9e0819", + "full-spa/screenshots/2dfbb68e--001-full-spa-session-restored.png": "477b2f5b5be5bfba0de7817f32cb1e698755021ff6945bf17c4fe6931b1f6121", + "full-spa/screenshots/2dfbb68e--002-full-spa-session-expired.png": "8cd979eba1de01d698f9b10be752ca0bcbebce5b66041045f3a5c624da905217", + "full-spa/screenshots/2dfbb68e--003-full-spa-session-renewed.png": "73bf0859d6d4f900d728de96a0b612f4cfabf106e7f11c446269ce7b712089e0", + "full-spa/screenshots/4b087aca--001-full-spa-network-before-accept-pending.png": "f3af7e510c40ae6f8bf60a3dbd0916680664ee17c18522888840765866cc992e", + "full-spa/screenshots/4b087aca--002-full-spa-network-before-accept-recovered.png": "446002220b4301a3a8a27e92034b26630f0aa96b7993850f529cf67640f835b2", + "full-spa/screenshots/a200b64c--001-full-spa-expired-session-blocked.png": "362ccc4b1a1a03469ad0d931859c5a0f3c738b5bb1ddb9ea90f3ff5ce87e8f76", + "full-spa/screenshots/a200b64c--002-full-spa-expired-session-login-race-recovered.png": "d96aad4e93687878fe763694a28e450fc5ac6ded8fe00aa5107806a7ba1e2885", + "full-spa/screenshots/cedcf847--001-full-spa-database-pause-pending.png": "94f528cb384fa35e0cdf14dbf86aa137523576e7fbde048a8a4cebaf721e37f4", + "full-spa/screenshots/cedcf847--002-full-spa-database-pause-recovered.png": "1e063aae1d570bbd997ad24df32b347d9ed79aa05a632770685fb8610aa314e1", + "full-spa/screenshots/cfacc116--001-full-spa-expired-session-blocked.png": "e4b9c2d8b137bc02533c87ad15e3e60663821906563aaddf04bd6dd8eba91d70", + "full-spa/screenshots/cfacc116--002-full-spa-expired-session-recovered.png": "c3420f1a4407c4ed20e4743260817719b3c59734511e11134ffe8cd2d4b58bcf", + "full-spa/screenshots.json": "20ec03dc23f850ac4d60e88f23e9219e90a00cf43f260773eb9243831388e4e2", + "full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20database-pause_20preserves_20recovery_20and_20never_20duplicates_2-cedcf847.webm": "9e48bdf0d0d995d0dceedfc78a2f20c3be4eeb0dada3d1b44c9875c6297199d2", + "full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20expired-session-login-race_20preserves_20recovery_20and_20never_20-a200b64c.webm": "b28d13f125d5acb4bbd72358dedcd8860ae7ca6764ea11aecdeeb91f37b84579", + "full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20expired-session_20preserves_20recovery_20and_20never_20duplicates_-cfacc116.webm": "1094c5435c2b2a237424b33c652be6a2f22b104ea810679987a0be41b0daa042", + "full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20network-before-accept_20preserves_20recovery_20and_20never_20dupli-4b087aca.webm": "e43ba0af075c966b9966613f2a75f520a0c6ef12b0ee72a6b8eb80d1582c397f", + "full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20restores_20a_20synthetic_20D1_20session_2C_20expires_20it_20and_20-2dfbb68e.webm": "a0886554f11e143026d1ce742e372404751d0881d12b1139414073fa042da2d3", + "full-spa/video/e2e_acceptance_full-spa.e2e.ts__full_20SPA_20web-restart_20preserves_20recovery_20and_20never_20duplicates_20a_-0f907fd3.webm": "2819d99f940ae0ef367000b1e7e00f744a74faae2524ef063080768c9276f8f1", + "isolated-services.json": "41d1076d3febb3800e57a27c2f086b86237dc6cb965d190f5c5900738be993f1", + "provider-prerequisites.json": "d4806f0fd40986f6305edbf295835849de03003028a290d5afca6e712ed8a9a4", + "review.json": "67b9d9fbfbc52e32160b51109a26b08c0b4117f8d20546c35a5a3f01c45e3cca", + "soak-isolation.json": "013fac549d4055866c989d2aa9888158b0a0c306616e427f723a3bc79d510b34", + "web-lifecycle.jsonl": "38e2274d951e9219658c14d4918afd3268c6a0ba78aab0739efb3da37131ef17", + "worker-preflight.json": "918c0b798219adb2a14fe2fc632d9308a07a4a0e7dddf1eae7c284417b3005aa" +} diff --git a/docs/evidence/spa-3.5.2/provider-prerequisites.json b/docs/evidence/spa-3.5.2/provider-prerequisites.json new file mode 100644 index 000000000..360f33252 --- /dev/null +++ b/docs/evidence/spa-3.5.2/provider-prerequisites.json @@ -0,0 +1,13 @@ +{ + "inspection": "Presence only; no credential values read into evidence. Presence alone would not prove provider/data-boundary authorization.", + "requiredEnvironmentPresent": { + "OPENAI_BASE_URL": false, + "OPENAI_MODEL": false, + "OPENAI_API_KEY": false, + "AGENT_OS_INPUT_COST_MICROS_PER_MILLION": false, + "AGENT_OS_OUTPUT_COST_MICROS_PER_MILLION": false + }, + "liveProviderCalls": 0, + "newCredentials": 0, + "permissionChanges": 0 +} diff --git a/docs/evidence/spa-3.5.2/review.json b/docs/evidence/spa-3.5.2/review.json new file mode 100644 index 000000000..f0ebb8165 --- /dev/null +++ b/docs/evidence/spa-3.5.2/review.json @@ -0,0 +1,32 @@ +{ + "productSource": "ba9014958f7ab0dc0636a18edd1339d9e9e76e60", + "upstreamSource": "e09fc03437804ec80bc2f6d6b3258dc3e2f35540", + "runtime": "3.5.2", + "reviewScope": [ + 153, + 155, + 157, + 161 + ], + "additionalProductCodeFindings": [], + "changedProductFiles": [], + "changes": "Test isolation and retained acceptance evidence only", + "remaining": { + "153": [ + "qualified full Worker and model-dialogue/retained-heap measurements", + "complete duration evidence; no3.5.2 endurance qualification" + ], + "155": [ + "authorized live provider/pricing and approved fallback route if required" + ], + "157": [ + "controlled live-priced/actual usage cost-near-cap validation" + ], + "161": [ + "qualified full Worker crash/action and controlled live-provider joint validation" + ] + }, + "deployment": "explicitly excluded by user; not a blocker", + "spaPostLogin": "6/6 passed, zero skipped", + "newAutomationCount": 0 +} diff --git a/docs/evidence/spa-3.5.2/soak-isolation.json b/docs/evidence/spa-3.5.2/soak-isolation.json new file mode 100644 index 000000000..07daef43e --- /dev/null +++ b/docs/evidence/spa-3.5.2/soak-isolation.json @@ -0,0 +1,29 @@ +{ + "observation": { + "status": "running", + "scope": "Isolated immutable production Web/API only; no Worker, model dialogue, live provider or production deployment qualification.", + "startedAt": "2026-10-17T06:42:47.900Z", + "earliestCompletionAt": "2026-10-18T06:42:47.901Z", + "targetSeconds": 86400, + "image": "accel.way2api.fun/ghcr.io/lingxi-org/lingxiloop-server@sha256:0c295e66c29dcceab609c3d1715348bab6a90c6585d1280095cc0a61c33b3f29", + "limits": { + "cpus": 0.75, + "memoryBytes": 671088640, + "oldSpaceMiB": 320, + "poolMax": 8 + }, + "initialStartedAt": "2026-10-17T06:42:41.588503935Z", + "initialRestartCount": 0, + "samples": 115, + "elapsedSeconds": 6850.0987918910005, + "lastHeartbeatAt": "2026-10-17T08:36:57.954Z", + "violations": [] + }, + "originalCandidateStartedAt": "2026-10-17T06:42:41.588503935Z", + "originalCandidateRestartCount": 0, + "originalCandidatePaused": false, + "originalMonitorPid": 285092, + "originalEvidenceWatcherPid": 363050, + "newSpaServices": "lingxiloop-spa352 (stopped/removed after successful tests)", + "newVersionDurabilityQualified": false +} diff --git a/docs/evidence/spa-3.5.2/web-lifecycle.jsonl b/docs/evidence/spa-3.5.2/web-lifecycle.jsonl new file mode 100644 index 000000000..8056f0b61 --- /dev/null +++ b/docs/evidence/spa-3.5.2/web-lifecycle.jsonl @@ -0,0 +1,7 @@ +{"at":"2026-10-17T08:31:01.523Z","event":"starting"} +{"at":"2026-10-17T08:31:04.867Z","event":"ready"} +{"at":"2026-10-17T08:31:04.873Z","event":"supervisor-ready"} +{"at":"2026-10-17T08:32:11.002Z","event":"stopped"} +{"at":"2026-10-17T08:32:11.581Z","event":"starting"} +{"at":"2026-10-17T08:32:14.403Z","event":"ready"} +{"at":"2026-10-17T08:35:26.735Z","event":"stopped"} diff --git a/docs/evidence/spa-3.5.2/worker-preflight.json b/docs/evidence/spa-3.5.2/worker-preflight.json new file mode 100644 index 000000000..fb5b5d9f8 --- /dev/null +++ b/docs/evidence/spa-3.5.2/worker-preflight.json @@ -0,0 +1,68 @@ +{ + "at": "2026-10-17T08:32:42.917Z", + "productSource": "ba9014958f7ab0dc0636a18edd1339d9e9e76e60", + "runtime": { + "runtime": "3.5.2", + "controlPlane": 11, + "kernel": 2, + "schema": 12, + "assistantMessage": 2 + }, + "boundary": "The exact production Worker bubblewrap preflight on this cloud executor; no generation/task was started. This is not immutable 3.5.2 Worker-image qualification.", + "productCallSite": "server/src/agent-runtime/runtime.ts:startLingxiOSWorker", + "command": [ + "bwrap", + "--die-with-parent", + "--unshare-all", + "--new-session", + "--ro-bind", + "/", + "/", + "--proc", + "/proc", + "--dev", + "/dev", + "--", + "/usr/bin/true" + ], + "exitCode": 1, + "signal": null, + "stderr": "bwrap: setting up uid map: Read-only file system", + "stdout": "", + "securityChanges": 0, + "providerCalls": 0, + "kernel": "6.18.55", + "standaloneContainerProbe": { + "runtime": { + "runtime": "3.5.2", + "controlPlane": 11, + "kernel": 2, + "schema": 12, + "assistantMessage": 2 + }, + "uid": 0, + "command": [ + "bwrap", + "--die-with-parent", + "--unshare-all", + "--new-session", + "--ro-bind", + "/", + "/", + "--proc", + "/proc", + "--dev", + "/dev", + "--", + "/usr/bin/true" + ], + "exitCode": 1, + "signal": null, + "stderr": "bwrap: No permissions to create new namespace, likely because the kernel does not allow non-privileged user namespaces. See or .", + "stdout": "", + "baseImage": "sha256:0c295e66c29dcceab609c3d1715348bab6a90c6585d1280095cc0a61c33b3f29", + "package": "Exact registry-installed 3.5.2 package mounted read-only; public export only", + "qualification": "Standalone disposable no-network container isolation probe, not immutable 3.5.2 image/full Worker qualification", + "privilegeChanges": 0 + } +} diff --git a/e2e/acceptance/compose.yaml b/e2e/acceptance/compose.yaml new file mode 100644 index 000000000..24dd30fb7 --- /dev/null +++ b/e2e/acceptance/compose.yaml @@ -0,0 +1,37 @@ +name: lingxiloop-spa352 +services: + postgres: + image: pgvector/pgvector:pg16 + labels: { lingxiloop.acceptance: spa352 } + ports: ["127.0.0.1:55433:5432"] + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: lingxiloop-e2e-local + POSTGRES_DB: lingxiloop_browser_test + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres -d lingxiloop_browser_test"] + interval: 2s + timeout: 5s + retries: 30 + redis: + image: redis:7-alpine + ports: ["127.0.0.1:56380:6379"] + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 2s + timeout: 5s + retries: 30 + wukongim: + image: ${E2E_WUKONG_IMAGE:-lingxiloop-cloud-wukongim:c7f663fa23a4} + ports: ["127.0.0.1:55002:5001", "127.0.0.1:55201:5200"] + environment: + WK_WEBHOOK_HTTP_ADDR: http://host.docker.internal:5281/webhooks/wukong?token=lingxiloop-e2e-webhook + extra_hosts: ["host.docker.internal:host-gateway"] + storage: + image: ${E2E_STORAGE_IMAGE:-lingxiloop-cloud-minio:20250907} + command: ["server", "/data"] + ports: ["127.0.0.1:59001:9000"] + environment: + MINIO_ROOT_USER: lingxiloop-e2e + MINIO_ROOT_PASSWORD: lingxiloop-e2e-storage-local + MINIO_API_CORS_ALLOW_ORIGIN: http://127.0.0.1:5280 diff --git a/e2e/acceptance/isolation-safety.test.mjs b/e2e/acceptance/isolation-safety.test.mjs new file mode 100644 index 000000000..96c115368 --- /dev/null +++ b/e2e/acceptance/isolation-safety.test.mjs @@ -0,0 +1,35 @@ +import assert from 'node:assert/strict' +import test from 'node:test' +import { spawnSync } from 'node:child_process' +import { mkdtempSync, writeFileSync, readFileSync, rmSync } from 'node:fs' +import { tmpdir } from 'node:os' +import { join, resolve } from 'node:path' + +// Failure inventory: a newly selected fixture accidentally pauses the soak's PG, +// a reused container name points at a different service, or a typo selects defaults. +test('isolated SPA PostgreSQL pause verifies its label and loopback port before mutation', () => { + for (const mismatch of ['label', 'port', 'none']) { + const directory = mkdtempSync(join(tmpdir(), 'spa-isolation-')) + const calls = join(directory, 'calls.jsonl') + const inspection = { Config: { Labels: { 'lingxiloop.acceptance': mismatch === 'label' ? 'soak' : 'spa352' } }, + NetworkSettings: { Ports: { '5432/tcp': [{ HostIp: '127.0.0.1', HostPort: mismatch === 'port' ? '55432' : '55433' }] } } } + writeFileSync(join(directory, 'docker'), `#!${process.execPath}\nimport('node:fs').then(fs=>{fs.appendFileSync(${JSON.stringify(calls)},JSON.stringify(process.argv.slice(2))+'\\n');if(process.argv[2]==='inspect')console.log(${JSON.stringify(JSON.stringify([inspection]))})})\n`, { mode: 0o700 }) + try { + const result = spawnSync(process.execPath, ['--input-type=module', '-e', + `import {pauseTestDatabase} from ${JSON.stringify(new URL('./session-fixture.mjs', import.meta.url).href)};pauseTestDatabase(true)`], + { encoding: 'utf8', env: { PATH: `${directory}:${process.env.PATH}`, ACCEPTANCE_FIXTURE_ROOT: resolve('.'), E2E_SPA_ISOLATED: '1' } }) + const commands = readFileSync(calls, 'utf8').trim().split('\n').map(line => JSON.parse(line)) + assert.deepEqual(commands[0], ['inspect', 'lingxiloop-spa352-postgres-1']) + if (mismatch === 'none') { assert.equal(result.status, 0, result.stderr); assert.deepEqual(commands[1], ['pause', 'lingxiloop-spa352-postgres-1']) } + else { assert.notEqual(result.status, 0); assert.equal(commands.length, 1, 'a mismatch must never reach docker pause') } + } finally { rmSync(directory, { recursive: true, force: true }) } + } +}) + +test('unknown SPA isolation selection fails before opening any fixture connection', () => { + const result = spawnSync(process.execPath, ['--input-type=module', '-e', + `import ${JSON.stringify(new URL('./session-fixture.mjs', import.meta.url).href)}`], + { encoding: 'utf8', env: { PATH: process.env.PATH, ACCEPTANCE_FIXTURE_ROOT: resolve('.'), E2E_SPA_ISOLATED: 'typo' } }) + assert.notEqual(result.status, 0) + assert.match(result.stderr, /E2E_SPA_ISOLATED must be unset or 1/) +}) diff --git a/e2e/acceptance/profile.d.mts b/e2e/acceptance/profile.d.mts new file mode 100644 index 000000000..1fd5dda6b --- /dev/null +++ b/e2e/acceptance/profile.d.mts @@ -0,0 +1,5 @@ +export const isolatedSpa: null | { + origin: string; apiPort: number; supervisorPort: number; controlPort: number; + databasePort: string; databaseContainer: string; controlState: string; controlConfig: string; + env: Record; +} diff --git a/e2e/acceptance/profile.mjs b/e2e/acceptance/profile.mjs new file mode 100644 index 000000000..36b53b258 --- /dev/null +++ b/e2e/acceptance/profile.mjs @@ -0,0 +1,18 @@ +// Fixed disposable endpoints only. Never accept an arbitrary database/container. +const selection = process.env.E2E_SPA_ISOLATED +if (selection !== undefined && selection !== '1') throw new Error('E2E_SPA_ISOLATED must be unset or 1') +export const isolatedSpa = selection === '1' ? { + origin: 'http://127.0.0.1:5280', apiPort: 5281, supervisorPort: 5285, controlPort: 8897, + databasePort: '55433', databaseContainer: 'lingxiloop-spa352-postgres-1', + controlState: '.e2e/spa352-control-state', controlConfig: 'e2e/acceptance/wrangler.jsonc', + env: { + E2E_SPA_ISOLATED: '1', PORT: '5281', + DATABASE_URL: 'postgres://postgres:lingxiloop-e2e-local@127.0.0.1:55433/lingxiloop_browser_test', + REDIS_URL: 'redis://127.0.0.1:56380/1', CONTROL_PLANE_BASE_URL: 'http://127.0.0.1:8897', + LINGXILOOP_PUBLIC_ORIGIN: 'http://127.0.0.1:5280', LINGXILOOP_INVITE_BASE_URL: 'http://127.0.0.1:5280', + WUKONG_API_URL: 'http://127.0.0.1:55002', WUKONG_WS_URL: 'ws://127.0.0.1:55201', + R2_ENDPOINT: 'http://127.0.0.1:59001', R2_PUBLIC_BASE: 'http://127.0.0.1:59001/lingxiloop-e2e', + LINGXIOS_CONTROL_PORT: '5282', LINGXIOS_CONTROL_URL: 'http://127.0.0.1:5282', + AGENT_OS_HOMES_ROOT: '.e2e/spa352-runtime-homes', + }, +} : null diff --git a/e2e/acceptance/session-fixture.mjs b/e2e/acceptance/session-fixture.mjs index b5bd7fa06..693e78199 100644 --- a/e2e/acceptance/session-fixture.mjs +++ b/e2e/acceptance/session-fixture.mjs @@ -5,8 +5,9 @@ import { randomUUID } from 'node:crypto' import { spawnSync } from 'node:child_process' import { resolve } from 'node:path' import { serializeSignedCookie } from 'better-call' +import { isolatedSpa } from './profile.mjs' const root = resolve(process.env.ACCEPTANCE_FIXTURE_ROOT ?? '.') -const state = resolve(root,'.e2e/control-state') +const state = resolve(root,isolatedSpa?.controlState ?? '.e2e/control-state') assert.ok(root.startsWith('/workspace/'),'Only the disposable cloud workspace is supported') function sql(statement, parameters) { const script = `import json,sqlite3,sys,pathlib\nv=json.load(sys.stdin)\npaths=list(pathlib.Path(v['state']).rglob('*.sqlite'))\nfor path in paths:\n c=sqlite3.connect(path,timeout=10)\n if c.execute("SELECT name FROM sqlite_master WHERE name='session'").fetchone():\n c.execute(v['sql'],v['parameters']);c.commit();c.close();break\n c.close()\nelse: raise RuntimeError('No disposable D1 session database')\n` @@ -18,20 +19,20 @@ export async function mintSession(role='member') { const token = randomUUID()+randomUUID(), id=randomUUID(), now=Math.floor(Date.now()/1000) sql('INSERT INTO session(id,expiresAt,token,createdAt,updatedAt,userId) VALUES(?,?,?,?,?,?)',[id,now+3600,token,now,now,`e2e-auth-${role}`]) const serialized=await serializeSignedCookie('better-auth.session_token',token,'lingxiloop-e2e-local-auth-secret-000000001',{path:'/',httpOnly:true,sameSite:'lax'}) - return {id,cookie:{name:'better-auth.session_token',value:serialized.split(';')[0].slice('better-auth.session_token='.length),url:'http://127.0.0.1:5180',httpOnly:true,sameSite:'Lax'}} + return {id,cookie:{name:'better-auth.session_token',value:serialized.split(';')[0].slice('better-auth.session_token='.length),url:isolatedSpa?.origin ?? 'http://127.0.0.1:5180',httpOnly:true,sameSite:'Lax'}} } export function expireSession(id) { sql('UPDATE session SET expiresAt=? WHERE id=?',[Math.floor(Date.now()/1000)-60,id]) } export async function messageFacts(text) { assert.match(text,/^SPA acceptance [a-f0-9-]+(?: next)?$/) const {Client}=await import('pg') - const db=new Client({connectionString:'postgresql://postgres:lingxiloop-e2e-local@127.0.0.1:55432/lingxiloop_browser_test'}) + const db=new Client({connectionString:isolatedSpa?.env.DATABASE_URL ?? 'postgresql://postgres:lingxiloop-e2e-local@127.0.0.1:55432/lingxiloop_browser_test'}) await db.connect() try { const {rows}=await db.query("SELECT client_nonce,channel_id,channel_type,user_id,status FROM im_send_acceptances WHERE company_id='e2e-school' AND payload->'content' @> jsonb_build_array(jsonb_build_object('type','text','text',$1::text))",[text]) let imMessages=0 for (const row of rows) { - const response=await fetch('http://127.0.0.1:55001/channel/messagesync',{method:'POST',headers:{'content-type':'application/json',token:'e2e-local-token'}, + const response=await fetch(`${isolatedSpa?.env.WUKONG_API_URL ?? 'http://127.0.0.1:55001'}/channel/messagesync`,{method:'POST',headers:{'content-type':'application/json',token:'e2e-local-token'}, body:JSON.stringify({login_uid:row.user_id,channel_id:row.channel_id,channel_type:row.channel_type,start_message_seq:0,end_message_seq:0,limit:200,pull_mode:0}),signal:AbortSignal.timeout(10000)}) assert.equal(response.status,200) const value=await response.json(), messages=Array.isArray(value)?value:value.messages??[] @@ -41,10 +42,18 @@ export async function messageFacts(text) { } finally {await db.end()} } export function pauseTestDatabase(paused) { - const result=spawnSync('docker',[paused?'pause':'unpause','lingxiloop-e2e-postgres-1'],{encoding:'utf8'}) + const container=isolatedSpa?.databaseContainer ?? 'lingxiloop-e2e-postgres-1' + if (isolatedSpa) { + const inspection=spawnSync('docker',['inspect',container],{encoding:'utf8'}) + assert.equal(inspection.status,0,'Disposable database identity must be inspectable') + const [actual]=JSON.parse(inspection.stdout) + assert.equal(actual.Config.Labels['lingxiloop.acceptance'],'spa352','Disposable database label must match') + assert.deepEqual(actual.NetworkSettings.Ports['5432/tcp'],[{HostIp:'127.0.0.1',HostPort:isolatedSpa.databasePort}],'Disposable database binding must match') + } + const result=spawnSync('docker',[paused?'pause':'unpause',container],{encoding:'utf8'}) assert.equal(result.status,0,'Named disposable database pause/restore must succeed') } export async function setTestWebRunning(running) { - const response=await fetch(`http://127.0.0.1:5185/${running?'start':'stop'}`,{method:'POST',headers:{'x-acceptance-fixture':'local-web-only'},signal:AbortSignal.timeout(45000)}) + const response=await fetch(`http://127.0.0.1:${isolatedSpa?.supervisorPort ?? 5185}/${running?'start':'stop'}`,{method:'POST',headers:{'x-acceptance-fixture':'local-web-only'},signal:AbortSignal.timeout(45000)}) assert.equal(response.status,200,'Only the isolated Web supervisor may stop/start the test API') } diff --git a/e2e/acceptance/wrangler.jsonc b/e2e/acceptance/wrangler.jsonc new file mode 100644 index 000000000..53ad80349 --- /dev/null +++ b/e2e/acceptance/wrangler.jsonc @@ -0,0 +1,29 @@ +{ + "$schema": "../../node_modules/wrangler/config-schema.json", + "name": "lingxiloop-control-spa352", + "main": "../../workers/control-plane/src/index.ts", + "compatibility_date": "2026-09-01", + "compatibility_flags": [ + "nodejs_compat" + ], + "workers_dev": false, + "d1_databases": [ + { + "binding": "DB", + "database_name": "lingxiloop-control-spa352", + "database_id": "00000000-0000-0000-0000-000000000000", + "migrations_dir": "../../workers/control-plane/migrations" + } + ], + "vars": { + "ORIGIN_BASE_URL": "http://127.0.0.1:5281", + "UPTIME_BASE_URL": "http://127.0.0.1:9", + "KOMODO_BASE_URL": "http://127.0.0.1:9", + "KOMODO_TARGETS_JSON": "{}", + "AUTH_ALLOWED_HOSTS": "127.0.0.1:5280,127.0.0.1:8897,localhost:5280,localhost:8897", + "APP_VERSION": "spa352-isolated", + "BETTER_AUTH_SECRET": "lingxiloop-e2e-local-auth-secret-000000001", + "GATEWAY_HMAC_SECRET": "lingxiloop-e2e-local-gateway-secret-00000001", + "TURNSTILE_SECRET_KEY": "1x0000000000000000000000000000000AA" + } +} diff --git a/e2e/admin/start-control.mjs b/e2e/admin/start-control.mjs index 1aa71babc..38d9986db 100644 --- a/e2e/admin/start-control.mjs +++ b/e2e/admin/start-control.mjs @@ -4,13 +4,15 @@ import { mkdir, mkdtemp, rm, rmdir, writeFile } from 'node:fs/promises' import { fileURLToPath } from 'node:url' import path from 'node:path' import { hashPassword } from 'better-auth/crypto' +import { isolatedSpa } from '../acceptance/profile.mjs' const root = fileURLToPath(new URL('../../', import.meta.url)) const environmentFile = path.join(root, '.env.e2e.local') if (existsSync(environmentFile)) process.loadEnvFile(environmentFile) const homework = process.argv.includes('--homework') -const config = fileURLToPath(new URL(homework ? '../homework/wrangler.jsonc' : './wrangler.e2e.jsonc', import.meta.url)) -const state = path.join(root, homework ? '.e2e/homework-control-state' : '.e2e/control-state') +if (homework && isolatedSpa) throw new Error('The isolated SPA profile cannot select homework fixtures') +const config = isolatedSpa ? path.join(root, isolatedSpa.controlConfig) : fileURLToPath(new URL(homework ? '../homework/wrangler.jsonc' : './wrangler.e2e.jsonc', import.meta.url)) +const state = path.join(root, isolatedSpa?.controlState ?? (homework ? '.e2e/homework-control-state' : '.e2e/control-state')) const wrangler = path.join(root, 'node_modules/wrangler/bin/wrangler.js') const env = { ...process.env, WRANGLER_SEND_METRICS: 'false', CI: '1' } const run = (args) => new Promise((resolve, reject) => { @@ -50,5 +52,5 @@ try { } console.log('[e2e] Local control D1 seeded for browser actors and the sacrificial lifecycle account.') if (!process.argv.includes('--seed-only')) { - await run(['dev', '--local', '--config', config, '--persist-to', state, '--ip', '127.0.0.1', '--port', homework ? '8798' : '8797']) + await run(['dev', '--local', '--config', config, '--persist-to', state, '--ip', '127.0.0.1', '--port', String(isolatedSpa?.controlPort ?? (homework ? 8798 : 8797))]) } diff --git a/e2e/local-api.mjs b/e2e/local-api.mjs index f32d148a5..ce86bf87f 100644 --- a/e2e/local-api.mjs +++ b/e2e/local-api.mjs @@ -4,6 +4,7 @@ import { mkdir } from 'node:fs/promises' import { fileURLToPath } from 'node:url' import pg from 'pg' import { S3Client, CreateBucketCommand, PutBucketPolicyCommand } from '@aws-sdk/client-s3' +import { isolatedSpa } from './acceptance/profile.mjs' const root = fileURLToPath(new URL('../', import.meta.url)) const fixtureEnv = new URL('../.env.e2e.local', import.meta.url) @@ -36,6 +37,7 @@ const env = { LINGXIOS_SERVICE_TOKEN: 'lingxiloop-e2e-runtime-service-token', LINGXIOS_R2_BUCKET: '', LINGXIOS_REALTIME_REDIS_URL: '', AGENT_OS_HOMES_ROOT: '.e2e/runtime-homes', + ...isolatedSpa?.env, } const run = (args) => new Promise((resolve, reject) => { const child = spawn(process.execPath, args, { cwd: root, env, stdio: 'inherit', windowsHide: true }) diff --git a/e2e/seed.ts b/e2e/seed.ts index 5eb5e1465..ccd4d33ea 100644 --- a/e2e/seed.ts +++ b/e2e/seed.ts @@ -6,10 +6,11 @@ import { syncStudyRoomMembers } from '../server/src/modules/learning/reporting-r import { seedAdminFixtures } from './admin/seed' import { seedLearningFixtures } from './learning-seed' import { seedNavigationFixtures } from './navigation-seed' +import { isolatedSpa } from './acceptance/profile.mjs' const url = new URL(process.env.DATABASE_URL ?? '') if (!['postgres:', 'postgresql:'].includes(url.protocol) || url.search || url.hash - || url.hostname !== '127.0.0.1' || url.port !== '55432' || url.pathname !== '/lingxiloop_browser_test') { + || url.hostname !== '127.0.0.1' || url.port !== (isolatedSpa?.databasePort ?? '55432') || url.pathname !== '/lingxiloop_browser_test') { throw new Error('Browser fixtures require the dedicated local lingxiloop_browser_test database') } const db = new pg.Client({ connectionString: url.href }) diff --git a/scripts/runtime-acceptance/FAILURE-MODEL.md b/scripts/runtime-acceptance/FAILURE-MODEL.md index 307353cf1..bcd8dee8f 100644 --- a/scripts/runtime-acceptance/FAILURE-MODEL.md +++ b/scripts/runtime-acceptance/FAILURE-MODEL.md @@ -14,3 +14,5 @@ Written before new harness implementation. This harness never changes production - False issue closure: map every issue acceptance item to concrete artifacts or a named remaining blocker; real provider, production canary and Komodo update state remain external gates until executed. - Fanout/tool browser coverage: drive actual native tool parsing and product mention delivery through the public Worker and local HTTP provider. Count unstarted children, root notices and committed actions from durable rows; a retained successful root answer must survive denied child admission. Scope dependency injection may fail only the disposable memory scope lookup, never mandatory authorization or an explicit write. - Soak handoff: a separate evidence-only branch receives initial/hourly/final checkpoints. Publishing uses existing git authorization only, never creates credentials, merges a branch or deploys. A missing/stale heartbeat, dead executor, failed push or missing terminal receipt remains incomplete and must be surfaced at the scheduled follow-up. +- 3.5.2 follow-up must not pause/restart the original 3.5.1 soak or any dependency it uses. Use a separately named compose project, PostgreSQL/Redis/WuKongIM/storage ports, Web/control ports and D1 state. Before pausing PostgreSQL, verify the exact disposable container's acceptance label and loopback port; reject mismatches before mutation. Unknown fixture profile selection must fail closed. +- Full SPA on 3.5.2 means the actual freshly built React entry, local control Worker/D1, signed product gateway and exact published runtime package. Session/captcha, human messaging, provider execution and sandbox capability are distinct qualifications. Probe the configured Worker isolation in a separate process without changing security settings; a namespace failure does not prevent independent SPA session/message recovery checks. diff --git a/scripts/runtime-acceptance/spa-web-supervisor.mjs b/scripts/runtime-acceptance/spa-web-supervisor.mjs index 0857545da..4afd2441c 100644 --- a/scripts/runtime-acceptance/spa-web-supervisor.mjs +++ b/scripts/runtime-acceptance/spa-web-supervisor.mjs @@ -3,6 +3,7 @@ import { spawn } from 'node:child_process' import { createServer } from 'node:http' import { openSync, appendFileSync, mkdirSync } from 'node:fs' import { resolve } from 'node:path' +import { isolatedSpa } from '../../e2e/acceptance/profile.mjs' const root=resolve(process.env.ACCEPTANCE_FIXTURE_ROOT??'.') assert.ok(root.startsWith('/workspace/')) const output=resolve(root,'.e2e/spa-web-restart') @@ -22,11 +23,11 @@ async function stop() { async function start() { if(child) return child=spawn(process.execPath,['e2e/local-api.mjs','--api-only'],{cwd:root,detached:true,stdio:['ignore',log,log], - env:{PATH:process.env.PATH,HOME:process.env.HOME}}) + env:{PATH:process.env.PATH,HOME:process.env.HOME,...(isolatedSpa ? {E2E_SPA_ISOLATED:'1'} : {})}}) record('starting') for(let attempt=0;attempt<120;attempt++) { assert.equal(child.exitCode,null,'Test Web exited during startup') - if(await fetch('http://127.0.0.1:5181/api/readyz',{signal:AbortSignal.timeout(1000)}).then(r=>r.ok).catch(()=>false)) {record('ready');return} + if(await fetch(`http://127.0.0.1:${isolatedSpa?.apiPort ?? 5181}/api/readyz`,{signal:AbortSignal.timeout(1000)}).then(r=>r.ok).catch(()=>false)) {record('ready');return} await new Promise(resolve=>setTimeout(resolve,250)) } throw new Error('Test Web readiness timed out') @@ -37,5 +38,5 @@ const server=createServer(async(req,res)=>{ try {await (req.url==='/stop'?stop():start());res.writeHead(200).end('ok')} catch {res.writeHead(500).end('fixture lifecycle failed')} }) -server.listen(5185,'127.0.0.1',()=>record('supervisor-ready')) +server.listen(isolatedSpa?.supervisorPort ?? 5185,'127.0.0.1',()=>record('supervisor-ready')) for(const signal of ['SIGTERM','SIGINT']) process.on(signal,async()=>{if(stopping)return;stopping=true;server.close();await stop();process.exit(0)})