autonomous-sdlc-harness 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/NOTICE +7 -0
- package/README.md +24 -0
- package/dist/cli.js +194 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/config.js +561 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/daemon.js +791 -0
- package/dist/commands/daemon.js.map +1 -0
- package/dist/commands/doctor.js +336 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/init.js +2023 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/registry.js +42 -0
- package/dist/commands/registry.js.map +1 -0
- package/dist/config/check.js +505 -0
- package/dist/config/check.js.map +1 -0
- package/dist/config/io.js +177 -0
- package/dist/config/io.js.map +1 -0
- package/dist/config/model.js +406 -0
- package/dist/config/model.js.map +1 -0
- package/dist/core/errors.js +71 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/git.js +537 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/json.js +125 -0
- package/dist/core/json.js.map +1 -0
- package/dist/core/layerCoverage.js +141 -0
- package/dist/core/layerCoverage.js.map +1 -0
- package/dist/core/layerGapRemedy.js +62 -0
- package/dist/core/layerGapRemedy.js.map +1 -0
- package/dist/core/nameList.js +23 -0
- package/dist/core/nameList.js.map +1 -0
- package/dist/core/paths.js +153 -0
- package/dist/core/paths.js.map +1 -0
- package/dist/core/prompt.js +206 -0
- package/dist/core/prompt.js.map +1 -0
- package/dist/core/repoPaths.js +55 -0
- package/dist/core/repoPaths.js.map +1 -0
- package/dist/core/report.js +150 -0
- package/dist/core/report.js.map +1 -0
- package/dist/core/templating.js +88 -0
- package/dist/core/templating.js.map +1 -0
- package/dist/core/writer.js +479 -0
- package/dist/core/writer.js.map +1 -0
- package/dist/daemon/backend.js +180 -0
- package/dist/daemon/backend.js.map +1 -0
- package/dist/daemon/units.js +380 -0
- package/dist/daemon/units.js.map +1 -0
- package/dist/detect/nestedApplication.js +79 -0
- package/dist/detect/nestedApplication.js.map +1 -0
- package/dist/detect/presets.js +2033 -0
- package/dist/detect/presets.js.map +1 -0
- package/dist/detect/signals.js +1368 -0
- package/dist/detect/signals.js.map +1 -0
- package/dist/doctor/checks.js +3530 -0
- package/dist/doctor/checks.js.map +1 -0
- package/dist/generators/claudeContext.js +588 -0
- package/dist/generators/claudeContext.js.map +1 -0
- package/dist/generators/githooks.js +446 -0
- package/dist/generators/githooks.js.map +1 -0
- package/dist/generators/harnessConfig.js +632 -0
- package/dist/generators/harnessConfig.js.map +1 -0
- package/dist/generators/notifications.js +191 -0
- package/dist/generators/notifications.js.map +1 -0
- package/dist/generators/outerLoopScripts.js +165 -0
- package/dist/generators/outerLoopScripts.js.map +1 -0
- package/dist/generators/permissionProfile.js +1172 -0
- package/dist/generators/permissionProfile.js.map +1 -0
- package/dist/generators/projectSettings.js +322 -0
- package/dist/generators/projectSettings.js.map +1 -0
- package/dist/generators/repoRoot.js +417 -0
- package/dist/generators/repoRoot.js.map +1 -0
- package/dist/generators/scripts.js +557 -0
- package/dist/generators/scripts.js.map +1 -0
- package/dist/generators/stateDir.js +221 -0
- package/dist/generators/stateDir.js.map +1 -0
- package/dist/machine/paths.js +111 -0
- package/dist/machine/paths.js.map +1 -0
- package/dist/machine/plugins.js +224 -0
- package/dist/machine/plugins.js.map +1 -0
- package/dist/machine/registry.js +330 -0
- package/dist/machine/registry.js.map +1 -0
- package/package.json +23 -0
- package/scripts/README.md +13 -0
- package/scripts/daemon/launchd.plist.template +59 -0
- package/scripts/daemon/systemd.service.template +58 -0
- package/templates/README.md +15 -0
- package/templates/claude/CLAUDE.md +54 -0
- package/templates/claude/README.md +5 -0
- package/templates/claude/context/api.md +29 -0
- package/templates/claude/context/conventions.md +23 -0
- package/templates/claude/context/data-layer.md +28 -0
- package/templates/claude/context/data-storage.md +29 -0
- package/templates/claude/context/docs-catalog.md +29 -0
- package/templates/claude/context/domain.md +28 -0
- package/templates/claude/context/layer.md +20 -0
- package/templates/claude/context/module.md +30 -0
- package/templates/claude/context/package.md +29 -0
- package/templates/claude/context/presentation.md +32 -0
- package/templates/claude/context/state-slices.md +28 -0
- package/templates/claude/context/tests.md +28 -0
- package/templates/claude/harness-task-offer.md +58 -0
- package/templates/claude/push-notify.env.example +21 -0
- package/templates/claude/qa-accounts.env.example +38 -0
- package/templates/claude/qa_test_scenarios.md +110 -0
- package/templates/claude/settings.autonomous.json +93 -0
- package/templates/claude/settings.autonomous.qa.json +36 -0
- package/templates/githooks/README.md +3 -0
- package/templates/githooks/pre-push +72 -0
- package/templates/repo/README.md +3 -0
- package/templates/repo/gitattributes +16 -0
- package/templates/repo/gitignore +61 -0
- package/templates/repo/gitignore.qa +25 -0
- package/templates/repo/mcp.json +17 -0
- package/templates/scripts/README.md +5 -0
- package/templates/scripts/autonomous-format-stream.sh +95 -0
- package/templates/scripts/autonomous-notify.sh +337 -0
- package/templates/scripts/autonomous-watcher.sh +3087 -0
- package/templates/scripts/cleanup-merged-worktrees.sh +327 -0
- package/templates/scripts/commit-on-branch.sh +288 -0
- package/templates/scripts/create-worktree.sh +360 -0
- package/templates/scripts/deploy.sh +47 -0
- package/templates/scripts/lib/harness-run-lib.sh +1481 -0
- package/templates/scripts/push-branch.sh +140 -0
- package/templates/scripts/refresh-branch.sh +244 -0
- package/templates/scripts/restart-watcher.sh +401 -0
- package/templates/scripts/scratch-run.sh +302 -0
- package/templates/scripts/setup-worktree.sh +262 -0
- package/templates/scripts/start-dev-server.sh +99 -0
- package/templates/scripts/test.sh +50 -0
- package/templates/scripts/typecheck.sh +50 -0
- package/templates/state-dir/README-root.md +13 -0
- package/templates/state-dir/README.md +9 -0
- package/templates/state-dir/architecture_branch_review_point_reviews/README.md +9 -0
- package/templates/state-dir/architecture_branch_reviews/README.md +9 -0
- package/templates/state-dir/architecture_reviews/README.md +9 -0
- package/templates/state-dir/architecture_user_review_reviews/README.md +9 -0
- package/templates/state-dir/autonomous_inbox/README.md +9 -0
- package/templates/state-dir/autonomous_logs/README.md +9 -0
- package/templates/state-dir/branch_statistics/README.md +9 -0
- package/templates/state-dir/business_parity_branch_review_point_reviews/README.md +9 -0
- package/templates/state-dir/business_parity_branch_reviews/README.md +9 -0
- package/templates/state-dir/business_parity_reviews/README.md +9 -0
- package/templates/state-dir/business_parity_user_review_reviews/README.md +9 -0
- package/templates/state-dir/clarification_digests/README.md +9 -0
- package/templates/state-dir/clarifications/README.md +9 -0
- package/templates/state-dir/code_reviews/README.md +9 -0
- package/templates/state-dir/dispatch_additions/README.md +19 -0
- package/templates/state-dir/docs_catalog/README.md +9 -0
- package/templates/state-dir/flow_progress/README.md +9 -0
- package/templates/state-dir/improvement_observations/README.md +19 -0
- package/templates/state-dir/improvement_suggestions.md +29 -0
- package/templates/state-dir/lessons.md +23 -0
- package/templates/state-dir/qa_review_point_reviews/README.md +9 -0
- package/templates/state-dir/qa_reviews/README.md +9 -0
- package/templates/state-dir/review_plan_point_reviews/README.md +9 -0
- package/templates/state-dir/review_plan_reviews/README.md +9 -0
- package/templates/state-dir/scratch/README.md +11 -0
- package/templates/state-dir/skeptic_review_plan_reviews/README.md +9 -0
- package/templates/state-dir/skeptic_review_point_reviews/README.md +9 -0
- package/templates/state-dir/skeptic_reviews/README.md +9 -0
- package/templates/state-dir/story_plans/README.md +9 -0
- package/templates/state-dir/task_plan_point_reviews/README.md +9 -0
- package/templates/state-dir/task_plan_reviews/README.md +9 -0
- package/templates/state-dir/task_plans/README.md +9 -0
- package/templates/state-dir/task_prompts/README.md +9 -0
- package/templates/state-dir/ui_test_plan_reviews/README.md +9 -0
- package/templates/state-dir/ui_test_plans/README.md +9 -0
- package/templates/state-dir/user_review_fix_plan_point_reviews/README.md +9 -0
- package/templates/state-dir/user_reviews/README.md +9 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwFG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EACL,WAAW,EACX,UAAU,EACV,oBAAoB,EACpB,eAAe,EACf,QAAQ,EACR,aAAa,EACb,eAAe,EACf,qBAAqB,GAItB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,uBAAuB,GAExB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,gBAAgB,GAEjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,wBAAwB,EACxB,kBAAkB,EAClB,uBAAuB,GAExB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAA8C,MAAM,gCAAgC,CAAC;AAChH,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,UAAU,GAGX,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,eAAe,GAKhB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG1D,8FAA8F;AAC9F,MAAM,OAAO,GACX,yGAAyG,CAAC;AAE5G,4EAA4E;AAC5E,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,6FAA6F;AAC7F,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAE/C,mGAAmG;AACnG,MAAM,eAAe,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAEnD;;;;;;;;;;;;;;GAcG;AACH,MAAM,yBAAyB,GAAG,IAAI,WAAW,IAAI,oBAAoB,EAAE,CAAC;AAE5E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,GAAG,GAAG,6BAA6B,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,SAAS,GAAG,GAAG,GAAG,OAAO,CAAC;AAEhC,mFAAmF;AACnF,MAAM,cAAc,GAAG,GAAG,GAAG,SAAS,CAAC;AAEvC;;;;;;;GAOG;AACH,MAAM,sBAAsB,GAAG,GAAG,GAAG,iBAAiB,CAAC;AAEvD;;;;GAIG;AACH,MAAM,6BAA6B,GAAG,GAAG,cAAc,mBAAmB,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,YAAY,GAAG,QAAQ,CAAC;AAE9B;;;;;;;GAOG;AACH,MAAM,SAAS,GAAG,QAAQ,CAAC;AAC3B,MAAM,uBAAuB,GAAG,GAAG,SAAS,2BAA2B,UAAU,EAAE,CAAC;AACpF,MAAM,kBAAkB,GAAG,GAAG,SAAS,KAAK,yBAAyB,GAAG,CAAC;AAEzE,4GAA4G;AAC5G,MAAM,yBAAyB,GAAG,GAAG,GAAG,oBAAoB,CAAC;AAE7D,0GAA0G;AAC1G,MAAM,kBAAkB,GAAG,GAAG,GAAG,2BAA2B,CAAC;AAE7D;;;;;;;GAOG;AACH,MAAM,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;AACxE,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AAEjD,wEAAwE;AACxE,MAAM,cAAc,GAAG,aAAa,CAAC;AAErC,iGAAiG;AACjG,MAAM,aAAa,GAAG,YAAY,CAAC;AAEnC;;;GAGG;AACH,MAAM,YAAY,GAAG,WAAW,CAAC;AAEjC,oGAAoG;AACpG,MAAM,cAAc,GAAG,aAAa,CAAC;AAErC;;;;;;;;GAQG;AACH,MAAM,YAAY,GAAG,WAAW,CAAC;AACjC,MAAM,eAAe,GAAG,cAAc,CAAC;AAEvC,uGAAuG;AACvG,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;AAE7C,kGAAkG;AAClG,MAAM,aAAa,GAAG,YAAY,CAAC;AAEnC;;;;;;;GAOG;AACH,MAAM,oBAAoB,GAAG,0CAA0C,CAAC;AAsIxE;;;;;;;GAOG;AACH,SAAS,WAAW,CAClB,IAAO,EACP,GAAG,eAEsD;IAEzD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,YAAY,GAA0B,WAAW,CAAC;IACtD;QACE,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,0FAA0F;KACpG;IACD;QACE,GAAG,EAAE,aAAa;QAClB,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,WAAW,eAAe,uEAAuE;KAC3G;IACD;QACE,GAAG,EAAE,QAAQ;QACb,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,QAAQ;QACrB,OAAO,EAAE,+CAA+C;QACxD,WAAW,EAAE,kBAAkB;QAC/B,eAAe,EAAE,IAAI;KACtB;IACD;QACE,GAAG,EAAE,QAAQ;QACb,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,OAAO;QACpB,OAAO,EAAE,0EAA0E;QACnF,WAAW,EAAE,QAAQ;QACrB,eAAe,EAAE,IAAI;KACtB;IACD;QACE,GAAG,EAAE,aAAa;QAClB,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,QAAQ;QACrB,OAAO,EAAE,mEAAmE;QAC5E,WAAW,EAAE,aAAa;KAC3B;IACD;QACE,GAAG,EAAE,eAAe;QACpB,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,UAAU;QACvB,OAAO,EAAE,uEAAuE;QAChF,WAAW,EAAE,eAAe;KAC7B;IACD;QACE,GAAG,EAAE,UAAU;QACf,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,OAAO;QACpB,OAAO,EAAE,6DAA6D;QACtE,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,oCAAoC,EAAE,WAAW,EAAE,WAAW,EAAE;IACpH;QACE,GAAG,EAAE,UAAU;QACf,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,UAAU;QACvB,OAAO,EAAE,6DAA6D;QACtE,WAAW,EAAE,WAAW;KACzB;IACD;QACE,GAAG,EAAE,MAAM;QACX,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,iCAAiC;QAC1C,WAAW,EAAE,aAAa;KAC3B;IACD;QACE,GAAG,EAAE,UAAU;QACf,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,OAAO;QACpB,OAAO,EAAE,+DAA+D;QACxE,WAAW,EAAE,WAAW;KACzB;IACD;QACE,GAAG,EAAE,QAAQ;QACb,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,oCAAoC;QAC7C,WAAW,EAAE,eAAe;KAC7B;IACD;QACE,GAAG,EAAE,eAAe;QACpB,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,QAAQ;QACrB,OAAO,EAAE,6EAA6E;QACtF,WAAW,EAAE,0BAA0B;KACxC;IACD;QACE,GAAG,EAAE,wBAAwB;QAC7B,IAAI,EAAE,4BAA4B;QAClC,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,OAAO;QACpB,OAAO,EAAE,oFAAoF;KAC9F;IACD;QACE,GAAG,EAAE,aAAa;QAClB,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,gBAAgB;QAC7B,OAAO,EAAE,yEAAyE;KACnF;IACD,oFAAoF;IACpF,2EAA2E;IAC3E;QACE,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,gBAAgB,eAAe,+BAA+B,eAAe,YAAY;KACnG;IACD;QACE,GAAG,EAAE,WAAW;QAChB,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,4DAA4D;KACtE;IACD;QACE,GAAG,EAAE,eAAe;QACpB,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,8DAA8D;KACxE;IACD;QACE,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,OAAO;QACpB,OAAO,EAAE,4EAA4E;KACtF;CACO,CAAC,CAAC;AAEZ;;;;GAIG;AACH,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAS,2BAA2B,CAAC,KAAgB;IACnD,MAAM,OAAO,GAAwF,EAAE,CAAC;IACxG,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC;QACrC,IAAI,SAAS,KAAK,SAAS;YAAE,SAAS;QACtC,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,KAAK,IAAI,CAAC;QACxD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;YAC3F,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;IACpH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAE3C,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;IACjC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,eAAe,KAAK,CAAC,SAAS,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1G,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7F,MAAM,cAAc,GAClB,QAAQ,CAAC,MAAM,KAAK,CAAC;QACnB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,0IAA0I,CAAC;IACtN,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,eAAe,eAAe,8CAA8C,GAAG,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,sCAAsC,6HAA6H,cAAc,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,uEAAuE,SAAS,mBAAmB,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,uIAAuI,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,eAAe,WAAW,EAAE,CAAC;AACruB,CAAC;AAED,gGAAgG;AAChG,SAAS,eAAe;IACtB,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAClC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE,CACxF,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9E,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,KAAM,WAAW,CAAC,KAAK,CAAY,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AACrH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,GAAsB,MAAM,CAAC,MAAM,CAAC;IAClD,oCAAoC;IACpC,GAAG,eAAe,EAAE;CACrB,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH;;;;;;;;;;;;GAYG;AACH,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,YAAY,CACpB,iBAAiB,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,qBAAqB,eAAe,EAAE,EAAE,CACjG,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,IAAuB;IAC7C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAiB,CAAC;IAE1C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAW,CAAC;QACpC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/D,MAAM,WAAW,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3E,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAEzE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,YAAY,CACpB,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;gBACnB,CAAC,CAAC,wBAAwB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,SAAS,oCAAoC;gBACvG,CAAC,CAAC,6BAA6B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,SAAS,iGAAiG,CACvK,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,WAAW,KAAK,SAAS;gBAAE,MAAM,IAAI,YAAY,CAAC,SAAS,IAAI,wBAAwB,CAAC,CAAC;YAC7F,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,IAAI,KAAK,GAAG,WAAW,CAAC;QACxB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,IAAI,CAAC,CAAC;YACX,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;YAAE,MAAM,IAAI,YAAY,CAAC,SAAS,IAAI,aAAa,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAChH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,mGAAmG;IACnG,gGAAgG;IAChG,6FAA6F;IAC7F,+FAA+F;IAC/F,gGAAgG;IAChG,2FAA2F;IAC3F,EAAE;IACF,8FAA8F;IAC9F,iGAAiG;IACjG,8FAA8F;IAC9F,gGAAgG;IAChG,wCAAwC;IACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAExC,gGAAgG;IAChG,iGAAiG;IACjG,IAAI,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,YAAY,CACpB,SAAS,YAAY,QAAQ,eAAe,4IAA4I,CACzL,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;QAClC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxE,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;QAChC,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC;QACxC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;QAChC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC;QACpC,aAAa,EAAE,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC;QAC5C,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QACtB,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;KAClB,CAAC;AACjB,CAAC;AAED,+FAA+F;AAC/F,SAAS,aAAa,CAAC,YAAoB;IACzC,IAAI,MAAuC,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,4FAA4F;QAC5F,6FAA6F;QAC7F,WAAW;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IACrH,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACpE,CAAC;AAED,kFAAkF;AAClF,SAAS,cAAc;IACrB,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,cAAc,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,YAAY,CACpB,gDAAgD,YAAY,8JAA8J,EAC1N,IAAI,CAAC,QAAQ,CACd,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,6BAA6B,CAAC,QAAgB;IACrD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QAAE,OAAO;IAC9D,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,KAAK,cAAc,EAAE;QAAE,OAAO;IAE7E,MAAM,IAAI,YAAY,CACpB,wDAAwD,SAAS,8CAA8C,QAAQ,YAAY,oBAAoB,UAAU,YAAY,iHAAiH,eAAe,qFAAqF,SAAS,qEAAqE,CACjd,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,oBAAoB,CAAC,KAAyB;IACrD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO;IAChC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAAE,OAAO;IAEtD,MAAM,IAAI,YAAY,CACpB,GAAG,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,2ZAA2Z,CACtc,CAAC;AACJ,CAAC;AAkCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,SAAS,uBAAuB,CAAC,GAAmB,EAAE,KAAgB,EAAE,IAAY;IAClF,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC3B,MAAM,cAAc,GAAG,GAAG,aAAa,4FAA4F,IAAI,EAAE,CAAC;QAC1I,KAAK,CAAC,IAAI,CACR,OAAO;YACL,CAAC,CAAC,GAAG,cAAc,0FACf,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,wBACvD,EAAE;YACJ,CAAC,CAAC,cAAc,CACnB,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAClB,uFAAuF,CAAC;IAC1F,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CACR,mQAAmQ,cAAc,wEAAwE,CAC1V,CAAC;IACJ,CAAC;SAAM,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CACR,sIAAsI,cAAc,EAAE,CACvJ,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,SAAS,uBAAuB,CAAC,GAAmB,EAAE,KAAgB;IACpE,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAChC,gGAAgG;QAChG,iGAAiG;QACjG,+FAA+F;QAC/F,kDAAkD;QAClD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;IACtG,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB;QAAE,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE7E,MAAM,QAAQ,GACZ,KAAK,CAAC,OAAO,KAAK,IAAI;QACtB,QAAQ,CACN;YACE,QAAQ,EAAE,wBAAwB,GAAG,CAAC,GAAG,gCAAgC;YACzE,aAAa,EAAE,KAAK;YACpB,IAAI,EAAE,aAAa;YACnB,QAAQ,EAAE,mCAAmC;SAC9C,EACD,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CACzC,CAAC;IAEJ,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,YAAY,CACpB,GAAG,KAAK,CAAC,OAAO,0MAA0M,aAAa,qCAAqC,SAAS,oEAAoE,CAC1V,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACrB,4FAA4F;QAC5F,+FAA+F;QAC/F,gGAAgG;QAChG,8FAA8F;QAC9F,6FAA6F;QAC7F,6FAA6F;QAC7F,gGAAgG;QAChG,kDAAkD;QAClD,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,IAAI,EAAE,CAAC,CAAC;QAC5D,OAAO;YACL,IAAI;YACJ,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,4DAA4D,aAAa,8BAA8B,IAAI,yMAAyM;aACrT;SACF,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAExB,iGAAiG;IACjG,+FAA+F;IAC/F,mGAAmG;IACnG,uCAAuC;IACvC,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY;QAAE,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3E,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,+BAA+B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7D,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,IAAI;QACb,KAAK,EAAE;YACL,yBAAyB,OAAO,CAAC,IAAI,gTAAgT;SACtV;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,SAAS,oBAAoB,CAAC,GAAmB,EAAE,MAAwB;IACzE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAE3D,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IAC5D,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,GAAG,CAAC,MAAM,CAAC,EAAE,CACX,MAAM,CAAC,OAAO;YACZ,CAAC,CAAC,8DAA8D,oBAAoB,2KAA2K;YAC/P,CAAC,CAAC,uFAAuF,oBAAoB,oQAAoQ,CACpX,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO;QACL,iEAAiE,MAAM,CAAC,MAAM,8aAA8a,oBAAoB,KAAK;KACthB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAS,WAAW,CAAC,GAAmB;IACtC,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;IAC3D,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAE5C,OAAO,OAAO,CACZ;QACE,QAAQ,EAAE,0IAA0I,eAAe,EAAE,GAAG;QACxK,IAAI,EAAE,cAAc;QACpB,YAAY,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM;KACjC,EACD,SAAS,CACV,CAAC;AACJ,CAAC;AA6BD;;;;;;;;;GASG;AACH,SAAS,oBAAoB,CAAC,MAAqB;IACjD,OAAO;QACL,GAAG,IAAI,GAAG,CACR,CAAC,uBAAuB,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAC3G;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,mBAAmB,CAAC,QAAgB,EAAE,YAAoB;IACjE,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,kGAAkG;AAClG,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAC3F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAS,mBAAmB,CAC1B,GAAmB,EACnB,KAAgB,EAChB,QAAgB,EAChB,MAAqB;IAErB,mGAAmG;IACnG,kGAAkG;IAClG,iGAAiG;IACjG,4DAA4D;IAC5D,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,iBAAiB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3F,MAAM,KAAK,GAAG,EAAE,eAAe,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAEjG,oGAAoG;IACpG,mGAAmG;IACnG,iCAAiC;IACjC,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI;QAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC;IACtG,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC;IAEpG,8FAA8F;IAC9F,2DAA2D;IAC3D,EAAE;IACF,kGAAkG;IAClG,mGAAmG;IACnG,+EAA+E;IAC/E,iGAAiG;IACjG,+FAA+F;IAC/F,kGAAkG;IAClG,kGAAkG;IAClG,wFAAwF;IACxF,kGAAkG;IAClG,mGAAmG;IACnG,8FAA8F;IAC9F,oGAAoG;IACpG,4FAA4F;IAC5F,oGAAoG;IACpG,4FAA4F;IAC5F,IACE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK;QAChB,iBAAiB,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM;QAC7C,KAAK,CAAC,eAAe;QACrB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAC7B,CAAC;QACD,8FAA8F;QAC9F,+FAA+F;QAC/F,uEAAuE;QACvE,OAAO;YACL,KAAK,EAAE,UAAU;YACjB,aAAa,EAAE,IAAI;YACnB,KAAK,EAAE;gBACL,oDAAoD,eAAe,qEAAqE,cAAc,+BAA+B;aACtL;YACD,GAAG,KAAK;SACT,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;IAE3D,gGAAgG;IAChG,kGAAkG;IAClG,kGAAkG;IAClG,0FAA0F;IAC1F,4FAA4F;IAC5F,+CAA+C;IAC/C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,KAAK,EAAE,UAAU;YACjB,aAAa,EAAE,KAAK;YACpB,KAAK,EAAE;gBACL,wIAAwI,eAAe,oCAAoC;aAC5L;YACD,GAAG,KAAK;SACT,CAAC;IACJ,CAAC;IAED,kGAAkG;IAClG,8EAA8E;IAC9E,MAAM,QAAQ,GAAG,QAAQ,CACvB;QACE,QAAQ,EAAE,OAAO,eAAe,4KAA4K,SAAS,2BAA2B;QAChP,aAAa,EAAE,IAAI;QACnB,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,mCAAmC;KAC9C,EACD,SAAS,CACV,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC;AAClG,CAAC;AAQD;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAS,oBAAoB,CAAC,GAAmB,EAAE,KAAgB;IACjE,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;IAC3D,MAAM,OAAO,GACX,KAAK,CAAC,aAAa,KAAK,IAAI;QAC5B,QAAQ,CACN;YACE,QAAQ,EAAE,gDAAgD;YAC1D,aAAa,EAAE,KAAK;YACpB,IAAI,EAAE,kBAAkB;YACxB,QAAQ,EAAE,oCAAoC;SAC/C,EACD,SAAS,CACV,CAAC;IAEJ,MAAM,OAAO,GACX,KAAK,CAAC,OAAO;QACb,CAAC,OAAO;YACN,CAAC,CAAC,OAAO,CACL;gBACE,QAAQ,EAAE,iFAAiF,uBAAuB,GAAG;gBACrH,IAAI,EAAE,aAAa;aACpB,EACD,SAAS,CACV;YACH,CAAC,CAAC,SAAS,CAAC,CAAC;IAEjB,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACpE,CAAC;AAED,mEAAmE;AACnE,SAAS,aAAa,CAAC,SAA0B;IAC/C,IAAI,SAAS,CAAC,aAAa,KAAK,gBAAgB,EAAE,CAAC;QACjD,OAAO,2BAA2B,SAAS,CAAC,MAAM,uDAAuD,CAAC;IAC5G,CAAC;IACD,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;IACpF,OAAO,kBAAkB,SAAS,CAAC,MAAM,2BAA2B,SAAS,CAAC,aAAa,GAAG,QAAQ,GAAG,CAAC;AAC5G,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,SAAS,iBAAiB,CACxB,OAAsB,EACtB,SAA0B,EAC1B,OAAmC;IAEnC,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI;QACjC,CAAC,CAAC,mEAAmE;QACrE,CAAC,CAAC,yDAAyD,CAAC;IAE9D,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,kBAAkB,CAC9B;YACE,MAAM,EAAE,OAAO,CAAC,aAAa;YAC7B,QAAQ,EAAE,OAAO,CAAC,eAAe;YACjC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;SAC3C,EACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAClD,CAAC;QACF,MAAM,MAAM,GACV,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;YAC/C,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC,MAAM;YACnF,CAAC,CAAC,CAAC,CAAC;QACR,MAAM,SAAS,GACb,MAAM,KAAK,CAAC;YACV,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,MAAM,MAAM,kBAAkB,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,eACnD,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KACxB,6CAA6C,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,uBACvE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MACxB,EAAE,CAAC;QACT,OAAO,GAAG,KAAK,GAAG,SAAS,EAAE,CAAC;IAChC,CAAC;IAED,oGAAoG;IACpG,mGAAmG;IACnG,gGAAgG;IAChG,0FAA0F;IAC1F,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IACtC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,oEAAoE,aAAa,CACtF,SAAS,CAAC,OAAO,CAClB,QAAQ,cAAc,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,kBAAkB,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC;IACxG,OAAO,kCAAkC,cAAc,QAAQ,KAAK,gBAAgB,SAAS,4BAA4B,CAAC;AAC5H,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,oBAAoB,GAAkD,MAAM,CAAC,MAAM,CAAC;IACxF,WAAW;IACX,MAAM;IACN,WAAW;IACX,OAAO;IACP,YAAY;IACZ,QAAQ;CACA,CAAC,CAAC;AAEZ,8FAA8F;AAC9F,SAAS,YAAY,CAAC,GAAqC;IACzD,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC;AACnE,CAAC;AAED,wGAAwG;AACxG,MAAM,eAAe,GAAG,kDAAkD,CAAC;AAE3E;;;;;;;;;;;GAWG;AACH,SAAS,eAAe,CAAC,OAKxB;IACC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACzD,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;IAClC,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,cAAc,CAAC,OAKvB;IACC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACnD,MAAM,IAAI,GAAG,GAAG,OAAO,OAAO,OAAO,CAAC,UAAU,KAAK,CAAC;IACtD,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAExE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,oBAAoB,CAAC;QAC3E,OAAO,GAAG,IAAI,IAAI,QAAQ,qCAAqC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC3F,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACjC,OAAO,GAAG,IAAI,IAAI,QAAQ,qCAAqC,OAAO,CAAC,IAAI,sFAAsF,CAAC;IACpK,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IACzE,MAAM,UAAU,GACd,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,QAAQ,iDAAiD,CAAC;IAC5G,OAAO,GAAG,IAAI,IAAI,IAAI,eAAe,OAAO,CAAC,IAAI,mBAAmB,UAAU,EAAE,CAAC;AACnF,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,mBAAmB,CAAC,OAM5B;IACC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC7D,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC;IACxE,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnF,MAAM,OAAO,GAAG,KAAK;QACnB,CAAC,CAAC,YAAY,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,6CAA6C;QACtG,CAAC,CAAC,uFAAuF,CAAC;IAC5F,OAAO,KAAK,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,0EAA0E,OAAO,EAAE,CAAC;AAC/H,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,kBAAkB,CAAC,OAM3B;IACC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC9D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACzF,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAEpE,2FAA2F;QAC3F,4FAA4F;QAC5F,mBAAmB;QAEnB,6FAA6F;QAC7F,6FAA6F;QAC7F,IAAI,UAAU,KAAK,SAAS,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1D,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,OAAO,UAAU,mEACzB,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oCAClC,gCAAgC,CACjC,CAAC;YACF,SAAS;QACX,CAAC;QAED,8FAA8F;QAC9F,+FAA+F;QAC/F,+FAA+F;QAC/F,0DAA0D;QAC1D,IAAI,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,OAAO,UAAU,mDACzB,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oCAClC,8DAA8D,mBAAmB,CAAC;gBAChF,QAAQ;gBACR,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,GAAG,EAAE,UAAU;gBACf,KAAK;gBACL,MAAM;aACP,CAAC,EAAE,CACL,CAAC;YACF,SAAS;QACX,CAAC;QAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,eAAe,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACvG,IAAI,OAAO,CAAC,UAAU,IAAI,UAAU,KAAK,OAAO,CAAC,UAAU,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBACxF,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,4FAA4F;gBAC5F,8FAA8F;gBAC9F,gDAAgD;gBAChD,MAAM,OAAO,GACX,IAAI,KAAK,SAAS;oBAChB,CAAC,CAAC,oBAAoB,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,SAAS,OAAO,CAAC,IAAI,8DAA8D;oBAC5I,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc;wBAC5B,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,wFAAwF;wBAC3G,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,mCACf,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,OACtD,wDAAwD,CAAC;gBACjE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,OAAO,UAAU,wBAAwB,OAAO,EAAE,CAAC,CAAC;YAC3E,CAAC;YACD,SAAS;QACX,CAAC;QAED,iGAAiG;QACjG,4DAA4D;QAC5D,IAAI,UAAU,KAAK,SAAS;YAAE,SAAS;QACvC,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,OAAO,UAAU,uEAAuE,CACnG,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAoBD,+FAA+F;AAC/F,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,QAAQ,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;AAC3E,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,SAAS,sBAAsB,CAAC,QAAgB,EAAE,KAAgB;IAChE,kGAAkG;IAClG,wCAAwC;IACxC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAEhF,+FAA+F;IAC/F,+FAA+F;IAC/F,gFAAgF;IAChF,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IACzC,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QACxD,+FAA+F;QAC/F,+FAA+F;QAC/F,gGAAgG;QAChG,+FAA+F;QAC/F,sFAAsF;QACtF,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1D,OAAO;gBACL,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,GAAG,eAAe,kBAAkB,MAAM,CAAC,IAAI,oHAAoH,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,kFAAkF,YAAY,uEAAuE;aAC/X,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC/C,CAAC,CAAC,iCAAiC;QACnC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC;YACrB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,kCAAkC,CAAC;IACzC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,0FAA0F;QAC1F,YAAY;QACZ,OAAO;YACL,MAAM,EAAE,GAAG;YACX,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,GAAG,eAAe,mBAAmB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,SAAS,wIAAwI,SAAS,qJAAqJ,YAAY,uEAAuE;SACtd,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE,QAAQ;QAChB,8FAA8F;QAC9F,iEAAiE;QACjE,IAAI,EAAE,0BAA0B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,iBAAiB,eAAe,2EAA2E,YAAY,8BAA8B,YAAY,8CAA8C;KAC1Q,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,mBAAmB,CAAC,GAAmB,EAAE,QAAgB;IAChE,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IACvD,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAC5D,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AACvC,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAS,YAAY,CAAC,QAAgB,EAAE,MAAqB;IAC3D,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACtF,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAExD,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/G,OAAO,CACL,GAAG,SAAS,CAAC,MAAM,WAAW,UAAU,CAAC,MAAM,+BAA+B,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,4BAA4B,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,sBAAsB,QAAQ,CAAC,SAAS,CAAC,+HAA+H;QACxU,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,GAAG,IAAI,MAAM,OAAO,cAAc,kHAAkH,CAC9L,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,KAAK,UAAU,GAAG,CAAC,GAAmB;IACpC,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAEvC,mGAAmG;IACnG,oGAAoG;IACpG,gGAAgG;IAChG,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE5F,iGAAiG;IACjG,gGAAgG;IAChG,kGAAkG;IAClG,oDAAoD;IACpD,MAAM,MAAM,GAAG,uBAAuB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;IAC7B,6BAA6B,CAAC,QAAQ,CAAC,CAAC;IAExC,gGAAgG;IAChG,iGAAiG;IACjG,iGAAiG;IACjG,6FAA6F;IAC7F,iGAAiG;IACjG,oGAAoG;IACpG,gDAAgD;IAChD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,QAAQ,GAAG,CAAC,CAAC;IAExC,mGAAmG;IACnG,oFAAoF;IACpF,gGAAgG;IAChG,iGAAiG;IACjG,sDAAsD;IACtD,MAAM,MAAM,GAAG,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IAEvC,6FAA6F;IAC7F,gGAAgG;IAChG,uCAAuC;IACvC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,kGAAkG;IAClG,0BAA0B;IAC1B,MAAM,KAAK,GAAa,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE1C,kGAAkG;IAClG,+FAA+F;IAC/F,mGAAmG;IACnG,kGAAkG;IAClG,8EAA8E;IAC9E,MAAM,uBAAuB,GAAG,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7E,MAAM,oBAAoB,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAEpE,kGAAkG;IAClG,oGAAoG;IACpG,+FAA+F;IAC/F,8EAA8E;IAC9E,+DAA+D;IAC/D,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;QAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChE,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEvD,iGAAiG;IACjG,2FAA2F;IAC3F,sGAAsG;IACtG,iFAAiF;IACjF,EAAE;IACF,qGAAqG;IACrG,mGAAmG;IACnG,gGAAgG;IAChG,iGAAiG;IACjG,qGAAqG;IACrG,kGAAkG;IAClG,qDAAqD;IACrD,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACrD,IAAI,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC3D,KAAK,CAAC,IAAI,CACR,mBAAmB,SAAS,gCAAgC,QAAQ,0DAA0D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,uEAAuE,SAAS,oCAAoC,YAAY,IAAI,SAAS,EAAE,CAC3S,CAAC;QACF,IAAI,SAAS,CAAC,aAAa,KAAK,uBAAuB,EAAE,CAAC;YACxD,QAAQ,CAAC,IAAI,CACX,8IAA8I,SAAS,8IAA8I,YAAY,IAAI,SAAS,qDAAqD,eAAe,EAAE,CACrY,CAAC;QACJ,CAAC;IACH,CAAC;IAED,6FAA6F;IAC7F,iGAAiG;IACjG,iGAAiG;IACjG,sEAAsE;IACtE,EAAE;IACF,+FAA+F;IAC/F,2FAA2F;IAC3F,mGAAmG;IACnG,kGAAkG;IAClG,oGAAoG;IACpG,yDAAyD;IACzD,EAAE;IACF,kGAAkG;IAClG,kGAAkG;IAClG,iGAAiG;IACjG,IAAI,SAAS,CAAC,aAAa,KAAK,uBAAuB,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACvF,MAAM,MAAM,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAClD,6FAA6F;QAC7F,8FAA8F;QAC9F,+EAA+E;QAC/E,MAAM,aAAa,GACjB,SAAS,KAAK,SAAS;YACvB,MAAM,KAAK,SAAS;YACpB,CAAC,SAAS,KAAK,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACvE,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3C,KAAK,CAAC,IAAI,CACR,6DAA6D,MAAM,CAAC,GAAG,cAAc,MAAM,CAAC,QAAQ,yNAAyN,YAAY,IAAI,MAAM,CAAC,GAAG,4CAA4C,CACpY,CAAC;QACJ,CAAC;IACH,CAAC;IAED,gGAAgG;IAChG,mGAAmG;IACnG,qGAAqG;IACrG,0EAA0E;IAC1E,EAAE;IACF,mGAAmG;IACnG,oGAAoG;IACpG,mGAAmG;IACnG,iGAAiG;IACjG,8DAA8D;IAC9D,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;IAEhE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACnC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IAE7E,MAAM,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;IAE7B,MAAM,MAAM,GAAG,kBAAkB,CAAC;QAChC,QAAQ;QACR,SAAS;QACT,MAAM,EAAE,OAAO;QACf,KAAK;QACL,IAAI;QACJ,4FAA4F;QAC5F,2FAA2F;QAC3F,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,8EAA8E;QAC9E,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM;QACxB,+FAA+F;QAC/F,sEAAsE;QACtE,YAAY,EAAE,MAAM,CAAC,MAAM;QAC3B,+FAA+F;QAC/F,+FAA+F;QAC/F,sFAAsF;QACtF,gGAAgG;QAChG,sCAAsC;QACtC,SAAS,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC;KAClC,CAAC,CAAC;IACH,iGAAiG;IACjG,gGAAgG;IAChG,gGAAgG;IAChG,uEAAuE;IACvE,EAAE;IACF,6FAA6F;IAC7F,gGAAgG;IAChG,+FAA+F;IAC/F,EAAE;IACF,gGAAgG;IAChG,mGAAmG;IACnG,4FAA4F;IAC5F,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CACR,sCAAsC,eAAe,6MAA6M,CACnQ,CAAC;QACF,MAAM,SAAS,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,SAAS,KAAK,SAAS;YAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,CAAC;IACtC,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE5B,gGAAgG;IAChG,mCAAmC;IACnC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;IAEhC,kGAAkG;IAClG,iGAAiG;IACjG,gGAAgG;IAChG,+FAA+F;IAC/F,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACnD,IAAI,QAAQ,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEjD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9G,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEpC,+FAA+F;IAC/F,kGAAkG;IAClG,iGAAiG;IACjG,kGAAkG;IAClG,+FAA+F;IAC/F,wFAAwF;IACxF,MAAM,YAAY,GAAG,kBAAkB,CAAC;QACtC,QAAQ;QACR,MAAM,EAAE,SAAS;QACjB,QAAQ;QACR,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK;QACtB,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM;KACzB,CAAC,CAAC;IACH,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,YAAY;YAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,kGAAkG;IAClG,gGAAgG;IAChG,mGAAmG;IACnG,kGAAkG;IAClG,mGAAmG;IACnG,8FAA8F;IAC9F,4CAA4C;IAC5C,MAAM,SAAS,GAAG,qBAAqB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/E,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAE/B,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAE3B,2FAA2F;IAC3F,6FAA6F;IAC7F,+FAA+F;IAC/F,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACrE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE7B,MAAM,OAAO,GAAG,kBAAkB,CAAC;QACjC,QAAQ;QACR,MAAM,EAAE,SAAS;QACjB,IAAI;QACJ,6FAA6F;QAC7F,kFAAkF;QAClF,YAAY,EAAE,OAAO,CAAC,KAAK;QAC3B,2FAA2F;QAC3F,gGAAgG;QAChG,+FAA+F;QAC/F,+BAA+B;QAC/B,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK;QACtB,6FAA6F;QAC7F,+FAA+F;QAC/F,6EAA6E;QAC7E,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM;KACzB,CAAC,CAAC;IACH,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE7B,MAAM,WAAW,GAAG,sBAAsB,CAAC;QACzC,QAAQ;QACR,MAAM,EAAE,SAAS;QACjB,IAAI;QACJ,gGAAgG;QAChG,gGAAgG;QAChG,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,gBAAgB,EAAE,SAAS,CAAC,OAAO;QACnC,GAAG,CAAC,KAAK,CAAC,sBAAsB,KAAK,SAAS;YAC5C,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,sBAAsB,EAAE,KAAK,CAAC,sBAAsB,EAAE,CAAC;QAC7D,iGAAiG;QACjG,kGAAkG;QAClG,kEAAkE;QAClE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK;QACtB,gGAAgG;QAChG,0CAA0C;QAC1C,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM;KACzB,CAAC,CAAC;IACH,QAAQ,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAEjC,MAAM,QAAQ,GAAG,oBAAoB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9B,MAAM,SAAS,GAAG,kBAAkB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAE/B,iGAAiG;IACjG,4FAA4F;IAC5F,iGAAiG;IACjG,uDAAuD;IACvD,MAAM,aAAa,GAAG,kBAAkB,CAAC;QACvC,QAAQ;QACR,MAAM,EAAE,SAAS;QACjB,IAAI;QACJ,GAAG,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC;KACpC,CAAC,CAAC;IACH,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACnC,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAEzC,MAAM,KAAK,GAAG,aAAa,CAAC;QAC1B,QAAQ;QACR,MAAM,EAAE,SAAS;QACjB,IAAI;QACJ,0FAA0F;QAC1F,gGAAgG;QAChG,8FAA8F;QAC9F,gGAAgG;QAChG,aAAa,EAAE,KAAK,CAAC,WAAW;QAChC,oFAAoF;QACpF,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM;KACzB,CAAC,CAAC;IACH,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAE3B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACrF,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IAE/F,sFAAsF;IACtF,sFAAsF;IACtF,MAAM,SAAS,GAAG,cAAc,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACzG,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAE/B,kGAAkG;IAClG,mGAAmG;IACnG,wFAAwF;IACxF,QAAQ,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IAEpD,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IACrB,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAClC,oGAAoG;IACpG,2FAA2F;IAC3F,yBAAyB;IACzB,eAAe,CACb,GAAG,EACH,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAC3C,OAAO,EACP,GAAG,CAAC,KAAK,CAAC,KAAK,EACf,GAAG,CAAC,KAAK,CAAC,MAAM;IAChB,iGAAiG;IACjG,8FAA8F;IAC9F,OAAO,CAAC,+BAA+B;IACvC,iGAAiG;IACjG,8EAA8E;IAC9E,OAAO,CAAC,qBAAqB,EAC7B,QAAQ,EACR,SAAS,CAAC,MAAM,EAAE,EAAE,KAAK,IAAI;IAC7B,iGAAiG;IACjG,gGAAgG;IAChG,mDAAmD;IACnD,oBAAoB,CAAC,SAAS,CAAC,CAChC,CAAC;IAEF,OAAO,IAAI,CAAC,EAAE,CAAC;AACjB,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,WAAW,CAAC,GAAmB,EAAE,KAAwB,EAAE,QAA2B;IAC7F,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC5B,IAAI,KAAK,GAAG,CAAC;gBAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,QAAQ;QAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,SAAS,qBAAqB,CAC5B,OAA+B,EAC/B,KAAc,EACd,MAAe,EACf,uBAAgC,EAChC,aAAsB;IAEtB,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;IAEpD,MAAM,QAAQ,GACZ,OAAO,CAAC,KAAK,KAAK,UAAU;QAC1B,CAAC,CAAC,+BAA+B,cAAc,IAAI,OAAO,iEAAiE;QAC3H,CAAC,CAAC,iBAAiB,cAAc,IAAI,OAAO,2FAA2F,eAAe,8GAA8G,CAAC;IAEzQ,8FAA8F;IAC9F,+FAA+F;IAC/F,gGAAgG;IAChG,gFAAgF;IAChF,MAAM,OAAO,GACX,CAAC,KAAK,IAAI,OAAO,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC;QAC9C,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,uHAAuH,CAAC;IAE/M,IAAI,CAAC,OAAO,CAAC,eAAe;QAAE,OAAO,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,YAAY,OAAO,EAAE,CAAC;IAElG,IAAI,KAAK,EAAE,CAAC;QACV,0FAA0F;QAC1F,kGAAkG;QAClG,iCAAiC;QACjC,EAAE;QACF,iGAAiG;QACjG,+FAA+F;QAC/F,+FAA+F;QAC/F,+DAA+D;QAC/D,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC7B,4FAA4F;YAC5F,+FAA+F;YAC/F,6FAA6F;YAC7F,8FAA8F;YAC9F,MAAM,MAAM,GAAG,aAAa;gBAC1B,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,IAAI,cAAc,uFAAuF;gBAClJ,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,cAAc,4CAA4C,CAAC;YAC/G,OAAO,GAAG,QAAQ,IAAI,cAAc,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,sEAAsE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,MAAM,MAAM,SAAS,eAAe,iCAAiC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,OAAO,EAAE,EAAE,CAAC;QACjR,CAAC;QACD,OAAO,GAAG,QAAQ,YAAY,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,qDAAqD,cAAc,wDAAwD,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,uBAAuB,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,OAAO,EAAE,EAAE,CAAC;IAChS,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,cAAc,yDAC5B,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAC7B,6BAA6B,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC;IAC1E,iGAAiG;IACjG,8FAA8F;IAC9F,6FAA6F;IAC7F,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,OAAO,GAAG,IAAI,sFAAsF,cAAc,oDAAoD,eAAe,oDAAoD,CAAC;IAC5O,CAAC;IAED,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU;QACjC,CAAC,CAAC,GAAG,IAAI,kCAAkC,eAAe,WAAW,cAAc,8CAA8C;QACjI,CAAC,CAAC,GAAG,IAAI,2DAA2D,eAAe,kDAAkD,cAAc,8CAA8C,CAAC;AACtM,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0GG;AACH,SAAS,eAAe,CACtB,GAAmB,EACnB,UAA6B,EAC7B,OAA+B,EAC/B,KAAc,EACd,MAAe,EACf,uBAAgC,EAChC,aAAsB,EACtB,MAAoE,EACpE,OAAgB,EAChB,aAAsB;IAEtB,MAAM,OAAO,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,wBAAwB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAExE,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC;IACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC;IACvD,4FAA4F;IAC5F,8FAA8F;IAC9F,qFAAqF;IACrF,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oEAAoE,CAAC;IAC1G,MAAM,gBAAgB,GAAG,MAAM;QAC7B,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,wGAAwG,CAAC;IAC7G,MAAM,KAAK,GACT,MAAM,CAAC,eAAe,KAAK,SAAS;QAClC,CAAC,CAAC,YAAY,MAAM,MAAM,MAAM,CAAC,SAAS,WAAW,aAAa,4EAA4E,gBAAgB,YAC1J,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KACxB,oFAAoF,QAAQ,gDAAgD,gBAAgB,yBAAyB,uBAAuB,kCAAkC,SAAS,WAAW,gBAAgB,IAAI,UAAU,6EAA6E,gBAAgB,EAAE;QACjY,CAAC,CAAC,wCAAwC,MAAM,MAAM,MAAM,CAAC,SAAS,WAAW,aAAa,wBAAwB,gBAAgB,mBAAmB,MAAM,CAAC,eAAe,yEAAyE,QAAQ,kDAAkD,cAAc,EAAE,CAAC;IAEvU,4FAA4F;IAC5F,+FAA+F;IAC/F,+EAA+E;IAC/E,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,KAAK,KAAK,UAAU,IAAI,CAAC,MAAM,CAAC;IACpF,mGAAmG;IACnG,iGAAiG;IACjG,8FAA8F;IAC9F,MAAM,WAAW,GACf,4IAA4I,CAAC;IAC/I,iGAAiG;IACjG,kGAAkG;IAClG,MAAM,gBAAgB,GACpB,2IAA2I,CAAC;IAC9I,MAAM,UAAU,GACd,MAAM,CAAC,eAAe,KAAK,SAAS;QAClC,CAAC,CAAC,2KAA2K,WAAW,GAAG,gBAAgB,EAAE;QAC7M,CAAC,CAAC,qHAAqH,WAAW,GAAG,gBAAgB,EAAE,CAAC;IAE5J,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;IAC/B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,GAAG,CAAC,MAAM,CAAC,IAAI,CACb,UAAU,eAAe,QAAQ,eAAe,wBAAwB,OAAO,8JAA8J,yBAAyB,6BAA6B,SAAS,uFAAuF,qBAAqB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,aAAa,CAAC,GACtd,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAC3B,EAAE,CACH,CAAC;IACF,kGAAkG;IAClG,IAAI,SAAS;QAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,kBAAkB,EAAE,CAAC,CAAC;IAC3D,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,GAAG,CAAC,MAAM,CAAC,IAAI,CACb,WAAW,eAAe,+GAA+G,SAAS,8VAA8V,kBAAkB,KAAK,CACxgB,CAAC;IACF,8FAA8F;IAC9F,0CAA0C;IAC1C,MAAM,aAAa,GAAG,OAAO;QAC3B,CAAC,CAAC,oFAAoF,sBAAsB,oaAAoa;QAChhB,CAAC,CAAC,EAAE,CAAC;IACP,kGAAkG;IAClG,gGAAgG;IAChG,kGAAkG;IAClG,iGAAiG;IACjG,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC;IACvD,MAAM,YAAY,GAAG,aAAa;QAChC,CAAC,CAAC,aAAa,QAAQ,mCAAmC,QAAQ,kCAAkC,YAAY,0VAA0V,6BAA6B,oCAAoC;QAC3gB,CAAC,CAAC,EAAE,CAAC;IACP,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,cAAc,2BAA2B,aAAa,GAAG,YAAY,EAAE,CAAC,CAAC;AACvG,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAe;IACtC,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,YAAY;IACzB,KAAK,EAAE,UAAU;IACjB,GAAG;CACJ,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The command table: the single source for both the usage text and the dispatch check,
|
|
3
|
+
* so the two cannot disagree. Adding a command means adding one row here — the usage
|
|
4
|
+
* block, the per-command `--help` and the dispatch lookup all read this array.
|
|
5
|
+
*
|
|
6
|
+
* A command is a module under `commands/` exporting its own {@link Subcommand}, added to
|
|
7
|
+
* {@link SUBCOMMANDS}. Nothing else has to change for the new behaviour to appear in usage,
|
|
8
|
+
* in the command's own `--help` and in dispatch.
|
|
9
|
+
*
|
|
10
|
+
* Such a module imports its `CommandContext` and `Subcommand` types from here, so the import
|
|
11
|
+
* back is **type-only** and erased at compile time — the table can list a real command's row
|
|
12
|
+
* without a runtime import cycle.
|
|
13
|
+
*/
|
|
14
|
+
import { CONFIG_COMMAND } from './config.js';
|
|
15
|
+
import { DAEMON_COMMAND } from './daemon.js';
|
|
16
|
+
import { DOCTOR_COMMAND } from './doctor.js';
|
|
17
|
+
import { INIT_COMMAND } from './init.js';
|
|
18
|
+
export const SUBCOMMANDS = [
|
|
19
|
+
INIT_COMMAND,
|
|
20
|
+
DOCTOR_COMMAND,
|
|
21
|
+
CONFIG_COMMAND,
|
|
22
|
+
DAEMON_COMMAND,
|
|
23
|
+
];
|
|
24
|
+
/** The dispatch check. Returns `undefined` for an unknown command. */
|
|
25
|
+
export function findSubcommand(name) {
|
|
26
|
+
return SUBCOMMANDS.find((command) => command.name === name);
|
|
27
|
+
}
|
|
28
|
+
/** The `Commands:` rows of the usage block, name-aligned. */
|
|
29
|
+
export function commandListLines() {
|
|
30
|
+
const width = Math.max(...SUBCOMMANDS.map((command) => command.name.length));
|
|
31
|
+
return SUBCOMMANDS.map((command) => ` ${command.name.padEnd(width)} ${command.summary}`);
|
|
32
|
+
}
|
|
33
|
+
/** One command's own usage, without the global options block the entry point appends. */
|
|
34
|
+
export function commandSynopsis(command) {
|
|
35
|
+
return [
|
|
36
|
+
`npx autonomous-sdlc-harness ${command.name} — ${command.summary}`,
|
|
37
|
+
'',
|
|
38
|
+
`Usage: npx autonomous-sdlc-harness ${command.name} [options]`,
|
|
39
|
+
...(command.usage === undefined ? [] : ['', ...command.usage]),
|
|
40
|
+
];
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/commands/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAgDzC,MAAM,CAAC,MAAM,WAAW,GAA8B;IACpD,YAAY;IACZ,cAAc;IACd,cAAc;IACd,cAAc;CACf,CAAC;AAEF,sEAAsE;AACtE,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,gBAAgB;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7E,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,eAAe,CAAC,OAAmB;IACjD,OAAO;QACL,+BAA+B,OAAO,CAAC,IAAI,MAAM,OAAO,CAAC,OAAO,EAAE;QAClE,EAAE;QACF,sCAAsC,OAAO,CAAC,IAAI,YAAY;QAC9D,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;KAC/D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,505 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The structural check on a `harness.config.json` value: a write guard, and `doctor`'s runtime
|
|
3
|
+
* re-check.
|
|
4
|
+
*
|
|
5
|
+
* **This is not a schema validator, and it must never grow into one.** The schema gate is
|
|
6
|
+
* `npm run validate:config`, whose validator is a workspace-root development dependency; this
|
|
7
|
+
* package declares no runtime dependencies and ships no JSON-Schema engine. What is here is a
|
|
8
|
+
* hand-written check of exactly the constraints listed below, for the two moments that gate is not
|
|
9
|
+
* present: before the CLI writes a config, and when `doctor` re-reads one that may have been
|
|
10
|
+
* hand-edited since it was last validated (`docs/config.md` §3 — "a config can be edited by hand
|
|
11
|
+
* after validation").
|
|
12
|
+
*
|
|
13
|
+
* **Update this file in the same change as any edit to `schemas/harness.config.schema.json`.** The
|
|
14
|
+
* key sets below mirror the schema's `properties` and `required`, so a key added there and not here
|
|
15
|
+
* is reported as unknown — a false error — and a key removed there and not here passes silently.
|
|
16
|
+
*
|
|
17
|
+
* ## What it checks
|
|
18
|
+
*
|
|
19
|
+
* The value is an object; every `required` key is present; `version` is the const `1`; no unknown
|
|
20
|
+
* key at any level (mirroring `additionalProperties: false`, which is set at *every* level, so an
|
|
21
|
+
* unknown key is a typo rather than a setting that is silently ignored); every declared key has the
|
|
22
|
+
* declared type; every string key is non-empty (the schema's `minLength: 1`); `forge`, `agentEffort`,
|
|
23
|
+
* `qa.driver`, `design.source`, `detection.preset` and `detection.review.verdict` each hold one of
|
|
24
|
+
* the values their schema `enum` lists; `stateDir`
|
|
25
|
+
* satisfies **both** of its clauses; `layers` is non-empty, each entry is complete with a legal
|
|
26
|
+
* `name`, and at least one entry is the catch-all row the schema's `contains` clause requires;
|
|
27
|
+
* `commands.typecheck` and `commands.test` are present and non-empty, with `<none>` graded on
|
|
28
|
+
* `commands.typecheck` as the answer *this repository has no type check* and warned about anywhere
|
|
29
|
+
* else it is written; `qa.portSeed` is an integer
|
|
30
|
+
* within the schema's bounds — the only numeric constraint the schema states anywhere.
|
|
31
|
+
*
|
|
32
|
+
* ## What it deliberately does not re-implement
|
|
33
|
+
*
|
|
34
|
+
* - **`uniqueItems`** on `protectedBranches` and `parity.toolchainCommands`. A duplicate entry is
|
|
35
|
+
* redundant, not harmful, and the schema gate already reports it.
|
|
36
|
+
* - **`$schema`'s URI form.** It is editor metadata resolved against the file's own location; the
|
|
37
|
+
* CLI never dereferences it.
|
|
38
|
+
* - **Anything about the filesystem** — whether a configured directory exists, is writable, or
|
|
39
|
+
* whether a `conventions` document is really there. That is `doctor`'s job, not a shape check's,
|
|
40
|
+
* and a shape check that touched the disk could not be run against a config held in memory.
|
|
41
|
+
*/
|
|
42
|
+
import { AGENT_EFFORT_LEVELS, COMMAND_NONE_SENTINEL, CONFIG_VERSION, DESIGN_SOURCES, DETECTION_PRESET_NAMES, FORGE_KINDS, isNoneSentinel, isPlaceholder, LAYER_CATCH_ALL_PATH, LAYER_NAME_PATTERN, LAYER_REVIEW_VERDICTS, NONE_SENTINEL_KEY, PORT_SEED_MAX, PORT_SEED_MIN, QA_DRIVERS, STATE_DIR_DOT_PATTERN, STATE_DIR_PATTERN, } from './model.js';
|
|
43
|
+
/** The schema's top-level `properties`, in schema order. */
|
|
44
|
+
const TOP_LEVEL_KEYS = [
|
|
45
|
+
'$schema',
|
|
46
|
+
'version',
|
|
47
|
+
'projectName',
|
|
48
|
+
'defaultBranch',
|
|
49
|
+
'protectedBranches',
|
|
50
|
+
'forge',
|
|
51
|
+
'stateDir',
|
|
52
|
+
'appDir',
|
|
53
|
+
'scriptsDir',
|
|
54
|
+
'githooksDir',
|
|
55
|
+
'agentModel',
|
|
56
|
+
'agentEffort',
|
|
57
|
+
'pushEnvPath',
|
|
58
|
+
'clientEnvPrefix',
|
|
59
|
+
'detection',
|
|
60
|
+
'layers',
|
|
61
|
+
'commands',
|
|
62
|
+
'phases',
|
|
63
|
+
'qa',
|
|
64
|
+
'docs',
|
|
65
|
+
'parity',
|
|
66
|
+
'deploy',
|
|
67
|
+
'design',
|
|
68
|
+
];
|
|
69
|
+
/** The schema's top-level `required`. */
|
|
70
|
+
const TOP_LEVEL_REQUIRED = ['version', 'defaultBranch', 'stateDir', 'layers', 'commands'];
|
|
71
|
+
/** Top-level keys whose value is a plain non-empty string. Checked as a group. */
|
|
72
|
+
const TOP_LEVEL_STRING_KEYS = [
|
|
73
|
+
'$schema',
|
|
74
|
+
'projectName',
|
|
75
|
+
'defaultBranch',
|
|
76
|
+
'stateDir',
|
|
77
|
+
'appDir',
|
|
78
|
+
'scriptsDir',
|
|
79
|
+
'githooksDir',
|
|
80
|
+
'agentModel',
|
|
81
|
+
'pushEnvPath',
|
|
82
|
+
];
|
|
83
|
+
// `commandFamily` is checked as a string and deliberately **not** against `COMMAND_FAMILY_IDS`,
|
|
84
|
+
// unlike `detection.preset` below: it records which family answered on the run that wrote the file
|
|
85
|
+
// rather than routing anything, and no consumer in this release reads it — so an id retired by a
|
|
86
|
+
// later release would make an otherwise valid config unloadable and buy nothing.
|
|
87
|
+
const DETECTION_KEYS = ['preset', 'signal', 'evidence', 'commandFamily', 'review'];
|
|
88
|
+
const DETECTION_STRING_KEYS = ['signal', 'evidence', 'commandFamily'];
|
|
89
|
+
const REVIEW_KEYS = ['verdict', 'rationale', 'at'];
|
|
90
|
+
const REVIEW_STRING_KEYS = ['rationale', 'at'];
|
|
91
|
+
const LAYER_KEYS = ['name', 'path', 'conventions'];
|
|
92
|
+
const COMMAND_KEYS = ['typecheck', 'test', 'build', 'devServer', 'depInstall'];
|
|
93
|
+
const COMMAND_REQUIRED = ['typecheck', 'test'];
|
|
94
|
+
const PHASE_KEYS = ['qa', 'docs', 'parity'];
|
|
95
|
+
const QA_KEYS = ['driver', 'portSeed', 'credentialsPath', 'authProvider'];
|
|
96
|
+
const QA_STRING_KEYS = ['credentialsPath', 'authProvider'];
|
|
97
|
+
const DOCS_KEYS = ['root'];
|
|
98
|
+
const PARITY_KEYS = ['referenceName', 'referenceImplPath', 'toolchainCommands'];
|
|
99
|
+
const PARITY_STRING_KEYS = ['referenceName', 'referenceImplPath'];
|
|
100
|
+
const DEPLOY_KEYS = ['provider', 'target', 'command'];
|
|
101
|
+
const DESIGN_KEYS = ['source'];
|
|
102
|
+
/** A plain object — not `null`, not an array. */
|
|
103
|
+
function isObject(value) {
|
|
104
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Collector, so every check can report and continue: the point of returning problems rather than
|
|
108
|
+
* throwing is that `doctor` names everything wrong with a config in one pass instead of making the
|
|
109
|
+
* adopter fix one thing per run.
|
|
110
|
+
*/
|
|
111
|
+
class Problems {
|
|
112
|
+
#found = [];
|
|
113
|
+
error(path, message) {
|
|
114
|
+
this.#found.push({ path, message, severity: 'error' });
|
|
115
|
+
}
|
|
116
|
+
warn(path, message) {
|
|
117
|
+
this.#found.push({ path, message, severity: 'warning' });
|
|
118
|
+
}
|
|
119
|
+
get found() {
|
|
120
|
+
return this.#found;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/** `qa.portSeed` → `qa.portSeed`; `''` + `version` → `version`. */
|
|
124
|
+
function join(prefix, key) {
|
|
125
|
+
return prefix === '' ? key : `${prefix}.${key}`;
|
|
126
|
+
}
|
|
127
|
+
/** Report every key of `value` the schema does not declare at this level. */
|
|
128
|
+
function checkUnknownKeys(value, known, prefix, problems) {
|
|
129
|
+
for (const key of Object.keys(value)) {
|
|
130
|
+
if (known.includes(key))
|
|
131
|
+
continue;
|
|
132
|
+
problems.error(join(prefix, key), 'unknown key: the schema rejects unknown keys at every level, so this is a typo rather than a setting that is silently ignored');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Check one optional section: present ⇒ an object with no unknown keys. Returns the section when it
|
|
137
|
+
* is usable, so the caller can go on checking inside it, and `undefined` otherwise.
|
|
138
|
+
*
|
|
139
|
+
* `prefix` is the dotted path of `parent`, empty for a top-level section. A section nested inside
|
|
140
|
+
* another — `detection.review` — passes its parent's path, so a problem inside it is reported at the
|
|
141
|
+
* path an adopter would edit rather than at a bare key name that appears nowhere in the file.
|
|
142
|
+
*/
|
|
143
|
+
function section(parent, key, known, problems, prefix = '') {
|
|
144
|
+
const value = parent[key];
|
|
145
|
+
if (value === undefined)
|
|
146
|
+
return undefined;
|
|
147
|
+
const path = join(prefix, key);
|
|
148
|
+
if (!isObject(value)) {
|
|
149
|
+
problems.error(path, `must be an object, not ${describe(value)}`);
|
|
150
|
+
return undefined;
|
|
151
|
+
}
|
|
152
|
+
checkUnknownKeys(value, known, path, problems);
|
|
153
|
+
return value;
|
|
154
|
+
}
|
|
155
|
+
/** What a wrong value is, for a message: `an array`, `a string`, `null`. */
|
|
156
|
+
function describe(value) {
|
|
157
|
+
if (value === null)
|
|
158
|
+
return 'null';
|
|
159
|
+
if (Array.isArray(value))
|
|
160
|
+
return 'an array';
|
|
161
|
+
const type = typeof value;
|
|
162
|
+
return type === 'object' ? 'an object' : `a ${type}`;
|
|
163
|
+
}
|
|
164
|
+
/** A declared string key: present ⇒ a non-empty string (the schema's `minLength: 1`). */
|
|
165
|
+
function checkString(parent, key, prefix, problems) {
|
|
166
|
+
const value = parent[key];
|
|
167
|
+
if (value === undefined)
|
|
168
|
+
return;
|
|
169
|
+
const path = join(prefix, key);
|
|
170
|
+
if (typeof value !== 'string') {
|
|
171
|
+
problems.error(path, `must be a string, not ${describe(value)}`);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
if (value === '')
|
|
175
|
+
problems.error(path, 'must not be empty');
|
|
176
|
+
}
|
|
177
|
+
/** A declared array-of-non-empty-strings key: `protectedBranches`, `parity.toolchainCommands`. */
|
|
178
|
+
function checkStringArray(parent, key, prefix, problems) {
|
|
179
|
+
const value = parent[key];
|
|
180
|
+
if (value === undefined)
|
|
181
|
+
return;
|
|
182
|
+
const path = join(prefix, key);
|
|
183
|
+
if (!Array.isArray(value)) {
|
|
184
|
+
problems.error(path, `must be an array of strings, not ${describe(value)}`);
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
value.forEach((entry, index) => {
|
|
188
|
+
if (typeof entry !== 'string')
|
|
189
|
+
problems.error(`${path}[${index}]`, `must be a string, not ${describe(entry)}`);
|
|
190
|
+
else if (entry === '')
|
|
191
|
+
problems.error(`${path}[${index}]`, 'must not be empty');
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
/** A declared boolean key: the three `phases` toggles. */
|
|
195
|
+
function checkBoolean(parent, key, prefix, problems) {
|
|
196
|
+
const value = parent[key];
|
|
197
|
+
if (value === undefined)
|
|
198
|
+
return;
|
|
199
|
+
if (typeof value !== 'boolean')
|
|
200
|
+
problems.error(join(prefix, key), `must be true or false, not ${describe(value)}`);
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* A declared enum key: present ⇒ a string drawn from `allowed` (the schema's `enum`).
|
|
204
|
+
*
|
|
205
|
+
* The `allowed` set is always **imported** from `config/model.ts`, never spelled here: the enum is
|
|
206
|
+
* the schema's, and a set restated at the point of use is a set that can disagree with the schema
|
|
207
|
+
* in one of its two copies.
|
|
208
|
+
*
|
|
209
|
+
* `consequence` is the caller's one sentence about what choosing wrongly costs, appended to the
|
|
210
|
+
* generic "not one of" line. A bare list of legal values tells an adopter what to type but not
|
|
211
|
+
* which to pick, and every key this guards is one where the wrong pick is silent — an
|
|
212
|
+
* unfilled `forge` is a decision not yet made, the default `qa.driver` reaches a browser that a
|
|
213
|
+
* mobile application does not have, a value outside `agentEffort`'s set is never refused by the
|
|
214
|
+
* runtime either: it warns, ignores the flag and runs at its own default, so the run costs a level
|
|
215
|
+
* the file did not choose, an unfilled `design.source` is likewise a decision not yet made —
|
|
216
|
+
* nothing reports that a change has no stated design source of truth — and the two `detection`
|
|
217
|
+
* enums record what a run and a review concluded, which nothing re-derives afterwards.
|
|
218
|
+
*/
|
|
219
|
+
function checkEnum(parent, key, prefix, allowed, consequence, problems) {
|
|
220
|
+
const value = parent[key];
|
|
221
|
+
if (value === undefined)
|
|
222
|
+
return;
|
|
223
|
+
const path = join(prefix, key);
|
|
224
|
+
if (typeof value !== 'string') {
|
|
225
|
+
problems.error(path, `must be a string, not ${describe(value)}`);
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
if (allowed.includes(value))
|
|
229
|
+
return;
|
|
230
|
+
const legal = allowed.map((entry) => JSON.stringify(entry)).join(', ');
|
|
231
|
+
problems.error(path, `${JSON.stringify(value)} is not one of ${legal}. ${consequence}`);
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* `stateDir`'s two clauses, checked **separately and both**, exactly as the schema states them.
|
|
235
|
+
*
|
|
236
|
+
* A leading dot fails both, and both are reported: the redundancy is deliberate on the schema's
|
|
237
|
+
* side — so a later edit to `pattern` cannot quietly drop the prohibition — and reporting only the
|
|
238
|
+
* pattern failure would hide the reason that matters. The dot clause carries its own message
|
|
239
|
+
* naming the unattended-write cause, because an adopter who reads "does not match a pattern" will
|
|
240
|
+
* reasonably try to fix it by tidying the name toward a dot-directory, which is the exact change
|
|
241
|
+
* that risks unattended runs.
|
|
242
|
+
*/
|
|
243
|
+
function checkStateDir(value, problems) {
|
|
244
|
+
if (typeof value !== 'string' || value === '')
|
|
245
|
+
return; // already reported by checkString
|
|
246
|
+
if (!STATE_DIR_PATTERN.test(value)) {
|
|
247
|
+
problems.error('stateDir', `${JSON.stringify(value)} is not a legal directory name: it must start with a letter, a digit or an underscore, may then contain letters, digits, '.', '_', '-' and '/', and may end with one '/'`);
|
|
248
|
+
}
|
|
249
|
+
if (STATE_DIR_DOT_PATTERN.test(value)) {
|
|
250
|
+
problems.error('stateDir', `${JSON.stringify(value)} has a path segment starting with '.': the state directory must not be dot-named or reach through a dot segment, because the run-artifact tree has to be writable by an unattended run and a dot-path is where a host reserves directories an unattended run may not write to — measured for .claude/**, where such a run completes with exit 0 having written nothing. Do not "fix" this to a dot-name`);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* `layers`: a non-empty array of complete entries with legal names, one of which is the catch-all.
|
|
255
|
+
*
|
|
256
|
+
* The catch-all clause is the schema's `contains`, which asserts **at least one** matching entry.
|
|
257
|
+
* More than one is deliberately **not** reported: this schema is draft-07, which has no
|
|
258
|
+
* `maxContains`, so an upper bound is not expressible there, and this check exists to match the
|
|
259
|
+
* schema rather than to exceed it — a config the schema gate accepts must not be one the write
|
|
260
|
+
* guard refuses.
|
|
261
|
+
*/
|
|
262
|
+
function checkLayers(value, problems) {
|
|
263
|
+
if (value === undefined)
|
|
264
|
+
return; // already reported as a missing required key
|
|
265
|
+
if (!Array.isArray(value)) {
|
|
266
|
+
problems.error('layers', `must be an array, not ${describe(value)}`);
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
if (value.length === 0) {
|
|
270
|
+
problems.error('layers', 'must list at least one layer: a task is assigned to exactly one layer, so an empty list leaves no one to do the work');
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
value.forEach((entry, index) => {
|
|
274
|
+
const prefix = `layers[${index}]`;
|
|
275
|
+
if (!isObject(entry)) {
|
|
276
|
+
problems.error(prefix, `must be an object, not ${describe(entry)}`);
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
checkUnknownKeys(entry, LAYER_KEYS, prefix, problems);
|
|
280
|
+
for (const key of LAYER_KEYS) {
|
|
281
|
+
if (entry[key] === undefined)
|
|
282
|
+
problems.error(join(prefix, key), 'is required');
|
|
283
|
+
else
|
|
284
|
+
checkString(entry, key, prefix, problems);
|
|
285
|
+
}
|
|
286
|
+
const name = entry['name'];
|
|
287
|
+
if (typeof name === 'string' && name !== '' && !LAYER_NAME_PATTERN.test(name)) {
|
|
288
|
+
problems.error(join(prefix, 'name'), `${JSON.stringify(name)} is not a legal layer name: lower-case letters, digits and hyphens, starting with a letter — it is the routing tag a task is assigned by, and it appears in a run's dispatch labels`);
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
// Reached only past the two returns above, so this never piles onto "must be an array" or "must
|
|
292
|
+
// list at least one layer" — an adopter fixing the shape is not also told about the catch-all.
|
|
293
|
+
const catchAll = JSON.stringify(LAYER_CATCH_ALL_PATH);
|
|
294
|
+
if (!value.some((entry) => isObject(entry) && entry['path'] === LAYER_CATCH_ALL_PATH)) {
|
|
295
|
+
problems.error('layers', `at least one layer must have "path" set to ${catchAll}: work that matches no layer's path is assigned to that layer, and every run produces such work — its own artifacts, this config file, the scripts and hooks directories, CI files — so without the row that work has nowhere to go and the run stops on it. Add a layer with "path": ${catchAll} pointing at the shared conventions document; any name will do, and init writes it as "general"`);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Is this value a near miss for {@link COMMAND_NONE_SENTINEL} — an adopter reaching for the answer
|
|
300
|
+
* and not landing on it?
|
|
301
|
+
*
|
|
302
|
+
* Trimmed, stripped of one surrounding pair of matching quotes and case-folded: `none`, `<None>`
|
|
303
|
+
* and a quoted spelling of the sentinel all reach here, and none of them is it. Without the warning
|
|
304
|
+
* such a value
|
|
305
|
+
* is stored as a command line, a wrapper is written with `none` as its body, that wrapper is
|
|
306
|
+
* allow-listed, and nothing anywhere reports it until the run invokes it.
|
|
307
|
+
*/
|
|
308
|
+
function isNoneNearMiss(value) {
|
|
309
|
+
const bare = value.trim().replace(/^(['"])([\s\S]*)\1$/, '$2').trim().toLowerCase();
|
|
310
|
+
return (bare === 'none' || bare === COMMAND_NONE_SENTINEL) && !isNoneSentinel(value);
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* `commands`: the two required verifiers, the answered-`none` sentinel on `commands.typecheck`, and
|
|
314
|
+
* the placeholder warning on any command key.
|
|
315
|
+
*/
|
|
316
|
+
function checkCommands(value, problems) {
|
|
317
|
+
if (value === undefined)
|
|
318
|
+
return; // already reported as a missing required key
|
|
319
|
+
if (!isObject(value)) {
|
|
320
|
+
problems.error('commands', `must be an object, not ${describe(value)}`);
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
checkUnknownKeys(value, COMMAND_KEYS, 'commands', problems);
|
|
324
|
+
for (const key of COMMAND_REQUIRED) {
|
|
325
|
+
if (value[key] === undefined) {
|
|
326
|
+
problems.error(join('commands', key), 'is required: the two verification commands are what "this change is done" means, so the flow cannot proceed without them');
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
for (const key of COMMAND_KEYS) {
|
|
330
|
+
checkString(value, key, 'commands', problems);
|
|
331
|
+
const command = value[key];
|
|
332
|
+
// The sentinel arm, ahead of the placeholder warning so a sentinel is never also read as a
|
|
333
|
+
// placeholder. `isNoneSentinel` rather than `answersNone` here — deliberately ungated, because
|
|
334
|
+
// this is the one site that must say something *different* on the other command keys.
|
|
335
|
+
if (typeof command === 'string' && isNoneSentinel(command)) {
|
|
336
|
+
if (key === NONE_SENTINEL_KEY) {
|
|
337
|
+
// Answered: no problem is emitted. Stated rather than left as a bare fall-through, because
|
|
338
|
+
// a silent skip is indistinguishable from the accidental silence this arm replaces — before
|
|
339
|
+
// it, a sentinel passed the required-key check and the placeholder test without a word.
|
|
340
|
+
continue;
|
|
341
|
+
}
|
|
342
|
+
problems.warn(join('commands', key), `${JSON.stringify(COMMAND_NONE_SENTINEL)} is recognised as "this repository has no such command" on commands.${NONE_SENTINEL_KEY} only. Here it is stored as a literal command line and will be run — which is what withdrawing a gate would have to look like, so it is reported rather than assumed`);
|
|
343
|
+
continue;
|
|
344
|
+
}
|
|
345
|
+
if (typeof command === 'string' && isNoneNearMiss(command)) {
|
|
346
|
+
problems.warn(join('commands', key), `${JSON.stringify(command)} looks like the answered-none sentinel but is not it: the value must be exactly ${JSON.stringify(COMMAND_NONE_SENTINEL)}, unquoted and lower-case. As written it is a command line, so a wrapper is written for it, allow-listed, and run`);
|
|
347
|
+
continue;
|
|
348
|
+
}
|
|
349
|
+
if (typeof command === 'string' && isPlaceholder(command)) {
|
|
350
|
+
problems.warn(join('commands', key), 'still holds the placeholder init wrote because it could not detect this command — replace it, or the run stops the first time it is invoked');
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
/** `qa.portSeed`: the schema's one numeric constraint. */
|
|
355
|
+
function checkPortSeed(qa, problems) {
|
|
356
|
+
const value = qa['portSeed'];
|
|
357
|
+
if (value === undefined)
|
|
358
|
+
return;
|
|
359
|
+
if (typeof value !== 'number') {
|
|
360
|
+
problems.error('qa.portSeed', `must be a whole number, not ${describe(value)}`);
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
if (!Number.isInteger(value)) {
|
|
364
|
+
problems.error('qa.portSeed', `must be a whole number, not ${value}`);
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
if (value < PORT_SEED_MIN || value > PORT_SEED_MAX) {
|
|
368
|
+
problems.error('qa.portSeed', `must be between ${PORT_SEED_MIN} and ${PORT_SEED_MAX}`);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* A phase that is on with its section unfilled. A **warning**, not an error: the config is legal,
|
|
373
|
+
* and the phase may still be reachable — the value could be supplied another way, or the phase may
|
|
374
|
+
* fail later with a better message than a shape check can give. Blocking the write here would stop
|
|
375
|
+
* an adopter from enabling a phase and filling its section in the next edit.
|
|
376
|
+
*
|
|
377
|
+
* **`qa.portSeed` sits beside the two `qa` keys graded here and is deliberately not graded itself.**
|
|
378
|
+
* An absent `portSeed` is a *resolved* state: `3001` is its documented default, and the plugin's
|
|
379
|
+
* instruction files and `plugin/scripts/find-free-port.sh` all state it and resolve it without ever
|
|
380
|
+
* reading the key. `driver`'s consumers have no such stated fallback — they read the value and act
|
|
381
|
+
* on what they find — so its absence is unresolved where `portSeed`'s is not. Do not "complete" the
|
|
382
|
+
* set.
|
|
383
|
+
*
|
|
384
|
+
* **Presence only.** Whether a present `qa.driver` holds a legal value is
|
|
385
|
+
* {@link checkConfigShape}'s `checkEnum` call, which grades an out-of-set value an `error`; a second
|
|
386
|
+
* value check here would be a second copy of the enum's opinion.
|
|
387
|
+
*/
|
|
388
|
+
function checkPhaseSections(root, phases, problems) {
|
|
389
|
+
const enabled = (key) => phases?.[key] === true;
|
|
390
|
+
const missing = (sectionKey, key) => {
|
|
391
|
+
const value = root[sectionKey];
|
|
392
|
+
return !isObject(value) || value[key] === undefined;
|
|
393
|
+
};
|
|
394
|
+
if (enabled('qa') && missing('qa', 'driver')) {
|
|
395
|
+
problems.warn('qa.driver', 'phases.qa is on but no driver is configured. The browser wiring is not missing — the generators fall back to the schema default — what is missing is the choice of which driver reaches this application, which nobody has been asked to make. The interactive test flow reads the value with no such fallback and stops when it is anything other than "web-playwright". Set it with `config set qa.driver <value>`, which names the values it accepts');
|
|
396
|
+
}
|
|
397
|
+
if (enabled('qa') && missing('qa', 'credentialsPath')) {
|
|
398
|
+
problems.warn('qa.credentialsPath', 'phases.qa is on but no credentials file is configured, so the phase cannot reach an authenticated screen');
|
|
399
|
+
}
|
|
400
|
+
if (enabled('docs') && missing('docs', 'root')) {
|
|
401
|
+
problems.warn('docs.root', 'phases.docs is on but no documentation root is configured, so the phase has nothing to keep current');
|
|
402
|
+
}
|
|
403
|
+
if (enabled('parity') && missing('parity', 'referenceImplPath')) {
|
|
404
|
+
problems.warn('parity.referenceImplPath', 'phases.parity is on but no reference implementation is configured, so there is nothing to compare against');
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Check a parsed value against the shape `harness.config.json` must have, and return everything
|
|
409
|
+
* wrong with it — never throwing, so one pass names every problem.
|
|
410
|
+
*
|
|
411
|
+
* Takes `unknown` deliberately: its callers hold whatever `JSON.parse` produced, and the answer to
|
|
412
|
+
* "is this a config at all" is one of the problems it reports rather than a precondition of
|
|
413
|
+
* calling it.
|
|
414
|
+
*/
|
|
415
|
+
export function checkConfigShape(value) {
|
|
416
|
+
const problems = new Problems();
|
|
417
|
+
if (!isObject(value)) {
|
|
418
|
+
problems.error('', `must be a JSON object, not ${describe(value)}`);
|
|
419
|
+
return problems.found;
|
|
420
|
+
}
|
|
421
|
+
checkUnknownKeys(value, TOP_LEVEL_KEYS, '', problems);
|
|
422
|
+
for (const key of TOP_LEVEL_REQUIRED) {
|
|
423
|
+
if (value[key] === undefined)
|
|
424
|
+
problems.error(key, 'is required');
|
|
425
|
+
}
|
|
426
|
+
if (value['version'] !== undefined && value['version'] !== CONFIG_VERSION) {
|
|
427
|
+
problems.error('version', `must be ${CONFIG_VERSION}, not ${JSON.stringify(value['version'])}: this release recognises no other format version`);
|
|
428
|
+
}
|
|
429
|
+
for (const key of TOP_LEVEL_STRING_KEYS)
|
|
430
|
+
checkString(value, key, '', problems);
|
|
431
|
+
checkStringArray(value, 'protectedBranches', '', problems);
|
|
432
|
+
checkEnum(value, 'forge', '', FORGE_KINDS, 'The key is optional and nothing reads it in this release; set "none" to say the repository has no forge integration at all — work stays on branches and no pull request is opened — rather than leaving the decision unmade.', problems);
|
|
433
|
+
checkEnum(value, 'agentEffort', '', AGENT_EFFORT_LEVELS, 'The key is optional; leaving it out is what selects the per-model default the runtime applies, so an unset value is a resolved state rather than a missing one. A value outside this set is not refused by the runtime either — it warns, ignores the flag and runs at that default — so the run costs a level this file did not choose and nothing but this check says so.', problems);
|
|
434
|
+
// The one key the schema types as a union: a prefix, or `null` for a stack that has no such rule.
|
|
435
|
+
const clientEnvPrefix = value['clientEnvPrefix'];
|
|
436
|
+
if (clientEnvPrefix !== undefined && clientEnvPrefix !== null && typeof clientEnvPrefix !== 'string') {
|
|
437
|
+
problems.error('clientEnvPrefix', `must be a string or null, not ${describe(clientEnvPrefix)}`);
|
|
438
|
+
}
|
|
439
|
+
else if (clientEnvPrefix === '') {
|
|
440
|
+
problems.error('clientEnvPrefix', 'must not be empty: use null when the stack has no such rule');
|
|
441
|
+
}
|
|
442
|
+
checkStateDir(value['stateDir'], problems);
|
|
443
|
+
checkLayers(value['layers'], problems);
|
|
444
|
+
checkCommands(value['commands'], problems);
|
|
445
|
+
// No required-key check inside `detection` or `detection.review`: the schema states none, so a
|
|
446
|
+
// record holding only a `review` — the shape a repository whose config predates the key gets from
|
|
447
|
+
// `config set detection.review` — is legal, and a config the schema gate accepts must not be one
|
|
448
|
+
// the write guard refuses.
|
|
449
|
+
const detection = section(value, 'detection', DETECTION_KEYS, problems);
|
|
450
|
+
if (detection !== undefined) {
|
|
451
|
+
checkEnum(detection, 'preset', 'detection', DETECTION_PRESET_NAMES, 'It records which layer preset detection selected, so a value naming no real preset makes this record describe a detection that never happened — and nothing re-derives it, because harness.config.json is exempt from --force and a plain init re-run leaves the record standing.', problems);
|
|
452
|
+
for (const key of DETECTION_STRING_KEYS)
|
|
453
|
+
checkString(detection, key, 'detection', problems);
|
|
454
|
+
const review = section(detection, 'review', REVIEW_KEYS, problems, 'detection');
|
|
455
|
+
if (review !== undefined) {
|
|
456
|
+
checkEnum(review, 'verdict', 'detection.review', LAYER_REVIEW_VERDICTS, "It is what doctor's layer-profile check reads to see that the profile was reviewed, so a value outside this set is a record that check cannot read: the warning the review was written to clear stands, and the reviewing was done for nothing.", problems);
|
|
457
|
+
for (const key of REVIEW_STRING_KEYS)
|
|
458
|
+
checkString(review, key, 'detection.review', problems);
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
const phases = section(value, 'phases', PHASE_KEYS, problems);
|
|
462
|
+
if (phases !== undefined)
|
|
463
|
+
for (const key of PHASE_KEYS)
|
|
464
|
+
checkBoolean(phases, key, 'phases', problems);
|
|
465
|
+
const qa = section(value, 'qa', QA_KEYS, problems);
|
|
466
|
+
if (qa !== undefined) {
|
|
467
|
+
checkEnum(qa, 'driver', 'qa', QA_DRIVERS, 'It selects which variant of the interactive test agent runs, and so how that agent reaches the application. The default drives a browser, so a project whose application is a mobile app has to set this key: leaving it out selects a driver that cannot reach the application at all. Both mobile values are declared but not implemented in this release: setting either makes every interactive-test dispatch return a blocker rather than run a test.', problems);
|
|
468
|
+
checkPortSeed(qa, problems);
|
|
469
|
+
for (const key of QA_STRING_KEYS)
|
|
470
|
+
checkString(qa, key, 'qa', problems);
|
|
471
|
+
}
|
|
472
|
+
const docs = section(value, 'docs', DOCS_KEYS, problems);
|
|
473
|
+
if (docs !== undefined)
|
|
474
|
+
for (const key of DOCS_KEYS)
|
|
475
|
+
checkString(docs, key, 'docs', problems);
|
|
476
|
+
const parity = section(value, 'parity', PARITY_KEYS, problems);
|
|
477
|
+
if (parity !== undefined) {
|
|
478
|
+
for (const key of PARITY_STRING_KEYS)
|
|
479
|
+
checkString(parity, key, 'parity', problems);
|
|
480
|
+
checkStringArray(parity, 'toolchainCommands', 'parity', problems);
|
|
481
|
+
}
|
|
482
|
+
const deploy = section(value, 'deploy', DEPLOY_KEYS, problems);
|
|
483
|
+
if (deploy !== undefined)
|
|
484
|
+
for (const key of DEPLOY_KEYS)
|
|
485
|
+
checkString(deploy, key, 'deploy', problems);
|
|
486
|
+
const design = section(value, 'design', DESIGN_KEYS, problems);
|
|
487
|
+
if (design !== undefined) {
|
|
488
|
+
checkEnum(design, 'source', 'design', DESIGN_SOURCES, 'The key is optional and nothing reads it in this release; set "none" to say the project has no design source of truth at all — a change is built against no design — rather than leaving the decision unmade.', problems);
|
|
489
|
+
}
|
|
490
|
+
checkPhaseSections(value, phases, problems);
|
|
491
|
+
return problems.found;
|
|
492
|
+
}
|
|
493
|
+
/** True when any problem is an `error` — the write guard's question, and `doctor`'s FAIL test. */
|
|
494
|
+
export function hasErrors(problems) {
|
|
495
|
+
return problems.some((problem) => problem.severity === 'error');
|
|
496
|
+
}
|
|
497
|
+
/**
|
|
498
|
+
* One problem as a line: `stateDir: ...`, or just the message for a problem about the document
|
|
499
|
+
* itself. Kept here so `doctor`, `config` and the write guard's refusal all render a problem the
|
|
500
|
+
* same way.
|
|
501
|
+
*/
|
|
502
|
+
export function formatProblem(problem) {
|
|
503
|
+
return problem.path === '' ? problem.message : `${problem.path}: ${problem.message}`;
|
|
504
|
+
}
|
|
505
|
+
//# sourceMappingURL=check.js.map
|