@caupulican/pi-adaptative 0.90.2 → 0.90.5
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/CHANGELOG.md +41 -0
- package/dist/core/agent-session-contracts.d.ts +2 -0
- package/dist/core/agent-session-contracts.d.ts.map +1 -1
- package/dist/core/agent-session-contracts.js.map +1 -1
- package/dist/core/autonomy/bounded-completion.d.ts +10 -1
- package/dist/core/autonomy/bounded-completion.d.ts.map +1 -1
- package/dist/core/autonomy/bounded-completion.js +24 -2
- package/dist/core/autonomy/bounded-completion.js.map +1 -1
- package/dist/core/autonomy/lane-tracker.d.ts +6 -1
- package/dist/core/autonomy/lane-tracker.d.ts.map +1 -1
- package/dist/core/autonomy/lane-tracker.js +17 -1
- package/dist/core/autonomy/lane-tracker.js.map +1 -1
- package/dist/core/background-lane-controller.d.ts +1 -3
- package/dist/core/background-lane-controller.d.ts.map +1 -1
- package/dist/core/background-lane-controller.js.map +1 -1
- package/dist/core/compaction-controller.d.ts.map +1 -1
- package/dist/core/compaction-controller.js +0 -1
- package/dist/core/compaction-controller.js.map +1 -1
- package/dist/core/delegation/managed-lane-controller.d.ts.map +1 -1
- package/dist/core/delegation/managed-lane-controller.js +5 -1
- package/dist/core/delegation/managed-lane-controller.js.map +1 -1
- package/dist/core/delegation/worker-agent-control-coordinator.d.ts +8 -1
- package/dist/core/delegation/worker-agent-control-coordinator.d.ts.map +1 -1
- package/dist/core/delegation/worker-agent-control-coordinator.js +94 -36
- package/dist/core/delegation/worker-agent-control-coordinator.js.map +1 -1
- package/dist/core/delegation/worker-agent-control.d.ts +1 -0
- package/dist/core/delegation/worker-agent-control.d.ts.map +1 -1
- package/dist/core/delegation/worker-agent-control.js.map +1 -1
- package/dist/core/delegation/worker-attempt-executor.d.ts.map +1 -1
- package/dist/core/delegation/worker-attempt-executor.js +7 -2
- package/dist/core/delegation/worker-attempt-executor.js.map +1 -1
- package/dist/core/delegation/worker-authority-resolver.d.ts +2 -0
- package/dist/core/delegation/worker-authority-resolver.d.ts.map +1 -1
- package/dist/core/delegation/worker-authority-resolver.js +49 -6
- package/dist/core/delegation/worker-authority-resolver.js.map +1 -1
- package/dist/core/delegation/worker-delegation-controller.d.ts +8 -5
- package/dist/core/delegation/worker-delegation-controller.d.ts.map +1 -1
- package/dist/core/delegation/worker-delegation-controller.js +158 -40
- package/dist/core/delegation/worker-delegation-controller.js.map +1 -1
- package/dist/core/delegation/worker-fleet-limits.d.ts +9 -2
- package/dist/core/delegation/worker-fleet-limits.d.ts.map +1 -1
- package/dist/core/delegation/worker-fleet-limits.js +39 -3
- package/dist/core/delegation/worker-fleet-limits.js.map +1 -1
- package/dist/core/delegation/worker-lane-projection.d.ts.map +1 -1
- package/dist/core/delegation/worker-lane-projection.js +10 -0
- package/dist/core/delegation/worker-lane-projection.js.map +1 -1
- package/dist/core/delegation/worker-lease-heartbeat.d.ts +16 -0
- package/dist/core/delegation/worker-lease-heartbeat.d.ts.map +1 -0
- package/dist/core/delegation/worker-lease-heartbeat.js +37 -0
- package/dist/core/delegation/worker-lease-heartbeat.js.map +1 -0
- package/dist/core/delegation/worker-lifecycle.d.ts +1 -0
- package/dist/core/delegation/worker-lifecycle.d.ts.map +1 -1
- package/dist/core/delegation/worker-lifecycle.js +6 -0
- package/dist/core/delegation/worker-lifecycle.js.map +1 -1
- package/dist/core/delegation/worker-notification-coordinator.d.ts.map +1 -1
- package/dist/core/delegation/worker-notification-coordinator.js +2 -1
- package/dist/core/delegation/worker-notification-coordinator.js.map +1 -1
- package/dist/core/delegation/worker-profile-resolver.d.ts +28 -1
- package/dist/core/delegation/worker-profile-resolver.d.ts.map +1 -1
- package/dist/core/delegation/worker-profile-resolver.js +38 -9
- package/dist/core/delegation/worker-profile-resolver.js.map +1 -1
- package/dist/core/delegation/worker-runner.js +2 -2
- package/dist/core/delegation/worker-runner.js.map +1 -1
- package/dist/core/delegation/worker-terminal-handoff-coordinator.d.ts +1 -0
- package/dist/core/delegation/worker-terminal-handoff-coordinator.d.ts.map +1 -1
- package/dist/core/delegation/worker-terminal-handoff-coordinator.js +1 -0
- package/dist/core/delegation/worker-terminal-handoff-coordinator.js.map +1 -1
- package/dist/core/delegation/worker-tree-budget-coordinator.d.ts +4 -2
- package/dist/core/delegation/worker-tree-budget-coordinator.d.ts.map +1 -1
- package/dist/core/delegation/worker-tree-budget-coordinator.js +10 -2
- package/dist/core/delegation/worker-tree-budget-coordinator.js.map +1 -1
- package/dist/core/delegation/worker-write-reservation-coordinator.d.ts +14 -0
- package/dist/core/delegation/worker-write-reservation-coordinator.d.ts.map +1 -1
- package/dist/core/delegation/worker-write-reservation-coordinator.js +121 -33
- package/dist/core/delegation/worker-write-reservation-coordinator.js.map +1 -1
- package/dist/core/foreground-terminal-handoff-controller.d.ts +5 -0
- package/dist/core/foreground-terminal-handoff-controller.d.ts.map +1 -1
- package/dist/core/foreground-terminal-handoff-controller.js +28 -12
- package/dist/core/foreground-terminal-handoff-controller.js.map +1 -1
- package/dist/core/orchestration/capability-gateway.d.ts +2 -1
- package/dist/core/orchestration/capability-gateway.d.ts.map +1 -1
- package/dist/core/orchestration/capability-gateway.js +9 -2
- package/dist/core/orchestration/capability-gateway.js.map +1 -1
- package/dist/core/orchestration/contracts.d.ts +16 -1
- package/dist/core/orchestration/contracts.d.ts.map +1 -1
- package/dist/core/orchestration/contracts.js +5 -0
- package/dist/core/orchestration/contracts.js.map +1 -1
- package/dist/core/orchestration/profile-registry.d.ts.map +1 -1
- package/dist/core/orchestration/profile-registry.js +38 -1
- package/dist/core/orchestration/profile-registry.js.map +1 -1
- package/dist/core/orchestration/risk-budget.d.ts +10 -0
- package/dist/core/orchestration/risk-budget.d.ts.map +1 -1
- package/dist/core/orchestration/risk-budget.js +14 -0
- package/dist/core/orchestration/risk-budget.js.map +1 -1
- package/dist/core/orchestration/task-runtime-reducer.d.ts +1 -0
- package/dist/core/orchestration/task-runtime-reducer.d.ts.map +1 -1
- package/dist/core/orchestration/task-runtime-reducer.js +34 -0
- package/dist/core/orchestration/task-runtime-reducer.js.map +1 -1
- package/dist/core/orchestration/task-runtime.d.ts +1 -0
- package/dist/core/orchestration/task-runtime.d.ts.map +1 -1
- package/dist/core/orchestration/task-runtime.js +24 -1
- package/dist/core/orchestration/task-runtime.js.map +1 -1
- package/dist/core/orchestration/worker-model-pins.d.ts +28 -0
- package/dist/core/orchestration/worker-model-pins.d.ts.map +1 -0
- package/dist/core/orchestration/worker-model-pins.js +141 -0
- package/dist/core/orchestration/worker-model-pins.js.map +1 -0
- package/dist/core/provider-prompt-contracts.d.ts.map +1 -1
- package/dist/core/provider-prompt-contracts.js +2 -1
- package/dist/core/provider-prompt-contracts.js.map +1 -1
- package/dist/core/reflection-controller.d.ts.map +1 -1
- package/dist/core/reflection-controller.js +8 -1
- package/dist/core/reflection-controller.js.map +1 -1
- package/dist/core/runtime-builder.d.ts.map +1 -1
- package/dist/core/runtime-builder.js +1 -0
- package/dist/core/runtime-builder.js.map +1 -1
- package/dist/core/settings-manager.d.ts +6 -3
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +26 -2
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/tools/bash.d.ts +3 -0
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +13 -2
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/delegate-status.d.ts +3 -0
- package/dist/core/tools/delegate-status.d.ts.map +1 -1
- package/dist/core/tools/delegate-status.js +26 -1
- package/dist/core/tools/delegate-status.js.map +1 -1
- package/dist/core/tools/delegate.d.ts +15 -1
- package/dist/core/tools/delegate.d.ts.map +1 -1
- package/dist/core/tools/delegate.js +234 -68
- package/dist/core/tools/delegate.js.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +14 -1
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/file-failure-recovery.d.ts +3 -0
- package/dist/core/tools/file-failure-recovery.d.ts.map +1 -1
- package/dist/core/tools/file-failure-recovery.js +11 -0
- package/dist/core/tools/file-failure-recovery.js.map +1 -1
- package/dist/core/tools/orchestration-panel.d.ts +1 -1
- package/dist/core/tools/orchestration-panel.d.ts.map +1 -1
- package/dist/core/tools/orchestration-panel.js +1 -0
- package/dist/core/tools/orchestration-panel.js.map +1 -1
- package/dist/core/tools/profile-writer.d.ts.map +1 -1
- package/dist/core/tools/profile-writer.js +2 -8
- package/dist/core/tools/profile-writer.js.map +1 -1
- package/dist/core/tools/search-command-guard.d.ts.map +1 -1
- package/dist/core/tools/search-command-guard.js +10 -3
- package/dist/core/tools/search-command-guard.js.map +1 -1
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +10 -1
- package/dist/core/tools/write.js.map +1 -1
- package/dist/modes/interactive/components/activity-lane.d.ts +1 -1
- package/dist/modes/interactive/components/activity-lane.d.ts.map +1 -1
- package/dist/modes/interactive/components/activity-lane.js +11 -2
- package/dist/modes/interactive/components/activity-lane.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +1 -1
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/utils/shell.d.ts +2 -0
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +3 -1
- package/dist/utils/shell.js.map +1 -1
- package/docs/harness-architecture.md +6 -3
- package/docs/settings.md +39 -6
- package/docs/tool-repair.md +1 -1
- package/docs/worker-profiles.md +2 -2
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/npm-shrinkwrap.json +12 -12
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-runtime-reducer.js","sourceRoot":"","sources":["../../../src/core/orchestration/task-runtime-reducer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EASN,gCAAgC,EAChC,2BAA2B,EAC3B,0BAA0B,EAC1B,6BAA6B,EAC7B,+BAA+B,EAC/B,4BAA4B,EAC5B,uBAAuB,EAGvB,4BAA4B,EAI5B,sBAAsB,GAEtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,gBAAgB,EAChB,mBAAmB,EACnB,6BAA6B,EAC7B,0CAA0C,EAC1C,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,gBAAgB,EAChB,MAAM,EACN,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,MAAM,EACN,eAAe,EACf,4BAA4B,GAC5B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACN,+BAA+B,EAC/B,kCAAkC,EAClC,4BAA4B,EAC5B,uBAAuB,EACvB,8BAA8B,EAC9B,eAAe,EACf,eAAe,EACf,qBAAqB,GACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAIN,uBAAuB,EACvB,sBAAsB,EAKtB,qBAAqB,GACrB,MAAM,yBAAyB,CAAC;AAEjC,SAAS,qBAAqB,CAC7B,KAA4B,EAC5B,WAAmB,EACnB,MAAuB,EACvB,EAAU;IAEV,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC9C,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,uBAAuB,CAAC,sBAAsB,WAAW,IAAI,CAAC,CAAC;IACtF,KAAK,CAAC,UAAoD,CAAC,WAAW,CAAC,GAAG;QAC1E,GAAG,OAAO;QACV,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE;KAC1D,CAAC;AACH,CAAC;AAED,SAAS,+BAA+B,CACvC,KAA4B,EAC5B,WAAmB,EACnB,SAA4B;IAE5B,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC9C,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,uBAAuB,CAAC,sBAAsB,WAAW,IAAI,CAAC,CAAC;IACvF,IAAI,SAAS,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;QAC3C,MAAM,IAAI,uBAAuB,CAAC,yBAAyB,SAAS,CAAC,WAAW,6BAA6B,CAAC,CAAC;IAChH,CAAC;IACD,IACC,SAAS,CAAC,aAAa,KAAK,OAAO,CAAC,SAAS,CAAC,aAAa;QAC3D,SAAS,CAAC,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,MAAM;QAC7C,SAAS,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC,SAAS,EAClD,CAAC;QACF,MAAM,IAAI,uBAAuB,CAAC,sBAAsB,WAAW,uCAAuC,CAAC,CAAC;IAC7G,CAAC;IACD,0CAA0C,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAC/F,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAS,iCAAiC,CACzC,KAA4B,EAC5B,WAAmB,EACnB,QAA0B;IAE1B,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,uBAAuB,CAAC,sBAAsB,WAAW,IAAI,CAAC,CAAC;IACzF,IACC,QAAQ,CAAC,WAAW;QACpB,CAAC,SAAS,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,QAAQ,CAAC,WAAW,CAAC,EACjG,CAAC;QACF,MAAM,IAAI,uBAAuB,CAChC,+DAA+D,QAAQ,CAAC,WAAW,IAAI,CACvF,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAID,SAAS,yBAAyB,CACjC,KAA4B,EAC5B,WAAmB,EACnB,MAAiC;IAEjC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,uBAAuB,CAAC,sBAAsB,WAAW,IAAI,CAAC,CAAC;IACzF,IAAI,MAAM,KAAK,gBAAgB;QAAE,OAAO;IACxC,IAAI,MAAM,KAAK,eAAe,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;QAC1G,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,uBAAuB,CAChC,cAAc,WAAW,2BAA2B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC5E,CAAC;QACH,CAAC;IACF,CAAC;IACD,MAAM,QAAQ,GACb,MAAM,KAAK,gBAAgB;QAC1B,CAAC,CAAC,SAAS,CAAC,QAAQ;QACpB,CAAC,CAAC;YACA,GAAG,SAAS,CAAC,QAAQ;YACrB,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CACvC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,OAAO,CAC9C,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,IAAI,EAAE,CAChE,CACD;SACD,CAAC;IACL,MAAM,kBAAkB,GAAG,IAAI,GAAG,CACjC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACxF,CAAC;IACF,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,kBAAkB;SACrD,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;SAClF,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACnC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,uBAAuB,CAChC,cAAc,WAAW,mBAAmB,MAAM,KAAK,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,mCAAmC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAChJ,CAAC;IACH,CAAC;AACF,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC9C,KAA4B,EAC5B,WAAmB,EACnB,MAAuB,EACvB,gBAA4C;IAE5C,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IAC3D,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,uBAAuB,CAAC,sBAAsB,WAAW,IAAI,CAAC,CAAC;IACzF,MAAM,WAAW,GAChB,CAAC,MAAM,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ,CAAC;QACtD,CAAC,MAAM,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ,CAAC;QACtD,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,WAAW,CAAC;YAClD,CAAC,SAAS,CAAC,MAAM,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC;IACpE,IAAI,CAAC,WAAW,EAAE,CAAC;QAClB,MAAM,IAAI,uBAAuB,CAChC,cAAc,WAAW,6BAA6B,SAAS,CAAC,MAAM,SAAS,MAAM,IAAI,CACzF,CAAC;IACH,CAAC;IACD,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QAC5B,IAAI,CAAC,gBAAgB;YAAE,MAAM,IAAI,uBAAuB,CAAC,0CAA0C,CAAC,CAAC;QACrG,yBAAyB,CAAC,KAAK,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;IACjE,CAAC;AACF,CAAC;AAED,MAAM,oCAAoC,GAAG,IAAI,GAAG,CAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;AAElH,SAAS,iBAAiB,CACzB,MAAsD,EACtD,SAA+B,EAC/B,eAAuB;IAEvB,IAAI,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,OAAO,aAAa,EAAE,CAAC;QACtB,IAAI,aAAa,KAAK,eAAe;YAAE,OAAO,IAAI,CAAC;QACnD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,uBAAuB,CAAC,UAAU,SAAS,CAAC,OAAO,6BAA6B,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACtD,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,6BAA6B,CAAC,KAA4B,EAAE,OAAe;IAC1F,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,uBAAuB,CAAC,kBAAkB,OAAO,IAAI,CAAC,CAAC;IAC7E,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACnC,MAAM,IAAI,uBAAuB,CAAC,UAAU,OAAO,yBAAyB,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IAC/F,CAAC;IACD,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QAC3B,MAAM,IAAI,uBAAuB,CAAC,UAAU,OAAO,gCAAgC,KAAK,CAAC,eAAe,IAAI,CAAC,CAAC;IAC/G,CAAC;IACD,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CACzD,CAAC,OAAO,EAAE,EAAE,CACX,CAAC,OAAO,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,KAAK,OAAO,CAAC;QAC3E,oCAAoC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CACzD,CAAC;IACF,IAAI,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,uBAAuB,CAChC,UAAU,OAAO,kBAAkB,eAAe,CAAC,MAAM,cAAc,eAAe,CAAC,SAAS,IAAI,CACpG,CAAC;IACH,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CACtD,CAAC,SAAS,EAAE,EAAE,CACb,SAAS,CAAC,MAAM,KAAK,SAAS;QAC9B,SAAS,CAAC,OAAO,KAAK,OAAO;QAC7B,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CACpD,CAAC;IACF,IAAI,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,uBAAuB,CAAC,UAAU,OAAO,iCAAiC,cAAc,CAAC,OAAO,IAAI,CAAC,CAAC;IACjH,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAA2B,EAAE,UAAkB;IACpF,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,uBAAuB,CAAC,UAAU,KAAK,CAAC,OAAO,2BAA2B,UAAU,GAAG,CAAC,CAAC;IACpG,CAAC;AACF,CAAC;AAED,SAAS,mBAAmB,CAAC,OAA4B;IACxD,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IAC5B,OAAO,IAAI,CAAC,KAAK,CAAC;IAClB,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,uBAAuB,CAC/B,KAA4B,EAC5B,WAAmB,EACnB,EAAU,EACV,UAAkB;IAElB,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAyC,CAAC;IAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAA+C,CAAC;IACvE,MAAM,MAAM,GAAG,KAAK,CAAC,MAA8C,CAAC;IACpE,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;QAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,SAAS,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACxF,KAAK,CAAC,MAAM,CAAC,GAAG;gBACf,GAAG,SAAS;gBACZ,IAAI,EAAE,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE;aAC/D,CAAC;QACH,CAAC;QACD,KAAK,MAAM,SAAS,IAAI,SAAS,EAAE,UAAU,IAAI,EAAE,EAAE,CAAC;YACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpC,IAAI,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvD,QAAQ,CAAC,SAAS,CAAC,GAAG,mBAAmB,CAAC;oBACzC,GAAG,OAAO;oBACV,MAAM,EAAE,WAAW;oBACnB,UAAU;oBACV,SAAS,EAAE,EAAE;iBACb,CAAC,CAAC;gBACH,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;YAC1C,CAAC;QACF,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAsC;IAClE,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO,WAAW,CAAC;IAC/C,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACzC,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO,WAAW,CAAC;IAC/C,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAC3B,MAA4C,EAC5C,OAA4B,EAC5B,EAAU;IAEV,IAAI,CAAC,OAAO,CAAC,OAAO;QAAE,OAAO;IAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,qBAAqB,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,YAAqB,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACxE,OAAO,IAAI,CAAC,eAAe,CAAC;IAC5B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;AAChC,CAAC;AAED,SAAS,uBAAuB,CAC/B,KAA4B,EAC5B,IAAsB;IAUtB,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,MAAM,uBAAuB,GAAa,EAAE,CAAC;IAC7C,MAAM,0BAA0B,GAAa,EAAE,CAAC;IAChD,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAChD,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1E,MAAM,IAAI,uBAAuB,CAChC,oBAAoB,YAAY,0BAA0B,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CACnF,CAAC;QACH,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW;YAAE,SAAS;QACrD,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ;YAAE,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpF,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW;YAAE,0BAA0B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC,IAAI,0BAA0B,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjF,OAAO;YACN,KAAK,EAAE,SAAS;YAChB,iBAAiB;YACjB,uBAAuB;YACvB,0BAA0B;SAC1B,CAAC;IACH,CAAC;IACD,OAAO,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACpG,CAAC;AAED,MAAM,UAAU,wBAAwB,CACvC,KAA4B,EAC5B,OAA4B;IAE5B,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACnE,MAAM,IAAI,uBAAuB,CAAC,YAAY,OAAO,CAAC,SAAS,oCAAoC,CAAC,CAAC;IACtG,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,uBAAuB,CAAC,iBAAiB,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAClF,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IACrE,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,uBAAuB,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;IACnG,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO;YACN,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,kBAAkB;YAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,eAAe,EAAE,QAAQ;SACzB,CAAC;IACH,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO;YACN,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,oBAAoB;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,eAAe,EAAE,SAAS,CAAC,MAAM;SACjC,CAAC;IACH,CAAC;IACD,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjE,IAAI,mBAAmB,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7C,OAAO;YACN,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,gCAAgC;YAC5C,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,iBAAiB,EAAE,mBAAmB,CAAC,iBAAiB;YACxD,uBAAuB,EAAE,mBAAmB,CAAC,uBAAuB;YACpE,0BAA0B,EAAE,mBAAmB,CAAC,0BAA0B;SAC1E,CAAC;IACH,CAAC;IACD,IAAI,mBAAmB,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7C,OAAO;YACN,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,yBAAyB;YACrC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,iBAAiB,EAAE,mBAAmB,CAAC,iBAAiB;SACxD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AACjF,CAAC;AAED,SAAS,0BAA0B,CAAC,KAA4B,EAAE,OAA4B;IAC7F,MAAM,SAAS,GAAG,wBAAwB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC3D,IAAI,SAAS,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,IAAI,EAAE,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACnC,MAAM,IAAI,uBAAuB,CAAC,SAAS,OAAO,CAAC,MAAM,kDAAkD,CAAC,CAAC;QAC9G,CAAC;QACD,OAAO;IACR,CAAC;IACD,IAAI,SAAS,CAAC,UAAU,KAAK,yBAAyB,EAAE,CAAC;QACxD,MAAM,IAAI,uBAAuB,CAChC,YAAY,OAAO,CAAC,SAAS,kCAAkC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACxG,CAAC;IACH,CAAC;IACD,IAAI,SAAS,CAAC,UAAU,KAAK,gCAAgC,EAAE,CAAC;QAC/D,MAAM,IAAI,uBAAuB,CAChC,YAAY,OAAO,CAAC,SAAS,2CAA2C,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACjH,CAAC;IACH,CAAC;IACD,MAAM,IAAI,uBAAuB,CAChC,YAAY,OAAO,CAAC,SAAS,8BAA8B,SAAS,CAAC,eAAe,IAAI,CACxF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAChC,KAA4B,EAC5B,IAAsB;IAEtB,OAAO,IAAI,CAAC,UAAU;SACpB,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;SAC7C,IAAI,CACJ,CAAC,OAAO,EAAkC,EAAE,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAC5G,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,IAAsB,EAAE,SAA4B;IACnG,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,MAAM,CAClG,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,KAAK,SAAS,CAC/C,CAAC;IACF,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,IAAI,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC;QACxE,MAAM,IAAI,uBAAuB,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,mBAAmB,WAAW,kBAAkB,CAAC,CAAC;IAC9G,CAAC;AACF,CAAC;AAED,SAAS,iBAAiB,CAAC,KAA4B,EAAE,WAAmB,EAAE,EAAU;IACvF,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO;IAClE,MAAM,YAAY,GAAG,KAAK,CAAC,KAAyC,CAAC;IACrE,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,SAAS;QAC5D,IAAI,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAC/D,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC;QAClG,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA4B,EAAE,IAAkB,EAAE,UAAkB;IAC7F,MAAM,UAAU,GAAG,KAAK,CAAC,UAAmD,CAAC;IAC7E,MAAM,KAAK,GAAG,KAAK,CAAC,KAAyC,CAAC;IAC9D,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,uBAAuB,CAAC,SAAS,IAAI,CAAC,MAAM,oCAAoC,CAAC,CAAC;IAC5G,4BAA4B,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACnE,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,uBAAuB,CAAC,SAAS,IAAI,CAAC,MAAM,+BAA+B,CAAC,CAAC;IAC/G,uBAAuB,CAAC,KAAK,EAAE,uBAAuB,EAAE,MAAM,CAAC,CAAC;IAChE,+BAA+B,CAAC,SAAS,CAAC,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,CAAC,CAAC;IACnG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAC9C,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9F,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAA4B,EAAE,OAAmB,EAAE,UAAkB;IAChG,MAAM,UAAU,GAAG,KAAK,CAAC,UAAmD,CAAC;IAC7E,MAAM,KAAK,GAAG,KAAK,CAAC,KAAyC,CAAC;IAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAA+C,CAAC;IACvE,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,uBAAuB,CAAC,YAAY,SAAS,+BAA+B,CAAC,CAAC;IACnG,IAAI,QAAQ,CAAC,SAAS,CAAC;QAAE,MAAM,IAAI,uBAAuB,CAAC,YAAY,SAAS,8BAA8B,CAAC,CAAC;IAChH,uBAAuB,CAAC,QAAQ,EAAE,0BAA0B,EAAE,SAAS,CAAC,CAAC;IACzE,+BAA+B,CAAC,IAAI,CAAC,UAAU,EAAE,0BAA0B,EAAE,mBAAmB,CAAC,CAAC;IAClG,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9C,IAAI,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,uBAAuB,CAAC,SAAS,MAAM,kCAAkC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;IAC1G,CAAC;IACD,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IAC/D,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACjD,MAAM,IAAI,uBAAuB,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,WAAW,kBAAkB,CAAC,CAAC;IAC1F,CAAC;IACD,+BAA+B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACjD,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,uBAAuB,CAAC,SAAS,MAAM,+BAA+B,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACvG,CAAC;IACD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,QAAQ,EAAE,yBAAyB,CAAC,CAAC;IAChF,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAChC,MAAM,IAAI,uBAAuB,CAAC,YAAY,SAAS,0CAA0C,CAAC,CAAC;IACpG,CAAC;IACD,IACC,QAAQ,CAAC,iBAAiB;QAC1B,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS;YAC1E,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAClE,CAAC;QACF,MAAM,IAAI,uBAAuB,CAAC,YAAY,SAAS,mDAAmD,CAAC,CAAC;IAC7G,CAAC;IACD,QAAQ,CAAC,SAAS,CAAC,GAAG;QACrB,SAAS;QACT,MAAM;QACN,QAAQ;QACR,MAAM,EAAE,QAAQ;QAChB,GAAG,CAAC,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,aAAa,EAAE,EAAE;QACjB,SAAS,EAAE,UAAU;QACrB,SAAS,EAAE,UAAU;KACrB,CAAC;IACF,MAAM,QAAQ,GAAqB;QAClC,GAAG,IAAI;QACP,IAAI,EAAE;YACL,GAAG,IAAI,CAAC,IAAI;YACZ,MAAM,EAAE,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACpF,SAAS,EAAE,UAAU;SACrB;QACD,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;KAC3C,CAAC;IACF,OAAO,QAAQ,CAAC,YAAY,CAAC;IAC7B,KAAK,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,4CAA4C,CAC3D,KAA4B,EAC5B,OAA4B;IAE5B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,uBAAuB,CAAC,iBAAiB,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAClF,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IACrE,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,uBAAuB,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;IACnG,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,IAAI,uBAAuB,CAAC,cAAc,SAAS,CAAC,WAAW,kBAAkB,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAA4B,EAAE,IAAY;IACrF,IAAI,CAAC,OAAO,CAAC,KAAK;QAAE,OAAO;IAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IAC/D,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,uBAAuB,CAAC,YAAY,OAAO,CAAC,SAAS,uBAAuB,WAAW,eAAe,CAAC,CAAC;IACnH,CAAC;AACF,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAmB,EAAE,UAAkB,EAAE,KAAa;IAChF,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,YAAY,EAAE,CAAC;QACnF,MAAM,IAAI,uBAAuB,CAAC,GAAG,KAAK,qBAAqB,CAAC,CAAC;IAClE,CAAC;AACF,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAyB,EAAE,UAAkB,EAAE,KAAa;IAC3F,IAAI,KAAK,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;QACtC,MAAM,IAAI,uBAAuB,CAAC,GAAG,KAAK,KAAK,UAAU,+BAA+B,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;IAChH,CAAC;AACF,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC5C,KAA4B,EAC5B,WAAmB,EACnB,MAA4B,EAC5B,UAAkB;IAElB,IACC,MAAM,CAAC,aAAa,KAAK,4BAA4B;QACrD,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE;QACxB,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE;QACzB,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE;QACtB,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE;QAC3B,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE;QACvB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC;QAClE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAC9B,CAAC;QACF,MAAM,IAAI,uBAAuB,CAAC,oCAAoC,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,WAAW,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,IAAI,uBAAuB,CAAC,uDAAuD,CAAC,CAAC;IAC5F,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,uBAAuB,CAAC,oBAAoB,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;IAC1F,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACjE,MAAM,IAAI,uBAAuB,CAAC,YAAY,MAAM,CAAC,SAAS,yBAAyB,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAC5G,CAAC;IACD,IACC,CAAC,OAAO,CAAC,KAAK;QACd,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO;QACxC,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,MAAM,CAAC,YAAY,EACjD,CAAC;QACF,MAAM,IAAI,uBAAuB,CAAC,YAAY,MAAM,CAAC,SAAS,oCAAoC,CAAC,CAAC;IACrG,CAAC;IACD,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;IAC9E,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,IAAI,uBAAuB,CAAC,8CAA8C,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC;QAC3D,MAAM,IAAI,uBAAuB,CAAC,mDAAmD,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACnC,MAAM,eAAe,GAAG,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACzF,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,uBAAuB,CAChC,oEAAoE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACjG,CAAC;QACH,CAAC;IACF,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED,SAAS,8BAA8B,CACtC,KAA4B,EAC5B,SAAiB;IAEjB,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;AACpG,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC3C,KAA4B,EAC5B,WAAmB,EACnB,SAAiB,EACjB,KAAqB;IAErB,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,uBAAuB,CAAC,wBAAwB,SAAS,iCAAiC,CAAC,CAAC;IACvG,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,uBAAuB,CAAC,oBAAoB,SAAS,IAAI,CAAC,CAAC;IACnF,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,uBAAuB,CAAC,YAAY,SAAS,+BAA+B,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAC3G,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,IACC,CAAC,IAAI;QACL,KAAK,CAAC,aAAa,KAAK,4BAA4B;QACpD,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;QACtB,KAAK,CAAC,SAAS,KAAK,SAAS;QAC7B,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;QAC/B,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW;QAC3C,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAC5B,CAAC;QACF,MAAM,IAAI,uBAAuB,CAAC,oDAAoD,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,QAAQ,GAAG,8BAA8B,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAClE,IAAI,QAAQ,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,IAAI,uBAAuB,CAChC,YAAY,SAAS,2BAA2B,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI,CAC/E,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,EAAE,MAAM,KAAK,UAAU,EAAE,CAAC;QACrC,MAAM,IAAI,uBAAuB,CAAC,aAAa,QAAQ,CAAC,OAAO,CAAC,UAAU,iBAAiB,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;QACpG,MAAM,IAAI,uBAAuB,CAAC,YAAY,SAAS,kCAAkC,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;QAC1D,MAAM,IAAI,uBAAuB,CAAC,YAAY,SAAS,kCAAkC,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC3C,KAA4B,EAC5B,WAAmB,EACnB,KAAmB,EACnB,OAA2B,EAC3B,UAAkB;IAElB,IAAI,WAAW,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;QACrC,MAAM,IAAI,uBAAuB,CAAC,mBAAmB,KAAK,CAAC,SAAS,iCAAiC,CAAC,CAAC;IACxG,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,uBAAuB,CAAC,oBAAoB,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC;IACzF,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ;QAAE,MAAM,IAAI,uBAAuB,CAAC,YAAY,KAAK,CAAC,SAAS,kBAAkB,CAAC,CAAC;IAClH,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,8BAA8B,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACxE,IAAI,QAAQ,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,IAAI,uBAAuB,CAChC,YAAY,KAAK,CAAC,SAAS,2BAA2B,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI,CACrF,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,EAAE,MAAM,KAAK,UAAU,EAAE,CAAC;QACrC,MAAM,IAAI,uBAAuB,CAAC,aAAa,QAAQ,CAAC,OAAO,CAAC,UAAU,iBAAiB,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,IAAI,uBAAuB,CAAC,YAAY,KAAK,CAAC,SAAS,+CAA+C,CAAC,CAAC;IAC/G,CAAC;IACD,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,uBAAuB,CAAC,YAAY,KAAK,CAAC,SAAS,iCAAiC,CAAC,CAAC;IACjG,CAAC;IACD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAChD,IACC,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC9B,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC5B,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC7B,UAAU,GAAG,YAAY;QACzB,WAAW,IAAI,YAAY,EAC1B,CAAC;QACF,MAAM,IAAI,uBAAuB,CAAC,YAAY,KAAK,CAAC,SAAS,4BAA4B,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,uBAAuB,CAAC,kBAAkB,OAAO,IAAI,CAAC,CAAC;QAC7E,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;QACjD,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY;YAAE,MAAM,IAAI,uBAAuB,CAAC,UAAU,OAAO,gBAAgB,CAAC,CAAC;QACxG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;YAC5C,MAAM,IAAI,uBAAuB,CAAC,UAAU,OAAO,6BAA6B,CAAC,CAAC;QACnF,CAAC;IACF,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC3C,KAA4B,EAC5B,WAAmB,EACnB,SAAiB,EACjB,OAAe,EACf,YAAoB,EACpB,UAAkB;IAElB,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,uBAAuB,CAAC,oBAAoB,SAAS,iCAAiC,CAAC,CAAC;IACnG,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,uBAAuB,CAAC,oBAAoB,SAAS,IAAI,CAAC,CAAC;IACnF,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ;QAAE,MAAM,IAAI,uBAAuB,CAAC,YAAY,SAAS,kBAAkB,CAAC,CAAC;IAC5G,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;QACxG,MAAM,IAAI,uBAAuB,CAAC,YAAY,SAAS,oCAAoC,CAAC,CAAC;IAC9F,CAAC;IACD,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,SAAS,GAAG,CAAC,CAAC;IACvE,4CAA4C,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7D,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,iCAAiC,CAChD,KAA4B,EAC5B,WAAmB,EACnB,UAA6B,EAC7B,OAAe,EACf,UAAkB;IAElB,IAAI,WAAW,KAAK,UAAU,CAAC,SAAS,EAAE,CAAC;QAC1C,MAAM,IAAI,uBAAuB,CAAC,yBAAyB,UAAU,CAAC,SAAS,iCAAiC,CAAC,CAAC;IACnH,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACrD,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,uBAAuB,CAAC,oBAAoB,UAAU,CAAC,SAAS,IAAI,CAAC,CAAC;IAC9F,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,IAAI,uBAAuB,CAAC,YAAY,UAAU,CAAC,SAAS,mBAAmB,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,UAAU,CAAC,YAAY,EAAE,CAAC;QACnH,MAAM,IAAI,uBAAuB,CAAC,YAAY,UAAU,CAAC,SAAS,oCAAoC,CAAC,CAAC;IACzG,CAAC;IACD,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC;IAClF,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC9C,KAA4B,EAC5B,WAAmB,EACnB,QAAiC;IAEjC,MAAM,mBAAmB,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,WAAW,CAAC;IAC1F,IAAI,WAAW,KAAK,mBAAmB,EAAE,CAAC;QACzC,MAAM,IAAI,uBAAuB,CAAC,oBAAoB,mBAAmB,iCAAiC,CAAC,CAAC;IAC7G,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IACpE,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,uBAAuB,CAAC,sBAAsB,QAAQ,CAAC,WAAW,IAAI,CAAC,CAAC;IAClG,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,IAAI,uBAAuB,CAAC,cAAc,QAAQ,CAAC,WAAW,kBAAkB,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,QAAQ,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC5C,MAAM,IAAI,uBAAuB,CAAC,4CAA4C,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC7D,MAAM,IAAI,uBAAuB,CAAC,kBAAkB,QAAQ,CAAC,MAAM,qCAAqC,CAAC,CAAC;QAC3G,CAAC;IACF,CAAC;IACD,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpD,MAAM,IAAI,uBAAuB,CAAC,qBAAqB,QAAQ,CAAC,SAAS,gCAAgC,CAAC,CAAC;QAC5G,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpD,MAAM,IAAI,uBAAuB,CAAC,qBAAqB,QAAQ,CAAC,SAAS,2BAA2B,CAAC,CAAC;QACvG,CAAC;IACF,CAAC;IACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAC3D,CAAC,SAAS,EAAE,EAAE,CACb,SAAS,CAAC,MAAM,KAAK,SAAS;QAC9B,SAAS,CAAC,OAAO,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW;QACtD,SAAS,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QAC5C,SAAS,CAAC,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS,CACnD,CAAC;IACF,IAAI,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,uBAAuB,CAAC,mCAAmC,gBAAgB,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;IAC/G,CAAC;AACF,CAAC;AAED,MAAM,UAAU,kCAAkC,CACjD,KAA4B,EAC5B,WAAmB,EACnB,UAAsC;IAEtC,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACxD,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,uBAAuB,CAAC,qBAAqB,UAAU,CAAC,UAAU,IAAI,CAAC,CAAC;IACjG,MAAM,mBAAmB,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;IAClH,IAAI,WAAW,KAAK,mBAAmB,EAAE,CAAC;QACzC,MAAM,IAAI,uBAAuB,CAAC,6BAA6B,mBAAmB,6BAA6B,CAAC,CAAC;IAClH,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,IAAI,uBAAuB,CAAC,aAAa,UAAU,CAAC,UAAU,iBAAiB,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1G,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACvC,KAA4B,EAC5B,WAAmB,EACnB,SAA6B;IAE7B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,MAAM,IAAI,uBAAuB,CAAC,sBAAsB,WAAW,IAAI,CAAC,CAAC;IAC7G,IAAI,CAAC,SAAS;QAAE,OAAO;IACvB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;QAChE,MAAM,IAAI,uBAAuB,CAAC,yBAAyB,SAAS,qCAAqC,CAAC,CAAC;IAC5G,CAAC;AACF,CAAC;AAUD,MAAM,UAAU,2BAA2B,CAC1C,KAA4B,EAC5B,WAAmB,EACnB,MAAc,EACd,UAAkB;IAElB,IAAI,WAAW,KAAK,MAAM;QACzB,MAAM,IAAI,uBAAuB,CAAC,gBAAgB,MAAM,iCAAiC,CAAC,CAAC;IAC5F,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,uBAAuB,CAAC,iBAAiB,MAAM,IAAI,CAAC,CAAC;IAC1E,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACtG,MAAM,IAAI,uBAAuB,CAAC,SAAS,MAAM,uBAAuB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IAC/F,CAAC;IACD,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9C,IAAI,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,uBAAuB,CAAC,SAAS,MAAM,gCAAgC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;IACxG,CAAC;IACD,kBAAkB,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,wBAAwB,CAAC,CAAC;IAChE,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC3C,KAA4B,EAC5B,WAAmB,EACnB,IAAiC;IAEjC,IAAI,WAAW,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,IAAI,uBAAuB,CAAC,oDAAoD,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACtD,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC/D,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,uBAAuB,CAAC,iCAAiC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IAClG,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QAC1B,MAAM,IAAI,uBAAuB,CAAC,yBAAyB,IAAI,CAAC,MAAM,2BAA2B,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACvC,MAAM,IAAI,uBAAuB,CAChC,yBAAyB,IAAI,CAAC,MAAM,4BAA4B,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CACvF,CAAC;IACH,CAAC;IACD,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,oBAAoB,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7E,MAAM,IAAI,uBAAuB,CAAC,SAAS,IAAI,CAAC,cAAc,8BAA8B,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IAC9G,CAAC;IACD,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;QACxE,MAAM,IAAI,uBAAuB,CAAC,6BAA6B,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,uBAAuB,CAAC,qBAAqB,IAAI,CAAC,iBAAiB,oBAAoB,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU,IAAI,eAAe,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAC3E,MAAM,IAAI,uBAAuB,CAAC,qBAAqB,IAAI,CAAC,iBAAiB,qBAAqB,CAAC,CAAC;IACrG,CAAC;IACD,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,yBAAyB,CAAC,CAAC;IACtE,IACC,IAAI,CAAC,OAAO,KAAK,cAAc;QAC/B,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CACrC,CAAC,QAAQ,EAAE,EAAE,CACZ,QAAQ,CAAC,OAAO;YAChB,QAAQ,CAAC,IAAI,KAAK,QAAQ;YAC1B,QAAQ,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC,MAAM;YAChD,QAAQ,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAC3C,EACA,CAAC;QACF,MAAM,IAAI,uBAAuB,CAChC,GAAG,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,+EAA+E,CACvI,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,mBAAmB,CAC3B,KAA4B,EAC5B,WAAmB,EACnB,OAAmB,EACnB,UAAkB;IAElB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAA+C,CAAC;IACvE,MAAM,MAAM,GAAG,KAAK,CAAC,MAA8C,CAAC;IACpE,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,IAAI,WAAW,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;QACrC,MAAM,IAAI,uBAAuB,CAAC,YAAY,KAAK,CAAC,SAAS,wCAAwC,CAAC,CAAC;IACxG,CAAC;IACD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QAC/E,MAAM,IAAI,uBAAuB,CAAC,YAAY,KAAK,CAAC,SAAS,iCAAiC,OAAO,IAAI,CAAC,CAAC;IAC5G,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,IAAI,KAAK,CAAC,eAAe,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;QACxF,MAAM,IAAI,uBAAuB,CAAC,UAAU,OAAO,8BAA8B,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC;IACvG,CAAC;IACD,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;IAClD,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,uBAAuB,CAAC,YAAY,KAAK,CAAC,SAAS,kCAAkC,CAAC,CAAC;IAClG,CAAC;IACD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,MAAM,IAAI,uBAAuB,CAAC,uCAAuC,CAAC,CAAC;IAC/G,2BAA2B,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAChD,IACC,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC5B,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC7B,UAAU,GAAG,YAAY;QACzB,WAAW,IAAI,YAAY,EAC1B,CAAC;QACF,MAAM,IAAI,uBAAuB,CAAC,YAAY,KAAK,CAAC,SAAS,mCAAmC,CAAC,CAAC;IACnG,CAAC;IACD,4CAA4C,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7D,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG;QAC3B,GAAG,OAAO;QACV,MAAM,EAAE,QAAQ;QAChB,OAAO;QACP,KAAK;QACL,SAAS,EAAE,UAAU;KACrB,CAAC;IACF,MAAM,CAAC,OAAO,CAAC,GAAG;QACjB,GAAG,KAAK;QACR,MAAM,EAAE,QAAQ;QAChB,eAAe,EAAE,KAAK,CAAC,SAAS;QAChC,SAAS,EAAE,UAAU;KACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CACvC,UAAiC,EACjC,KAAyB;IAEzB,4BAA4B,CAAC,UAAU,CAAC,CAAC;IACzC,IAAI,KAAK,CAAC,OAAO,IAAI,UAAU,CAAC,WAAW;QAAE,OAAO,UAAU,CAAC;IAC/D,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,uBAAuB,CAChC,+BAA+B,KAAK,CAAC,OAAO,4BAA4B,UAAU,CAAC,WAAW,GAAG,CACjG,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,IAAI,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,KAAK,CAAC,MAA8C,CAAC;IACvE,MAAM,aAAa,GAAG,KAAK,CAAC,UAAmD,CAAC;IAChF,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAyC,CAAC;IACjE,MAAM,WAAW,GAAG,KAAK,CAAC,QAA+C,CAAC;IAC1E,MAAM,cAAc,GAAG,KAAK,CAAC,WAAgD,CAAC;IAC9E,MAAM,YAAY,GAAG,KAAK,CAAC,SAAiD,CAAC;IAC7E,MAAM,gBAAgB,GAAG,KAAK,CAAC,aAAyD,CAAC;IACzF,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC/D,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;IAC3E,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;IAC9B,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC1B,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;IAChC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,aAAa,GAAG,aAAa,CAAC;IAEpC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,mBAAmB,EAAE,CAAC;YAC1B,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtD,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;YAC1E,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACnC,MAAM,IAAI,uBAAuB,CAAC,sBAAsB,SAAS,CAAC,WAAW,mBAAmB,CAAC,CAAC;YACnG,CAAC;YACD,IAAI,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,uBAAuB,CAAC,cAAc,SAAS,CAAC,WAAW,+BAA+B,CAAC,CAAC;YACvG,CAAC;YACD,uBAAuB,CAAC,UAAU,EAAE,4BAA4B,EAAE,WAAW,CAAC,CAAC;YAC/E,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;YAC7E,MAAM;QACP,CAAC;QACD,KAAK,mBAAmB,EAAE,CAAC;YAC1B,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,+BAA+B,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACrF,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,CAAC;YAC1D,MAAM;QACP,CAAC;QACD,KAAK,6BAA6B,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,OAAO,GAAG,iCAAiC,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACtF,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,CAAC,CAAC;YACpG,IAAI,QAAQ,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACxD,MAAM,IAAI,uBAAuB,CAAC,uBAAuB,QAAQ,CAAC,UAAU,4BAA4B,CAAC,CAAC;YAC3G,CAAC;YACD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACf,kCAAkC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBACxD,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC3F,CAAC;YACD,MAAM;QACP,CAAC;QACD,KAAK,kBAAkB;YACtB,+BAA+B,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACpE,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAC5E,MAAM;QACP,KAAK,mBAAmB;YACvB,+BAA+B,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACpE,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAC5E,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAC9D,MAAM;QACP,KAAK,qBAAqB,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,sCAAsC,CAAC,CAAC;YAC9F,IAAI,MAAM,KAAK,eAAe,IAAI,MAAM,KAAK,gBAAgB,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;gBAC9F,MAAM,IAAI,uBAAuB,CAAC,wCAAwC,MAAM,IAAI,CAAC,CAAC;YACvF,CAAC;YACD,+BAA+B,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;YAC/E,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAC/E,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;YAC3F,MAAM;QACP,CAAC;QACD,KAAK,qBAAqB,EAAE,CAAC;YAC5B,+BAA+B,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACvE,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAC/E,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;YAC3F,MAAM;QACP,CAAC;QACD,KAAK,cAAc,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5C,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC;YAC1E,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAChD,MAAM;QACP,CAAC;QACD,KAAK,uBAAuB,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;gBACvC,MAAM,IAAI,uBAAuB,CAAC,kBAAkB,IAAI,CAAC,MAAM,iCAAiC,CAAC,CAAC;YACnG,CAAC;YACD,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAChD,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAC3D,MAAM;QACP,CAAC;QACD,KAAK,YAAY,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;YACjE,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;YACpD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YAC9B,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,uBAAuB,CAAC,iBAAiB,MAAM,IAAI,CAAC,CAAC;YAC7E,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACvC,MAAM,IAAI,uBAAuB,CAAC,SAAS,MAAM,+BAA+B,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YAC1G,CAAC;YACD,IAAI,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;gBAC/D,MAAM,IAAI,uBAAuB,CAAC,SAAS,MAAM,gCAAgC,CAAC,CAAC;YACpF,CAAC;YACD,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;YACxG,MAAM;QACP,CAAC;QACD,KAAK,aAAa,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;YAClE,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;YAC9E,MAAM,OAAO,GAAG,2BAA2B,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAC1F,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;YACzG,MAAM;QACP,CAAC;QACD,KAAK,4BAA4B,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,mCAAmC,CAAC,CAAC;YACjF,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,2CAA2C,CAAC,CAAC;YACzG,MAAM,iBAAiB,GAAG,MAAM,CAC/B,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAC/B,8CAA8C,CAC9C,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,oCAAoC,CAAC,CAAC;YACpF,IAAI,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;gBACpF,MAAM,IAAI,uBAAuB,CAAC,iCAAiC,OAAO,IAAI,CAAC,CAAC;YACjF,CAAC;YACD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,uCAAuC,CAAC,CAAC;YAC7F,MAAM,UAAU,GAAgC;gBAC/C,MAAM;gBACN,cAAc;gBACd,iBAAiB;gBACjB,OAAO;gBACP,UAAU;aACV,CAAC;YACF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,4BAA4B,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAChG,KAAK,CAAC,MAAM,CAAC,GAAG;gBACf,GAAG,OAAO;gBACV,IAAI,EAAE;oBACL,GAAG,OAAO,CAAC,IAAI;oBACf,MAAM,EAAE,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;oBACxD,SAAS,EAAE,KAAK,CAAC,UAAU;iBAC3B;gBACD,YAAY,EAAE;oBACb,cAAc;oBACd,iBAAiB;oBACjB,OAAO;oBACP,UAAU;oBACV,WAAW,EAAE,KAAK,CAAC,UAAU;iBAC7B;aACD,CAAC;YACF,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YACrE,MAAM;QACP,CAAC;QACD,KAAK,kBAAkB,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC9C,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;YACjE,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;gBAC5D,MAAM,IAAI,uBAAuB,CAAC,qBAAqB,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;YAC3F,CAAC;YACD,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;gBACxB,MAAM,IAAI,uBAAuB,CAAC,UAAU,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAC;YAC9F,uBAAuB,CAAC,MAAM,EAAE,gCAAgC,EAAE,eAAe,CAAC,CAAC;YACnF,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBAC3C,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,uBAAuB,CAAC,yBAAyB,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;gBACjG,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACjC,MAAM,IAAI,uBAAuB,CAAC,iBAAiB,KAAK,CAAC,aAAa,eAAe,CAAC,CAAC;gBACxF,CAAC;gBACD,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;oBAClF,MAAM,IAAI,uBAAuB,CAAC,UAAU,KAAK,CAAC,OAAO,sCAAsC,CAAC,CAAC;gBAClG,CAAC;YACF,CAAC;iBAAM,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;gBACrE,MAAM,IAAI,uBAAuB,CAAC,eAAe,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;YACxF,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;YAC9B,MAAM;QACP,CAAC;QACD,KAAK,eAAe,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;YACvE,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;gBACnC,MAAM,IAAI,uBAAuB,CAAC,kBAAkB,OAAO,iCAAiC,CAAC,CAAC;YAC/F,CAAC;YACD,MAAM,KAAK,GAAG,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC5D,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;gBAAE,MAAM;YACtC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;YAC/E,MAAM;QACP,CAAC;QACD,KAAK,iBAAiB,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;YACzE,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,uBAAuB,CAAC,kBAAkB,OAAO,IAAI,CAAC,CAAC;YAC7E,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACxC,MAAM,IAAI,uBAAuB,CAChC,mFAAmF,CACnF,CAAC;QACH,CAAC;QACD,KAAK,wBAAwB,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,gCAAgC,CAAC,CAAC;YAChF,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,kCAAkC,CAAC,CAAC;YACtF,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;gBACnC,MAAM,IAAI,uBAAuB,CAAC,mBAAmB,OAAO,iCAAiC,CAAC,CAAC;YAChG,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,uBAAuB,CAAC,kBAAkB,OAAO,IAAI,CAAC,CAAC;YAC7E,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpC,IACC,CAAC,OAAO;gBACR,OAAO,CAAC,MAAM,KAAK,WAAW;gBAC9B,OAAO,CAAC,OAAO,KAAK,OAAO;gBAC3B,KAAK,CAAC,eAAe,KAAK,SAAS,EAClC,CAAC;gBACF,MAAM,IAAI,uBAAuB,CAAC,UAAU,OAAO,sCAAsC,SAAS,IAAI,CAAC,CAAC;YACzG,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU;gBAAE,MAAM;YACvC,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAClC,MAAM,IAAI,uBAAuB,CAAC,UAAU,OAAO,qBAAqB,CAAC,CAAC;YAC3E,CAAC;YACD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,uBAAuB,CAAC,6CAA6C,CAAC,CAAC;YAClF,CAAC;YACD,2BAA2B,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACnD,4CAA4C,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC7D,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;YAChF,MAAM;QACP,CAAC;QACD,KAAK,eAAe,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;YACvE,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;YACxD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,uBAAuB,CAAC,kBAAkB,OAAO,IAAI,CAAC,CAAC;YAC7E,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACvC,MAAM,IAAI,uBAAuB,CAChC,kFAAkF,CAClF,CAAC;QACH,CAAC;QACD,KAAK,gBAAgB,EAAE,CAAC;YACvB,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,uBAAuB,CAAC,EAAE,qBAAqB,CAAC,CAAC;YAC5G,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAC3D,MAAM;QACP,CAAC;QACD,KAAK,qBAAqB,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,+BAA+B,CAAC,CAAC;YACnF,MAAM,KAAK,GAAG,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC;YACxF,MAAM,OAAO,GAAG,4BAA4B,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACzF,QAAQ,CAAC,SAAS,CAAC,GAAG;gBACrB,GAAG,OAAO;gBACV,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,KAAK;gBACL,SAAS,EAAE,KAAK,CAAC,UAAU;aAC3B,CAAC;YACF,MAAM;QACP,CAAC;QACD,KAAK,gBAAgB,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9F,MAAM,OAAO,GAAG,4BAA4B,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YACzG,IAAI,OAAO,EAAE,CAAC;gBACb,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC9B,IAAI,CAAC,KAAK;oBAAE,MAAM,IAAI,uBAAuB,CAAC,kBAAkB,OAAO,IAAI,CAAC,CAAC;gBAC7E,MAAM,CAAC,OAAO,CAAC,GAAG;oBACjB,GAAG,KAAK;oBACR,MAAM,EAAE,QAAQ;oBAChB,eAAe,EAAE,KAAK,CAAC,SAAS;oBAChC,SAAS,EAAE,KAAK,CAAC,UAAU;iBAC3B,CAAC;YACH,CAAC;YACD,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG;gBAC3B,GAAG,OAAO;gBACV,MAAM,EAAE,QAAQ;gBAChB,KAAK;gBACL,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/B,SAAS,EAAE,KAAK,CAAC,UAAU;aAC3B,CAAC;YACF,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,uBAAuB,CAAC,iBAAiB,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;YAClF,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG;gBACvB,GAAG,IAAI;gBACP,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE;aACtE,CAAC;YACF,MAAM;QACP,CAAC;QACD,KAAK,iBAAiB,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,2BAA2B,CAAC,CAAC;YAC/E,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;YACzE,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,8BAA8B,CAAC,CAAC;YACxF,MAAM,OAAO,GAAG,4BAA4B,CAC3C,KAAK,EACL,KAAK,CAAC,WAAW,EACjB,SAAS,EACT,OAAO,EACP,YAAY,EACZ,KAAK,CAAC,UAAU,CAChB,CAAC;YACF,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;YACrF,MAAM;QACP,CAAC;QACD,KAAK,sBAAsB,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;YAC9E,MAAM,OAAO,GAAG,iCAAiC,CAChD,KAAK,EACL,KAAK,CAAC,WAAW,EACjB,UAAU,EACV,OAAO,EACP,KAAK,CAAC,UAAU,CAChB,CAAC;YACF,IAAI,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,uBAAuB,CAAC,eAAe,UAAU,CAAC,YAAY,gCAAgC,CAAC,CAAC;YAC3G,CAAC;YACD,+BAA+B,CAC9B,OAAO,CAAC,aAAa,EACrB,6BAA6B,EAC7B,yBAAyB,CACzB,CAAC;YACF,uBAAuB,CAAC,WAAW,EAAE,6BAA6B,EAAE,YAAY,CAAC,CAAC;YAClF,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC;YAClD,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG;gBAChC,GAAG,OAAO;gBACV,aAAa,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,YAAY,CAAC;gBAClE,SAAS,EAAE,KAAK,CAAC,UAAU;aAC3B,CAAC;YACF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACtC,IAAI,KAAK,EAAE,CAAC;oBACX,qBAAqB,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;oBACtD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG;wBACzB,GAAG,KAAK;wBACR,aAAa,EAAE,EAAE,GAAG,KAAK,CAAC,aAAa,EAAE,kBAAkB,EAAE,UAAU,CAAC,YAAY,EAAE;wBACtF,SAAS,EAAE,KAAK,CAAC,UAAU;qBAC3B,CAAC;gBACH,CAAC;YACF,CAAC;YACD,MAAM;QACP,CAAC;QACD,KAAK,mBAAmB,EAAE,CAAC;YAC1B,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC;YACjF,sBAAsB,CAAC,KAAK,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpC,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,uBAAuB,CAAC,oBAAoB,SAAS,IAAI,CAAC,CAAC;YACnF,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC;YAC3E,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,gCAAgC,CAAC,CAAC;YAC1F,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;gBACxG,MAAM,IAAI,uBAAuB,CAAC,YAAY,SAAS,oCAAoC,CAAC,CAAC;YAC9F,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjE,MAAM,IAAI,uBAAuB,CAAC,YAAY,SAAS,0BAA0B,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;YACtG,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACtB,MAAM,IAAI,uBAAuB,CAAC,YAAY,SAAS,sCAAsC,CAAC,CAAC;YAChG,CAAC;YACD,MAAM,KAAK,GACV,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS;gBAChC,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;YACxE,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1E,MAAM,IAAI,uBAAuB,CAAC,YAAY,SAAS,iCAAiC,CAAC,CAAC;YAC3F,CAAC;YACD,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1E,MAAM,IAAI,uBAAuB,CAAC,+DAA+D,CAAC,CAAC;YACpG,CAAC;YACD,QAAQ,CAAC,SAAS,CAAC,GAAG;gBACrB,GAAG,OAAO;gBACV,MAAM,EAAE,WAAW;gBACnB,GAAG,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3B,SAAS,EAAE,KAAK,CAAC,UAAU;aAC3B,CAAC;YACF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACtC,IAAI,KAAK,EAAE,CAAC;oBACX,qBAAqB,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;oBACnD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;gBAC1F,CAAC;YACF,CAAC;YACD,MAAM;QACP,CAAC;QACD,KAAK,iBAAiB,EAAE,CAAC;YACxB,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAC/E,MAAM;QACP,CAAC;QACD,KAAK,mBAAmB,EAAE,CAAC;YAC1B,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC;YACjF,sBAAsB,CAAC,KAAK,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpC,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,uBAAuB,CAAC,oBAAoB,SAAS,IAAI,CAAC,CAAC;YACnF,IAAI,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3C,MAAM,IAAI,uBAAuB,CAAC,YAAY,SAAS,yBAAyB,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;YACrG,CAAC;YACD,QAAQ,CAAC,SAAS,CAAC,GAAG,mBAAmB,CAAC;gBACzC,GAAG,OAAO;gBACV,MAAM,EAAE,WAAW;gBACnB,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,8BAA8B,CAAC;gBAC5E,SAAS,EAAE,KAAK,CAAC,UAAU;aAC3B,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,IAAI,EAAE,CAAC;gBACV,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG;oBACvB,GAAG,IAAI;oBACP,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE;iBACxE,CAAC;YACH,CAAC;YACD,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YACvD,MAAM;QACP,CAAC;QACD,KAAK,kBAAkB,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,6BAA6B,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAC5G,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,mBAAmB,CAAC;gBAChD,GAAG,OAAO;gBACV,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM;gBACN,SAAS,EAAE,KAAK,CAAC,UAAU;aAC3B,CAAC,CAAC;YACH,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG;gBACtB,GAAG,IAAI;gBACP,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE;aAC/F,CAAC;YACF,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YACvD,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAClE,MAAM;QACP,CAAC;QACD,KAAK,uBAAuB,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,iCAAiC,CAAC,CAAC;YACrF,sBAAsB,CAAC,KAAK,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpC,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,uBAAuB,CAAC,oBAAoB,SAAS,IAAI,CAAC,CAAC;YACnF,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACxG,MAAM,IAAI,uBAAuB,CAAC,YAAY,SAAS,yBAAyB,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;YACrG,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,+BAA+B,CAAC,CAAC;YAC/E,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,oCAAoC,CAAC,CAAC;YAC9F,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;gBACtF,MAAM,IAAI,uBAAuB,CAAC,YAAY,SAAS,oCAAoC,CAAC,CAAC;YAC9F,CAAC;YACD,QAAQ,CAAC,SAAS,CAAC,GAAG,mBAAmB,CAAC;gBACzC,GAAG,OAAO;gBACV,MAAM,EAAE,SAAS;gBACjB,GAAG,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjG,SAAS,EAAE,KAAK,CAAC,UAAU;aAC3B,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,IAAI;gBACP,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;YAC3G,MAAM;QACP,CAAC;QACD,KAAK,oBAAoB,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpD,+BAA+B,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACpE,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,uBAAuB,CAAC,aAAa,QAAQ,CAAC,UAAU,iCAAiC,CAAC,CAAC;YACtG,CAAC;YACD,MAAM,cAAc,GAAG,sBAAsB,QAAQ,CAAC,UAAU,EAAE,CAAC;YACnE,IAAI,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,uBAAuB,CAAC,iBAAiB,cAAc,mBAAmB,CAAC,CAAC;YACvF,CAAC;YACD,uBAAuB,CAAC,SAAS,EAAE,2BAA2B,EAAE,UAAU,CAAC,CAAC;YAC5E,uBAAuB,CAAC,aAAa,EAAE,+BAA+B,EAAE,cAAc,CAAC,CAAC;YACxF,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YAC1E,aAAa,CAAC,cAAc,CAAC,GAAG;gBAC/B,cAAc;gBACd,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,SAAS,EAAE,KAAK,CAAC,UAAU;aAC3B,CAAC;YACF,MAAM;QACP,CAAC;QACD,KAAK,mBAAmB,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,6BAA6B,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAChE,MAAM,QAAQ,GAAG,kCAAkC,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAC1F,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG;gBAClC,GAAG,QAAQ;gBACX,MAAM,EAAE,UAAU,CAAC,OAAO;gBAC1B,UAAU;aACV,CAAC;YACF,MAAM,oBAAoB,GAAG,aAAa,CAAC,sBAAsB,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;YAC1F,IAAI,oBAAoB,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChD,aAAa,CAAC,oBAAoB,CAAC,cAAc,CAAC,GAAG;oBACpD,GAAG,oBAAoB;oBACvB,MAAM,EAAE,WAAW;oBACnB,WAAW,EAAE,KAAK,CAAC,UAAU;iBAC7B,CAAC;YACH,CAAC;YACD,IAAI,UAAU,CAAC,OAAO,KAAK,UAAU,IAAI,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBACrE,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACrD,IAAI,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBACvD,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,mBAAmB,CAAC;wBACjD,GAAG,OAAO;wBACV,MAAM,EAAE,SAAS;wBACjB,UAAU,EAAE,mBAAmB;wBAC/B,SAAS,EAAE,KAAK,CAAC,UAAU;qBAC3B,CAAC,CAAC;oBACH,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBACnC,IAAI,IAAI,EAAE,CAAC;wBACV,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG;4BACvB,GAAG,IAAI;4BACP,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE;yBACtE,CAAC;oBACH,CAAC;gBACF,CAAC;YACF,CAAC;YACD,MAAM;QACP,CAAC;QACD,KAAK,uBAAuB,EAAE,CAAC;YAC9B,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,sCAAsC,CAAC,CAAC;YACpG,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,mCAAmC,CAAC,CAAC;YAC3F,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;YACpG,sBAAsB,CAAC,KAAK,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC;YACrE,wBAAwB,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;YACxD,IAAI,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,uBAAuB,CAAC,iBAAiB,cAAc,gCAAgC,CAAC,CAAC;YACpG,CAAC;YACD,uBAAuB,CAAC,aAAa,EAAE,+BAA+B,EAAE,cAAc,CAAC,CAAC;YACxF,aAAa,CAAC,cAAc,CAAC,GAAG;gBAC/B,cAAc;gBACd,WAAW;gBACX,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnC,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,+BAA+B,CAAC;gBACvE,SAAS,EAAE,KAAK,CAAC,UAAU;aAC3B,CAAC;YACF,MAAM;QACP,CAAC;QACD,KAAK,wBAAwB,EAAE,CAAC;YAC/B,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,uCAAuC,CAAC,CAAC;YACrG,MAAM,YAAY,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;YACnD,IAAI,CAAC,YAAY;gBAAE,MAAM,IAAI,uBAAuB,CAAC,yBAAyB,cAAc,IAAI,CAAC,CAAC;YAClG,sBAAsB,CAAC,KAAK,EAAE,YAAY,CAAC,WAAW,EAAE,kCAAkC,CAAC,CAAC;YAC5F,aAAa,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;YACxG,MAAM;QACP,CAAC;IACF,CAAC;IAED,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1D,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;IACzB,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC;IACjC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC;IACvB,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC;IAC7B,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC;IACnC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;IAC/B,KAAK,CAAC,aAAa,GAAG,gBAAgB,CAAC;IACvC,MAAM,MAAM,GAAG,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;IACxD,8BAA8B,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACxD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAqC;IAC/E,OAAO,MAAM,CAAC,MAAM,CAAC,wBAAwB,EAAE,eAAe,EAAE,CAAC,CAAC;AACnE,CAAC","sourcesContent":["import { isDeepStrictEqual } from \"node:util\";\nimport type { JsonObject } from \"../autonomy/contracts.ts\";\nimport {\n\ttype AgentBindingContract,\n\ttype ApprovalRequestContract,\n\ttype ApprovalResolutionContract,\n\ttype AttemptCheckpoint,\n\ttype AttemptLease,\n\ttype AttemptStatus,\n\ttype EvidenceContract,\n\ttype ExecutionGrant,\n\tMAX_ORCHESTRATION_AGENT_BINDINGS,\n\tMAX_ORCHESTRATION_APPROVALS,\n\tMAX_ORCHESTRATION_ATTEMPTS,\n\tMAX_ORCHESTRATION_CHECKPOINTS,\n\tMAX_ORCHESTRATION_NOTIFICATIONS,\n\tMAX_ORCHESTRATION_OBJECTIVES,\n\tMAX_ORCHESTRATION_TASKS,\n\ttype ObjectiveContract,\n\ttype ObjectiveStatus,\n\tORCHESTRATION_SCHEMA_VERSION,\n\ttype OrchestrationEvent,\n\ttype OrchestrationTaskStatus,\n\ttype TaskContract,\n\tWORKER_RESULT_STATUSES,\n\ttype WorkerResultContract,\n} from \"./contracts.ts\";\nimport {\n\tagentFromPayload,\n\tapprovalFromPayload,\n\tapprovalResolutionFromPayload,\n\tassertReferencedAcceptanceCriteriaRetained,\n\tcheckpointFromPayload,\n\tdispatchFromValue,\n\tdispatchIdentifier,\n\tevidenceFromPayload,\n\texecutionGrantFromValue,\n\tleaseFromPayload,\n\tnumber,\n\tobjectiveFromPayload,\n\tresultFromPayload,\n\tretryStateFromValue,\n\tstring,\n\ttaskFromPayload,\n\tvalidateTaskContractForState,\n} from \"./task-runtime-codecs.ts\";\nimport {\n\tassertIdentifierListHasCapacity,\n\tassertObjectiveEvidenceHasCapacity,\n\tassertProjectionWithinLimits,\n\tassertRecordHasCapacity,\n\tcacheProjectionSerializedBytes,\n\tcloneProjection,\n\temptyProjection,\n\tProjectionByteTracker,\n} from \"./task-runtime-projection.ts\";\nimport {\n\ttype ApprovalRuntimeState,\n\ttype AttemptDispatchReadiness,\n\ttype AttemptRuntimeState,\n\tDurableTaskRuntimeError,\n\tmissingTrustedCriteria,\n\ttype NotificationRuntimeState,\n\ttype ObjectiveRuntimeState,\n\ttype TaskRuntimeProjection,\n\ttype TaskRuntimeState,\n\tterminalAttemptStatus,\n} from \"./task-runtime-state.ts\";\n\nfunction updateObjectiveStatus(\n\tstate: TaskRuntimeProjection,\n\tobjectiveId: string,\n\tstatus: ObjectiveStatus,\n\tat: string,\n): void {\n\tconst current = state.objectives[objectiveId];\n\tif (!current) throw new DurableTaskRuntimeError(`Unknown objective '${objectiveId}'.`);\n\t(state.objectives as Record<string, ObjectiveRuntimeState>)[objectiveId] = {\n\t\t...current,\n\t\tobjective: { ...current.objective, status, updatedAt: at },\n\t};\n}\n\nfunction assertObjectiveUpdateTransition(\n\tstate: TaskRuntimeProjection,\n\taggregateId: string,\n\tobjective: ObjectiveContract,\n): ObjectiveRuntimeState {\n\tconst current = state.objectives[aggregateId];\n\tif (!current) throw new DurableTaskRuntimeError(`Unknown objective '${aggregateId}'.`);\n\tif (objective.objectiveId !== aggregateId) {\n\t\tthrow new DurableTaskRuntimeError(`Updated objective id '${objective.objectiveId}' does not match aggregate.`);\n\t}\n\tif (\n\t\tobjective.schemaVersion !== current.objective.schemaVersion ||\n\t\tobjective.status !== current.objective.status ||\n\t\tobjective.createdAt !== current.objective.createdAt\n\t) {\n\t\tthrow new DurableTaskRuntimeError(`Updated objective '${aggregateId}' changed immutable lifecycle fields.`);\n\t}\n\tassertReferencedAcceptanceCriteriaRetained(state.tasks, current, objective.acceptanceCriteria);\n\treturn current;\n}\n\nfunction assertObjectiveEvidenceTransition(\n\tstate: TaskRuntimeProjection,\n\tobjectiveId: string,\n\tevidence: EvidenceContract,\n): ObjectiveRuntimeState {\n\tconst objective = state.objectives[objectiveId];\n\tif (!objective) throw new DurableTaskRuntimeError(`Unknown objective '${objectiveId}'.`);\n\tif (\n\t\tevidence.criterionId &&\n\t\t!objective.objective.acceptanceCriteria.some((criterion) => criterion.id === evidence.criterionId)\n\t) {\n\t\tthrow new DurableTaskRuntimeError(\n\t\t\t`Objective evidence references unknown acceptance criterion '${evidence.criterionId}'.`,\n\t\t);\n\t}\n\treturn objective;\n}\n\nexport type ObjectiveCompletionPolicy = \"task_evidence\" | \"owner_evidence\" | \"owner_override\";\n\nfunction assertObjectiveCompletion(\n\tstate: TaskRuntimeProjection,\n\tobjectiveId: string,\n\tpolicy: ObjectiveCompletionPolicy,\n): void {\n\tconst objective = state.objectives[objectiveId];\n\tif (!objective) throw new DurableTaskRuntimeError(`Unknown objective '${objectiveId}'.`);\n\tif (policy === \"owner_override\") return;\n\tif (policy === \"task_evidence\") {\n\t\tconst incomplete = objective.taskIds.filter((taskId) => state.tasks[taskId]?.task.status !== \"completed\");\n\t\tif (incomplete.length > 0) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Objective '${objectiveId}' has incomplete tasks: ${incomplete.join(\", \")}.`,\n\t\t\t);\n\t\t}\n\t}\n\tconst evidence =\n\t\tpolicy === \"owner_evidence\"\n\t\t\t? objective.evidence\n\t\t\t: [\n\t\t\t\t\t...objective.evidence,\n\t\t\t\t\t...objective.taskIds.flatMap((taskId) =>\n\t\t\t\t\t\t(state.tasks[taskId]?.attemptIds ?? []).flatMap(\n\t\t\t\t\t\t\t(attemptId) => state.attempts[attemptId]?.result?.evidence ?? [],\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t];\n\tconst provenCriterionIds = new Set(\n\t\tevidence.flatMap((item) => (item.trusted && item.criterionId ? [item.criterionId] : [])),\n\t);\n\tconst unproven = objective.objective.acceptanceCriteria\n\t\t.filter((criterion) => criterion.required && !provenCriterionIds.has(criterion.id))\n\t\t.map((criterion) => criterion.id);\n\tif (unproven.length > 0) {\n\t\tthrow new DurableTaskRuntimeError(\n\t\t\t`Objective '${objectiveId}' lacks trusted ${policy === \"owner_evidence\" ? \"owner \" : \"\"}evidence for required criteria: ${unproven.join(\", \")}.`,\n\t\t);\n\t}\n}\n\nexport function assertObjectiveStatusTransition(\n\tstate: TaskRuntimeProjection,\n\tobjectiveId: string,\n\ttarget: ObjectiveStatus,\n\tcompletionPolicy?: ObjectiveCompletionPolicy,\n): void {\n\tconst objective = state.objectives[objectiveId]?.objective;\n\tif (!objective) throw new DurableTaskRuntimeError(`Unknown objective '${objectiveId}'.`);\n\tconst validSource =\n\t\t(target === \"paused\" && objective.status === \"active\") ||\n\t\t(target === \"active\" && objective.status === \"paused\") ||\n\t\t((target === \"completed\" || target === \"cancelled\") &&\n\t\t\t(objective.status === \"active\" || objective.status === \"paused\"));\n\tif (!validSource) {\n\t\tthrow new DurableTaskRuntimeError(\n\t\t\t`Objective '${objectiveId}' cannot transition from '${objective.status}' to '${target}'.`,\n\t\t);\n\t}\n\tif (target === \"completed\") {\n\t\tif (!completionPolicy) throw new DurableTaskRuntimeError(\"Objective completion policy is required.\");\n\t\tassertObjectiveCompletion(state, objectiveId, completionPolicy);\n\t}\n}\n\nconst RETIREMENT_BLOCKING_ATTEMPT_STATUSES = new Set<AttemptStatus>([\"queued\", \"leased\", \"running\", \"suspended\"]);\n\nfunction isAgentDescendant(\n\tagents: Readonly<Record<string, AgentBindingContract>>,\n\tcandidate: AgentBindingContract,\n\tancestorAgentId: string,\n): boolean {\n\tlet parentAgentId = candidate.parentAgentId;\n\tconst visited = new Set<string>();\n\twhile (parentAgentId) {\n\t\tif (parentAgentId === ancestorAgentId) return true;\n\t\tif (visited.has(parentAgentId)) {\n\t\t\tthrow new DurableTaskRuntimeError(`Agent '${candidate.agentId}' lineage contains a cycle.`);\n\t\t}\n\t\tvisited.add(parentAgentId);\n\t\tparentAgentId = agents[parentAgentId]?.parentAgentId;\n\t}\n\treturn false;\n}\n\n/** One authoritative guard shared by command admission and durable event replay. */\nexport function assertAgentRetirementEligible(state: TaskRuntimeProjection, agentId: string): AgentBindingContract {\n\tconst agent = state.agents[agentId];\n\tif (!agent) throw new DurableTaskRuntimeError(`Unknown agent '${agentId}'.`);\n\tif (agent.status === \"retired\") return agent;\n\tif (agent.status !== \"registered\") {\n\t\tthrow new DurableTaskRuntimeError(`Agent '${agentId}' cannot retire from '${agent.status}'.`);\n\t}\n\tif (agent.activeAttemptId) {\n\t\tthrow new DurableTaskRuntimeError(`Agent '${agentId}' still owns active attempt '${agent.activeAttemptId}'.`);\n\t}\n\tconst blockingAttempt = Object.values(state.attempts).find(\n\t\t(attempt) =>\n\t\t\t(attempt.agentId === agentId || attempt.dispatch.logicalLaneId === agentId) &&\n\t\t\tRETIREMENT_BLOCKING_ATTEMPT_STATUSES.has(attempt.status),\n\t);\n\tif (blockingAttempt) {\n\t\tthrow new DurableTaskRuntimeError(\n\t\t\t`Agent '${agentId}' owns active '${blockingAttempt.status}' attempt '${blockingAttempt.attemptId}'.`,\n\t\t);\n\t}\n\tconst liveDescendant = Object.values(state.agents).find(\n\t\t(candidate) =>\n\t\t\tcandidate.status !== \"retired\" &&\n\t\t\tcandidate.agentId !== agentId &&\n\t\t\tisAgentDescendant(state.agents, candidate, agentId),\n\t);\n\tif (liveDescendant) {\n\t\tthrow new DurableTaskRuntimeError(`Agent '${agentId}' has non-retired descendant '${liveDescendant.agentId}'.`);\n\t}\n\treturn agent;\n}\n\nexport function assertAgentNotRetired(agent: AgentBindingContract, transition: string): void {\n\tif (agent.status === \"retired\") {\n\t\tthrow new DurableTaskRuntimeError(`Agent '${agent.agentId}' is retired and cannot ${transition}.`);\n\t}\n}\n\nfunction withoutAttemptRetry(attempt: AttemptRuntimeState): AttemptRuntimeState {\n\tconst next = { ...attempt };\n\tdelete next.retry;\n\treturn next;\n}\n\nfunction cancelOpenObjectiveWork(\n\tstate: TaskRuntimeProjection,\n\tobjectiveId: string,\n\tat: string,\n\treasonCode: string,\n): void {\n\tconst objective = state.objectives[objectiveId];\n\tconst tasks = state.tasks as Record<string, TaskRuntimeState>;\n\tconst attempts = state.attempts as Record<string, AttemptRuntimeState>;\n\tconst agents = state.agents as Record<string, AgentBindingContract>;\n\tfor (const taskId of objective?.taskIds ?? []) {\n\t\tconst taskState = tasks[taskId];\n\t\tif (taskState && ![\"completed\", \"failed\", \"cancelled\"].includes(taskState.task.status)) {\n\t\t\ttasks[taskId] = {\n\t\t\t\t...taskState,\n\t\t\t\ttask: { ...taskState.task, status: \"cancelled\", updatedAt: at },\n\t\t\t};\n\t\t}\n\t\tfor (const attemptId of taskState?.attemptIds ?? []) {\n\t\t\tconst attempt = attempts[attemptId];\n\t\t\tif (attempt && !terminalAttemptStatus(attempt.status)) {\n\t\t\t\tattempts[attemptId] = withoutAttemptRetry({\n\t\t\t\t\t...attempt,\n\t\t\t\t\tstatus: \"cancelled\",\n\t\t\t\t\treasonCode,\n\t\t\t\t\tupdatedAt: at,\n\t\t\t\t});\n\t\t\t\treleaseAttemptAgent(agents, attempt, at);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction taskStatusForResult(status: WorkerResultContract[\"status\"]): OrchestrationTaskStatus {\n\tif (status === \"completed\") return \"completed\";\n\tif (status === \"failed\") return \"failed\";\n\tif (status === \"cancelled\") return \"cancelled\";\n\treturn \"blocked\";\n}\n\nfunction releaseAttemptAgent(\n\tagents: Record<string, AgentBindingContract>,\n\tattempt: AttemptRuntimeState,\n\tat: string,\n): void {\n\tif (!attempt.agentId) return;\n\tconst agent = agents[attempt.agentId];\n\tif (!agent) return;\n\tassertAgentNotRetired(agent, \"release an attempt\");\n\tconst next = { ...agent, status: \"registered\" as const, updatedAt: at };\n\tdelete next.activeAttemptId;\n\tagents[attempt.agentId] = next;\n}\n\nfunction taskDependencyReadiness(\n\tstate: TaskRuntimeProjection,\n\ttask: TaskRuntimeState,\n):\n\t| { state: \"ready\" }\n\t| { state: \"waiting\"; dependencyTaskIds: string[] }\n\t| {\n\t\t\tstate: \"blocked\";\n\t\t\tdependencyTaskIds: string[];\n\t\t\tfailedDependencyTaskIds: string[];\n\t\t\tcancelledDependencyTaskIds: string[];\n\t } {\n\tconst dependencyTaskIds: string[] = [];\n\tconst failedDependencyTaskIds: string[] = [];\n\tconst cancelledDependencyTaskIds: string[] = [];\n\tfor (const dependencyId of task.task.dependsOn) {\n\t\tconst dependency = state.tasks[dependencyId];\n\t\tif (!dependency || dependency.task.objectiveId !== task.task.objectiveId) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Task dependency '${dependencyId}' is not in objective '${task.task.objectiveId}'.`,\n\t\t\t);\n\t\t}\n\t\tif (dependency.task.status === \"completed\") continue;\n\t\tdependencyTaskIds.push(dependencyId);\n\t\tif (dependency.task.status === \"failed\") failedDependencyTaskIds.push(dependencyId);\n\t\tif (dependency.task.status === \"cancelled\") cancelledDependencyTaskIds.push(dependencyId);\n\t}\n\tif (failedDependencyTaskIds.length > 0 || cancelledDependencyTaskIds.length > 0) {\n\t\treturn {\n\t\t\tstate: \"blocked\",\n\t\t\tdependencyTaskIds,\n\t\t\tfailedDependencyTaskIds,\n\t\t\tcancelledDependencyTaskIds,\n\t\t};\n\t}\n\treturn dependencyTaskIds.length > 0 ? { state: \"waiting\", dependencyTaskIds } : { state: \"ready\" };\n}\n\nexport function attemptDispatchReadiness(\n\tstate: TaskRuntimeProjection,\n\tattempt: AttemptRuntimeState,\n): AttemptDispatchReadiness {\n\tif (attempt.status !== \"queued\" && attempt.status !== \"suspended\") {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${attempt.attemptId}' is neither queued nor suspended.`);\n\t}\n\tconst task = state.tasks[attempt.taskId];\n\tif (!task) throw new DurableTaskRuntimeError(`Unknown task '${attempt.taskId}'.`);\n\tconst objective = state.objectives[task.task.objectiveId]?.objective;\n\tif (!objective) throw new DurableTaskRuntimeError(`Unknown objective '${task.task.objectiveId}'.`);\n\tif (objective.status === \"paused\") {\n\t\treturn {\n\t\t\tstate: \"waiting\",\n\t\t\treasonCode: \"objective_paused\",\n\t\t\tattemptId: attempt.attemptId,\n\t\t\ttaskId: attempt.taskId,\n\t\t\tobjectiveStatus: \"paused\",\n\t\t};\n\t}\n\tif (objective.status !== \"active\") {\n\t\treturn {\n\t\t\tstate: \"blocked\",\n\t\t\treasonCode: \"objective_inactive\",\n\t\t\tattemptId: attempt.attemptId,\n\t\t\ttaskId: attempt.taskId,\n\t\t\tobjectiveStatus: objective.status,\n\t\t};\n\t}\n\tconst dependencyReadiness = taskDependencyReadiness(state, task);\n\tif (dependencyReadiness.state === \"blocked\") {\n\t\treturn {\n\t\t\tstate: \"blocked\",\n\t\t\treasonCode: \"dependency_failed_or_cancelled\",\n\t\t\tattemptId: attempt.attemptId,\n\t\t\ttaskId: attempt.taskId,\n\t\t\tdependencyTaskIds: dependencyReadiness.dependencyTaskIds,\n\t\t\tfailedDependencyTaskIds: dependencyReadiness.failedDependencyTaskIds,\n\t\t\tcancelledDependencyTaskIds: dependencyReadiness.cancelledDependencyTaskIds,\n\t\t};\n\t}\n\tif (dependencyReadiness.state === \"waiting\") {\n\t\treturn {\n\t\t\tstate: \"waiting\",\n\t\t\treasonCode: \"dependencies_incomplete\",\n\t\t\tattemptId: attempt.attemptId,\n\t\t\ttaskId: attempt.taskId,\n\t\t\tdependencyTaskIds: dependencyReadiness.dependencyTaskIds,\n\t\t};\n\t}\n\treturn { state: \"ready\", attemptId: attempt.attemptId, taskId: attempt.taskId };\n}\n\nfunction assertAttemptDispatchReady(state: TaskRuntimeProjection, attempt: AttemptRuntimeState): void {\n\tconst readiness = attemptDispatchReadiness(state, attempt);\n\tif (readiness.state === \"ready\") {\n\t\tconst task = state.tasks[attempt.taskId];\n\t\tif (task?.task.status !== \"ready\") {\n\t\t\tthrow new DurableTaskRuntimeError(`Task '${attempt.taskId}' is not ready after its dependencies completed.`);\n\t\t}\n\t\treturn;\n\t}\n\tif (readiness.reasonCode === \"dependencies_incomplete\") {\n\t\tthrow new DurableTaskRuntimeError(\n\t\t\t`Attempt '${attempt.attemptId}' dependencies are incomplete: ${readiness.dependencyTaskIds.join(\", \")}.`,\n\t\t);\n\t}\n\tif (readiness.reasonCode === \"dependency_failed_or_cancelled\") {\n\t\tthrow new DurableTaskRuntimeError(\n\t\t\t`Attempt '${attempt.attemptId}' has failed or cancelled dependencies: ${readiness.dependencyTaskIds.join(\", \")}.`,\n\t\t);\n\t}\n\tthrow new DurableTaskRuntimeError(\n\t\t`Attempt '${attempt.attemptId}' objective is not active (${readiness.objectiveStatus}).`,\n\t);\n}\n\nexport function activeTaskAttempt(\n\tstate: TaskRuntimeProjection,\n\ttask: TaskRuntimeState,\n): AttemptRuntimeState | undefined {\n\treturn task.attemptIds\n\t\t.map((attemptId) => state.attempts[attemptId])\n\t\t.find(\n\t\t\t(attempt): attempt is AttemptRuntimeState => attempt !== undefined && !terminalAttemptStatus(attempt.status),\n\t\t);\n}\n\nexport function assertTaskAttemptBudgetForState(task: TaskRuntimeState, objective: ObjectiveContract): void {\n\tconst attemptCeilings = [task.task.riskBudget.maxAttempts, objective.riskBudget.maxAttempts].filter(\n\t\t(value): value is number => value !== undefined,\n\t);\n\tconst maxAttempts = attemptCeilings.length > 0 ? Math.min(...attemptCeilings) : undefined;\n\tif (maxAttempts !== undefined && task.attemptIds.length >= maxAttempts) {\n\t\tthrow new DurableTaskRuntimeError(`Task '${task.task.taskId}' exhausted its ${maxAttempts} attempt budget.`);\n\t}\n}\n\nfunction refreshReadyTasks(state: TaskRuntimeProjection, objectiveId: string, at: string): void {\n\tconst objective = state.objectives[objectiveId];\n\tif (!objective || objective.objective.status !== \"active\") return;\n\tconst mutableTasks = state.tasks as Record<string, TaskRuntimeState>;\n\tfor (const taskId of objective.taskIds) {\n\t\tconst current = mutableTasks[taskId];\n\t\tif (!current || current.task.status !== \"pending\") continue;\n\t\tif (taskDependencyReadiness(state, current).state === \"ready\") {\n\t\t\tmutableTasks[taskId] = { ...current, task: { ...current.task, status: \"ready\", updatedAt: at } };\n\t\t}\n\t}\n}\n\nfunction applyTaskCreated(state: TaskRuntimeProjection, task: TaskContract, occurredAt: string): void {\n\tconst objectives = state.objectives as Record<string, ObjectiveRuntimeState>;\n\tconst tasks = state.tasks as Record<string, TaskRuntimeState>;\n\tconst objective = objectives[task.objectiveId];\n\tif (!objective) throw new DurableTaskRuntimeError(`Task '${task.taskId}' references an unknown objective.`);\n\tvalidateTaskContractForState(state, task, `Task '${task.taskId}'`);\n\tif (tasks[task.taskId]) throw new DurableTaskRuntimeError(`Task '${task.taskId}' was created more than once.`);\n\tassertRecordHasCapacity(tasks, MAX_ORCHESTRATION_TASKS, \"task\");\n\tassertIdentifierListHasCapacity(objective.taskIds, MAX_ORCHESTRATION_TASKS, \"objective task list\");\n\ttasks[task.taskId] = { task, attemptIds: [] };\n\tobjectives[task.objectiveId] = { ...objective, taskIds: [...objective.taskIds, task.taskId] };\n\trefreshReadyTasks(state, task.objectiveId, occurredAt);\n}\n\nfunction applyAttemptQueued(state: TaskRuntimeProjection, payload: JsonObject, occurredAt: string): void {\n\tconst objectives = state.objectives as Record<string, ObjectiveRuntimeState>;\n\tconst tasks = state.tasks as Record<string, TaskRuntimeState>;\n\tconst attempts = state.attempts as Record<string, AttemptRuntimeState>;\n\tconst attemptId = string(payload.attemptId, \"attempt.queued.attemptId\");\n\tconst taskId = string(payload.taskId, \"attempt.queued.taskId\");\n\tconst task = tasks[taskId];\n\tif (!task) throw new DurableTaskRuntimeError(`Attempt '${attemptId}' references an unknown task.`);\n\tif (attempts[attemptId]) throw new DurableTaskRuntimeError(`Attempt '${attemptId}' was queued more than once.`);\n\tassertRecordHasCapacity(attempts, MAX_ORCHESTRATION_ATTEMPTS, \"attempt\");\n\tassertIdentifierListHasCapacity(task.attemptIds, MAX_ORCHESTRATION_ATTEMPTS, \"task attempt list\");\n\tconst active = activeTaskAttempt(state, task);\n\tif (active) {\n\t\tthrow new DurableTaskRuntimeError(`Task '${taskId}' already owns active attempt '${active.attemptId}'.`);\n\t}\n\tconst objective = objectives[task.task.objectiveId]?.objective;\n\tif (!objective || objective.status !== \"active\") {\n\t\tthrow new DurableTaskRuntimeError(`Objective '${task.task.objectiveId}' is not active.`);\n\t}\n\tassertTaskAttemptBudgetForState(task, objective);\n\tif (![\"pending\", \"ready\", \"blocked\", \"failed\"].includes(task.task.status)) {\n\t\tthrow new DurableTaskRuntimeError(`Task '${taskId}' is not dispatchable from '${task.task.status}'.`);\n\t}\n\tconst dispatch = dispatchFromValue(payload.dispatch, \"attempt.queued.dispatch\");\n\tif (dispatch.taskId !== taskId) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' dispatch task does not match its task.`);\n\t}\n\tif (\n\t\tdispatch.executionContract &&\n\t\t(dispatch.executionContract.worker.profile.profileId !== dispatch.profileId ||\n\t\t\tdispatch.executionContract.worker.profile.role !== task.task.role)\n\t) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' execution contract does not match its dispatch.`);\n\t}\n\tattempts[attemptId] = {\n\t\tattemptId,\n\t\ttaskId,\n\t\tdispatch,\n\t\tstatus: \"queued\",\n\t\t...(typeof payload.grantId === \"string\" ? { grantId: payload.grantId } : {}),\n\t\tcheckpointIds: [],\n\t\tcreatedAt: occurredAt,\n\t\tupdatedAt: occurredAt,\n\t};\n\tconst nextTask: TaskRuntimeState = {\n\t\t...task,\n\t\ttask: {\n\t\t\t...task.task,\n\t\t\tstatus: taskDependencyReadiness(state, task).state === \"ready\" ? \"ready\" : \"pending\",\n\t\t\tupdatedAt: occurredAt,\n\t\t},\n\t\tattemptIds: [...task.attemptIds, attemptId],\n\t};\n\tdelete nextTask.verification;\n\ttasks[taskId] = nextTask;\n}\n\nexport function requireActiveObjectiveForAttemptInProjection(\n\tstate: TaskRuntimeProjection,\n\tattempt: AttemptRuntimeState,\n): ObjectiveContract {\n\tconst task = state.tasks[attempt.taskId];\n\tif (!task) throw new DurableTaskRuntimeError(`Unknown task '${attempt.taskId}'.`);\n\tconst objective = state.objectives[task.task.objectiveId]?.objective;\n\tif (!objective) throw new DurableTaskRuntimeError(`Unknown objective '${task.task.objectiveId}'.`);\n\tif (objective.status !== \"active\") {\n\t\tthrow new DurableTaskRuntimeError(`Objective '${objective.objectiveId}' is not active.`);\n\t}\n\treturn objective;\n}\n\nexport function assertRetryBackoffElapsedAt(attempt: AttemptRuntimeState, atMs: number): void {\n\tif (!attempt.retry) return;\n\tconst remainingMs = Date.parse(attempt.retry.notBefore) - atMs;\n\tif (remainingMs > 0) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${attempt.attemptId}' retry backoff has ${remainingMs}ms remaining.`);\n\t}\n}\n\nfunction assertLeaseLiveAt(lease: AttemptLease, occurredAt: string, label: string): void {\n\tconst occurredAtMs = Date.parse(occurredAt);\n\tif (!Number.isFinite(occurredAtMs) || Date.parse(lease.expiresAt) <= occurredAtMs) {\n\t\tthrow new DurableTaskRuntimeError(`${label} lease has expired.`);\n\t}\n}\n\nfunction assertEventAggregateId(event: OrchestrationEvent, expectedId: string, label: string): void {\n\tif (event.aggregateId !== expectedId) {\n\t\tthrow new DurableTaskRuntimeError(`${label} '${expectedId}' does not match aggregate '${event.aggregateId}'.`);\n\t}\n}\n\nexport function assertAttemptFinishTransition(\n\tstate: TaskRuntimeProjection,\n\taggregateId: string,\n\tresult: WorkerResultContract,\n\toccurredAt: string,\n): { attempt: AttemptRuntimeState; task: TaskRuntimeState } {\n\tif (\n\t\tresult.schemaVersion !== ORCHESTRATION_SCHEMA_VERSION ||\n\t\t!result.resultId?.trim() ||\n\t\t!result.attemptId?.trim() ||\n\t\t!result.taskId?.trim() ||\n\t\t!result.objectiveId?.trim() ||\n\t\t!result.leaseId?.trim() ||\n\t\t!WORKER_RESULT_STATUSES.some((status) => status === result.status) ||\n\t\t!Array.isArray(result.evidence)\n\t) {\n\t\tthrow new DurableTaskRuntimeError(\"Worker result contract is invalid.\");\n\t}\n\tif (aggregateId !== result.attemptId) {\n\t\tthrow new DurableTaskRuntimeError(\"Worker result attemptId does not match its aggregate.\");\n\t}\n\tconst attempt = state.attempts[result.attemptId];\n\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${result.attemptId}'.`);\n\tif (attempt.status !== \"running\" && attempt.status !== \"leased\") {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${result.attemptId}' cannot finish from '${attempt.status}'.`);\n\t}\n\tif (\n\t\t!attempt.lease ||\n\t\tattempt.lease.leaseId !== result.leaseId ||\n\t\tattempt.lease.fencingToken !== result.fencingToken\n\t) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${result.attemptId}' lease or fencing token is stale.`);\n\t}\n\tassertLeaseLiveAt(attempt.lease, occurredAt, `Attempt '${result.attemptId}'`);\n\tif (attempt.taskId !== result.taskId) {\n\t\tthrow new DurableTaskRuntimeError(\"Worker result taskId does not match attempt.\");\n\t}\n\tconst task = state.tasks[attempt.taskId];\n\tif (!task || task.task.objectiveId !== result.objectiveId) {\n\t\tthrow new DurableTaskRuntimeError(\"Worker result objectiveId does not match attempt.\");\n\t}\n\tif (result.status === \"completed\") {\n\t\tconst missingCriteria = missingTrustedCriteria(result, task.task.acceptanceCriterionIds);\n\t\tif (missingCriteria.length > 0) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Completed result lacks trusted evidence for acceptance criteria: ${missingCriteria.join(\", \")}.`,\n\t\t\t);\n\t\t}\n\t}\n\treturn { attempt, task };\n}\n\nfunction approvalForAttemptInProjection(\n\tstate: TaskRuntimeProjection,\n\tattemptId: string,\n): ApprovalRuntimeState | undefined {\n\treturn Object.values(state.approvals).find((approval) => approval.request.attemptId === attemptId);\n}\n\nexport function assertAttemptGrantTransition(\n\tstate: TaskRuntimeProjection,\n\taggregateId: string,\n\tattemptId: string,\n\tgrant: ExecutionGrant,\n): AttemptRuntimeState {\n\tif (aggregateId !== attemptId) {\n\t\tthrow new DurableTaskRuntimeError(`Grant-bound attempt '${attemptId}' does not match its aggregate.`);\n\t}\n\tconst attempt = state.attempts[attemptId];\n\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${attemptId}'.`);\n\tif (![\"queued\", \"leased\", \"running\"].includes(attempt.status)) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' cannot bind a grant from '${attempt.status}'.`);\n\t}\n\tconst task = state.tasks[attempt.taskId];\n\tif (\n\t\t!task ||\n\t\tgrant.schemaVersion !== ORCHESTRATION_SCHEMA_VERSION ||\n\t\t!grant.grantId?.trim() ||\n\t\tgrant.attemptId !== attemptId ||\n\t\tgrant.taskId !== attempt.taskId ||\n\t\tgrant.objectiveId !== task.task.objectiveId ||\n\t\tgrant.role !== task.task.role\n\t) {\n\t\tthrow new DurableTaskRuntimeError(\"Execution grant target does not match the attempt.\");\n\t}\n\tconst approval = approvalForAttemptInProjection(state, attemptId);\n\tif (approval?.status === \"pending\") {\n\t\tthrow new DurableTaskRuntimeError(\n\t\t\t`Attempt '${attemptId}' is awaiting approval '${approval.request.approvalId}'.`,\n\t\t);\n\t}\n\tif (approval?.status === \"rejected\") {\n\t\tthrow new DurableTaskRuntimeError(`Approval '${approval.request.approvalId}' was rejected.`);\n\t}\n\tif (attempt.grantId === grant.grantId && attempt.grant && !isDeepStrictEqual(attempt.grant, grant)) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' grant has conflicting content.`);\n\t}\n\tif (attempt.grantId && attempt.grantId !== grant.grantId) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' already has a different grant.`);\n\t}\n\treturn attempt;\n}\n\nexport function assertAttemptLeaseTransition(\n\tstate: TaskRuntimeProjection,\n\taggregateId: string,\n\tlease: AttemptLease,\n\tagentId: string | undefined,\n\toccurredAt: string,\n): AttemptRuntimeState {\n\tif (aggregateId !== lease.attemptId) {\n\t\tthrow new DurableTaskRuntimeError(`Leased attempt '${lease.attemptId}' does not match its aggregate.`);\n\t}\n\tconst attempt = state.attempts[lease.attemptId];\n\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${lease.attemptId}'.`);\n\tif (attempt.status !== \"queued\") throw new DurableTaskRuntimeError(`Attempt '${lease.attemptId}' is not queued.`);\n\tassertAttemptDispatchReady(state, attempt);\n\tconst approval = approvalForAttemptInProjection(state, lease.attemptId);\n\tif (approval?.status === \"pending\") {\n\t\tthrow new DurableTaskRuntimeError(\n\t\t\t`Attempt '${lease.attemptId}' is awaiting approval '${approval.request.approvalId}'.`,\n\t\t);\n\t}\n\tif (approval?.status === \"rejected\") {\n\t\tthrow new DurableTaskRuntimeError(`Approval '${approval.request.approvalId}' was rejected.`);\n\t}\n\tif (!attempt.grantId) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${lease.attemptId}' requires an execution grant before leasing.`);\n\t}\n\tif (lease.fencingToken !== (attempt.lease?.fencingToken ?? 0) + 1) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${lease.attemptId}' lease fence is not monotonic.`);\n\t}\n\tconst occurredAtMs = Date.parse(occurredAt);\n\tconst issuedAtMs = Date.parse(lease.issuedAt);\n\tconst expiresAtMs = Date.parse(lease.expiresAt);\n\tif (\n\t\t!Number.isFinite(occurredAtMs) ||\n\t\t!Number.isFinite(issuedAtMs) ||\n\t\t!Number.isFinite(expiresAtMs) ||\n\t\tissuedAtMs > occurredAtMs ||\n\t\texpiresAtMs <= occurredAtMs\n\t) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${lease.attemptId}' lease dates are invalid.`);\n\t}\n\tif (agentId) {\n\t\tconst agent = state.agents[agentId];\n\t\tconst task = state.tasks[attempt.taskId];\n\t\tif (!agent) throw new DurableTaskRuntimeError(`Unknown agent '${agentId}'.`);\n\t\tassertAgentNotRetired(agent, \"lease an attempt\");\n\t\tif (agent.status !== \"registered\") throw new DurableTaskRuntimeError(`Agent '${agentId}' is not idle.`);\n\t\tif (!task || task.task.role !== agent.role) {\n\t\t\tthrow new DurableTaskRuntimeError(`Agent '${agentId}' role does not match task.`);\n\t\t}\n\t}\n\treturn attempt;\n}\n\nexport function assertAttemptStartTransition(\n\tstate: TaskRuntimeProjection,\n\taggregateId: string,\n\tattemptId: string,\n\tleaseId: string,\n\tfencingToken: number,\n\toccurredAt: string,\n): AttemptRuntimeState {\n\tif (aggregateId !== attemptId) {\n\t\tthrow new DurableTaskRuntimeError(`Started attempt '${attemptId}' does not match its aggregate.`);\n\t}\n\tconst attempt = state.attempts[attemptId];\n\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${attemptId}'.`);\n\tif (attempt.status !== \"leased\") throw new DurableTaskRuntimeError(`Attempt '${attemptId}' is not leased.`);\n\tif (!attempt.lease || attempt.lease.leaseId !== leaseId || attempt.lease.fencingToken !== fencingToken) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' lease or fencing token is stale.`);\n\t}\n\tassertLeaseLiveAt(attempt.lease, occurredAt, `Attempt '${attemptId}'`);\n\trequireActiveObjectiveForAttemptInProjection(state, attempt);\n\treturn attempt;\n}\n\nexport function assertAttemptCheckpointTransition(\n\tstate: TaskRuntimeProjection,\n\taggregateId: string,\n\tcheckpoint: AttemptCheckpoint,\n\tleaseId: string,\n\toccurredAt: string,\n): AttemptRuntimeState {\n\tif (aggregateId !== checkpoint.attemptId) {\n\t\tthrow new DurableTaskRuntimeError(`Checkpointed attempt '${checkpoint.attemptId}' does not match its aggregate.`);\n\t}\n\tconst attempt = state.attempts[checkpoint.attemptId];\n\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${checkpoint.attemptId}'.`);\n\tif (attempt.status !== \"running\") {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${checkpoint.attemptId}' is not running.`);\n\t}\n\tif (!attempt.lease || attempt.lease.leaseId !== leaseId || attempt.lease.fencingToken !== checkpoint.fencingToken) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${checkpoint.attemptId}' lease or fencing token is stale.`);\n\t}\n\tassertLeaseLiveAt(attempt.lease, occurredAt, `Attempt '${checkpoint.attemptId}'`);\n\treturn attempt;\n}\n\nexport function assertApprovalRequestTransition(\n\tstate: TaskRuntimeProjection,\n\taggregateId: string,\n\tapproval: ApprovalRequestContract,\n): void {\n\tconst expectedAggregateId = approval.attemptId ?? approval.taskId ?? approval.objectiveId;\n\tif (aggregateId !== expectedAggregateId) {\n\t\tthrow new DurableTaskRuntimeError(`Approval target '${expectedAggregateId}' does not match its aggregate.`);\n\t}\n\tconst objective = state.objectives[approval.objectiveId]?.objective;\n\tif (!objective) throw new DurableTaskRuntimeError(`Unknown objective '${approval.objectiveId}'.`);\n\tif (objective.status !== \"active\") {\n\t\tthrow new DurableTaskRuntimeError(`Objective '${approval.objectiveId}' is not active.`);\n\t}\n\tif (approval.attemptId && !approval.taskId) {\n\t\tthrow new DurableTaskRuntimeError(\"Attempt-scoped approval requires a taskId.\");\n\t}\n\tif (approval.taskId) {\n\t\tconst task = state.tasks[approval.taskId];\n\t\tif (!task || task.task.objectiveId !== approval.objectiveId) {\n\t\t\tthrow new DurableTaskRuntimeError(`Approval task '${approval.taskId}' does not belong to its objective.`);\n\t\t}\n\t}\n\tif (approval.attemptId) {\n\t\tconst attempt = state.attempts[approval.attemptId];\n\t\tif (!attempt || attempt.taskId !== approval.taskId) {\n\t\t\tthrow new DurableTaskRuntimeError(`Approval attempt '${approval.attemptId}' does not belong to its task.`);\n\t\t}\n\t\tif (attempt.status !== \"queued\" || attempt.grantId) {\n\t\t\tthrow new DurableTaskRuntimeError(`Approval attempt '${approval.attemptId}' is not awaiting policy.`);\n\t\t}\n\t}\n\tconst pendingForTarget = Object.values(state.approvals).find(\n\t\t(candidate) =>\n\t\t\tcandidate.status === \"pending\" &&\n\t\t\tcandidate.request.objectiveId === approval.objectiveId &&\n\t\t\tcandidate.request.taskId === approval.taskId &&\n\t\t\tcandidate.request.attemptId === approval.attemptId,\n\t);\n\tif (pendingForTarget) {\n\t\tthrow new DurableTaskRuntimeError(`Target already awaits approval '${pendingForTarget.request.approvalId}'.`);\n\t}\n}\n\nexport function assertApprovalResolutionTransition(\n\tstate: TaskRuntimeProjection,\n\taggregateId: string,\n\tresolution: ApprovalResolutionContract,\n): ApprovalRuntimeState {\n\tconst approval = state.approvals[resolution.approvalId];\n\tif (!approval) throw new DurableTaskRuntimeError(`Unknown approval '${resolution.approvalId}'.`);\n\tconst expectedAggregateId = approval.request.attemptId ?? approval.request.taskId ?? approval.request.objectiveId;\n\tif (aggregateId !== expectedAggregateId) {\n\t\tthrow new DurableTaskRuntimeError(`Resolved approval target '${expectedAggregateId}' does not match aggregate.`);\n\t}\n\tif (approval.status !== \"pending\") {\n\t\tthrow new DurableTaskRuntimeError(`Approval '${resolution.approvalId}' was already ${approval.status}.`);\n\t}\n\treturn approval;\n}\n\nexport function assertNotificationTarget(\n\tstate: TaskRuntimeProjection,\n\tobjectiveId: string,\n\tattemptId: string | undefined,\n): void {\n\tif (!state.objectives[objectiveId]) throw new DurableTaskRuntimeError(`Unknown objective '${objectiveId}'.`);\n\tif (!attemptId) return;\n\tconst attempt = state.attempts[attemptId];\n\tconst task = attempt ? state.tasks[attempt.taskId] : undefined;\n\tif (!attempt || !task || task.task.objectiveId !== objectiveId) {\n\t\tthrow new DurableTaskRuntimeError(`Notification attempt '${attemptId}' does not belong to its objective.`);\n\t}\n}\n\nexport interface VerificationTransitionInput {\n\ttaskId: string;\n\tverifierTaskId: string;\n\tverifierAttemptId: string;\n\tverdict: \"accepted\" | \"rejected\" | \"inconclusive\";\n\treasonCode: string;\n}\n\nexport function assertTaskFailureTransition(\n\tstate: TaskRuntimeProjection,\n\taggregateId: string,\n\ttaskId: string,\n\treasonCode: string,\n): TaskRuntimeState {\n\tif (aggregateId !== taskId)\n\t\tthrow new DurableTaskRuntimeError(`Failed task '${taskId}' does not match its aggregate.`);\n\tconst task = state.tasks[taskId];\n\tif (!task) throw new DurableTaskRuntimeError(`Unknown task '${taskId}'.`);\n\tif (task.task.status !== \"pending\" && task.task.status !== \"ready\" && task.task.status !== \"blocked\") {\n\t\tthrow new DurableTaskRuntimeError(`Task '${taskId}' cannot fail from '${task.task.status}'.`);\n\t}\n\tconst active = activeTaskAttempt(state, task);\n\tif (active) {\n\t\tthrow new DurableTaskRuntimeError(`Task '${taskId}' still owns active attempt '${active.attemptId}'.`);\n\t}\n\tdispatchIdentifier(reasonCode.trim(), \"task.failed.reasonCode\");\n\treturn task;\n}\n\nexport function assertVerificationTransition(\n\tstate: TaskRuntimeProjection,\n\taggregateId: string,\n\targs: VerificationTransitionInput,\n): { subject: TaskRuntimeState; verifierAttempt: AttemptRuntimeState } {\n\tif (aggregateId !== args.taskId) {\n\t\tthrow new DurableTaskRuntimeError(\"Verification subject does not match its aggregate.\");\n\t}\n\tconst subject = state.tasks[args.taskId];\n\tconst verifierTask = state.tasks[args.verifierTaskId];\n\tconst verifierAttempt = state.attempts[args.verifierAttemptId];\n\tif (!subject) throw new DurableTaskRuntimeError(`Unknown verification subject '${args.taskId}'.`);\n\tif (subject.verification) {\n\t\tthrow new DurableTaskRuntimeError(`Verification subject '${args.taskId}' was already reconciled.`);\n\t}\n\tif (subject.task.status !== \"blocked\") {\n\t\tthrow new DurableTaskRuntimeError(\n\t\t\t`Verification subject '${args.taskId}' cannot reconcile from '${subject.task.status}'.`,\n\t\t);\n\t}\n\tif (!verifierTask || verifierTask.task.verificationOfTaskId !== args.taskId) {\n\t\tthrow new DurableTaskRuntimeError(`Task '${args.verifierTaskId}' is not the verifier for '${args.taskId}'.`);\n\t}\n\tif (!verifierAttempt || verifierAttempt.taskId !== args.verifierTaskId) {\n\t\tthrow new DurableTaskRuntimeError(`Unknown verifier attempt '${args.verifierAttemptId}'.`);\n\t}\n\tif (!terminalAttemptStatus(verifierAttempt.status)) {\n\t\tthrow new DurableTaskRuntimeError(`Verifier attempt '${args.verifierAttemptId}' is not terminal.`);\n\t}\n\tif (args.verdict === \"accepted\" && verifierAttempt.status !== \"completed\") {\n\t\tthrow new DurableTaskRuntimeError(`Verifier attempt '${args.verifierAttemptId}' is not completed.`);\n\t}\n\tdispatchIdentifier(args.reasonCode.trim(), \"verification reasonCode\");\n\tif (\n\t\targs.verdict !== \"inconclusive\" &&\n\t\t!verifierAttempt.result?.evidence.some(\n\t\t\t(evidence) =>\n\t\t\t\tevidence.trusted &&\n\t\t\t\tevidence.kind === \"review\" &&\n\t\t\t\tevidence.metadata?.subjectTaskId === args.taskId &&\n\t\t\t\tevidence.metadata.verdict === args.verdict,\n\t\t)\n\t) {\n\t\tthrow new DurableTaskRuntimeError(\n\t\t\t`${args.verdict === \"accepted\" ? \"Accepted\" : \"Rejected\"} verification requires matching trusted review evidence for the subject task.`,\n\t\t);\n\t}\n\treturn { subject, verifierAttempt };\n}\n\nfunction applyAttemptResumed(\n\tstate: TaskRuntimeProjection,\n\taggregateId: string,\n\tpayload: JsonObject,\n\toccurredAt: string,\n): void {\n\tconst attempts = state.attempts as Record<string, AttemptRuntimeState>;\n\tconst agents = state.agents as Record<string, AgentBindingContract>;\n\tconst lease = leaseFromPayload(payload);\n\tconst agentId = string(payload.agentId, \"attempt.resumed.agentId\");\n\tconst attempt = attempts[lease.attemptId];\n\tconst agent = agents[agentId];\n\tif (aggregateId !== lease.attemptId) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${lease.attemptId}' resume does not match its aggregate.`);\n\t}\n\tif (!attempt || attempt.status !== \"suspended\" || attempt.agentId !== agentId) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${lease.attemptId}' is not suspended for agent '${agentId}'.`);\n\t}\n\tif (!agent || agent.status !== \"resuming\" || agent.activeAttemptId !== lease.attemptId) {\n\t\tthrow new DurableTaskRuntimeError(`Agent '${agentId}' is not resuming attempt '${lease.attemptId}'.`);\n\t}\n\tassertAgentNotRetired(agent, \"resume an attempt\");\n\tif (lease.fencingToken !== (attempt.lease?.fencingToken ?? 0) + 1) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${lease.attemptId}' resume fence is not monotonic.`);\n\t}\n\tconst occurredAtMs = Date.parse(occurredAt);\n\tif (!Number.isFinite(occurredAtMs)) throw new DurableTaskRuntimeError(\"Attempt resume event time is invalid.\");\n\tassertRetryBackoffElapsedAt(attempt, occurredAtMs);\n\tconst issuedAtMs = Date.parse(lease.issuedAt);\n\tconst expiresAtMs = Date.parse(lease.expiresAt);\n\tif (\n\t\t!Number.isFinite(issuedAtMs) ||\n\t\t!Number.isFinite(expiresAtMs) ||\n\t\tissuedAtMs > occurredAtMs ||\n\t\texpiresAtMs <= occurredAtMs\n\t) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${lease.attemptId}' resume lease dates are invalid.`);\n\t}\n\trequireActiveObjectiveForAttemptInProjection(state, attempt);\n\tattempts[lease.attemptId] = {\n\t\t...attempt,\n\t\tstatus: \"leased\",\n\t\tagentId,\n\t\tlease,\n\t\tupdatedAt: occurredAt,\n\t};\n\tagents[agentId] = {\n\t\t...agent,\n\t\tstatus: \"active\",\n\t\tactiveAttemptId: lease.attemptId,\n\t\tupdatedAt: occurredAt,\n\t};\n}\n\nexport function reduceOrchestrationEvent(\n\tprojection: TaskRuntimeProjection,\n\tevent: OrchestrationEvent,\n): TaskRuntimeProjection {\n\tassertProjectionWithinLimits(projection);\n\tif (event.ordinal <= projection.lastOrdinal) return projection;\n\tif (event.ordinal !== projection.lastOrdinal + 1) {\n\t\tthrow new DurableTaskRuntimeError(\n\t\t\t`Orchestration event ordinal ${event.ordinal} is not contiguous after ${projection.lastOrdinal}.`,\n\t\t);\n\t}\n\tconst state = cloneProjection(projection);\n\tconst byteTracker = new ProjectionByteTracker(projection);\n\tconst rawAgents = state.agents as Record<string, AgentBindingContract>;\n\tconst rawObjectives = state.objectives as Record<string, ObjectiveRuntimeState>;\n\tconst rawTasks = state.tasks as Record<string, TaskRuntimeState>;\n\tconst rawAttempts = state.attempts as Record<string, AttemptRuntimeState>;\n\tconst rawCheckpoints = state.checkpoints as Record<string, AttemptCheckpoint>;\n\tconst rawApprovals = state.approvals as Record<string, ApprovalRuntimeState>;\n\tconst rawNotifications = state.notifications as Record<string, NotificationRuntimeState>;\n\tconst agents = byteTracker.track(\"agents\", rawAgents);\n\tconst objectives = byteTracker.track(\"objectives\", rawObjectives);\n\tconst tasks = byteTracker.track(\"tasks\", rawTasks);\n\tconst attempts = byteTracker.track(\"attempts\", rawAttempts);\n\tconst checkpoints = byteTracker.track(\"checkpoints\", rawCheckpoints);\n\tconst approvals = byteTracker.track(\"approvals\", rawApprovals);\n\tconst notifications = byteTracker.track(\"notifications\", rawNotifications);\n\tstate.agents = agents;\n\tstate.objectives = objectives;\n\tstate.tasks = tasks;\n\tstate.attempts = attempts;\n\tstate.checkpoints = checkpoints;\n\tstate.approvals = approvals;\n\tstate.notifications = notifications;\n\n\tswitch (event.type) {\n\t\tcase \"objective.created\": {\n\t\t\tconst objective = objectiveFromPayload(event.payload);\n\t\t\tassertEventAggregateId(event, objective.objectiveId, \"Created objective\");\n\t\t\tif (objective.status !== \"active\") {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Created objective '${objective.objectiveId}' must be active.`);\n\t\t\t}\n\t\t\tif (objectives[objective.objectiveId]) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Objective '${objective.objectiveId}' was created more than once.`);\n\t\t\t}\n\t\t\tassertRecordHasCapacity(objectives, MAX_ORCHESTRATION_OBJECTIVES, \"objective\");\n\t\t\tobjectives[objective.objectiveId] = { objective, taskIds: [], evidence: [] };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"objective.updated\": {\n\t\t\tconst objective = objectiveFromPayload(event.payload);\n\t\t\tconst current = assertObjectiveUpdateTransition(state, event.aggregateId, objective);\n\t\t\tobjectives[event.aggregateId] = { ...current, objective };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"objective.evidence_recorded\": {\n\t\t\tconst evidence = evidenceFromPayload(event.payload);\n\t\t\tconst current = assertObjectiveEvidenceTransition(state, event.aggregateId, evidence);\n\t\t\tconst existing = current.evidence.find((candidate) => candidate.evidenceId === evidence.evidenceId);\n\t\t\tif (existing && !isDeepStrictEqual(existing, evidence)) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Objective evidence '${evidence.evidenceId}' has conflicting content.`);\n\t\t\t}\n\t\t\tif (!existing) {\n\t\t\t\tassertObjectiveEvidenceHasCapacity(objectives, current);\n\t\t\t\tobjectives[event.aggregateId] = { ...current, evidence: [...current.evidence, evidence] };\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase \"objective.paused\":\n\t\t\tassertObjectiveStatusTransition(state, event.aggregateId, \"paused\");\n\t\t\tupdateObjectiveStatus(state, event.aggregateId, \"paused\", event.occurredAt);\n\t\t\tbreak;\n\t\tcase \"objective.resumed\":\n\t\t\tassertObjectiveStatusTransition(state, event.aggregateId, \"active\");\n\t\t\tupdateObjectiveStatus(state, event.aggregateId, \"active\", event.occurredAt);\n\t\t\trefreshReadyTasks(state, event.aggregateId, event.occurredAt);\n\t\t\tbreak;\n\t\tcase \"objective.completed\": {\n\t\t\tconst policy = string(event.payload.completionPolicy, \"objective.completed.completionPolicy\");\n\t\t\tif (policy !== \"task_evidence\" && policy !== \"owner_evidence\" && policy !== \"owner_override\") {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Unknown objective completion policy '${policy}'.`);\n\t\t\t}\n\t\t\tassertObjectiveStatusTransition(state, event.aggregateId, \"completed\", policy);\n\t\t\tupdateObjectiveStatus(state, event.aggregateId, \"completed\", event.occurredAt);\n\t\t\tcancelOpenObjectiveWork(state, event.aggregateId, event.occurredAt, \"objective_completed\");\n\t\t\tbreak;\n\t\t}\n\t\tcase \"objective.cancelled\": {\n\t\t\tassertObjectiveStatusTransition(state, event.aggregateId, \"cancelled\");\n\t\t\tupdateObjectiveStatus(state, event.aggregateId, \"cancelled\", event.occurredAt);\n\t\t\tcancelOpenObjectiveWork(state, event.aggregateId, event.occurredAt, \"objective_cancelled\");\n\t\t\tbreak;\n\t\t}\n\t\tcase \"task.created\": {\n\t\t\tconst task = taskFromPayload(event.payload);\n\t\t\tassertEventAggregateId(event, task.objectiveId, \"Created task objective\");\n\t\t\tapplyTaskCreated(state, task, event.occurredAt);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"task.attempt_prepared\": {\n\t\t\tconst task = taskFromPayload(event.payload);\n\t\t\tif (event.aggregateId !== task.taskId) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Prepared task '${task.taskId}' does not match its aggregate.`);\n\t\t\t}\n\t\t\tapplyTaskCreated(state, task, event.occurredAt);\n\t\t\tapplyAttemptQueued(state, event.payload, event.occurredAt);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"task.ready\": {\n\t\t\tconst taskId = string(event.payload.taskId, \"task.ready.taskId\");\n\t\t\tassertEventAggregateId(event, taskId, \"Ready task\");\n\t\t\tconst current = tasks[taskId];\n\t\t\tif (!current) throw new DurableTaskRuntimeError(`Unknown task '${taskId}'.`);\n\t\t\tif (current.task.status !== \"pending\") {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Task '${taskId}' cannot become ready from '${current.task.status}'.`);\n\t\t\t}\n\t\t\tif (taskDependencyReadiness(state, current).state !== \"ready\") {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Task '${taskId}' dependencies are incomplete.`);\n\t\t\t}\n\t\t\ttasks[taskId] = { ...current, task: { ...current.task, status: \"ready\", updatedAt: event.occurredAt } };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"task.failed\": {\n\t\t\tconst taskId = string(event.payload.taskId, \"task.failed.taskId\");\n\t\t\tconst reasonCode = string(event.payload.reasonCode, \"task.failed.reasonCode\");\n\t\t\tconst current = assertTaskFailureTransition(state, event.aggregateId, taskId, reasonCode);\n\t\t\ttasks[taskId] = { ...current, task: { ...current.task, status: \"failed\", updatedAt: event.occurredAt } };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"task.verification_finished\": {\n\t\t\tconst taskId = string(event.payload.taskId, \"task.verification_finished.taskId\");\n\t\t\tconst verifierTaskId = string(event.payload.verifierTaskId, \"task.verification_finished.verifierTaskId\");\n\t\t\tconst verifierAttemptId = string(\n\t\t\t\tevent.payload.verifierAttemptId,\n\t\t\t\t\"task.verification_finished.verifierAttemptId\",\n\t\t\t);\n\t\t\tconst verdict = string(event.payload.verdict, \"task.verification_finished.verdict\");\n\t\t\tif (verdict !== \"accepted\" && verdict !== \"rejected\" && verdict !== \"inconclusive\") {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Unknown verification verdict '${verdict}'.`);\n\t\t\t}\n\t\t\tconst reasonCode = string(event.payload.reasonCode, \"task.verification_finished.reasonCode\");\n\t\t\tconst transition: VerificationTransitionInput = {\n\t\t\t\ttaskId,\n\t\t\t\tverifierTaskId,\n\t\t\t\tverifierAttemptId,\n\t\t\t\tverdict,\n\t\t\t\treasonCode,\n\t\t\t};\n\t\t\tconst { subject: current } = assertVerificationTransition(state, event.aggregateId, transition);\n\t\t\ttasks[taskId] = {\n\t\t\t\t...current,\n\t\t\t\ttask: {\n\t\t\t\t\t...current.task,\n\t\t\t\t\tstatus: verdict === \"accepted\" ? \"completed\" : \"blocked\",\n\t\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t\t},\n\t\t\t\tverification: {\n\t\t\t\t\tverifierTaskId,\n\t\t\t\t\tverifierAttemptId,\n\t\t\t\t\tverdict,\n\t\t\t\t\treasonCode,\n\t\t\t\t\tcompletedAt: event.occurredAt,\n\t\t\t\t},\n\t\t\t};\n\t\t\trefreshReadyTasks(state, current.task.objectiveId, event.occurredAt);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"agent.registered\": {\n\t\t\tconst agent = agentFromPayload(event.payload);\n\t\t\tassertEventAggregateId(event, agent.agentId, \"Registered agent\");\n\t\t\tif (agent.status !== \"registered\" || agent.activeAttemptId) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Registered agent '${agent.agentId}' must start idle.`);\n\t\t\t}\n\t\t\tif (agents[agent.agentId])\n\t\t\t\tthrow new DurableTaskRuntimeError(`Agent '${agent.agentId}' was registered more than once.`);\n\t\t\tassertRecordHasCapacity(agents, MAX_ORCHESTRATION_AGENT_BINDINGS, \"agent binding\");\n\t\t\tif (agent.parentAgentId) {\n\t\t\t\tconst parent = agents[agent.parentAgentId];\n\t\t\t\tif (!parent) throw new DurableTaskRuntimeError(`Unknown parent agent '${agent.parentAgentId}'.`);\n\t\t\t\tif (parent.status === \"retired\") {\n\t\t\t\t\tthrow new DurableTaskRuntimeError(`Parent agent '${agent.parentAgentId}' is retired.`);\n\t\t\t\t}\n\t\t\t\tif (agent.rootAgentId !== parent.rootAgentId || agent.depth !== parent.depth + 1) {\n\t\t\t\t\tthrow new DurableTaskRuntimeError(`Agent '${agent.agentId}' lineage conflicts with its parent.`);\n\t\t\t\t}\n\t\t\t} else if (agent.rootAgentId !== agent.agentId || agent.depth !== 0) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Root agent '${agent.agentId}' lineage is invalid.`);\n\t\t\t}\n\t\t\tagents[agent.agentId] = agent;\n\t\t\tbreak;\n\t\t}\n\t\tcase \"agent.retired\": {\n\t\t\tconst agentId = string(event.payload.agentId, \"agent.retired.agentId\");\n\t\t\tif (event.aggregateId !== agentId) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Retired agent '${agentId}' does not match its aggregate.`);\n\t\t\t}\n\t\t\tconst agent = assertAgentRetirementEligible(state, agentId);\n\t\t\tif (agent.status === \"retired\") break;\n\t\t\tagents[agentId] = { ...agent, status: \"retired\", updatedAt: event.occurredAt };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"agent.suspended\": {\n\t\t\tconst agentId = string(event.payload.agentId, \"agent.suspended.agentId\");\n\t\t\tassertEventAggregateId(event, agentId, \"Suspended agent\");\n\t\t\tconst agent = agents[agentId];\n\t\t\tif (!agent) throw new DurableTaskRuntimeError(`Unknown agent '${agentId}'.`);\n\t\t\tassertAgentNotRetired(agent, \"suspend\");\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t\"Standalone agent suspension is unsupported; suspend the bound attempt atomically.\",\n\t\t\t);\n\t\t}\n\t\tcase \"agent.resume_requested\": {\n\t\t\tconst agentId = string(event.payload.agentId, \"agent.resume_requested.agentId\");\n\t\t\tconst attemptId = string(event.payload.attemptId, \"agent.resume_requested.attemptId\");\n\t\t\tif (event.aggregateId !== agentId) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Resuming agent '${agentId}' does not match its aggregate.`);\n\t\t\t}\n\t\t\tconst agent = agents[agentId];\n\t\t\tif (!agent) throw new DurableTaskRuntimeError(`Unknown agent '${agentId}'.`);\n\t\t\tassertAgentNotRetired(agent, \"request resume\");\n\t\t\tconst attempt = attempts[attemptId];\n\t\t\tif (\n\t\t\t\t!attempt ||\n\t\t\t\tattempt.status !== \"suspended\" ||\n\t\t\t\tattempt.agentId !== agentId ||\n\t\t\t\tagent.activeAttemptId !== attemptId\n\t\t\t) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Agent '${agentId}' cannot resume suspended attempt '${attemptId}'.`);\n\t\t\t}\n\t\t\tif (agent.status === \"resuming\") break;\n\t\t\tif (agent.status !== \"suspended\") {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Agent '${agentId}' is not suspended.`);\n\t\t\t}\n\t\t\tconst occurredAtMs = Date.parse(event.occurredAt);\n\t\t\tif (!Number.isFinite(occurredAtMs)) {\n\t\t\t\tthrow new DurableTaskRuntimeError(\"Agent resume request event time is invalid.\");\n\t\t\t}\n\t\t\tassertRetryBackoffElapsedAt(attempt, occurredAtMs);\n\t\t\trequireActiveObjectiveForAttemptInProjection(state, attempt);\n\t\t\tagents[agentId] = { ...agent, status: \"resuming\", updatedAt: event.occurredAt };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"agent.resumed\": {\n\t\t\tconst agentId = string(event.payload.agentId, \"agent.resumed.agentId\");\n\t\t\tassertEventAggregateId(event, agentId, \"Resumed agent\");\n\t\t\tconst agent = agents[agentId];\n\t\t\tif (!agent) throw new DurableTaskRuntimeError(`Unknown agent '${agentId}'.`);\n\t\t\tassertAgentNotRetired(agent, \"resume\");\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t\"Standalone agent resume is unsupported; resume the suspended attempt atomically.\",\n\t\t\t);\n\t\t}\n\t\tcase \"attempt.queued\": {\n\t\t\tassertEventAggregateId(event, string(event.payload.taskId, \"attempt.queued.taskId\"), \"Queued attempt task\");\n\t\t\tapplyAttemptQueued(state, event.payload, event.occurredAt);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.grant_bound\": {\n\t\t\tconst attemptId = string(event.payload.attemptId, \"attempt.grant_bound.attemptId\");\n\t\t\tconst grant = executionGrantFromValue(event.payload.grant, \"attempt.grant_bound.grant\");\n\t\t\tconst attempt = assertAttemptGrantTransition(state, event.aggregateId, attemptId, grant);\n\t\t\tattempts[attemptId] = {\n\t\t\t\t...attempt,\n\t\t\t\tgrantId: grant.grantId,\n\t\t\t\tgrant,\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.leased\": {\n\t\t\tconst lease = leaseFromPayload(event.payload);\n\t\t\tconst agentId = typeof event.payload.agentId === \"string\" ? event.payload.agentId : undefined;\n\t\t\tconst attempt = assertAttemptLeaseTransition(state, event.aggregateId, lease, agentId, event.occurredAt);\n\t\t\tif (agentId) {\n\t\t\t\tconst agent = agents[agentId];\n\t\t\t\tif (!agent) throw new DurableTaskRuntimeError(`Unknown agent '${agentId}'.`);\n\t\t\t\tagents[agentId] = {\n\t\t\t\t\t...agent,\n\t\t\t\t\tstatus: \"active\",\n\t\t\t\t\tactiveAttemptId: lease.attemptId,\n\t\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t\t};\n\t\t\t}\n\t\t\tattempts[lease.attemptId] = {\n\t\t\t\t...attempt,\n\t\t\t\tstatus: \"leased\",\n\t\t\t\tlease,\n\t\t\t\t...(agentId ? { agentId } : {}),\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t};\n\t\t\tconst task = tasks[attempt.taskId];\n\t\t\tif (!task) throw new DurableTaskRuntimeError(`Unknown task '${attempt.taskId}'.`);\n\t\t\ttasks[attempt.taskId] = {\n\t\t\t\t...task,\n\t\t\t\ttask: { ...task.task, status: \"running\", updatedAt: event.occurredAt },\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.started\": {\n\t\t\tconst attemptId = string(event.payload.attemptId, \"attempt.started.attemptId\");\n\t\t\tconst leaseId = string(event.payload.leaseId, \"attempt.started.leaseId\");\n\t\t\tconst fencingToken = number(event.payload.fencingToken, \"attempt.started.fencingToken\");\n\t\t\tconst attempt = assertAttemptStartTransition(\n\t\t\t\tstate,\n\t\t\t\tevent.aggregateId,\n\t\t\t\tattemptId,\n\t\t\t\tleaseId,\n\t\t\t\tfencingToken,\n\t\t\t\tevent.occurredAt,\n\t\t\t);\n\t\t\tattempts[attemptId] = { ...attempt, status: \"running\", updatedAt: event.occurredAt };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.checkpointed\": {\n\t\t\tconst checkpoint = checkpointFromPayload(event.payload);\n\t\t\tconst leaseId = string(event.payload.leaseId, \"attempt.checkpointed.leaseId\");\n\t\t\tconst attempt = assertAttemptCheckpointTransition(\n\t\t\t\tstate,\n\t\t\t\tevent.aggregateId,\n\t\t\t\tcheckpoint,\n\t\t\t\tleaseId,\n\t\t\t\tevent.occurredAt,\n\t\t\t);\n\t\t\tif (checkpoints[checkpoint.checkpointId]) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Checkpoint '${checkpoint.checkpointId}' was recorded more than once.`);\n\t\t\t}\n\t\t\tassertIdentifierListHasCapacity(\n\t\t\t\tattempt.checkpointIds,\n\t\t\t\tMAX_ORCHESTRATION_CHECKPOINTS,\n\t\t\t\t\"attempt checkpoint list\",\n\t\t\t);\n\t\t\tassertRecordHasCapacity(checkpoints, MAX_ORCHESTRATION_CHECKPOINTS, \"checkpoint\");\n\t\t\tcheckpoints[checkpoint.checkpointId] = checkpoint;\n\t\t\tattempts[checkpoint.attemptId] = {\n\t\t\t\t...attempt,\n\t\t\t\tcheckpointIds: [...attempt.checkpointIds, checkpoint.checkpointId],\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t};\n\t\t\tif (attempt.agentId) {\n\t\t\t\tconst agent = agents[attempt.agentId];\n\t\t\t\tif (agent) {\n\t\t\t\t\tassertAgentNotRetired(agent, \"checkpoint an attempt\");\n\t\t\t\t\tagents[attempt.agentId] = {\n\t\t\t\t\t\t...agent,\n\t\t\t\t\t\tresumeContext: { ...agent.resumeContext, latestCheckpointId: checkpoint.checkpointId },\n\t\t\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.suspended\": {\n\t\t\tconst attemptId = string(event.payload.attemptId, \"attempt.suspended.attemptId\");\n\t\t\tassertEventAggregateId(event, attemptId, \"Suspended attempt\");\n\t\t\tconst attempt = attempts[attemptId];\n\t\t\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${attemptId}'.`);\n\t\t\tconst leaseId = string(event.payload.leaseId, \"attempt.suspended.leaseId\");\n\t\t\tconst fencingToken = number(event.payload.fencingToken, \"attempt.suspended.fencingToken\");\n\t\t\tif (!attempt.lease || attempt.lease.leaseId !== leaseId || attempt.lease.fencingToken !== fencingToken) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' lease or fencing token is stale.`);\n\t\t\t}\n\t\t\tif (attempt.status !== \"leased\" && attempt.status !== \"running\") {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' cannot suspend from '${attempt.status}'.`);\n\t\t\t}\n\t\t\tif (!attempt.agentId) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' is not bound to a resumable agent.`);\n\t\t\t}\n\t\t\tconst retry =\n\t\t\t\tevent.payload.retry === undefined\n\t\t\t\t\t? undefined\n\t\t\t\t\t: retryStateFromValue(event.payload.retry, \"attempt.suspended.retry\");\n\t\t\tif (retry && retry.retriesUsed !== (attempt.retry?.retriesUsed ?? 0) + 1) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' retry count is not monotonic.`);\n\t\t\t}\n\t\t\tif (retry && Date.parse(retry.notBefore) <= Date.parse(event.occurredAt)) {\n\t\t\t\tthrow new DurableTaskRuntimeError(\"Retry not-before deadline must be after the suspension event.\");\n\t\t\t}\n\t\t\tattempts[attemptId] = {\n\t\t\t\t...attempt,\n\t\t\t\tstatus: \"suspended\",\n\t\t\t\t...(typeof event.payload.reasonCode === \"string\" ? { reasonCode: event.payload.reasonCode } : {}),\n\t\t\t\t...(retry ? { retry } : {}),\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t};\n\t\t\tif (attempt.agentId) {\n\t\t\t\tconst agent = agents[attempt.agentId];\n\t\t\t\tif (agent) {\n\t\t\t\t\tassertAgentNotRetired(agent, \"suspend an attempt\");\n\t\t\t\t\tagents[attempt.agentId] = { ...agent, status: \"suspended\", updatedAt: event.occurredAt };\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.resumed\": {\n\t\t\tapplyAttemptResumed(state, event.aggregateId, event.payload, event.occurredAt);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.cancelled\": {\n\t\t\tconst attemptId = string(event.payload.attemptId, \"attempt.cancelled.attemptId\");\n\t\t\tassertEventAggregateId(event, attemptId, \"Cancelled attempt\");\n\t\t\tconst attempt = attempts[attemptId];\n\t\t\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${attemptId}'.`);\n\t\t\tif (terminalAttemptStatus(attempt.status)) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' cannot cancel from '${attempt.status}'.`);\n\t\t\t}\n\t\t\tattempts[attemptId] = withoutAttemptRetry({\n\t\t\t\t...attempt,\n\t\t\t\tstatus: \"cancelled\",\n\t\t\t\treasonCode: string(event.payload.reasonCode, \"attempt.cancelled.reasonCode\"),\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t});\n\t\t\tconst task = tasks[attempt.taskId];\n\t\t\tif (task) {\n\t\t\t\ttasks[attempt.taskId] = {\n\t\t\t\t\t...task,\n\t\t\t\t\ttask: { ...task.task, status: \"cancelled\", updatedAt: event.occurredAt },\n\t\t\t\t};\n\t\t\t}\n\t\t\treleaseAttemptAgent(agents, attempt, event.occurredAt);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.finished\": {\n\t\t\tconst result = resultFromPayload(event.payload);\n\t\t\tconst { attempt, task } = assertAttemptFinishTransition(state, event.aggregateId, result, event.occurredAt);\n\t\t\tattempts[result.attemptId] = withoutAttemptRetry({\n\t\t\t\t...attempt,\n\t\t\t\tstatus: result.status,\n\t\t\t\tresult,\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t});\n\t\t\ttasks[result.taskId] = {\n\t\t\t\t...task,\n\t\t\t\ttask: { ...task.task, status: taskStatusForResult(result.status), updatedAt: event.occurredAt },\n\t\t\t};\n\t\t\treleaseAttemptAgent(agents, attempt, event.occurredAt);\n\t\t\trefreshReadyTasks(state, task.task.objectiveId, event.occurredAt);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.lease_expired\": {\n\t\t\tconst attemptId = string(event.payload.attemptId, \"attempt.lease_expired.attemptId\");\n\t\t\tassertEventAggregateId(event, attemptId, \"Expired attempt\");\n\t\t\tconst attempt = attempts[attemptId];\n\t\t\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${attemptId}'.`);\n\t\t\tif ((attempt.status !== \"leased\" && attempt.status !== \"running\") || !attempt.lease || attempt.agentId) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' cannot expire from '${attempt.status}'.`);\n\t\t\t}\n\t\t\tconst leaseId = string(event.payload.leaseId, \"attempt.lease_expired.leaseId\");\n\t\t\tconst fencingToken = number(event.payload.fencingToken, \"attempt.lease_expired.fencingToken\");\n\t\t\tif (attempt.lease.leaseId !== leaseId || attempt.lease.fencingToken !== fencingToken) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' lease or fencing token is stale.`);\n\t\t\t}\n\t\t\tattempts[attemptId] = withoutAttemptRetry({\n\t\t\t\t...attempt,\n\t\t\t\tstatus: \"expired\",\n\t\t\t\t...(typeof event.payload.reasonCode === \"string\" ? { reasonCode: event.payload.reasonCode } : {}),\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t});\n\t\t\tconst task = tasks[attempt.taskId];\n\t\t\tif (task)\n\t\t\t\ttasks[attempt.taskId] = { ...task, task: { ...task.task, status: \"ready\", updatedAt: event.occurredAt } };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"approval.requested\": {\n\t\t\tconst approval = approvalFromPayload(event.payload);\n\t\t\tassertApprovalRequestTransition(state, event.aggregateId, approval);\n\t\t\tif (approvals[approval.approvalId]) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Approval '${approval.approvalId}' was requested more than once.`);\n\t\t\t}\n\t\t\tconst notificationId = `approval-requested:${approval.approvalId}`;\n\t\t\tif (notifications[notificationId]) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Notification '${notificationId}' already exists.`);\n\t\t\t}\n\t\t\tassertRecordHasCapacity(approvals, MAX_ORCHESTRATION_APPROVALS, \"approval\");\n\t\t\tassertRecordHasCapacity(notifications, MAX_ORCHESTRATION_NOTIFICATIONS, \"notification\");\n\t\t\tapprovals[approval.approvalId] = { request: approval, status: \"pending\" };\n\t\t\tnotifications[notificationId] = {\n\t\t\t\tnotificationId,\n\t\t\t\tobjectiveId: approval.objectiveId,\n\t\t\t\t...(approval.attemptId ? { attemptId: approval.attemptId } : {}),\n\t\t\t\tstatus: \"pending\",\n\t\t\t\tmessage: approval.summary,\n\t\t\t\tcreatedAt: event.occurredAt,\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tcase \"approval.resolved\": {\n\t\t\tconst resolution = approvalResolutionFromPayload(event.payload);\n\t\t\tconst approval = assertApprovalResolutionTransition(state, event.aggregateId, resolution);\n\t\t\tapprovals[resolution.approvalId] = {\n\t\t\t\t...approval,\n\t\t\t\tstatus: resolution.outcome,\n\t\t\t\tresolution,\n\t\t\t};\n\t\t\tconst approvalNotification = notifications[`approval-requested:${resolution.approvalId}`];\n\t\t\tif (approvalNotification?.status === \"pending\") {\n\t\t\t\tnotifications[approvalNotification.notificationId] = {\n\t\t\t\t\t...approvalNotification,\n\t\t\t\t\tstatus: \"delivered\",\n\t\t\t\t\tdeliveredAt: event.occurredAt,\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (resolution.outcome === \"rejected\" && approval.request.attemptId) {\n\t\t\t\tconst attempt = attempts[approval.request.attemptId];\n\t\t\t\tif (attempt && !terminalAttemptStatus(attempt.status)) {\n\t\t\t\t\tattempts[attempt.attemptId] = withoutAttemptRetry({\n\t\t\t\t\t\t...attempt,\n\t\t\t\t\t\tstatus: \"blocked\",\n\t\t\t\t\t\treasonCode: \"approval_rejected\",\n\t\t\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t\t\t});\n\t\t\t\t\tconst task = tasks[attempt.taskId];\n\t\t\t\t\tif (task) {\n\t\t\t\t\t\ttasks[attempt.taskId] = {\n\t\t\t\t\t\t\t...task,\n\t\t\t\t\t\t\ttask: { ...task.task, status: \"blocked\", updatedAt: event.occurredAt },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase \"notification.enqueued\": {\n\t\t\tconst notificationId = string(event.payload.notificationId, \"notification.enqueued.notificationId\");\n\t\t\tconst objectiveId = string(event.payload.objectiveId, \"notification.enqueued.objectiveId\");\n\t\t\tconst attemptId = typeof event.payload.attemptId === \"string\" ? event.payload.attemptId : undefined;\n\t\t\tassertEventAggregateId(event, objectiveId, \"Notification objective\");\n\t\t\tassertNotificationTarget(state, objectiveId, attemptId);\n\t\t\tif (notifications[notificationId]) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Notification '${notificationId}' was enqueued more than once.`);\n\t\t\t}\n\t\t\tassertRecordHasCapacity(notifications, MAX_ORCHESTRATION_NOTIFICATIONS, \"notification\");\n\t\t\tnotifications[notificationId] = {\n\t\t\t\tnotificationId,\n\t\t\t\tobjectiveId,\n\t\t\t\t...(attemptId ? { attemptId } : {}),\n\t\t\t\tstatus: \"pending\",\n\t\t\t\tmessage: string(event.payload.message, \"notification.enqueued.message\"),\n\t\t\t\tcreatedAt: event.occurredAt,\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tcase \"notification.delivered\": {\n\t\t\tconst notificationId = string(event.payload.notificationId, \"notification.delivered.notificationId\");\n\t\t\tconst notification = notifications[notificationId];\n\t\t\tif (!notification) throw new DurableTaskRuntimeError(`Unknown notification '${notificationId}'.`);\n\t\t\tassertEventAggregateId(event, notification.objectiveId, \"Delivered notification objective\");\n\t\t\tnotifications[notificationId] = { ...notification, status: \"delivered\", deliveredAt: event.occurredAt };\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tconst serializedBytes = byteTracker.finish(event.ordinal);\n\tstate.agents = rawAgents;\n\tstate.objectives = rawObjectives;\n\tstate.tasks = rawTasks;\n\tstate.attempts = rawAttempts;\n\tstate.checkpoints = rawCheckpoints;\n\tstate.approvals = rawApprovals;\n\tstate.notifications = rawNotifications;\n\tconst result = { ...state, lastOrdinal: event.ordinal };\n\tcacheProjectionSerializedBytes(result, serializedBytes);\n\treturn result;\n}\n\nexport function projectOrchestrationEvents(events: readonly OrchestrationEvent[]): TaskRuntimeProjection {\n\treturn events.reduce(reduceOrchestrationEvent, emptyProjection());\n}\n"]}
|
|
1
|
+
{"version":3,"file":"task-runtime-reducer.js","sourceRoot":"","sources":["../../../src/core/orchestration/task-runtime-reducer.ts"],"names":[],"mappings":"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","sourcesContent":["import { isDeepStrictEqual } from \"node:util\";\nimport type { JsonObject } from \"../autonomy/contracts.ts\";\nimport {\n\ttype AgentBindingContract,\n\ttype ApprovalRequestContract,\n\ttype ApprovalResolutionContract,\n\ttype AttemptCheckpoint,\n\ttype AttemptLease,\n\ttype AttemptStatus,\n\ttype EvidenceContract,\n\ttype ExecutionGrant,\n\tMAX_ORCHESTRATION_AGENT_BINDINGS,\n\tMAX_ORCHESTRATION_APPROVALS,\n\tMAX_ORCHESTRATION_ATTEMPTS,\n\tMAX_ORCHESTRATION_CHECKPOINTS,\n\tMAX_ORCHESTRATION_NOTIFICATIONS,\n\tMAX_ORCHESTRATION_OBJECTIVES,\n\tMAX_ORCHESTRATION_TASKS,\n\ttype ObjectiveContract,\n\ttype ObjectiveStatus,\n\tORCHESTRATION_SCHEMA_VERSION,\n\ttype OrchestrationEvent,\n\ttype OrchestrationTaskStatus,\n\ttype TaskContract,\n\tWORKER_RESULT_STATUSES,\n\ttype WorkerResultContract,\n} from \"./contracts.ts\";\nimport {\n\tagentFromPayload,\n\tapprovalFromPayload,\n\tapprovalResolutionFromPayload,\n\tassertReferencedAcceptanceCriteriaRetained,\n\tcheckpointFromPayload,\n\tdispatchFromValue,\n\tdispatchIdentifier,\n\tevidenceFromPayload,\n\texecutionGrantFromValue,\n\tleaseFromPayload,\n\tnumber,\n\tobjectiveFromPayload,\n\tresultFromPayload,\n\tretryStateFromValue,\n\tstring,\n\ttaskFromPayload,\n\tvalidateTaskContractForState,\n} from \"./task-runtime-codecs.ts\";\nimport {\n\tassertIdentifierListHasCapacity,\n\tassertObjectiveEvidenceHasCapacity,\n\tassertProjectionWithinLimits,\n\tassertRecordHasCapacity,\n\tcacheProjectionSerializedBytes,\n\tcloneProjection,\n\temptyProjection,\n\tProjectionByteTracker,\n} from \"./task-runtime-projection.ts\";\nimport {\n\ttype ApprovalRuntimeState,\n\ttype AttemptDispatchReadiness,\n\ttype AttemptRuntimeState,\n\tDurableTaskRuntimeError,\n\tmissingTrustedCriteria,\n\ttype NotificationRuntimeState,\n\ttype ObjectiveRuntimeState,\n\ttype TaskRuntimeProjection,\n\ttype TaskRuntimeState,\n\tterminalAttemptStatus,\n} from \"./task-runtime-state.ts\";\n\nfunction updateObjectiveStatus(\n\tstate: TaskRuntimeProjection,\n\tobjectiveId: string,\n\tstatus: ObjectiveStatus,\n\tat: string,\n): void {\n\tconst current = state.objectives[objectiveId];\n\tif (!current) throw new DurableTaskRuntimeError(`Unknown objective '${objectiveId}'.`);\n\t(state.objectives as Record<string, ObjectiveRuntimeState>)[objectiveId] = {\n\t\t...current,\n\t\tobjective: { ...current.objective, status, updatedAt: at },\n\t};\n}\n\nfunction assertObjectiveUpdateTransition(\n\tstate: TaskRuntimeProjection,\n\taggregateId: string,\n\tobjective: ObjectiveContract,\n): ObjectiveRuntimeState {\n\tconst current = state.objectives[aggregateId];\n\tif (!current) throw new DurableTaskRuntimeError(`Unknown objective '${aggregateId}'.`);\n\tif (objective.objectiveId !== aggregateId) {\n\t\tthrow new DurableTaskRuntimeError(`Updated objective id '${objective.objectiveId}' does not match aggregate.`);\n\t}\n\tif (\n\t\tobjective.schemaVersion !== current.objective.schemaVersion ||\n\t\tobjective.status !== current.objective.status ||\n\t\tobjective.createdAt !== current.objective.createdAt\n\t) {\n\t\tthrow new DurableTaskRuntimeError(`Updated objective '${aggregateId}' changed immutable lifecycle fields.`);\n\t}\n\tassertReferencedAcceptanceCriteriaRetained(state.tasks, current, objective.acceptanceCriteria);\n\treturn current;\n}\n\nfunction assertObjectiveEvidenceTransition(\n\tstate: TaskRuntimeProjection,\n\tobjectiveId: string,\n\tevidence: EvidenceContract,\n): ObjectiveRuntimeState {\n\tconst objective = state.objectives[objectiveId];\n\tif (!objective) throw new DurableTaskRuntimeError(`Unknown objective '${objectiveId}'.`);\n\tif (\n\t\tevidence.criterionId &&\n\t\t!objective.objective.acceptanceCriteria.some((criterion) => criterion.id === evidence.criterionId)\n\t) {\n\t\tthrow new DurableTaskRuntimeError(\n\t\t\t`Objective evidence references unknown acceptance criterion '${evidence.criterionId}'.`,\n\t\t);\n\t}\n\treturn objective;\n}\n\nexport type ObjectiveCompletionPolicy = \"task_evidence\" | \"owner_evidence\" | \"owner_override\";\n\nfunction assertObjectiveCompletion(\n\tstate: TaskRuntimeProjection,\n\tobjectiveId: string,\n\tpolicy: ObjectiveCompletionPolicy,\n): void {\n\tconst objective = state.objectives[objectiveId];\n\tif (!objective) throw new DurableTaskRuntimeError(`Unknown objective '${objectiveId}'.`);\n\tif (policy === \"owner_override\") return;\n\tif (policy === \"task_evidence\") {\n\t\tconst incomplete = objective.taskIds.filter((taskId) => state.tasks[taskId]?.task.status !== \"completed\");\n\t\tif (incomplete.length > 0) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Objective '${objectiveId}' has incomplete tasks: ${incomplete.join(\", \")}.`,\n\t\t\t);\n\t\t}\n\t}\n\tconst evidence =\n\t\tpolicy === \"owner_evidence\"\n\t\t\t? objective.evidence\n\t\t\t: [\n\t\t\t\t\t...objective.evidence,\n\t\t\t\t\t...objective.taskIds.flatMap((taskId) =>\n\t\t\t\t\t\t(state.tasks[taskId]?.attemptIds ?? []).flatMap(\n\t\t\t\t\t\t\t(attemptId) => state.attempts[attemptId]?.result?.evidence ?? [],\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t];\n\tconst provenCriterionIds = new Set(\n\t\tevidence.flatMap((item) => (item.trusted && item.criterionId ? [item.criterionId] : [])),\n\t);\n\tconst unproven = objective.objective.acceptanceCriteria\n\t\t.filter((criterion) => criterion.required && !provenCriterionIds.has(criterion.id))\n\t\t.map((criterion) => criterion.id);\n\tif (unproven.length > 0) {\n\t\tthrow new DurableTaskRuntimeError(\n\t\t\t`Objective '${objectiveId}' lacks trusted ${policy === \"owner_evidence\" ? \"owner \" : \"\"}evidence for required criteria: ${unproven.join(\", \")}.`,\n\t\t);\n\t}\n}\n\nexport function assertObjectiveStatusTransition(\n\tstate: TaskRuntimeProjection,\n\tobjectiveId: string,\n\ttarget: ObjectiveStatus,\n\tcompletionPolicy?: ObjectiveCompletionPolicy,\n): void {\n\tconst objective = state.objectives[objectiveId]?.objective;\n\tif (!objective) throw new DurableTaskRuntimeError(`Unknown objective '${objectiveId}'.`);\n\tconst validSource =\n\t\t(target === \"paused\" && objective.status === \"active\") ||\n\t\t(target === \"active\" && objective.status === \"paused\") ||\n\t\t((target === \"completed\" || target === \"cancelled\") &&\n\t\t\t(objective.status === \"active\" || objective.status === \"paused\"));\n\tif (!validSource) {\n\t\tthrow new DurableTaskRuntimeError(\n\t\t\t`Objective '${objectiveId}' cannot transition from '${objective.status}' to '${target}'.`,\n\t\t);\n\t}\n\tif (target === \"completed\") {\n\t\tif (!completionPolicy) throw new DurableTaskRuntimeError(\"Objective completion policy is required.\");\n\t\tassertObjectiveCompletion(state, objectiveId, completionPolicy);\n\t}\n}\n\nconst RETIREMENT_BLOCKING_ATTEMPT_STATUSES = new Set<AttemptStatus>([\"queued\", \"leased\", \"running\", \"suspended\"]);\n\nfunction isAgentDescendant(\n\tagents: Readonly<Record<string, AgentBindingContract>>,\n\tcandidate: AgentBindingContract,\n\tancestorAgentId: string,\n): boolean {\n\tlet parentAgentId = candidate.parentAgentId;\n\tconst visited = new Set<string>();\n\twhile (parentAgentId) {\n\t\tif (parentAgentId === ancestorAgentId) return true;\n\t\tif (visited.has(parentAgentId)) {\n\t\t\tthrow new DurableTaskRuntimeError(`Agent '${candidate.agentId}' lineage contains a cycle.`);\n\t\t}\n\t\tvisited.add(parentAgentId);\n\t\tparentAgentId = agents[parentAgentId]?.parentAgentId;\n\t}\n\treturn false;\n}\n\n/** One authoritative guard shared by command admission and durable event replay. */\nexport function assertAgentRetirementEligible(state: TaskRuntimeProjection, agentId: string): AgentBindingContract {\n\tconst agent = state.agents[agentId];\n\tif (!agent) throw new DurableTaskRuntimeError(`Unknown agent '${agentId}'.`);\n\tif (agent.status === \"retired\") return agent;\n\tif (agent.status !== \"registered\") {\n\t\tthrow new DurableTaskRuntimeError(`Agent '${agentId}' cannot retire from '${agent.status}'.`);\n\t}\n\tif (agent.activeAttemptId) {\n\t\tthrow new DurableTaskRuntimeError(`Agent '${agentId}' still owns active attempt '${agent.activeAttemptId}'.`);\n\t}\n\tconst blockingAttempt = Object.values(state.attempts).find(\n\t\t(attempt) =>\n\t\t\t(attempt.agentId === agentId || attempt.dispatch.logicalLaneId === agentId) &&\n\t\t\tRETIREMENT_BLOCKING_ATTEMPT_STATUSES.has(attempt.status),\n\t);\n\tif (blockingAttempt) {\n\t\tthrow new DurableTaskRuntimeError(\n\t\t\t`Agent '${agentId}' owns active '${blockingAttempt.status}' attempt '${blockingAttempt.attemptId}'.`,\n\t\t);\n\t}\n\tconst liveDescendant = Object.values(state.agents).find(\n\t\t(candidate) =>\n\t\t\tcandidate.status !== \"retired\" &&\n\t\t\tcandidate.agentId !== agentId &&\n\t\t\tisAgentDescendant(state.agents, candidate, agentId),\n\t);\n\tif (liveDescendant) {\n\t\tthrow new DurableTaskRuntimeError(`Agent '${agentId}' has non-retired descendant '${liveDescendant.agentId}'.`);\n\t}\n\treturn agent;\n}\n\nexport function assertAgentNotRetired(agent: AgentBindingContract, transition: string): void {\n\tif (agent.status === \"retired\") {\n\t\tthrow new DurableTaskRuntimeError(`Agent '${agent.agentId}' is retired and cannot ${transition}.`);\n\t}\n}\n\nfunction withoutAttemptRetry(attempt: AttemptRuntimeState): AttemptRuntimeState {\n\tconst next = { ...attempt };\n\tdelete next.retry;\n\treturn next;\n}\n\nfunction cancelOpenObjectiveWork(\n\tstate: TaskRuntimeProjection,\n\tobjectiveId: string,\n\tat: string,\n\treasonCode: string,\n): void {\n\tconst objective = state.objectives[objectiveId];\n\tconst tasks = state.tasks as Record<string, TaskRuntimeState>;\n\tconst attempts = state.attempts as Record<string, AttemptRuntimeState>;\n\tconst agents = state.agents as Record<string, AgentBindingContract>;\n\tfor (const taskId of objective?.taskIds ?? []) {\n\t\tconst taskState = tasks[taskId];\n\t\tif (taskState && ![\"completed\", \"failed\", \"cancelled\"].includes(taskState.task.status)) {\n\t\t\ttasks[taskId] = {\n\t\t\t\t...taskState,\n\t\t\t\ttask: { ...taskState.task, status: \"cancelled\", updatedAt: at },\n\t\t\t};\n\t\t}\n\t\tfor (const attemptId of taskState?.attemptIds ?? []) {\n\t\t\tconst attempt = attempts[attemptId];\n\t\t\tif (attempt && !terminalAttemptStatus(attempt.status)) {\n\t\t\t\tattempts[attemptId] = withoutAttemptRetry({\n\t\t\t\t\t...attempt,\n\t\t\t\t\tstatus: \"cancelled\",\n\t\t\t\t\treasonCode,\n\t\t\t\t\tupdatedAt: at,\n\t\t\t\t});\n\t\t\t\treleaseAttemptAgent(agents, attempt, at);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction taskStatusForResult(status: WorkerResultContract[\"status\"]): OrchestrationTaskStatus {\n\tif (status === \"completed\") return \"completed\";\n\tif (status === \"failed\") return \"failed\";\n\tif (status === \"cancelled\") return \"cancelled\";\n\treturn \"blocked\";\n}\n\nfunction releaseAttemptAgent(\n\tagents: Record<string, AgentBindingContract>,\n\tattempt: AttemptRuntimeState,\n\tat: string,\n): void {\n\tif (!attempt.agentId) return;\n\tconst agent = agents[attempt.agentId];\n\tif (!agent) return;\n\tassertAgentNotRetired(agent, \"release an attempt\");\n\tconst next = { ...agent, status: \"registered\" as const, updatedAt: at };\n\tdelete next.activeAttemptId;\n\tagents[attempt.agentId] = next;\n}\n\nfunction taskDependencyReadiness(\n\tstate: TaskRuntimeProjection,\n\ttask: TaskRuntimeState,\n):\n\t| { state: \"ready\" }\n\t| { state: \"waiting\"; dependencyTaskIds: string[] }\n\t| {\n\t\t\tstate: \"blocked\";\n\t\t\tdependencyTaskIds: string[];\n\t\t\tfailedDependencyTaskIds: string[];\n\t\t\tcancelledDependencyTaskIds: string[];\n\t } {\n\tconst dependencyTaskIds: string[] = [];\n\tconst failedDependencyTaskIds: string[] = [];\n\tconst cancelledDependencyTaskIds: string[] = [];\n\tfor (const dependencyId of task.task.dependsOn) {\n\t\tconst dependency = state.tasks[dependencyId];\n\t\tif (!dependency || dependency.task.objectiveId !== task.task.objectiveId) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Task dependency '${dependencyId}' is not in objective '${task.task.objectiveId}'.`,\n\t\t\t);\n\t\t}\n\t\tif (dependency.task.status === \"completed\") continue;\n\t\tdependencyTaskIds.push(dependencyId);\n\t\tif (dependency.task.status === \"failed\") failedDependencyTaskIds.push(dependencyId);\n\t\tif (dependency.task.status === \"cancelled\") cancelledDependencyTaskIds.push(dependencyId);\n\t}\n\tif (failedDependencyTaskIds.length > 0 || cancelledDependencyTaskIds.length > 0) {\n\t\treturn {\n\t\t\tstate: \"blocked\",\n\t\t\tdependencyTaskIds,\n\t\t\tfailedDependencyTaskIds,\n\t\t\tcancelledDependencyTaskIds,\n\t\t};\n\t}\n\treturn dependencyTaskIds.length > 0 ? { state: \"waiting\", dependencyTaskIds } : { state: \"ready\" };\n}\n\nexport function attemptDispatchReadiness(\n\tstate: TaskRuntimeProjection,\n\tattempt: AttemptRuntimeState,\n): AttemptDispatchReadiness {\n\tif (attempt.status !== \"queued\" && attempt.status !== \"suspended\") {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${attempt.attemptId}' is neither queued nor suspended.`);\n\t}\n\tconst task = state.tasks[attempt.taskId];\n\tif (!task) throw new DurableTaskRuntimeError(`Unknown task '${attempt.taskId}'.`);\n\tconst objective = state.objectives[task.task.objectiveId]?.objective;\n\tif (!objective) throw new DurableTaskRuntimeError(`Unknown objective '${task.task.objectiveId}'.`);\n\tif (objective.status === \"paused\") {\n\t\treturn {\n\t\t\tstate: \"waiting\",\n\t\t\treasonCode: \"objective_paused\",\n\t\t\tattemptId: attempt.attemptId,\n\t\t\ttaskId: attempt.taskId,\n\t\t\tobjectiveStatus: \"paused\",\n\t\t};\n\t}\n\tif (objective.status !== \"active\") {\n\t\treturn {\n\t\t\tstate: \"blocked\",\n\t\t\treasonCode: \"objective_inactive\",\n\t\t\tattemptId: attempt.attemptId,\n\t\t\ttaskId: attempt.taskId,\n\t\t\tobjectiveStatus: objective.status,\n\t\t};\n\t}\n\tconst dependencyReadiness = taskDependencyReadiness(state, task);\n\tif (dependencyReadiness.state === \"blocked\") {\n\t\treturn {\n\t\t\tstate: \"blocked\",\n\t\t\treasonCode: \"dependency_failed_or_cancelled\",\n\t\t\tattemptId: attempt.attemptId,\n\t\t\ttaskId: attempt.taskId,\n\t\t\tdependencyTaskIds: dependencyReadiness.dependencyTaskIds,\n\t\t\tfailedDependencyTaskIds: dependencyReadiness.failedDependencyTaskIds,\n\t\t\tcancelledDependencyTaskIds: dependencyReadiness.cancelledDependencyTaskIds,\n\t\t};\n\t}\n\tif (dependencyReadiness.state === \"waiting\") {\n\t\treturn {\n\t\t\tstate: \"waiting\",\n\t\t\treasonCode: \"dependencies_incomplete\",\n\t\t\tattemptId: attempt.attemptId,\n\t\t\ttaskId: attempt.taskId,\n\t\t\tdependencyTaskIds: dependencyReadiness.dependencyTaskIds,\n\t\t};\n\t}\n\treturn { state: \"ready\", attemptId: attempt.attemptId, taskId: attempt.taskId };\n}\n\nfunction assertAttemptDispatchReady(state: TaskRuntimeProjection, attempt: AttemptRuntimeState): void {\n\tconst readiness = attemptDispatchReadiness(state, attempt);\n\tif (readiness.state === \"ready\") {\n\t\tconst task = state.tasks[attempt.taskId];\n\t\tif (task?.task.status !== \"ready\") {\n\t\t\tthrow new DurableTaskRuntimeError(`Task '${attempt.taskId}' is not ready after its dependencies completed.`);\n\t\t}\n\t\treturn;\n\t}\n\tif (readiness.reasonCode === \"dependencies_incomplete\") {\n\t\tthrow new DurableTaskRuntimeError(\n\t\t\t`Attempt '${attempt.attemptId}' dependencies are incomplete: ${readiness.dependencyTaskIds.join(\", \")}.`,\n\t\t);\n\t}\n\tif (readiness.reasonCode === \"dependency_failed_or_cancelled\") {\n\t\tthrow new DurableTaskRuntimeError(\n\t\t\t`Attempt '${attempt.attemptId}' has failed or cancelled dependencies: ${readiness.dependencyTaskIds.join(\", \")}.`,\n\t\t);\n\t}\n\tthrow new DurableTaskRuntimeError(\n\t\t`Attempt '${attempt.attemptId}' objective is not active (${readiness.objectiveStatus}).`,\n\t);\n}\n\nexport function activeTaskAttempt(\n\tstate: TaskRuntimeProjection,\n\ttask: TaskRuntimeState,\n): AttemptRuntimeState | undefined {\n\treturn task.attemptIds\n\t\t.map((attemptId) => state.attempts[attemptId])\n\t\t.find(\n\t\t\t(attempt): attempt is AttemptRuntimeState => attempt !== undefined && !terminalAttemptStatus(attempt.status),\n\t\t);\n}\n\nexport function assertTaskAttemptBudgetForState(task: TaskRuntimeState, objective: ObjectiveContract): void {\n\tconst attemptCeilings = [task.task.riskBudget.maxAttempts, objective.riskBudget.maxAttempts].filter(\n\t\t(value): value is number => value !== undefined,\n\t);\n\tconst maxAttempts = attemptCeilings.length > 0 ? Math.min(...attemptCeilings) : undefined;\n\tif (maxAttempts !== undefined && task.attemptIds.length >= maxAttempts) {\n\t\tthrow new DurableTaskRuntimeError(`Task '${task.task.taskId}' exhausted its ${maxAttempts} attempt budget.`);\n\t}\n}\n\nfunction refreshReadyTasks(state: TaskRuntimeProjection, objectiveId: string, at: string): void {\n\tconst objective = state.objectives[objectiveId];\n\tif (!objective || objective.objective.status !== \"active\") return;\n\tconst mutableTasks = state.tasks as Record<string, TaskRuntimeState>;\n\tfor (const taskId of objective.taskIds) {\n\t\tconst current = mutableTasks[taskId];\n\t\tif (!current || current.task.status !== \"pending\") continue;\n\t\tif (taskDependencyReadiness(state, current).state === \"ready\") {\n\t\t\tmutableTasks[taskId] = { ...current, task: { ...current.task, status: \"ready\", updatedAt: at } };\n\t\t}\n\t}\n}\n\nfunction applyTaskCreated(state: TaskRuntimeProjection, task: TaskContract, occurredAt: string): void {\n\tconst objectives = state.objectives as Record<string, ObjectiveRuntimeState>;\n\tconst tasks = state.tasks as Record<string, TaskRuntimeState>;\n\tconst objective = objectives[task.objectiveId];\n\tif (!objective) throw new DurableTaskRuntimeError(`Task '${task.taskId}' references an unknown objective.`);\n\tvalidateTaskContractForState(state, task, `Task '${task.taskId}'`);\n\tif (tasks[task.taskId]) throw new DurableTaskRuntimeError(`Task '${task.taskId}' was created more than once.`);\n\tassertRecordHasCapacity(tasks, MAX_ORCHESTRATION_TASKS, \"task\");\n\tassertIdentifierListHasCapacity(objective.taskIds, MAX_ORCHESTRATION_TASKS, \"objective task list\");\n\ttasks[task.taskId] = { task, attemptIds: [] };\n\tobjectives[task.objectiveId] = { ...objective, taskIds: [...objective.taskIds, task.taskId] };\n\trefreshReadyTasks(state, task.objectiveId, occurredAt);\n}\n\nfunction applyAttemptQueued(state: TaskRuntimeProjection, payload: JsonObject, occurredAt: string): void {\n\tconst objectives = state.objectives as Record<string, ObjectiveRuntimeState>;\n\tconst tasks = state.tasks as Record<string, TaskRuntimeState>;\n\tconst attempts = state.attempts as Record<string, AttemptRuntimeState>;\n\tconst attemptId = string(payload.attemptId, \"attempt.queued.attemptId\");\n\tconst taskId = string(payload.taskId, \"attempt.queued.taskId\");\n\tconst task = tasks[taskId];\n\tif (!task) throw new DurableTaskRuntimeError(`Attempt '${attemptId}' references an unknown task.`);\n\tif (attempts[attemptId]) throw new DurableTaskRuntimeError(`Attempt '${attemptId}' was queued more than once.`);\n\tassertRecordHasCapacity(attempts, MAX_ORCHESTRATION_ATTEMPTS, \"attempt\");\n\tassertIdentifierListHasCapacity(task.attemptIds, MAX_ORCHESTRATION_ATTEMPTS, \"task attempt list\");\n\tconst active = activeTaskAttempt(state, task);\n\tif (active) {\n\t\tthrow new DurableTaskRuntimeError(`Task '${taskId}' already owns active attempt '${active.attemptId}'.`);\n\t}\n\tconst objective = objectives[task.task.objectiveId]?.objective;\n\tif (!objective || objective.status !== \"active\") {\n\t\tthrow new DurableTaskRuntimeError(`Objective '${task.task.objectiveId}' is not active.`);\n\t}\n\tassertTaskAttemptBudgetForState(task, objective);\n\tif (![\"pending\", \"ready\", \"blocked\", \"failed\"].includes(task.task.status)) {\n\t\tthrow new DurableTaskRuntimeError(`Task '${taskId}' is not dispatchable from '${task.task.status}'.`);\n\t}\n\tconst dispatch = dispatchFromValue(payload.dispatch, \"attempt.queued.dispatch\");\n\tif (dispatch.taskId !== taskId) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' dispatch task does not match its task.`);\n\t}\n\tif (\n\t\tdispatch.executionContract &&\n\t\t(dispatch.executionContract.worker.profile.profileId !== dispatch.profileId ||\n\t\t\tdispatch.executionContract.worker.profile.role !== task.task.role)\n\t) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' execution contract does not match its dispatch.`);\n\t}\n\tattempts[attemptId] = {\n\t\tattemptId,\n\t\ttaskId,\n\t\tdispatch,\n\t\tstatus: \"queued\",\n\t\t...(typeof payload.grantId === \"string\" ? { grantId: payload.grantId } : {}),\n\t\tcheckpointIds: [],\n\t\tcreatedAt: occurredAt,\n\t\tupdatedAt: occurredAt,\n\t};\n\tconst nextTask: TaskRuntimeState = {\n\t\t...task,\n\t\ttask: {\n\t\t\t...task.task,\n\t\t\tstatus: taskDependencyReadiness(state, task).state === \"ready\" ? \"ready\" : \"pending\",\n\t\t\tupdatedAt: occurredAt,\n\t\t},\n\t\tattemptIds: [...task.attemptIds, attemptId],\n\t};\n\tdelete nextTask.verification;\n\ttasks[taskId] = nextTask;\n}\n\nexport function requireActiveObjectiveForAttemptInProjection(\n\tstate: TaskRuntimeProjection,\n\tattempt: AttemptRuntimeState,\n): ObjectiveContract {\n\tconst task = state.tasks[attempt.taskId];\n\tif (!task) throw new DurableTaskRuntimeError(`Unknown task '${attempt.taskId}'.`);\n\tconst objective = state.objectives[task.task.objectiveId]?.objective;\n\tif (!objective) throw new DurableTaskRuntimeError(`Unknown objective '${task.task.objectiveId}'.`);\n\tif (objective.status !== \"active\") {\n\t\tthrow new DurableTaskRuntimeError(`Objective '${objective.objectiveId}' is not active.`);\n\t}\n\treturn objective;\n}\n\nexport function assertRetryBackoffElapsedAt(attempt: AttemptRuntimeState, atMs: number): void {\n\tif (!attempt.retry) return;\n\tconst remainingMs = Date.parse(attempt.retry.notBefore) - atMs;\n\tif (remainingMs > 0) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${attempt.attemptId}' retry backoff has ${remainingMs}ms remaining.`);\n\t}\n}\n\nfunction assertLeaseLiveAt(lease: AttemptLease, occurredAt: string, label: string): void {\n\tconst occurredAtMs = Date.parse(occurredAt);\n\tif (!Number.isFinite(occurredAtMs) || Date.parse(lease.expiresAt) <= occurredAtMs) {\n\t\tthrow new DurableTaskRuntimeError(`${label} lease has expired.`);\n\t}\n}\n\nfunction assertEventAggregateId(event: OrchestrationEvent, expectedId: string, label: string): void {\n\tif (event.aggregateId !== expectedId) {\n\t\tthrow new DurableTaskRuntimeError(`${label} '${expectedId}' does not match aggregate '${event.aggregateId}'.`);\n\t}\n}\n\nexport function assertAttemptFinishTransition(\n\tstate: TaskRuntimeProjection,\n\taggregateId: string,\n\tresult: WorkerResultContract,\n\toccurredAt: string,\n): { attempt: AttemptRuntimeState; task: TaskRuntimeState } {\n\tif (\n\t\tresult.schemaVersion !== ORCHESTRATION_SCHEMA_VERSION ||\n\t\t!result.resultId?.trim() ||\n\t\t!result.attemptId?.trim() ||\n\t\t!result.taskId?.trim() ||\n\t\t!result.objectiveId?.trim() ||\n\t\t!result.leaseId?.trim() ||\n\t\t!WORKER_RESULT_STATUSES.some((status) => status === result.status) ||\n\t\t!Array.isArray(result.evidence)\n\t) {\n\t\tthrow new DurableTaskRuntimeError(\"Worker result contract is invalid.\");\n\t}\n\tif (aggregateId !== result.attemptId) {\n\t\tthrow new DurableTaskRuntimeError(\"Worker result attemptId does not match its aggregate.\");\n\t}\n\tconst attempt = state.attempts[result.attemptId];\n\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${result.attemptId}'.`);\n\tif (attempt.status !== \"running\" && attempt.status !== \"leased\") {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${result.attemptId}' cannot finish from '${attempt.status}'.`);\n\t}\n\tif (\n\t\t!attempt.lease ||\n\t\tattempt.lease.leaseId !== result.leaseId ||\n\t\tattempt.lease.fencingToken !== result.fencingToken\n\t) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${result.attemptId}' lease or fencing token is stale.`);\n\t}\n\tassertLeaseLiveAt(attempt.lease, occurredAt, `Attempt '${result.attemptId}'`);\n\tif (attempt.taskId !== result.taskId) {\n\t\tthrow new DurableTaskRuntimeError(\"Worker result taskId does not match attempt.\");\n\t}\n\tconst task = state.tasks[attempt.taskId];\n\tif (!task || task.task.objectiveId !== result.objectiveId) {\n\t\tthrow new DurableTaskRuntimeError(\"Worker result objectiveId does not match attempt.\");\n\t}\n\tif (result.status === \"completed\") {\n\t\tconst missingCriteria = missingTrustedCriteria(result, task.task.acceptanceCriterionIds);\n\t\tif (missingCriteria.length > 0) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Completed result lacks trusted evidence for acceptance criteria: ${missingCriteria.join(\", \")}.`,\n\t\t\t);\n\t\t}\n\t}\n\treturn { attempt, task };\n}\n\nfunction approvalForAttemptInProjection(\n\tstate: TaskRuntimeProjection,\n\tattemptId: string,\n): ApprovalRuntimeState | undefined {\n\treturn Object.values(state.approvals).find((approval) => approval.request.attemptId === attemptId);\n}\n\nexport function assertAttemptGrantTransition(\n\tstate: TaskRuntimeProjection,\n\taggregateId: string,\n\tattemptId: string,\n\tgrant: ExecutionGrant,\n): AttemptRuntimeState {\n\tif (aggregateId !== attemptId) {\n\t\tthrow new DurableTaskRuntimeError(`Grant-bound attempt '${attemptId}' does not match its aggregate.`);\n\t}\n\tconst attempt = state.attempts[attemptId];\n\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${attemptId}'.`);\n\tif (![\"queued\", \"leased\", \"running\"].includes(attempt.status)) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' cannot bind a grant from '${attempt.status}'.`);\n\t}\n\tconst task = state.tasks[attempt.taskId];\n\tif (\n\t\t!task ||\n\t\tgrant.schemaVersion !== ORCHESTRATION_SCHEMA_VERSION ||\n\t\t!grant.grantId?.trim() ||\n\t\tgrant.attemptId !== attemptId ||\n\t\tgrant.taskId !== attempt.taskId ||\n\t\tgrant.objectiveId !== task.task.objectiveId ||\n\t\tgrant.role !== task.task.role\n\t) {\n\t\tthrow new DurableTaskRuntimeError(\"Execution grant target does not match the attempt.\");\n\t}\n\tconst approval = approvalForAttemptInProjection(state, attemptId);\n\tif (approval?.status === \"pending\") {\n\t\tthrow new DurableTaskRuntimeError(\n\t\t\t`Attempt '${attemptId}' is awaiting approval '${approval.request.approvalId}'.`,\n\t\t);\n\t}\n\tif (approval?.status === \"rejected\") {\n\t\tthrow new DurableTaskRuntimeError(`Approval '${approval.request.approvalId}' was rejected.`);\n\t}\n\tif (attempt.grantId === grant.grantId && attempt.grant && !isDeepStrictEqual(attempt.grant, grant)) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' grant has conflicting content.`);\n\t}\n\tif (attempt.grantId && attempt.grantId !== grant.grantId) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' already has a different grant.`);\n\t}\n\treturn attempt;\n}\n\nexport function assertAttemptLeaseTransition(\n\tstate: TaskRuntimeProjection,\n\taggregateId: string,\n\tlease: AttemptLease,\n\tagentId: string | undefined,\n\toccurredAt: string,\n): AttemptRuntimeState {\n\tif (aggregateId !== lease.attemptId) {\n\t\tthrow new DurableTaskRuntimeError(`Leased attempt '${lease.attemptId}' does not match its aggregate.`);\n\t}\n\tconst attempt = state.attempts[lease.attemptId];\n\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${lease.attemptId}'.`);\n\tif (attempt.status !== \"queued\") throw new DurableTaskRuntimeError(`Attempt '${lease.attemptId}' is not queued.`);\n\tassertAttemptDispatchReady(state, attempt);\n\tconst approval = approvalForAttemptInProjection(state, lease.attemptId);\n\tif (approval?.status === \"pending\") {\n\t\tthrow new DurableTaskRuntimeError(\n\t\t\t`Attempt '${lease.attemptId}' is awaiting approval '${approval.request.approvalId}'.`,\n\t\t);\n\t}\n\tif (approval?.status === \"rejected\") {\n\t\tthrow new DurableTaskRuntimeError(`Approval '${approval.request.approvalId}' was rejected.`);\n\t}\n\tif (!attempt.grantId) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${lease.attemptId}' requires an execution grant before leasing.`);\n\t}\n\tif (lease.fencingToken !== (attempt.lease?.fencingToken ?? 0) + 1) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${lease.attemptId}' lease fence is not monotonic.`);\n\t}\n\tconst occurredAtMs = Date.parse(occurredAt);\n\tconst issuedAtMs = Date.parse(lease.issuedAt);\n\tconst expiresAtMs = Date.parse(lease.expiresAt);\n\tif (\n\t\t!Number.isFinite(occurredAtMs) ||\n\t\t!Number.isFinite(issuedAtMs) ||\n\t\t!Number.isFinite(expiresAtMs) ||\n\t\tissuedAtMs > occurredAtMs ||\n\t\texpiresAtMs <= occurredAtMs\n\t) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${lease.attemptId}' lease dates are invalid.`);\n\t}\n\tif (agentId) {\n\t\tconst agent = state.agents[agentId];\n\t\tconst task = state.tasks[attempt.taskId];\n\t\tif (!agent) throw new DurableTaskRuntimeError(`Unknown agent '${agentId}'.`);\n\t\tassertAgentNotRetired(agent, \"lease an attempt\");\n\t\tif (agent.status !== \"registered\") throw new DurableTaskRuntimeError(`Agent '${agentId}' is not idle.`);\n\t\tif (!task || task.task.role !== agent.role) {\n\t\t\tthrow new DurableTaskRuntimeError(`Agent '${agentId}' role does not match task.`);\n\t\t}\n\t}\n\treturn attempt;\n}\n\nexport function assertAttemptStartTransition(\n\tstate: TaskRuntimeProjection,\n\taggregateId: string,\n\tattemptId: string,\n\tleaseId: string,\n\tfencingToken: number,\n\toccurredAt: string,\n): AttemptRuntimeState {\n\tif (aggregateId !== attemptId) {\n\t\tthrow new DurableTaskRuntimeError(`Started attempt '${attemptId}' does not match its aggregate.`);\n\t}\n\tconst attempt = state.attempts[attemptId];\n\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${attemptId}'.`);\n\tif (attempt.status !== \"leased\") throw new DurableTaskRuntimeError(`Attempt '${attemptId}' is not leased.`);\n\tif (!attempt.lease || attempt.lease.leaseId !== leaseId || attempt.lease.fencingToken !== fencingToken) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' lease or fencing token is stale.`);\n\t}\n\tassertLeaseLiveAt(attempt.lease, occurredAt, `Attempt '${attemptId}'`);\n\trequireActiveObjectiveForAttemptInProjection(state, attempt);\n\treturn attempt;\n}\n\nexport function assertAttemptLeaseRenewalTransition(\n\tstate: TaskRuntimeProjection,\n\taggregateId: string,\n\tattemptId: string,\n\tleaseId: string,\n\tfencingToken: number,\n\texpiresAt: string,\n\toccurredAt: string,\n): AttemptRuntimeState {\n\tif (aggregateId !== attemptId) {\n\t\tthrow new DurableTaskRuntimeError(`Renewed attempt '${attemptId}' does not match its aggregate.`);\n\t}\n\tconst attempt = state.attempts[attemptId];\n\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${attemptId}'.`);\n\tif (attempt.status !== \"leased\" && attempt.status !== \"running\") {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' cannot renew from '${attempt.status}'.`);\n\t}\n\tif (!attempt.lease || attempt.lease.leaseId !== leaseId || attempt.lease.fencingToken !== fencingToken) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' lease or fencing token is stale.`);\n\t}\n\tassertLeaseLiveAt(attempt.lease, occurredAt, `Attempt '${attemptId}'`);\n\tconst expiresAtMs = Date.parse(expiresAt);\n\tif (!Number.isFinite(expiresAtMs) || expiresAtMs <= Date.parse(attempt.lease.expiresAt)) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' renewed lease must extend its expiration.`);\n\t}\n\trequireActiveObjectiveForAttemptInProjection(state, attempt);\n\treturn attempt;\n}\n\nexport function assertAttemptCheckpointTransition(\n\tstate: TaskRuntimeProjection,\n\taggregateId: string,\n\tcheckpoint: AttemptCheckpoint,\n\tleaseId: string,\n\toccurredAt: string,\n): AttemptRuntimeState {\n\tif (aggregateId !== checkpoint.attemptId) {\n\t\tthrow new DurableTaskRuntimeError(`Checkpointed attempt '${checkpoint.attemptId}' does not match its aggregate.`);\n\t}\n\tconst attempt = state.attempts[checkpoint.attemptId];\n\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${checkpoint.attemptId}'.`);\n\tif (attempt.status !== \"running\") {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${checkpoint.attemptId}' is not running.`);\n\t}\n\tif (!attempt.lease || attempt.lease.leaseId !== leaseId || attempt.lease.fencingToken !== checkpoint.fencingToken) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${checkpoint.attemptId}' lease or fencing token is stale.`);\n\t}\n\tassertLeaseLiveAt(attempt.lease, occurredAt, `Attempt '${checkpoint.attemptId}'`);\n\treturn attempt;\n}\n\nexport function assertApprovalRequestTransition(\n\tstate: TaskRuntimeProjection,\n\taggregateId: string,\n\tapproval: ApprovalRequestContract,\n): void {\n\tconst expectedAggregateId = approval.attemptId ?? approval.taskId ?? approval.objectiveId;\n\tif (aggregateId !== expectedAggregateId) {\n\t\tthrow new DurableTaskRuntimeError(`Approval target '${expectedAggregateId}' does not match its aggregate.`);\n\t}\n\tconst objective = state.objectives[approval.objectiveId]?.objective;\n\tif (!objective) throw new DurableTaskRuntimeError(`Unknown objective '${approval.objectiveId}'.`);\n\tif (objective.status !== \"active\") {\n\t\tthrow new DurableTaskRuntimeError(`Objective '${approval.objectiveId}' is not active.`);\n\t}\n\tif (approval.attemptId && !approval.taskId) {\n\t\tthrow new DurableTaskRuntimeError(\"Attempt-scoped approval requires a taskId.\");\n\t}\n\tif (approval.taskId) {\n\t\tconst task = state.tasks[approval.taskId];\n\t\tif (!task || task.task.objectiveId !== approval.objectiveId) {\n\t\t\tthrow new DurableTaskRuntimeError(`Approval task '${approval.taskId}' does not belong to its objective.`);\n\t\t}\n\t}\n\tif (approval.attemptId) {\n\t\tconst attempt = state.attempts[approval.attemptId];\n\t\tif (!attempt || attempt.taskId !== approval.taskId) {\n\t\t\tthrow new DurableTaskRuntimeError(`Approval attempt '${approval.attemptId}' does not belong to its task.`);\n\t\t}\n\t\tif (attempt.status !== \"queued\" || attempt.grantId) {\n\t\t\tthrow new DurableTaskRuntimeError(`Approval attempt '${approval.attemptId}' is not awaiting policy.`);\n\t\t}\n\t}\n\tconst pendingForTarget = Object.values(state.approvals).find(\n\t\t(candidate) =>\n\t\t\tcandidate.status === \"pending\" &&\n\t\t\tcandidate.request.objectiveId === approval.objectiveId &&\n\t\t\tcandidate.request.taskId === approval.taskId &&\n\t\t\tcandidate.request.attemptId === approval.attemptId,\n\t);\n\tif (pendingForTarget) {\n\t\tthrow new DurableTaskRuntimeError(`Target already awaits approval '${pendingForTarget.request.approvalId}'.`);\n\t}\n}\n\nexport function assertApprovalResolutionTransition(\n\tstate: TaskRuntimeProjection,\n\taggregateId: string,\n\tresolution: ApprovalResolutionContract,\n): ApprovalRuntimeState {\n\tconst approval = state.approvals[resolution.approvalId];\n\tif (!approval) throw new DurableTaskRuntimeError(`Unknown approval '${resolution.approvalId}'.`);\n\tconst expectedAggregateId = approval.request.attemptId ?? approval.request.taskId ?? approval.request.objectiveId;\n\tif (aggregateId !== expectedAggregateId) {\n\t\tthrow new DurableTaskRuntimeError(`Resolved approval target '${expectedAggregateId}' does not match aggregate.`);\n\t}\n\tif (approval.status !== \"pending\") {\n\t\tthrow new DurableTaskRuntimeError(`Approval '${resolution.approvalId}' was already ${approval.status}.`);\n\t}\n\treturn approval;\n}\n\nexport function assertNotificationTarget(\n\tstate: TaskRuntimeProjection,\n\tobjectiveId: string,\n\tattemptId: string | undefined,\n): void {\n\tif (!state.objectives[objectiveId]) throw new DurableTaskRuntimeError(`Unknown objective '${objectiveId}'.`);\n\tif (!attemptId) return;\n\tconst attempt = state.attempts[attemptId];\n\tconst task = attempt ? state.tasks[attempt.taskId] : undefined;\n\tif (!attempt || !task || task.task.objectiveId !== objectiveId) {\n\t\tthrow new DurableTaskRuntimeError(`Notification attempt '${attemptId}' does not belong to its objective.`);\n\t}\n}\n\nexport interface VerificationTransitionInput {\n\ttaskId: string;\n\tverifierTaskId: string;\n\tverifierAttemptId: string;\n\tverdict: \"accepted\" | \"rejected\" | \"inconclusive\";\n\treasonCode: string;\n}\n\nexport function assertTaskFailureTransition(\n\tstate: TaskRuntimeProjection,\n\taggregateId: string,\n\ttaskId: string,\n\treasonCode: string,\n): TaskRuntimeState {\n\tif (aggregateId !== taskId)\n\t\tthrow new DurableTaskRuntimeError(`Failed task '${taskId}' does not match its aggregate.`);\n\tconst task = state.tasks[taskId];\n\tif (!task) throw new DurableTaskRuntimeError(`Unknown task '${taskId}'.`);\n\tif (task.task.status !== \"pending\" && task.task.status !== \"ready\" && task.task.status !== \"blocked\") {\n\t\tthrow new DurableTaskRuntimeError(`Task '${taskId}' cannot fail from '${task.task.status}'.`);\n\t}\n\tconst active = activeTaskAttempt(state, task);\n\tif (active) {\n\t\tthrow new DurableTaskRuntimeError(`Task '${taskId}' still owns active attempt '${active.attemptId}'.`);\n\t}\n\tdispatchIdentifier(reasonCode.trim(), \"task.failed.reasonCode\");\n\treturn task;\n}\n\nexport function assertVerificationTransition(\n\tstate: TaskRuntimeProjection,\n\taggregateId: string,\n\targs: VerificationTransitionInput,\n): { subject: TaskRuntimeState; verifierAttempt: AttemptRuntimeState } {\n\tif (aggregateId !== args.taskId) {\n\t\tthrow new DurableTaskRuntimeError(\"Verification subject does not match its aggregate.\");\n\t}\n\tconst subject = state.tasks[args.taskId];\n\tconst verifierTask = state.tasks[args.verifierTaskId];\n\tconst verifierAttempt = state.attempts[args.verifierAttemptId];\n\tif (!subject) throw new DurableTaskRuntimeError(`Unknown verification subject '${args.taskId}'.`);\n\tif (subject.verification) {\n\t\tthrow new DurableTaskRuntimeError(`Verification subject '${args.taskId}' was already reconciled.`);\n\t}\n\tif (subject.task.status !== \"blocked\") {\n\t\tthrow new DurableTaskRuntimeError(\n\t\t\t`Verification subject '${args.taskId}' cannot reconcile from '${subject.task.status}'.`,\n\t\t);\n\t}\n\tif (!verifierTask || verifierTask.task.verificationOfTaskId !== args.taskId) {\n\t\tthrow new DurableTaskRuntimeError(`Task '${args.verifierTaskId}' is not the verifier for '${args.taskId}'.`);\n\t}\n\tif (!verifierAttempt || verifierAttempt.taskId !== args.verifierTaskId) {\n\t\tthrow new DurableTaskRuntimeError(`Unknown verifier attempt '${args.verifierAttemptId}'.`);\n\t}\n\tif (!terminalAttemptStatus(verifierAttempt.status)) {\n\t\tthrow new DurableTaskRuntimeError(`Verifier attempt '${args.verifierAttemptId}' is not terminal.`);\n\t}\n\tif (args.verdict === \"accepted\" && verifierAttempt.status !== \"completed\") {\n\t\tthrow new DurableTaskRuntimeError(`Verifier attempt '${args.verifierAttemptId}' is not completed.`);\n\t}\n\tdispatchIdentifier(args.reasonCode.trim(), \"verification reasonCode\");\n\tif (\n\t\targs.verdict !== \"inconclusive\" &&\n\t\t!verifierAttempt.result?.evidence.some(\n\t\t\t(evidence) =>\n\t\t\t\tevidence.trusted &&\n\t\t\t\tevidence.kind === \"review\" &&\n\t\t\t\tevidence.metadata?.subjectTaskId === args.taskId &&\n\t\t\t\tevidence.metadata.verdict === args.verdict,\n\t\t)\n\t) {\n\t\tthrow new DurableTaskRuntimeError(\n\t\t\t`${args.verdict === \"accepted\" ? \"Accepted\" : \"Rejected\"} verification requires matching trusted review evidence for the subject task.`,\n\t\t);\n\t}\n\treturn { subject, verifierAttempt };\n}\n\nfunction applyAttemptResumed(\n\tstate: TaskRuntimeProjection,\n\taggregateId: string,\n\tpayload: JsonObject,\n\toccurredAt: string,\n): void {\n\tconst attempts = state.attempts as Record<string, AttemptRuntimeState>;\n\tconst agents = state.agents as Record<string, AgentBindingContract>;\n\tconst lease = leaseFromPayload(payload);\n\tconst agentId = string(payload.agentId, \"attempt.resumed.agentId\");\n\tconst attempt = attempts[lease.attemptId];\n\tconst agent = agents[agentId];\n\tif (aggregateId !== lease.attemptId) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${lease.attemptId}' resume does not match its aggregate.`);\n\t}\n\tif (!attempt || attempt.status !== \"suspended\" || attempt.agentId !== agentId) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${lease.attemptId}' is not suspended for agent '${agentId}'.`);\n\t}\n\tif (!agent || agent.status !== \"resuming\" || agent.activeAttemptId !== lease.attemptId) {\n\t\tthrow new DurableTaskRuntimeError(`Agent '${agentId}' is not resuming attempt '${lease.attemptId}'.`);\n\t}\n\tassertAgentNotRetired(agent, \"resume an attempt\");\n\tif (lease.fencingToken !== (attempt.lease?.fencingToken ?? 0) + 1) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${lease.attemptId}' resume fence is not monotonic.`);\n\t}\n\tconst occurredAtMs = Date.parse(occurredAt);\n\tif (!Number.isFinite(occurredAtMs)) throw new DurableTaskRuntimeError(\"Attempt resume event time is invalid.\");\n\tassertRetryBackoffElapsedAt(attempt, occurredAtMs);\n\tconst issuedAtMs = Date.parse(lease.issuedAt);\n\tconst expiresAtMs = Date.parse(lease.expiresAt);\n\tif (\n\t\t!Number.isFinite(issuedAtMs) ||\n\t\t!Number.isFinite(expiresAtMs) ||\n\t\tissuedAtMs > occurredAtMs ||\n\t\texpiresAtMs <= occurredAtMs\n\t) {\n\t\tthrow new DurableTaskRuntimeError(`Attempt '${lease.attemptId}' resume lease dates are invalid.`);\n\t}\n\trequireActiveObjectiveForAttemptInProjection(state, attempt);\n\tattempts[lease.attemptId] = {\n\t\t...attempt,\n\t\tstatus: \"leased\",\n\t\tagentId,\n\t\tlease,\n\t\tupdatedAt: occurredAt,\n\t};\n\tagents[agentId] = {\n\t\t...agent,\n\t\tstatus: \"active\",\n\t\tactiveAttemptId: lease.attemptId,\n\t\tupdatedAt: occurredAt,\n\t};\n}\n\nexport function reduceOrchestrationEvent(\n\tprojection: TaskRuntimeProjection,\n\tevent: OrchestrationEvent,\n): TaskRuntimeProjection {\n\tassertProjectionWithinLimits(projection);\n\tif (event.ordinal <= projection.lastOrdinal) return projection;\n\tif (event.ordinal !== projection.lastOrdinal + 1) {\n\t\tthrow new DurableTaskRuntimeError(\n\t\t\t`Orchestration event ordinal ${event.ordinal} is not contiguous after ${projection.lastOrdinal}.`,\n\t\t);\n\t}\n\tconst state = cloneProjection(projection);\n\tconst byteTracker = new ProjectionByteTracker(projection);\n\tconst rawAgents = state.agents as Record<string, AgentBindingContract>;\n\tconst rawObjectives = state.objectives as Record<string, ObjectiveRuntimeState>;\n\tconst rawTasks = state.tasks as Record<string, TaskRuntimeState>;\n\tconst rawAttempts = state.attempts as Record<string, AttemptRuntimeState>;\n\tconst rawCheckpoints = state.checkpoints as Record<string, AttemptCheckpoint>;\n\tconst rawApprovals = state.approvals as Record<string, ApprovalRuntimeState>;\n\tconst rawNotifications = state.notifications as Record<string, NotificationRuntimeState>;\n\tconst agents = byteTracker.track(\"agents\", rawAgents);\n\tconst objectives = byteTracker.track(\"objectives\", rawObjectives);\n\tconst tasks = byteTracker.track(\"tasks\", rawTasks);\n\tconst attempts = byteTracker.track(\"attempts\", rawAttempts);\n\tconst checkpoints = byteTracker.track(\"checkpoints\", rawCheckpoints);\n\tconst approvals = byteTracker.track(\"approvals\", rawApprovals);\n\tconst notifications = byteTracker.track(\"notifications\", rawNotifications);\n\tstate.agents = agents;\n\tstate.objectives = objectives;\n\tstate.tasks = tasks;\n\tstate.attempts = attempts;\n\tstate.checkpoints = checkpoints;\n\tstate.approvals = approvals;\n\tstate.notifications = notifications;\n\n\tswitch (event.type) {\n\t\tcase \"objective.created\": {\n\t\t\tconst objective = objectiveFromPayload(event.payload);\n\t\t\tassertEventAggregateId(event, objective.objectiveId, \"Created objective\");\n\t\t\tif (objective.status !== \"active\") {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Created objective '${objective.objectiveId}' must be active.`);\n\t\t\t}\n\t\t\tif (objectives[objective.objectiveId]) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Objective '${objective.objectiveId}' was created more than once.`);\n\t\t\t}\n\t\t\tassertRecordHasCapacity(objectives, MAX_ORCHESTRATION_OBJECTIVES, \"objective\");\n\t\t\tobjectives[objective.objectiveId] = { objective, taskIds: [], evidence: [] };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"objective.updated\": {\n\t\t\tconst objective = objectiveFromPayload(event.payload);\n\t\t\tconst current = assertObjectiveUpdateTransition(state, event.aggregateId, objective);\n\t\t\tobjectives[event.aggregateId] = { ...current, objective };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"objective.evidence_recorded\": {\n\t\t\tconst evidence = evidenceFromPayload(event.payload);\n\t\t\tconst current = assertObjectiveEvidenceTransition(state, event.aggregateId, evidence);\n\t\t\tconst existing = current.evidence.find((candidate) => candidate.evidenceId === evidence.evidenceId);\n\t\t\tif (existing && !isDeepStrictEqual(existing, evidence)) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Objective evidence '${evidence.evidenceId}' has conflicting content.`);\n\t\t\t}\n\t\t\tif (!existing) {\n\t\t\t\tassertObjectiveEvidenceHasCapacity(objectives, current);\n\t\t\t\tobjectives[event.aggregateId] = { ...current, evidence: [...current.evidence, evidence] };\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase \"objective.paused\":\n\t\t\tassertObjectiveStatusTransition(state, event.aggregateId, \"paused\");\n\t\t\tupdateObjectiveStatus(state, event.aggregateId, \"paused\", event.occurredAt);\n\t\t\tbreak;\n\t\tcase \"objective.resumed\":\n\t\t\tassertObjectiveStatusTransition(state, event.aggregateId, \"active\");\n\t\t\tupdateObjectiveStatus(state, event.aggregateId, \"active\", event.occurredAt);\n\t\t\trefreshReadyTasks(state, event.aggregateId, event.occurredAt);\n\t\t\tbreak;\n\t\tcase \"objective.completed\": {\n\t\t\tconst policy = string(event.payload.completionPolicy, \"objective.completed.completionPolicy\");\n\t\t\tif (policy !== \"task_evidence\" && policy !== \"owner_evidence\" && policy !== \"owner_override\") {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Unknown objective completion policy '${policy}'.`);\n\t\t\t}\n\t\t\tassertObjectiveStatusTransition(state, event.aggregateId, \"completed\", policy);\n\t\t\tupdateObjectiveStatus(state, event.aggregateId, \"completed\", event.occurredAt);\n\t\t\tcancelOpenObjectiveWork(state, event.aggregateId, event.occurredAt, \"objective_completed\");\n\t\t\tbreak;\n\t\t}\n\t\tcase \"objective.cancelled\": {\n\t\t\tassertObjectiveStatusTransition(state, event.aggregateId, \"cancelled\");\n\t\t\tupdateObjectiveStatus(state, event.aggregateId, \"cancelled\", event.occurredAt);\n\t\t\tcancelOpenObjectiveWork(state, event.aggregateId, event.occurredAt, \"objective_cancelled\");\n\t\t\tbreak;\n\t\t}\n\t\tcase \"task.created\": {\n\t\t\tconst task = taskFromPayload(event.payload);\n\t\t\tassertEventAggregateId(event, task.objectiveId, \"Created task objective\");\n\t\t\tapplyTaskCreated(state, task, event.occurredAt);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"task.attempt_prepared\": {\n\t\t\tconst task = taskFromPayload(event.payload);\n\t\t\tif (event.aggregateId !== task.taskId) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Prepared task '${task.taskId}' does not match its aggregate.`);\n\t\t\t}\n\t\t\tapplyTaskCreated(state, task, event.occurredAt);\n\t\t\tapplyAttemptQueued(state, event.payload, event.occurredAt);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"task.ready\": {\n\t\t\tconst taskId = string(event.payload.taskId, \"task.ready.taskId\");\n\t\t\tassertEventAggregateId(event, taskId, \"Ready task\");\n\t\t\tconst current = tasks[taskId];\n\t\t\tif (!current) throw new DurableTaskRuntimeError(`Unknown task '${taskId}'.`);\n\t\t\tif (current.task.status !== \"pending\") {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Task '${taskId}' cannot become ready from '${current.task.status}'.`);\n\t\t\t}\n\t\t\tif (taskDependencyReadiness(state, current).state !== \"ready\") {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Task '${taskId}' dependencies are incomplete.`);\n\t\t\t}\n\t\t\ttasks[taskId] = { ...current, task: { ...current.task, status: \"ready\", updatedAt: event.occurredAt } };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"task.failed\": {\n\t\t\tconst taskId = string(event.payload.taskId, \"task.failed.taskId\");\n\t\t\tconst reasonCode = string(event.payload.reasonCode, \"task.failed.reasonCode\");\n\t\t\tconst current = assertTaskFailureTransition(state, event.aggregateId, taskId, reasonCode);\n\t\t\ttasks[taskId] = { ...current, task: { ...current.task, status: \"failed\", updatedAt: event.occurredAt } };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"task.verification_finished\": {\n\t\t\tconst taskId = string(event.payload.taskId, \"task.verification_finished.taskId\");\n\t\t\tconst verifierTaskId = string(event.payload.verifierTaskId, \"task.verification_finished.verifierTaskId\");\n\t\t\tconst verifierAttemptId = string(\n\t\t\t\tevent.payload.verifierAttemptId,\n\t\t\t\t\"task.verification_finished.verifierAttemptId\",\n\t\t\t);\n\t\t\tconst verdict = string(event.payload.verdict, \"task.verification_finished.verdict\");\n\t\t\tif (verdict !== \"accepted\" && verdict !== \"rejected\" && verdict !== \"inconclusive\") {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Unknown verification verdict '${verdict}'.`);\n\t\t\t}\n\t\t\tconst reasonCode = string(event.payload.reasonCode, \"task.verification_finished.reasonCode\");\n\t\t\tconst transition: VerificationTransitionInput = {\n\t\t\t\ttaskId,\n\t\t\t\tverifierTaskId,\n\t\t\t\tverifierAttemptId,\n\t\t\t\tverdict,\n\t\t\t\treasonCode,\n\t\t\t};\n\t\t\tconst { subject: current } = assertVerificationTransition(state, event.aggregateId, transition);\n\t\t\ttasks[taskId] = {\n\t\t\t\t...current,\n\t\t\t\ttask: {\n\t\t\t\t\t...current.task,\n\t\t\t\t\tstatus: verdict === \"accepted\" ? \"completed\" : \"blocked\",\n\t\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t\t},\n\t\t\t\tverification: {\n\t\t\t\t\tverifierTaskId,\n\t\t\t\t\tverifierAttemptId,\n\t\t\t\t\tverdict,\n\t\t\t\t\treasonCode,\n\t\t\t\t\tcompletedAt: event.occurredAt,\n\t\t\t\t},\n\t\t\t};\n\t\t\trefreshReadyTasks(state, current.task.objectiveId, event.occurredAt);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"agent.registered\": {\n\t\t\tconst agent = agentFromPayload(event.payload);\n\t\t\tassertEventAggregateId(event, agent.agentId, \"Registered agent\");\n\t\t\tif (agent.status !== \"registered\" || agent.activeAttemptId) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Registered agent '${agent.agentId}' must start idle.`);\n\t\t\t}\n\t\t\tif (agents[agent.agentId])\n\t\t\t\tthrow new DurableTaskRuntimeError(`Agent '${agent.agentId}' was registered more than once.`);\n\t\t\tassertRecordHasCapacity(agents, MAX_ORCHESTRATION_AGENT_BINDINGS, \"agent binding\");\n\t\t\tif (agent.parentAgentId) {\n\t\t\t\tconst parent = agents[agent.parentAgentId];\n\t\t\t\tif (!parent) throw new DurableTaskRuntimeError(`Unknown parent agent '${agent.parentAgentId}'.`);\n\t\t\t\tif (parent.status === \"retired\") {\n\t\t\t\t\tthrow new DurableTaskRuntimeError(`Parent agent '${agent.parentAgentId}' is retired.`);\n\t\t\t\t}\n\t\t\t\tif (agent.rootAgentId !== parent.rootAgentId || agent.depth !== parent.depth + 1) {\n\t\t\t\t\tthrow new DurableTaskRuntimeError(`Agent '${agent.agentId}' lineage conflicts with its parent.`);\n\t\t\t\t}\n\t\t\t} else if (agent.rootAgentId !== agent.agentId || agent.depth !== 0) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Root agent '${agent.agentId}' lineage is invalid.`);\n\t\t\t}\n\t\t\tagents[agent.agentId] = agent;\n\t\t\tbreak;\n\t\t}\n\t\tcase \"agent.retired\": {\n\t\t\tconst agentId = string(event.payload.agentId, \"agent.retired.agentId\");\n\t\t\tif (event.aggregateId !== agentId) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Retired agent '${agentId}' does not match its aggregate.`);\n\t\t\t}\n\t\t\tconst agent = assertAgentRetirementEligible(state, agentId);\n\t\t\tif (agent.status === \"retired\") break;\n\t\t\tagents[agentId] = { ...agent, status: \"retired\", updatedAt: event.occurredAt };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"agent.suspended\": {\n\t\t\tconst agentId = string(event.payload.agentId, \"agent.suspended.agentId\");\n\t\t\tassertEventAggregateId(event, agentId, \"Suspended agent\");\n\t\t\tconst agent = agents[agentId];\n\t\t\tif (!agent) throw new DurableTaskRuntimeError(`Unknown agent '${agentId}'.`);\n\t\t\tassertAgentNotRetired(agent, \"suspend\");\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t\"Standalone agent suspension is unsupported; suspend the bound attempt atomically.\",\n\t\t\t);\n\t\t}\n\t\tcase \"agent.resume_requested\": {\n\t\t\tconst agentId = string(event.payload.agentId, \"agent.resume_requested.agentId\");\n\t\t\tconst attemptId = string(event.payload.attemptId, \"agent.resume_requested.attemptId\");\n\t\t\tif (event.aggregateId !== agentId) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Resuming agent '${agentId}' does not match its aggregate.`);\n\t\t\t}\n\t\t\tconst agent = agents[agentId];\n\t\t\tif (!agent) throw new DurableTaskRuntimeError(`Unknown agent '${agentId}'.`);\n\t\t\tassertAgentNotRetired(agent, \"request resume\");\n\t\t\tconst attempt = attempts[attemptId];\n\t\t\tif (\n\t\t\t\t!attempt ||\n\t\t\t\tattempt.status !== \"suspended\" ||\n\t\t\t\tattempt.agentId !== agentId ||\n\t\t\t\tagent.activeAttemptId !== attemptId\n\t\t\t) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Agent '${agentId}' cannot resume suspended attempt '${attemptId}'.`);\n\t\t\t}\n\t\t\tif (agent.status === \"resuming\") break;\n\t\t\tif (agent.status !== \"suspended\") {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Agent '${agentId}' is not suspended.`);\n\t\t\t}\n\t\t\tconst occurredAtMs = Date.parse(event.occurredAt);\n\t\t\tif (!Number.isFinite(occurredAtMs)) {\n\t\t\t\tthrow new DurableTaskRuntimeError(\"Agent resume request event time is invalid.\");\n\t\t\t}\n\t\t\tassertRetryBackoffElapsedAt(attempt, occurredAtMs);\n\t\t\trequireActiveObjectiveForAttemptInProjection(state, attempt);\n\t\t\tagents[agentId] = { ...agent, status: \"resuming\", updatedAt: event.occurredAt };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"agent.resumed\": {\n\t\t\tconst agentId = string(event.payload.agentId, \"agent.resumed.agentId\");\n\t\t\tassertEventAggregateId(event, agentId, \"Resumed agent\");\n\t\t\tconst agent = agents[agentId];\n\t\t\tif (!agent) throw new DurableTaskRuntimeError(`Unknown agent '${agentId}'.`);\n\t\t\tassertAgentNotRetired(agent, \"resume\");\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t\"Standalone agent resume is unsupported; resume the suspended attempt atomically.\",\n\t\t\t);\n\t\t}\n\t\tcase \"attempt.queued\": {\n\t\t\tassertEventAggregateId(event, string(event.payload.taskId, \"attempt.queued.taskId\"), \"Queued attempt task\");\n\t\t\tapplyAttemptQueued(state, event.payload, event.occurredAt);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.grant_bound\": {\n\t\t\tconst attemptId = string(event.payload.attemptId, \"attempt.grant_bound.attemptId\");\n\t\t\tconst grant = executionGrantFromValue(event.payload.grant, \"attempt.grant_bound.grant\");\n\t\t\tconst attempt = assertAttemptGrantTransition(state, event.aggregateId, attemptId, grant);\n\t\t\tattempts[attemptId] = {\n\t\t\t\t...attempt,\n\t\t\t\tgrantId: grant.grantId,\n\t\t\t\tgrant,\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.leased\": {\n\t\t\tconst lease = leaseFromPayload(event.payload);\n\t\t\tconst agentId = typeof event.payload.agentId === \"string\" ? event.payload.agentId : undefined;\n\t\t\tconst attempt = assertAttemptLeaseTransition(state, event.aggregateId, lease, agentId, event.occurredAt);\n\t\t\tif (agentId) {\n\t\t\t\tconst agent = agents[agentId];\n\t\t\t\tif (!agent) throw new DurableTaskRuntimeError(`Unknown agent '${agentId}'.`);\n\t\t\t\tagents[agentId] = {\n\t\t\t\t\t...agent,\n\t\t\t\t\tstatus: \"active\",\n\t\t\t\t\tactiveAttemptId: lease.attemptId,\n\t\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t\t};\n\t\t\t}\n\t\t\tattempts[lease.attemptId] = {\n\t\t\t\t...attempt,\n\t\t\t\tstatus: \"leased\",\n\t\t\t\tlease,\n\t\t\t\t...(agentId ? { agentId } : {}),\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t};\n\t\t\tconst task = tasks[attempt.taskId];\n\t\t\tif (!task) throw new DurableTaskRuntimeError(`Unknown task '${attempt.taskId}'.`);\n\t\t\ttasks[attempt.taskId] = {\n\t\t\t\t...task,\n\t\t\t\ttask: { ...task.task, status: \"running\", updatedAt: event.occurredAt },\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.started\": {\n\t\t\tconst attemptId = string(event.payload.attemptId, \"attempt.started.attemptId\");\n\t\t\tconst leaseId = string(event.payload.leaseId, \"attempt.started.leaseId\");\n\t\t\tconst fencingToken = number(event.payload.fencingToken, \"attempt.started.fencingToken\");\n\t\t\tconst attempt = assertAttemptStartTransition(\n\t\t\t\tstate,\n\t\t\t\tevent.aggregateId,\n\t\t\t\tattemptId,\n\t\t\t\tleaseId,\n\t\t\t\tfencingToken,\n\t\t\t\tevent.occurredAt,\n\t\t\t);\n\t\t\tattempts[attemptId] = { ...attempt, status: \"running\", updatedAt: event.occurredAt };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.lease_renewed\": {\n\t\t\tconst attemptId = string(event.payload.attemptId, \"attempt.lease_renewed.attemptId\");\n\t\t\tconst leaseId = string(event.payload.leaseId, \"attempt.lease_renewed.leaseId\");\n\t\t\tconst fencingToken = number(event.payload.fencingToken, \"attempt.lease_renewed.fencingToken\");\n\t\t\tconst expiresAt = string(event.payload.expiresAt, \"attempt.lease_renewed.expiresAt\");\n\t\t\tconst attempt = assertAttemptLeaseRenewalTransition(\n\t\t\t\tstate,\n\t\t\t\tevent.aggregateId,\n\t\t\t\tattemptId,\n\t\t\t\tleaseId,\n\t\t\t\tfencingToken,\n\t\t\t\texpiresAt,\n\t\t\t\tevent.occurredAt,\n\t\t\t);\n\t\t\tattempts[attemptId] = {\n\t\t\t\t...attempt,\n\t\t\t\tlease: { ...attempt.lease!, expiresAt },\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.checkpointed\": {\n\t\t\tconst checkpoint = checkpointFromPayload(event.payload);\n\t\t\tconst leaseId = string(event.payload.leaseId, \"attempt.checkpointed.leaseId\");\n\t\t\tconst attempt = assertAttemptCheckpointTransition(\n\t\t\t\tstate,\n\t\t\t\tevent.aggregateId,\n\t\t\t\tcheckpoint,\n\t\t\t\tleaseId,\n\t\t\t\tevent.occurredAt,\n\t\t\t);\n\t\t\tif (checkpoints[checkpoint.checkpointId]) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Checkpoint '${checkpoint.checkpointId}' was recorded more than once.`);\n\t\t\t}\n\t\t\tassertIdentifierListHasCapacity(\n\t\t\t\tattempt.checkpointIds,\n\t\t\t\tMAX_ORCHESTRATION_CHECKPOINTS,\n\t\t\t\t\"attempt checkpoint list\",\n\t\t\t);\n\t\t\tassertRecordHasCapacity(checkpoints, MAX_ORCHESTRATION_CHECKPOINTS, \"checkpoint\");\n\t\t\tcheckpoints[checkpoint.checkpointId] = checkpoint;\n\t\t\tattempts[checkpoint.attemptId] = {\n\t\t\t\t...attempt,\n\t\t\t\tcheckpointIds: [...attempt.checkpointIds, checkpoint.checkpointId],\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t};\n\t\t\tif (attempt.agentId) {\n\t\t\t\tconst agent = agents[attempt.agentId];\n\t\t\t\tif (agent) {\n\t\t\t\t\tassertAgentNotRetired(agent, \"checkpoint an attempt\");\n\t\t\t\t\tagents[attempt.agentId] = {\n\t\t\t\t\t\t...agent,\n\t\t\t\t\t\tresumeContext: { ...agent.resumeContext, latestCheckpointId: checkpoint.checkpointId },\n\t\t\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.suspended\": {\n\t\t\tconst attemptId = string(event.payload.attemptId, \"attempt.suspended.attemptId\");\n\t\t\tassertEventAggregateId(event, attemptId, \"Suspended attempt\");\n\t\t\tconst attempt = attempts[attemptId];\n\t\t\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${attemptId}'.`);\n\t\t\tconst leaseId = string(event.payload.leaseId, \"attempt.suspended.leaseId\");\n\t\t\tconst fencingToken = number(event.payload.fencingToken, \"attempt.suspended.fencingToken\");\n\t\t\tif (!attempt.lease || attempt.lease.leaseId !== leaseId || attempt.lease.fencingToken !== fencingToken) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' lease or fencing token is stale.`);\n\t\t\t}\n\t\t\tif (attempt.status !== \"leased\" && attempt.status !== \"running\") {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' cannot suspend from '${attempt.status}'.`);\n\t\t\t}\n\t\t\tif (!attempt.agentId) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' is not bound to a resumable agent.`);\n\t\t\t}\n\t\t\tconst retry =\n\t\t\t\tevent.payload.retry === undefined\n\t\t\t\t\t? undefined\n\t\t\t\t\t: retryStateFromValue(event.payload.retry, \"attempt.suspended.retry\");\n\t\t\tif (retry && retry.retriesUsed !== (attempt.retry?.retriesUsed ?? 0) + 1) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' retry count is not monotonic.`);\n\t\t\t}\n\t\t\tif (retry && Date.parse(retry.notBefore) <= Date.parse(event.occurredAt)) {\n\t\t\t\tthrow new DurableTaskRuntimeError(\"Retry not-before deadline must be after the suspension event.\");\n\t\t\t}\n\t\t\tattempts[attemptId] = {\n\t\t\t\t...attempt,\n\t\t\t\tstatus: \"suspended\",\n\t\t\t\t...(typeof event.payload.reasonCode === \"string\" ? { reasonCode: event.payload.reasonCode } : {}),\n\t\t\t\t...(retry ? { retry } : {}),\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t};\n\t\t\tif (attempt.agentId) {\n\t\t\t\tconst agent = agents[attempt.agentId];\n\t\t\t\tif (agent) {\n\t\t\t\t\tassertAgentNotRetired(agent, \"suspend an attempt\");\n\t\t\t\t\tagents[attempt.agentId] = { ...agent, status: \"suspended\", updatedAt: event.occurredAt };\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.resumed\": {\n\t\t\tapplyAttemptResumed(state, event.aggregateId, event.payload, event.occurredAt);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.cancelled\": {\n\t\t\tconst attemptId = string(event.payload.attemptId, \"attempt.cancelled.attemptId\");\n\t\t\tassertEventAggregateId(event, attemptId, \"Cancelled attempt\");\n\t\t\tconst attempt = attempts[attemptId];\n\t\t\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${attemptId}'.`);\n\t\t\tif (terminalAttemptStatus(attempt.status)) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' cannot cancel from '${attempt.status}'.`);\n\t\t\t}\n\t\t\tattempts[attemptId] = withoutAttemptRetry({\n\t\t\t\t...attempt,\n\t\t\t\tstatus: \"cancelled\",\n\t\t\t\treasonCode: string(event.payload.reasonCode, \"attempt.cancelled.reasonCode\"),\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t});\n\t\t\tconst task = tasks[attempt.taskId];\n\t\t\tif (task) {\n\t\t\t\ttasks[attempt.taskId] = {\n\t\t\t\t\t...task,\n\t\t\t\t\ttask: { ...task.task, status: \"cancelled\", updatedAt: event.occurredAt },\n\t\t\t\t};\n\t\t\t}\n\t\t\treleaseAttemptAgent(agents, attempt, event.occurredAt);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.finished\": {\n\t\t\tconst result = resultFromPayload(event.payload);\n\t\t\tconst { attempt, task } = assertAttemptFinishTransition(state, event.aggregateId, result, event.occurredAt);\n\t\t\tattempts[result.attemptId] = withoutAttemptRetry({\n\t\t\t\t...attempt,\n\t\t\t\tstatus: result.status,\n\t\t\t\tresult,\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t});\n\t\t\ttasks[result.taskId] = {\n\t\t\t\t...task,\n\t\t\t\ttask: { ...task.task, status: taskStatusForResult(result.status), updatedAt: event.occurredAt },\n\t\t\t};\n\t\t\treleaseAttemptAgent(agents, attempt, event.occurredAt);\n\t\t\trefreshReadyTasks(state, task.task.objectiveId, event.occurredAt);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.lease_expired\": {\n\t\t\tconst attemptId = string(event.payload.attemptId, \"attempt.lease_expired.attemptId\");\n\t\t\tassertEventAggregateId(event, attemptId, \"Expired attempt\");\n\t\t\tconst attempt = attempts[attemptId];\n\t\t\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${attemptId}'.`);\n\t\t\tif ((attempt.status !== \"leased\" && attempt.status !== \"running\") || !attempt.lease || attempt.agentId) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' cannot expire from '${attempt.status}'.`);\n\t\t\t}\n\t\t\tconst leaseId = string(event.payload.leaseId, \"attempt.lease_expired.leaseId\");\n\t\t\tconst fencingToken = number(event.payload.fencingToken, \"attempt.lease_expired.fencingToken\");\n\t\t\tif (attempt.lease.leaseId !== leaseId || attempt.lease.fencingToken !== fencingToken) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' lease or fencing token is stale.`);\n\t\t\t}\n\t\t\tattempts[attemptId] = withoutAttemptRetry({\n\t\t\t\t...attempt,\n\t\t\t\tstatus: \"expired\",\n\t\t\t\t...(typeof event.payload.reasonCode === \"string\" ? { reasonCode: event.payload.reasonCode } : {}),\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t});\n\t\t\tconst task = tasks[attempt.taskId];\n\t\t\tif (task)\n\t\t\t\ttasks[attempt.taskId] = { ...task, task: { ...task.task, status: \"ready\", updatedAt: event.occurredAt } };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"approval.requested\": {\n\t\t\tconst approval = approvalFromPayload(event.payload);\n\t\t\tassertApprovalRequestTransition(state, event.aggregateId, approval);\n\t\t\tif (approvals[approval.approvalId]) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Approval '${approval.approvalId}' was requested more than once.`);\n\t\t\t}\n\t\t\tconst notificationId = `approval-requested:${approval.approvalId}`;\n\t\t\tif (notifications[notificationId]) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Notification '${notificationId}' already exists.`);\n\t\t\t}\n\t\t\tassertRecordHasCapacity(approvals, MAX_ORCHESTRATION_APPROVALS, \"approval\");\n\t\t\tassertRecordHasCapacity(notifications, MAX_ORCHESTRATION_NOTIFICATIONS, \"notification\");\n\t\t\tapprovals[approval.approvalId] = { request: approval, status: \"pending\" };\n\t\t\tnotifications[notificationId] = {\n\t\t\t\tnotificationId,\n\t\t\t\tobjectiveId: approval.objectiveId,\n\t\t\t\t...(approval.attemptId ? { attemptId: approval.attemptId } : {}),\n\t\t\t\tstatus: \"pending\",\n\t\t\t\tmessage: approval.summary,\n\t\t\t\tcreatedAt: event.occurredAt,\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tcase \"approval.resolved\": {\n\t\t\tconst resolution = approvalResolutionFromPayload(event.payload);\n\t\t\tconst approval = assertApprovalResolutionTransition(state, event.aggregateId, resolution);\n\t\t\tapprovals[resolution.approvalId] = {\n\t\t\t\t...approval,\n\t\t\t\tstatus: resolution.outcome,\n\t\t\t\tresolution,\n\t\t\t};\n\t\t\tconst approvalNotification = notifications[`approval-requested:${resolution.approvalId}`];\n\t\t\tif (approvalNotification?.status === \"pending\") {\n\t\t\t\tnotifications[approvalNotification.notificationId] = {\n\t\t\t\t\t...approvalNotification,\n\t\t\t\t\tstatus: \"delivered\",\n\t\t\t\t\tdeliveredAt: event.occurredAt,\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (resolution.outcome === \"rejected\" && approval.request.attemptId) {\n\t\t\t\tconst attempt = attempts[approval.request.attemptId];\n\t\t\t\tif (attempt && !terminalAttemptStatus(attempt.status)) {\n\t\t\t\t\tattempts[attempt.attemptId] = withoutAttemptRetry({\n\t\t\t\t\t\t...attempt,\n\t\t\t\t\t\tstatus: \"blocked\",\n\t\t\t\t\t\treasonCode: \"approval_rejected\",\n\t\t\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t\t\t});\n\t\t\t\t\tconst task = tasks[attempt.taskId];\n\t\t\t\t\tif (task) {\n\t\t\t\t\t\ttasks[attempt.taskId] = {\n\t\t\t\t\t\t\t...task,\n\t\t\t\t\t\t\ttask: { ...task.task, status: \"blocked\", updatedAt: event.occurredAt },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase \"notification.enqueued\": {\n\t\t\tconst notificationId = string(event.payload.notificationId, \"notification.enqueued.notificationId\");\n\t\t\tconst objectiveId = string(event.payload.objectiveId, \"notification.enqueued.objectiveId\");\n\t\t\tconst attemptId = typeof event.payload.attemptId === \"string\" ? event.payload.attemptId : undefined;\n\t\t\tassertEventAggregateId(event, objectiveId, \"Notification objective\");\n\t\t\tassertNotificationTarget(state, objectiveId, attemptId);\n\t\t\tif (notifications[notificationId]) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Notification '${notificationId}' was enqueued more than once.`);\n\t\t\t}\n\t\t\tassertRecordHasCapacity(notifications, MAX_ORCHESTRATION_NOTIFICATIONS, \"notification\");\n\t\t\tnotifications[notificationId] = {\n\t\t\t\tnotificationId,\n\t\t\t\tobjectiveId,\n\t\t\t\t...(attemptId ? { attemptId } : {}),\n\t\t\t\tstatus: \"pending\",\n\t\t\t\tmessage: string(event.payload.message, \"notification.enqueued.message\"),\n\t\t\t\tcreatedAt: event.occurredAt,\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tcase \"notification.delivered\": {\n\t\t\tconst notificationId = string(event.payload.notificationId, \"notification.delivered.notificationId\");\n\t\t\tconst notification = notifications[notificationId];\n\t\t\tif (!notification) throw new DurableTaskRuntimeError(`Unknown notification '${notificationId}'.`);\n\t\t\tassertEventAggregateId(event, notification.objectiveId, \"Delivered notification objective\");\n\t\t\tnotifications[notificationId] = { ...notification, status: \"delivered\", deliveredAt: event.occurredAt };\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tconst serializedBytes = byteTracker.finish(event.ordinal);\n\tstate.agents = rawAgents;\n\tstate.objectives = rawObjectives;\n\tstate.tasks = rawTasks;\n\tstate.attempts = rawAttempts;\n\tstate.checkpoints = rawCheckpoints;\n\tstate.approvals = rawApprovals;\n\tstate.notifications = rawNotifications;\n\tconst result = { ...state, lastOrdinal: event.ordinal };\n\tcacheProjectionSerializedBytes(result, serializedBytes);\n\treturn result;\n}\n\nexport function projectOrchestrationEvents(events: readonly OrchestrationEvent[]): TaskRuntimeProjection {\n\treturn events.reduce(reduceOrchestrationEvent, emptyProjection());\n}\n"]}
|