@whooshbang/contracts 1.0.0-rc.13
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 +198 -0
- package/LICENSE +21 -0
- package/README.md +120 -0
- package/contract-manifest.json +390 -0
- package/dist/base64url.d.ts +2 -0
- package/dist/base64url.js +51 -0
- package/dist/base64url.js.map +1 -0
- package/dist/generated/artifact-index.d.ts +205 -0
- package/dist/generated/artifact-index.js +396 -0
- package/dist/generated/artifact-index.js.map +1 -0
- package/dist/generated/contract-manifest.d.ts +66 -0
- package/dist/generated/contract-manifest.js +6 -0
- package/dist/generated/contract-manifest.js.map +1 -0
- package/dist/generated/core-scenario.d.ts +18 -0
- package/dist/generated/core-scenario.js +6 -0
- package/dist/generated/core-scenario.js.map +1 -0
- package/dist/generated/fixture-index.d.ts +33 -0
- package/dist/generated/fixture-index.js +6 -0
- package/dist/generated/fixture-index.js.map +1 -0
- package/dist/generated/interaction-machine-scenario.d.ts +263 -0
- package/dist/generated/interaction-machine-scenario.js +6 -0
- package/dist/generated/interaction-machine-scenario.js.map +1 -0
- package/dist/generated/interaction-v1.d.ts +152 -0
- package/dist/generated/interaction-v1.js +6 -0
- package/dist/generated/interaction-v1.js.map +1 -0
- package/dist/generated/machine-v1.d.ts +169 -0
- package/dist/generated/machine-v1.js +6 -0
- package/dist/generated/machine-v1.js.map +1 -0
- package/dist/generated/provider-capabilities-v1.d.ts +78 -0
- package/dist/generated/provider-capabilities-v1.js +6 -0
- package/dist/generated/provider-capabilities-v1.js.map +1 -0
- package/dist/generated/validators-standalone.d.ts +659 -0
- package/dist/generated/validators-standalone.js +47800 -0
- package/dist/generated/validators-standalone.js.map +1 -0
- package/dist/generated/validators.d.ts +74 -0
- package/dist/generated/validators.js +493 -0
- package/dist/generated/validators.js.map +1 -0
- package/dist/generated/webhook-delivery-case-v1.d.ts +91 -0
- package/dist/generated/webhook-delivery-case-v1.js +6 -0
- package/dist/generated/webhook-delivery-case-v1.js.map +1 -0
- package/dist/generated/webhook-signing-vector-v1.d.ts +88 -0
- package/dist/generated/webhook-signing-vector-v1.js +6 -0
- package/dist/generated/webhook-signing-vector-v1.js.map +1 -0
- package/dist/generated/whooshbang-event-v1.d.ts +191 -0
- package/dist/generated/whooshbang-event-v1.js +6 -0
- package/dist/generated/whooshbang-event-v1.js.map +1 -0
- package/dist/generated/whooshbang-v1.d.ts +1162 -0
- package/dist/generated/whooshbang-v1.js +6 -0
- package/dist/generated/whooshbang-v1.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/machine-credential.d.ts +31 -0
- package/dist/machine-credential.js +78 -0
- package/dist/machine-credential.js.map +1 -0
- package/dist/webhook-consumer.d.ts +50 -0
- package/dist/webhook-consumer.js +71 -0
- package/dist/webhook-consumer.js.map +1 -0
- package/dist/webhook-delivery.d.ts +46 -0
- package/dist/webhook-delivery.js +126 -0
- package/dist/webhook-delivery.js.map +1 -0
- package/dist/webhook-signature.d.ts +36 -0
- package/dist/webhook-signature.js +255 -0
- package/dist/webhook-signature.js.map +1 -0
- package/examples/python/verify_webhook.py +283 -0
- package/fixtures/.gitkeep +1 -0
- package/fixtures/core-v1/fixture-index.json +963 -0
- package/fixtures/core-v1/problems/auth-invalid.json +9 -0
- package/fixtures/core-v1/problems/authentication-required.json +9 -0
- package/fixtures/core-v1/problems/cancellation-too-late.json +9 -0
- package/fixtures/core-v1/problems/endpoint-rotation-conflict.json +10 -0
- package/fixtures/core-v1/problems/environment-mismatch.json +9 -0
- package/fixtures/core-v1/problems/idempotency-conflict.json +9 -0
- package/fixtures/core-v1/problems/idempotency-key-required.json +9 -0
- package/fixtures/core-v1/problems/project-slug-conflict.json +16 -0
- package/fixtures/core-v1/problems/provider-outcome-unknown.json +9 -0
- package/fixtures/core-v1/problems/provider-retryable.json +10 -0
- package/fixtures/core-v1/problems/provider-terminal.json +9 -0
- package/fixtures/core-v1/problems/rate-limited.json +10 -0
- package/fixtures/core-v1/problems/replay-unavailable-not-terminal.json +16 -0
- package/fixtures/core-v1/problems/replay-unavailable-payload.json +16 -0
- package/fixtures/core-v1/problems/replay-unavailable-rollout.json +16 -0
- package/fixtures/core-v1/problems/request-invalid.json +16 -0
- package/fixtures/core-v1/problems/resource-expired.json +9 -0
- package/fixtures/core-v1/problems/resource-not-found.json +9 -0
- package/fixtures/core-v1/problems/scope-forbidden.json +9 -0
- package/fixtures/core-v1/problems/subscriber-unbound.json +9 -0
- package/fixtures/core-v1/requests/create-api-credential.json +9 -0
- package/fixtures/core-v1/requests/create-customer-endpoint.json +5 -0
- package/fixtures/core-v1/requests/create-message.json +15 -0
- package/fixtures/core-v1/requests/create-project.json +4 -0
- package/fixtures/core-v1/requests/create-subscription-link.json +5 -0
- package/fixtures/core-v1/requests/rotate-api-credential.json +3 -0
- package/fixtures/core-v1/requests/rotate-customer-endpoint.json +3 -0
- package/fixtures/core-v1/scenarios/api-credential-invalid-indistinguishable.json +14 -0
- package/fixtures/core-v1/scenarios/api-credential-one-time-reveal.json +21 -0
- package/fixtures/core-v1/scenarios/api-credential-revocation-replay.json +17 -0
- package/fixtures/core-v1/scenarios/api-credential-rotation-overlap.json +18 -0
- package/fixtures/core-v1/scenarios/cancellation-too-late.json +15 -0
- package/fixtures/core-v1/scenarios/cross-account-project.json +14 -0
- package/fixtures/core-v1/scenarios/cross-project-resource.json +17 -0
- package/fixtures/core-v1/scenarios/environment-mismatch.json +17 -0
- package/fixtures/core-v1/scenarios/idempotency-conflict.json +35 -0
- package/fixtures/core-v1/scenarios/idempotency-equivalent-replay.json +27 -0
- package/fixtures/core-v1/scenarios/malformed-bearer.json +14 -0
- package/fixtures/core-v1/scenarios/metadata-overrun.json +14 -0
- package/fixtures/core-v1/scenarios/missing-scope.json +15 -0
- package/fixtures/core-v1/scenarios/project-create-equivalent-replay.json +26 -0
- package/fixtures/core-v1/scenarios/project-slug-conflict.json +21 -0
- package/fixtures/core-v1/scenarios/provider-outcome-unknown.json +15 -0
- package/fixtures/core-v1/scenarios/subscription-activation-replay.json +18 -0
- package/fixtures/core-v1/scenarios/subscription-expired-replay.json +16 -0
- package/fixtures/core-v1/success/account-projection.json +11 -0
- package/fixtures/core-v1/success/api-credential-collection.json +22 -0
- package/fixtures/core-v1/success/api-credential-created.json +20 -0
- package/fixtures/core-v1/success/api-credential-revoked.json +19 -0
- package/fixtures/core-v1/success/api-credential-rotated.json +41 -0
- package/fixtures/core-v1/success/customer-endpoint-attempts.json +15 -0
- package/fixtures/core-v1/success/customer-endpoint-collection.json +26 -0
- package/fixtures/core-v1/success/customer-endpoint-create-replayed.json +16 -0
- package/fixtures/core-v1/success/customer-endpoint-created.json +17 -0
- package/fixtures/core-v1/success/customer-endpoint-rotated.json +21 -0
- package/fixtures/core-v1/success/message-accepted.json +30 -0
- package/fixtures/core-v1/success/message-cancellation-too-late.json +27 -0
- package/fixtures/core-v1/success/message-cancelled.json +27 -0
- package/fixtures/core-v1/success/message-outcome-unknown.json +33 -0
- package/fixtures/core-v1/success/message-provider-accepted.json +30 -0
- package/fixtures/core-v1/success/project-collection.json +42 -0
- package/fixtures/core-v1/success/project-created.json +38 -0
- package/fixtures/core-v1/success/subscription-link-activated.json +22 -0
- package/fixtures/core-v1/success/subscription-link-cancelled.json +14 -0
- package/fixtures/core-v1/success/subscription-link-paused.json +22 -0
- package/fixtures/core-v1/success/subscription-link-pending.json +14 -0
- package/fixtures/core-v1/success/subscription-link-revoked.json +22 -0
- package/fixtures/interaction-machine-v1/capabilities/providers.json +57 -0
- package/fixtures/interaction-machine-v1/capabilities/telegram.json +52 -0
- package/fixtures/interaction-machine-v1/events/confirm-answered.json +22 -0
- package/fixtures/interaction-machine-v1/events/input-answered.json +22 -0
- package/fixtures/interaction-machine-v1/events/input-redacted.json +18 -0
- package/fixtures/interaction-machine-v1/events/select-answered.json +22 -0
- package/fixtures/interaction-machine-v1/requests/ack-processed.json +5 -0
- package/fixtures/interaction-machine-v1/requests/ack-quarantined.json +5 -0
- package/fixtures/interaction-machine-v1/requests/create-machine-client.json +6 -0
- package/fixtures/interaction-machine-v1/requests/create-message-confirm.json +18 -0
- package/fixtures/interaction-machine-v1/requests/create-message-input.json +16 -0
- package/fixtures/interaction-machine-v1/requests/create-message-select.json +26 -0
- package/fixtures/interaction-machine-v1/requests/register-machine-credential.json +4 -0
- package/fixtures/interaction-machine-v1/scenarios/ack-conflict.json +14 -0
- package/fixtures/interaction-machine-v1/scenarios/ack-cross-machine.json +15 -0
- package/fixtures/interaction-machine-v1/scenarios/ack-out-of-order.json +15 -0
- package/fixtures/interaction-machine-v1/scenarios/ack-replay.json +17 -0
- package/fixtures/interaction-machine-v1/scenarios/ambiguous-free-text.json +15 -0
- package/fixtures/interaction-machine-v1/scenarios/callback-token-opacity.json +16 -0
- package/fixtures/interaction-machine-v1/scenarios/credential-registration-conflict.json +16 -0
- package/fixtures/interaction-machine-v1/scenarios/credential-registration-replay.json +15 -0
- package/fixtures/interaction-machine-v1/scenarios/credential-revocation-replay.json +14 -0
- package/fixtures/interaction-machine-v1/scenarios/credential-rotation.json +16 -0
- package/fixtures/interaction-machine-v1/scenarios/first-credential-activates.json +15 -0
- package/fixtures/interaction-machine-v1/scenarios/interaction-duplicate.json +16 -0
- package/fixtures/interaction-machine-v1/scenarios/interaction-expired.json +17 -0
- package/fixtures/interaction-machine-v1/scenarios/interaction-mismatch.json +16 -0
- package/fixtures/interaction-machine-v1/scenarios/interaction-retired.json +16 -0
- package/fixtures/interaction-machine-v1/scenarios/interaction-stale.json +16 -0
- package/fixtures/interaction-machine-v1/scenarios/machine-admin-denied.json +14 -0
- package/fixtures/interaction-machine-v1/scenarios/machine-bound-message-create.json +22 -0
- package/fixtures/interaction-machine-v1/scenarios/machine-cancel-denied.json +14 -0
- package/fixtures/interaction-machine-v1/scenarios/machine-crash-before-ack.json +16 -0
- package/fixtures/interaction-machine-v1/scenarios/machine-notifier-mismatch.json +14 -0
- package/fixtures/interaction-machine-v1/scenarios/machine-other-message-read.json +14 -0
- package/fixtures/interaction-machine-v1/scenarios/machine-owned-message-read.json +22 -0
- package/fixtures/interaction-machine-v1/scenarios/machine-subscriber-mismatch.json +14 -0
- package/fixtures/interaction-machine-v1/scenarios/poll-uncommitted-cursor-rejected.json +17 -0
- package/fixtures/interaction-machine-v1/scenarios/project-credential-machine-endpoint-denied.json +14 -0
- package/fixtures/interaction-machine-v1/scenarios/quarantine-integrity-rejected.json +15 -0
- package/fixtures/interaction-machine-v1/scenarios/quarantine-signature-rejected.json +16 -0
- package/fixtures/interaction-machine-v1/scenarios/quarantine-valid.json +15 -0
- package/fixtures/interaction-machine-v1/scenarios/revoked-machine-credential.json +15 -0
- package/fixtures/interaction-machine-v1/success/ack-out-of-order.json +8 -0
- package/fixtures/interaction-machine-v1/success/ack-processed.json +8 -0
- package/fixtures/interaction-machine-v1/success/ack-quarantined.json +9 -0
- package/fixtures/interaction-machine-v1/success/interaction-answered-confirm.json +10 -0
- package/fixtures/interaction-machine-v1/success/interaction-answered-input.json +10 -0
- package/fixtures/interaction-machine-v1/success/interaction-answered-redacted.json +8 -0
- package/fixtures/interaction-machine-v1/success/interaction-answered-select.json +10 -0
- package/fixtures/interaction-machine-v1/success/interaction-open.json +7 -0
- package/fixtures/interaction-machine-v1/success/machine-client-active.json +20 -0
- package/fixtures/interaction-machine-v1/success/machine-client-provisioning.json +19 -0
- package/fixtures/interaction-machine-v1/success/machine-client-revoked.json +21 -0
- package/fixtures/interaction-machine-v1/success/machine-credential-active.json +13 -0
- package/fixtures/interaction-machine-v1/success/machine-credential-revoked.json +14 -0
- package/fixtures/interaction-machine-v1/success/message-interaction-open.json +33 -0
- package/fixtures/interaction-machine-v1/success/poll-empty.json +6 -0
- package/fixtures/interaction-machine-v1/success/poll-events.json +51 -0
- package/fixtures/interaction-machine-v1/tokens/callback-token.json +1 -0
- package/fixtures/whooshbang-events-v1/delivery/cases.json +418 -0
- package/fixtures/whooshbang-events-v1/events/agent-binding-degraded.json +17 -0
- package/fixtures/whooshbang-events-v1/events/interaction-expired.json +16 -0
- package/fixtures/whooshbang-events-v1/events/interaction-received.json +23 -0
- package/fixtures/whooshbang-events-v1/events/message-delivered.json +16 -0
- package/fixtures/whooshbang-events-v1/events/message-expired.json +15 -0
- package/fixtures/whooshbang-events-v1/events/message-failed.json +17 -0
- package/fixtures/whooshbang-events-v1/events/message-provider-accepted.json +15 -0
- package/fixtures/whooshbang-events-v1/events/subscription-activated.json +18 -0
- package/fixtures/whooshbang-events-v1/events/subscription-revoked.json +18 -0
- package/fixtures/whooshbang-events-v1/signing/vectors.json +852 -0
- package/openapi/.gitkeep +1 -0
- package/openapi/generated/whooshbang-v1.bundle.json +5913 -0
- package/openapi/whooshbang-v1.yaml +2334 -0
- package/package.json +63 -0
- package/schemas/contract-manifest.schema.json +140 -0
- package/schemas/core-scenario.schema.json +38 -0
- package/schemas/events/agent-binding-degraded-v1.schema.json +8 -0
- package/schemas/events/interaction-expired-v1.schema.json +8 -0
- package/schemas/events/interaction-received-v1.schema.json +8 -0
- package/schemas/events/message-delivered-v1.schema.json +8 -0
- package/schemas/events/message-expired-v1.schema.json +8 -0
- package/schemas/events/message-failed-v1.schema.json +8 -0
- package/schemas/events/message-provider-accepted-v1.schema.json +8 -0
- package/schemas/events/subscription-activated-v1.schema.json +8 -0
- package/schemas/events/subscription-revoked-v1.schema.json +8 -0
- package/schemas/events/whooshbang-event-v1.schema.json +689 -0
- package/schemas/fixture-index.schema.json +67 -0
- package/schemas/interaction-machine-scenario.schema.json +700 -0
- package/schemas/interaction-v1.schema.json +483 -0
- package/schemas/machine-v1.schema.json +430 -0
- package/schemas/provider-capabilities-v1.schema.json +263 -0
- package/schemas/webhooks/webhook-delivery-case-v1.schema.json +167 -0
- package/schemas/webhooks/webhook-signing-vector-v1.schema.json +197 -0
- package/schemas/whooshbang-v1.schema.json +2173 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by `npm run contracts:generate`.
|
|
3
|
+
* Do not edit this file directly.
|
|
4
|
+
*/
|
|
5
|
+
import type { AccountProjection, ApiCredential, ApiCredentialCollection, ApiCredentialRotation, ApiCredentialSecretReveal, BindingSummary, CreateApiCredentialRequest, CreateCustomerEndpointRequest, CreateMessageRequest, CreateProjectRequest, CreateSubscriptionLinkRequest, DeliveryAttemptSummary, CustomerEndpoint, CustomerEndpointAttemptCollection, CustomerEndpointCollection, CustomerEndpointMutationResult, CustomerEndpointVerificationChallenge, Message, Problem, Project, ProjectCollection, ProviderCapabilitiesCollection, RotateApiCredentialRequest, SubscriptionLink } from "./whooshbang-v1.js";
|
|
6
|
+
import type { InteractionEvent, InteractionRequest, InteractionSummary } from "./interaction-v1.js";
|
|
7
|
+
import type { CreateMachineClientRequest, MachineClient, MachineCredential, MachineEventAckRequest, MachineEventAckResponse, MachineEventPollResponse, RegisterMachineCredentialRequest } from "./machine-v1.js";
|
|
8
|
+
import type { ProviderCapabilitiesV1 } from "./provider-capabilities-v1.js";
|
|
9
|
+
import type { AgentBindingDegradedEvent, InteractionExpiredEvent, InteractionReceivedEvent, MessageDeliveredEvent, MessageExpiredEvent, MessageFailedEvent, MessageProviderAcceptedEvent, WhooshBangEventV1ContractDocument, SubscriptionActivatedEvent, SubscriptionRevokedEvent } from "./whooshbang-event-v1.js";
|
|
10
|
+
import type { WebhookDeliveryCaseSetV1 } from "./webhook-delivery-case-v1.js";
|
|
11
|
+
import type { WebhookSigningVectorSetV1 } from "./webhook-signing-vector-v1.js";
|
|
12
|
+
export interface ContractValidationError {
|
|
13
|
+
readonly instancePath: string;
|
|
14
|
+
readonly schemaPath: string;
|
|
15
|
+
readonly keyword: string;
|
|
16
|
+
readonly params: Readonly<Record<string, unknown>>;
|
|
17
|
+
readonly message?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface ContractValidator<T> {
|
|
20
|
+
(value: unknown): value is T;
|
|
21
|
+
readonly errors?: readonly ContractValidationError[] | null;
|
|
22
|
+
}
|
|
23
|
+
export declare const validateIdempotencyKey: ContractValidator<string>;
|
|
24
|
+
export declare const validateAccountProjection: ContractValidator<AccountProjection>;
|
|
25
|
+
export declare const validateCreateApiCredentialRequest: ContractValidator<CreateApiCredentialRequest>;
|
|
26
|
+
export declare const validateCreateCustomerEndpointRequest: ContractValidator<CreateCustomerEndpointRequest>;
|
|
27
|
+
export declare const validateRotateCustomerEndpointRequest: ContractValidator<RotateApiCredentialRequest>;
|
|
28
|
+
export declare const validateCustomerEndpoint: ContractValidator<CustomerEndpoint>;
|
|
29
|
+
export declare const validateCustomerEndpointCollection: ContractValidator<CustomerEndpointCollection>;
|
|
30
|
+
export declare const validateCustomerEndpointMutationResult: ContractValidator<CustomerEndpointMutationResult>;
|
|
31
|
+
export declare const validateCustomerEndpointAttemptCollection: ContractValidator<CustomerEndpointAttemptCollection>;
|
|
32
|
+
export declare const validateCustomerEndpointVerificationChallenge: ContractValidator<CustomerEndpointVerificationChallenge>;
|
|
33
|
+
export declare const validateRotateApiCredentialRequest: ContractValidator<RotateApiCredentialRequest>;
|
|
34
|
+
export declare const validateApiCredential: ContractValidator<ApiCredential>;
|
|
35
|
+
export declare const validateApiCredentialCollection: ContractValidator<ApiCredentialCollection>;
|
|
36
|
+
export declare const validateApiCredentialSecretReveal: ContractValidator<ApiCredentialSecretReveal>;
|
|
37
|
+
export declare const validateApiCredentialRotation: ContractValidator<ApiCredentialRotation>;
|
|
38
|
+
export declare const validateCreateProjectRequest: ContractValidator<CreateProjectRequest>;
|
|
39
|
+
export declare const validateProject: ContractValidator<Project>;
|
|
40
|
+
export declare const validateProjectCollection: ContractValidator<ProjectCollection>;
|
|
41
|
+
export declare const validateBindingSummary: ContractValidator<BindingSummary>;
|
|
42
|
+
export declare const validateCreateSubscriptionLinkRequest: ContractValidator<CreateSubscriptionLinkRequest>;
|
|
43
|
+
export declare const validateSubscriptionLink: ContractValidator<SubscriptionLink>;
|
|
44
|
+
export declare const validateCreateMessageRequest: ContractValidator<CreateMessageRequest>;
|
|
45
|
+
export declare const validateDeliveryAttemptSummary: ContractValidator<DeliveryAttemptSummary>;
|
|
46
|
+
export declare const validateMessage: ContractValidator<Message>;
|
|
47
|
+
export declare const validateProblem: ContractValidator<Problem>;
|
|
48
|
+
export declare const validateInteractionRequest: ContractValidator<InteractionRequest>;
|
|
49
|
+
export declare const validateInteractionSummary: ContractValidator<InteractionSummary>;
|
|
50
|
+
export declare const validateInteractionEvent: ContractValidator<InteractionEvent>;
|
|
51
|
+
export declare const validateProviderCallbackToken: ContractValidator<string>;
|
|
52
|
+
export declare const validateCreateMachineClientRequest: ContractValidator<CreateMachineClientRequest>;
|
|
53
|
+
export declare const validateMachineClient: ContractValidator<MachineClient>;
|
|
54
|
+
export declare const validateRegisterMachineCredentialRequest: ContractValidator<RegisterMachineCredentialRequest>;
|
|
55
|
+
export declare const validateMachineCredential: ContractValidator<MachineCredential>;
|
|
56
|
+
export declare const validateMachineCredentialBearer: ContractValidator<string>;
|
|
57
|
+
export declare const validateMachineEventPollResponse: ContractValidator<MachineEventPollResponse>;
|
|
58
|
+
export declare const validateMachineEventAckRequest: ContractValidator<MachineEventAckRequest>;
|
|
59
|
+
export declare const validateMachineEventAckResponse: ContractValidator<MachineEventAckResponse>;
|
|
60
|
+
export declare const validateProviderCapabilities: ContractValidator<ProviderCapabilitiesV1>;
|
|
61
|
+
export declare const validateProviderCapabilitiesCollection: ContractValidator<ProviderCapabilitiesCollection>;
|
|
62
|
+
export declare const validateWhooshBangEvent: ContractValidator<WhooshBangEventV1ContractDocument>;
|
|
63
|
+
export declare const validateSubscriptionActivatedEvent: ContractValidator<SubscriptionActivatedEvent>;
|
|
64
|
+
export declare const validateSubscriptionRevokedEvent: ContractValidator<SubscriptionRevokedEvent>;
|
|
65
|
+
export declare const validateMessageProviderAcceptedEvent: ContractValidator<MessageProviderAcceptedEvent>;
|
|
66
|
+
export declare const validateMessageDeliveredEvent: ContractValidator<MessageDeliveredEvent>;
|
|
67
|
+
export declare const validateMessageFailedEvent: ContractValidator<MessageFailedEvent>;
|
|
68
|
+
export declare const validateMessageExpiredEvent: ContractValidator<MessageExpiredEvent>;
|
|
69
|
+
export declare const validateInteractionReceivedEvent: ContractValidator<InteractionReceivedEvent>;
|
|
70
|
+
export declare const validateInteractionExpiredEvent: ContractValidator<InteractionExpiredEvent>;
|
|
71
|
+
export declare const validateAgentBindingDegradedEvent: ContractValidator<AgentBindingDegradedEvent>;
|
|
72
|
+
export declare const validateWebhookSigningVectorSet: ContractValidator<WebhookSigningVectorSetV1>;
|
|
73
|
+
export declare const validateWebhookDeliveryCaseSet: ContractValidator<WebhookDeliveryCaseSetV1>;
|
|
74
|
+
export declare function contractValidationErrors(validator: Readonly<Pick<ContractValidator<unknown>, "errors">>): readonly ContractValidationError[];
|
|
@@ -0,0 +1,493 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by `npm run contracts:generate`.
|
|
3
|
+
* Do not edit this file directly.
|
|
4
|
+
*/
|
|
5
|
+
import { validateAccountProjection as standaloneAccountProjection, validateApiCredential as standaloneApiCredential, validateApiCredentialCollection as standaloneApiCredentialCollection, validateApiCredentialRotation as standaloneApiCredentialRotation, validateApiCredentialSecretReveal as standaloneApiCredentialSecretReveal, validateBindingSummary as standaloneBindingSummary, validateCreateApiCredentialRequest as standaloneCreateApiCredentialRequest, validateCreateCustomerEndpointRequest as standaloneCreateCustomerEndpointRequest, validateCreateMachineClientRequest as standaloneCreateMachineClientRequest, validateCreateMessageRequest as standaloneCreateMessageRequest, validateCreateProjectRequest as standaloneCreateProjectRequest, validateCreateSubscriptionLinkRequest as standaloneCreateSubscriptionLinkRequest, validateDeliveryAttemptSummary as standaloneDeliveryAttemptSummary, validateCustomerEndpoint as standaloneCustomerEndpoint, validateCustomerEndpointCollection as standaloneCustomerEndpointCollection, validateCustomerEndpointMutationResult as standaloneCustomerEndpointMutationResult, validateCustomerEndpointAttemptCollection as standaloneCustomerEndpointAttemptCollection, validateCustomerEndpointVerificationChallenge as standaloneCustomerEndpointVerificationChallenge, validateIdempotencyKey as standaloneIdempotencyKey, validateAgentBindingDegradedEvent as standaloneAgentBindingDegradedEvent, validateInteractionEvent as standaloneInteractionEvent, validateInteractionExpiredEvent as standaloneInteractionExpiredEvent, validateInteractionReceivedEvent as standaloneInteractionReceivedEvent, validateInteractionRequest as standaloneInteractionRequest, validateInteractionSummary as standaloneInteractionSummary, validateMachineClient as standaloneMachineClient, validateMachineCredential as standaloneMachineCredential, validateMachineCredentialBearer as standaloneMachineCredentialBearer, validateMachineEventAckRequest as standaloneMachineEventAckRequest, validateMachineEventAckResponse as standaloneMachineEventAckResponse, validateMachineEventPollResponse as standaloneMachineEventPollResponse, validateMessage as standaloneMessage, validateMessageDeliveredEvent as standaloneMessageDeliveredEvent, validateMessageExpiredEvent as standaloneMessageExpiredEvent, validateMessageFailedEvent as standaloneMessageFailedEvent, validateMessageProviderAcceptedEvent as standaloneMessageProviderAcceptedEvent, validateWhooshBangEvent as standaloneWhooshBangEvent, validateProblem as standaloneProblem, validateProject as standaloneProject, validateProjectCollection as standaloneProjectCollection, validateRotateApiCredentialRequest as standaloneRotateApiCredentialRequest, validateRotateCustomerEndpointRequest as standaloneRotateCustomerEndpointRequest, validateProviderCallbackToken as standaloneProviderCallbackToken, validateProviderCapabilities as standaloneProviderCapabilities, validateProviderCapabilitiesCollection as standaloneProviderCapabilitiesCollection, validateRegisterMachineCredentialRequest as standaloneRegisterMachineCredentialRequest, validateSubscriptionActivatedEvent as standaloneSubscriptionActivatedEvent, validateSubscriptionLink as standaloneSubscriptionLink, validateSubscriptionRevokedEvent as standaloneSubscriptionRevokedEvent, validateWebhookDeliveryCaseSet as standaloneWebhookDeliveryCaseSet, validateWebhookSigningVectorSet as standaloneWebhookSigningVectorSet, } from "./validators-standalone.js";
|
|
6
|
+
const rfc3339DateTime = /^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:\.[0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9])$/u;
|
|
7
|
+
function asRecord(value) {
|
|
8
|
+
return typeof value === "object" && value !== null && !Array.isArray(value)
|
|
9
|
+
? value
|
|
10
|
+
: undefined;
|
|
11
|
+
}
|
|
12
|
+
function formatError(instancePath, formatName) {
|
|
13
|
+
return {
|
|
14
|
+
instancePath,
|
|
15
|
+
keyword: "format",
|
|
16
|
+
message: `must match format "${formatName}"`,
|
|
17
|
+
params: { format: formatName },
|
|
18
|
+
schemaPath: "#/format",
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function isRfc3339DateTime(value) {
|
|
22
|
+
const match = rfc3339DateTime.exec(value);
|
|
23
|
+
if (match === null) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
const year = Number(match[1]);
|
|
27
|
+
const month = Number(match[2]);
|
|
28
|
+
const day = Number(match[3]);
|
|
29
|
+
const leapYear = year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
|
|
30
|
+
const daysInMonth = [
|
|
31
|
+
31,
|
|
32
|
+
leapYear ? 29 : 28,
|
|
33
|
+
31,
|
|
34
|
+
30,
|
|
35
|
+
31,
|
|
36
|
+
30,
|
|
37
|
+
31,
|
|
38
|
+
31,
|
|
39
|
+
30,
|
|
40
|
+
31,
|
|
41
|
+
30,
|
|
42
|
+
31,
|
|
43
|
+
];
|
|
44
|
+
return day <= (daysInMonth[month - 1] ?? 0);
|
|
45
|
+
}
|
|
46
|
+
function isAbsoluteHttpUrl(value, allowHttpTestFixture) {
|
|
47
|
+
try {
|
|
48
|
+
const url = new URL(value);
|
|
49
|
+
if (url.protocol === "https:") {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
return (allowHttpTestFixture &&
|
|
53
|
+
url.protocol === "http:" &&
|
|
54
|
+
(url.hostname === "test" || url.hostname.endsWith(".test")));
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function validateTimestampFields(value, fields, basePath = "") {
|
|
61
|
+
const record = asRecord(value);
|
|
62
|
+
if (record === undefined) {
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
const errors = [];
|
|
66
|
+
for (const field of fields) {
|
|
67
|
+
const candidate = record[field];
|
|
68
|
+
if (typeof candidate === "string" && !isRfc3339DateTime(candidate)) {
|
|
69
|
+
errors.push(formatError(`${basePath}/${field}`, "date-time"));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return errors;
|
|
73
|
+
}
|
|
74
|
+
function validateTimeOrder(value, earlierField, laterField, basePath = "") {
|
|
75
|
+
const record = asRecord(value);
|
|
76
|
+
const earlier = record?.[earlierField];
|
|
77
|
+
const later = record?.[laterField];
|
|
78
|
+
if (typeof earlier !== "string" ||
|
|
79
|
+
typeof later !== "string" ||
|
|
80
|
+
!isRfc3339DateTime(earlier) ||
|
|
81
|
+
!isRfc3339DateTime(later) ||
|
|
82
|
+
Date.parse(earlier) < Date.parse(later)) {
|
|
83
|
+
return [];
|
|
84
|
+
}
|
|
85
|
+
return [
|
|
86
|
+
{
|
|
87
|
+
instancePath: `${basePath}/${earlierField}`,
|
|
88
|
+
keyword: "x-time-order",
|
|
89
|
+
message: `must be before ${laterField}`,
|
|
90
|
+
params: { earlierField, laterField },
|
|
91
|
+
schemaPath: "#/x-time-order",
|
|
92
|
+
},
|
|
93
|
+
];
|
|
94
|
+
}
|
|
95
|
+
function validateTimeNotAfter(value, earlierField, laterField, basePath = "") {
|
|
96
|
+
const record = asRecord(value);
|
|
97
|
+
const earlier = record?.[earlierField];
|
|
98
|
+
const later = record?.[laterField];
|
|
99
|
+
if (typeof earlier !== "string" ||
|
|
100
|
+
typeof later !== "string" ||
|
|
101
|
+
!isRfc3339DateTime(earlier) ||
|
|
102
|
+
!isRfc3339DateTime(later) ||
|
|
103
|
+
Date.parse(earlier) <= Date.parse(later)) {
|
|
104
|
+
return [];
|
|
105
|
+
}
|
|
106
|
+
return [
|
|
107
|
+
{
|
|
108
|
+
instancePath: `${basePath}/${earlierField}`,
|
|
109
|
+
keyword: "x-time-order",
|
|
110
|
+
message: `must not be after ${laterField}`,
|
|
111
|
+
params: { earlierField, laterField },
|
|
112
|
+
schemaPath: "#/x-time-order",
|
|
113
|
+
},
|
|
114
|
+
];
|
|
115
|
+
}
|
|
116
|
+
function validateUrlField(value, field, allowHttpTestFixture) {
|
|
117
|
+
const candidate = asRecord(value)?.[field];
|
|
118
|
+
return typeof candidate === "string" &&
|
|
119
|
+
!isAbsoluteHttpUrl(candidate, allowHttpTestFixture)
|
|
120
|
+
? [formatError(`/${field}`, "uri")]
|
|
121
|
+
: [];
|
|
122
|
+
}
|
|
123
|
+
function validateDeliveryFormats(value, basePath = "") {
|
|
124
|
+
return validateTimestampFields(value, ["retry_at"], basePath);
|
|
125
|
+
}
|
|
126
|
+
function validateMessageFormats(value) {
|
|
127
|
+
const record = asRecord(value);
|
|
128
|
+
return [
|
|
129
|
+
...validateTimestampFields(value, [
|
|
130
|
+
"accepted_at",
|
|
131
|
+
"updated_at",
|
|
132
|
+
"expires_at",
|
|
133
|
+
]),
|
|
134
|
+
...validateDeliveryFormats(record?.delivery, "/delivery"),
|
|
135
|
+
...validateInteractionFormats(record?.interaction, "/interaction"),
|
|
136
|
+
];
|
|
137
|
+
}
|
|
138
|
+
function validateCustomerEndpointFormats(value) {
|
|
139
|
+
const record = asRecord(value);
|
|
140
|
+
return [
|
|
141
|
+
...validateTimestampFields(value, [
|
|
142
|
+
"created_at",
|
|
143
|
+
"updated_at",
|
|
144
|
+
"verification_attempted_at",
|
|
145
|
+
"verified_at",
|
|
146
|
+
"rotated_at",
|
|
147
|
+
"paused_at",
|
|
148
|
+
"disabled_at",
|
|
149
|
+
"last_success_at",
|
|
150
|
+
]),
|
|
151
|
+
...validateTimestampFields(record?.last_failure, ["at"], "/last_failure"),
|
|
152
|
+
];
|
|
153
|
+
}
|
|
154
|
+
function validateInteractionFormats(value, basePath = "") {
|
|
155
|
+
return [
|
|
156
|
+
...validateTimestampFields(value, ["expires_at", "answered_at", "occurred_at"], basePath),
|
|
157
|
+
...validateTimeOrder(value, "answered_at", "expires_at", basePath),
|
|
158
|
+
...validateTimeOrder(value, "occurred_at", "expires_at", basePath),
|
|
159
|
+
];
|
|
160
|
+
}
|
|
161
|
+
function validateWhooshBangEventFormats(value) {
|
|
162
|
+
const data = asRecord(value)?.data;
|
|
163
|
+
return [
|
|
164
|
+
...validateTimestampFields(value, ["created_at"]),
|
|
165
|
+
...validateTimestampFields(data, [
|
|
166
|
+
"activated_at",
|
|
167
|
+
"revoked_at",
|
|
168
|
+
"accepted_at",
|
|
169
|
+
"delivered_at",
|
|
170
|
+
"failed_at",
|
|
171
|
+
"expired_at",
|
|
172
|
+
"occurred_at",
|
|
173
|
+
"expires_at",
|
|
174
|
+
"degraded_at",
|
|
175
|
+
], "/data"),
|
|
176
|
+
...validateTimeOrder(data, "occurred_at", "expires_at", "/data"),
|
|
177
|
+
];
|
|
178
|
+
}
|
|
179
|
+
function validateMachineResourceFormats(value) {
|
|
180
|
+
return validateTimestampFields(value, [
|
|
181
|
+
"created_at",
|
|
182
|
+
"updated_at",
|
|
183
|
+
"last_used_at",
|
|
184
|
+
"revoked_at",
|
|
185
|
+
]);
|
|
186
|
+
}
|
|
187
|
+
function validateProjectFormats(value, basePath = "") {
|
|
188
|
+
const record = asRecord(value);
|
|
189
|
+
const environments = Array.isArray(record?.environments)
|
|
190
|
+
? record.environments
|
|
191
|
+
: [];
|
|
192
|
+
return [
|
|
193
|
+
...validateTimestampFields(value, ["created_at", "updated_at"], basePath),
|
|
194
|
+
...environments.flatMap((environment, index) => {
|
|
195
|
+
const environmentRecord = asRecord(environment);
|
|
196
|
+
const notifier = asRecord(environmentRecord?.default_notifier);
|
|
197
|
+
const errors = [];
|
|
198
|
+
if (typeof record?.id === "string" &&
|
|
199
|
+
environmentRecord?.project_id !== record.id) {
|
|
200
|
+
errors.push({
|
|
201
|
+
instancePath: `${basePath}/environments/${index}/project_id`,
|
|
202
|
+
keyword: "x-parent-identity",
|
|
203
|
+
message: "must equal the containing project id",
|
|
204
|
+
params: { parentField: "id" },
|
|
205
|
+
schemaPath: "#/x-parent-identity",
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
if (typeof environmentRecord?.id === "string" &&
|
|
209
|
+
notifier?.environment_id !== environmentRecord.id) {
|
|
210
|
+
errors.push({
|
|
211
|
+
instancePath: `${basePath}/environments/${index}/default_notifier/environment_id`,
|
|
212
|
+
keyword: "x-parent-identity",
|
|
213
|
+
message: "must equal the containing environment id",
|
|
214
|
+
params: { parentField: "id" },
|
|
215
|
+
schemaPath: "#/x-parent-identity",
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
return errors;
|
|
219
|
+
}),
|
|
220
|
+
];
|
|
221
|
+
}
|
|
222
|
+
function validateProjectCollectionFormats(value) {
|
|
223
|
+
const items = asRecord(value)?.items;
|
|
224
|
+
return Array.isArray(items)
|
|
225
|
+
? items.flatMap((project, index) => validateProjectFormats(project, `/items/${index}`))
|
|
226
|
+
: [];
|
|
227
|
+
}
|
|
228
|
+
function validateApiCredentialFormats(value, basePath = "") {
|
|
229
|
+
const record = asRecord(value);
|
|
230
|
+
const id = record?.id;
|
|
231
|
+
const prefix = record?.prefix;
|
|
232
|
+
const errors = [
|
|
233
|
+
...validateTimestampFields(value, ["created_at", "last_used_at", "scheduled_revocation_at", "revoked_at"], basePath),
|
|
234
|
+
...validateTimeNotAfter(value, "created_at", "last_used_at", basePath),
|
|
235
|
+
...validateTimeNotAfter(value, "created_at", "scheduled_revocation_at", basePath),
|
|
236
|
+
...validateTimeNotAfter(value, "created_at", "revoked_at", basePath),
|
|
237
|
+
...validateTimeNotAfter(value, "last_used_at", "scheduled_revocation_at", basePath),
|
|
238
|
+
...validateTimeNotAfter(value, "last_used_at", "revoked_at", basePath),
|
|
239
|
+
];
|
|
240
|
+
if (typeof id === "string" &&
|
|
241
|
+
typeof prefix === "string" &&
|
|
242
|
+
prefix !== `wb_pc1.${id.slice(0, 14)}`) {
|
|
243
|
+
errors.push({
|
|
244
|
+
instancePath: `${basePath}/prefix`,
|
|
245
|
+
keyword: "x-credential-prefix",
|
|
246
|
+
message: "must match the safe prefix derived from the credential id",
|
|
247
|
+
params: { credentialField: "id" },
|
|
248
|
+
schemaPath: "#/x-credential-prefix",
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
return errors;
|
|
252
|
+
}
|
|
253
|
+
function validateApiCredentialCollectionFormats(value) {
|
|
254
|
+
const items = asRecord(value)?.items;
|
|
255
|
+
return Array.isArray(items)
|
|
256
|
+
? items.flatMap((credential, index) => validateApiCredentialFormats(credential, `/items/${index}`))
|
|
257
|
+
: [];
|
|
258
|
+
}
|
|
259
|
+
function validateApiCredentialSecretRevealFormats(value, basePath = "") {
|
|
260
|
+
const record = asRecord(value);
|
|
261
|
+
const credential = asRecord(record?.credential);
|
|
262
|
+
const secret = record?.secret;
|
|
263
|
+
const errors = [
|
|
264
|
+
...validateApiCredentialFormats(credential, `${basePath}/credential`),
|
|
265
|
+
];
|
|
266
|
+
if (credential?.status !== undefined &&
|
|
267
|
+
(credential.status !== "active" ||
|
|
268
|
+
credential.last_used_at !== undefined ||
|
|
269
|
+
credential.scheduled_revocation_at !== undefined ||
|
|
270
|
+
credential.revoked_at !== undefined)) {
|
|
271
|
+
errors.push({
|
|
272
|
+
instancePath: `${basePath}/credential`,
|
|
273
|
+
keyword: "x-new-credential",
|
|
274
|
+
message: "must describe a newly active, unused credential",
|
|
275
|
+
params: {},
|
|
276
|
+
schemaPath: "#/x-new-credential",
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
if (typeof credential?.id === "string" &&
|
|
280
|
+
typeof secret === "string" &&
|
|
281
|
+
!secret.startsWith(`wb_pc1.${credential.id}.`)) {
|
|
282
|
+
return [
|
|
283
|
+
...errors,
|
|
284
|
+
{
|
|
285
|
+
instancePath: `${basePath}/secret`,
|
|
286
|
+
keyword: "x-credential-identity",
|
|
287
|
+
message: "must embed the revealed credential id",
|
|
288
|
+
params: { credentialField: "credential.id" },
|
|
289
|
+
schemaPath: "#/x-credential-identity",
|
|
290
|
+
},
|
|
291
|
+
];
|
|
292
|
+
}
|
|
293
|
+
return errors;
|
|
294
|
+
}
|
|
295
|
+
function validateApiCredentialRotationFormats(value) {
|
|
296
|
+
const record = asRecord(value);
|
|
297
|
+
const reveal = asRecord(record?.credential);
|
|
298
|
+
const replacement = asRecord(reveal?.credential);
|
|
299
|
+
const replaced = asRecord(record?.replaced_credential);
|
|
300
|
+
const errors = [
|
|
301
|
+
...validateApiCredentialSecretRevealFormats(record?.credential, "/credential"),
|
|
302
|
+
...validateApiCredentialFormats(record?.replaced_credential, "/replaced_credential"),
|
|
303
|
+
];
|
|
304
|
+
if (typeof replacement?.id === "string" &&
|
|
305
|
+
typeof replaced?.id === "string" &&
|
|
306
|
+
replacement.id === replaced.id) {
|
|
307
|
+
errors.push({
|
|
308
|
+
instancePath: "/credential/credential/id",
|
|
309
|
+
keyword: "x-rotation-replacement",
|
|
310
|
+
message: "must differ from replaced_credential.id",
|
|
311
|
+
params: { replacedField: "replaced_credential.id" },
|
|
312
|
+
schemaPath: "#/x-rotation-replacement",
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
if (replaced?.status === "active" &&
|
|
316
|
+
replaced.scheduled_revocation_at === undefined) {
|
|
317
|
+
errors.push({
|
|
318
|
+
instancePath: "/replaced_credential/scheduled_revocation_at",
|
|
319
|
+
keyword: "x-rotation-revocation",
|
|
320
|
+
message: "must be present while the replaced credential remains active",
|
|
321
|
+
params: {},
|
|
322
|
+
schemaPath: "#/x-rotation-revocation",
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
const replacementCreatedAt = replacement?.created_at;
|
|
326
|
+
const replacedCreatedAt = replaced?.created_at;
|
|
327
|
+
const replacedRevocationAt = replaced?.status === "active"
|
|
328
|
+
? replaced.scheduled_revocation_at
|
|
329
|
+
: replaced?.revoked_at;
|
|
330
|
+
if (typeof replacementCreatedAt === "string" &&
|
|
331
|
+
typeof replacedCreatedAt === "string" &&
|
|
332
|
+
isRfc3339DateTime(replacementCreatedAt) &&
|
|
333
|
+
isRfc3339DateTime(replacedCreatedAt) &&
|
|
334
|
+
Date.parse(replacedCreatedAt) > Date.parse(replacementCreatedAt)) {
|
|
335
|
+
errors.push({
|
|
336
|
+
instancePath: "/credential/credential/created_at",
|
|
337
|
+
keyword: "x-rotation-time-order",
|
|
338
|
+
message: "must not be before replaced_credential.created_at",
|
|
339
|
+
params: {},
|
|
340
|
+
schemaPath: "#/x-rotation-time-order",
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
if (typeof replacementCreatedAt === "string" &&
|
|
344
|
+
typeof replacedRevocationAt === "string" &&
|
|
345
|
+
isRfc3339DateTime(replacementCreatedAt) &&
|
|
346
|
+
isRfc3339DateTime(replacedRevocationAt) &&
|
|
347
|
+
Date.parse(replacedRevocationAt) < Date.parse(replacementCreatedAt)) {
|
|
348
|
+
errors.push({
|
|
349
|
+
instancePath: replaced?.status === "active"
|
|
350
|
+
? "/replaced_credential/scheduled_revocation_at"
|
|
351
|
+
: "/replaced_credential/revoked_at",
|
|
352
|
+
keyword: "x-rotation-time-order",
|
|
353
|
+
message: "must not be before the replacement credential was created",
|
|
354
|
+
params: {},
|
|
355
|
+
schemaPath: "#/x-rotation-time-order",
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
for (const field of [
|
|
359
|
+
"project_id",
|
|
360
|
+
"environment_id",
|
|
361
|
+
"environment",
|
|
362
|
+
"label",
|
|
363
|
+
]) {
|
|
364
|
+
if (replacement?.[field] !== undefined &&
|
|
365
|
+
replaced?.[field] !== undefined &&
|
|
366
|
+
replacement[field] !== replaced[field]) {
|
|
367
|
+
errors.push({
|
|
368
|
+
instancePath: `/credential/credential/${field}`,
|
|
369
|
+
keyword: "x-rotation-preserves",
|
|
370
|
+
message: `must preserve replaced_credential.${field}`,
|
|
371
|
+
params: { field },
|
|
372
|
+
schemaPath: "#/x-rotation-preserves",
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
const replacementScopes = Array.isArray(replacement?.scopes)
|
|
377
|
+
? [...replacement.scopes].sort()
|
|
378
|
+
: [];
|
|
379
|
+
const replacedScopes = Array.isArray(replaced?.scopes)
|
|
380
|
+
? [...replaced.scopes].sort()
|
|
381
|
+
: [];
|
|
382
|
+
if (replacementScopes.length > 0 &&
|
|
383
|
+
replacedScopes.length > 0 &&
|
|
384
|
+
JSON.stringify(replacementScopes) !== JSON.stringify(replacedScopes)) {
|
|
385
|
+
errors.push({
|
|
386
|
+
instancePath: "/credential/credential/scopes",
|
|
387
|
+
keyword: "x-rotation-preserves",
|
|
388
|
+
message: "must preserve replaced_credential.scopes",
|
|
389
|
+
params: { field: "scopes" },
|
|
390
|
+
schemaPath: "#/x-rotation-preserves",
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
return errors;
|
|
394
|
+
}
|
|
395
|
+
function validatePollResponseFormats(value) {
|
|
396
|
+
const record = asRecord(value);
|
|
397
|
+
const events = Array.isArray(record?.events) ? record.events : [];
|
|
398
|
+
return [
|
|
399
|
+
...validateTimestampFields(value, ["server_time"]),
|
|
400
|
+
...events.flatMap((event, index) => validateInteractionFormats(event, `/events/${index}`)),
|
|
401
|
+
];
|
|
402
|
+
}
|
|
403
|
+
function createContractValidator(source, semanticValidation = () => []) {
|
|
404
|
+
let validator;
|
|
405
|
+
validator = ((value) => {
|
|
406
|
+
if (!source(value)) {
|
|
407
|
+
validator.errors = source.errors ?? [];
|
|
408
|
+
return false;
|
|
409
|
+
}
|
|
410
|
+
validator.errors = semanticValidation(value);
|
|
411
|
+
return validator.errors.length === 0;
|
|
412
|
+
});
|
|
413
|
+
validator.errors = null;
|
|
414
|
+
return validator;
|
|
415
|
+
}
|
|
416
|
+
export const validateIdempotencyKey = createContractValidator(standaloneIdempotencyKey);
|
|
417
|
+
export const validateAccountProjection = createContractValidator(standaloneAccountProjection, (value) => validateTimestampFields(value, ["created_at", "updated_at"]));
|
|
418
|
+
export const validateCreateApiCredentialRequest = createContractValidator(standaloneCreateApiCredentialRequest);
|
|
419
|
+
export const validateCreateCustomerEndpointRequest = createContractValidator(standaloneCreateCustomerEndpointRequest, (value) => validateUrlField(value, "url", false));
|
|
420
|
+
export const validateRotateCustomerEndpointRequest = createContractValidator(standaloneRotateCustomerEndpointRequest);
|
|
421
|
+
export const validateCustomerEndpoint = createContractValidator(standaloneCustomerEndpoint, validateCustomerEndpointFormats);
|
|
422
|
+
export const validateCustomerEndpointCollection = createContractValidator(standaloneCustomerEndpointCollection, (value) => {
|
|
423
|
+
const items = asRecord(value)?.items;
|
|
424
|
+
return Array.isArray(items)
|
|
425
|
+
? items.flatMap((item) => validateCustomerEndpointFormats(item))
|
|
426
|
+
: [];
|
|
427
|
+
});
|
|
428
|
+
export const validateCustomerEndpointMutationResult = createContractValidator(standaloneCustomerEndpointMutationResult, (value) => validateCustomerEndpointFormats(asRecord(value)?.endpoint));
|
|
429
|
+
export const validateCustomerEndpointAttemptCollection = createContractValidator(standaloneCustomerEndpointAttemptCollection, (value) => {
|
|
430
|
+
const attempts = asRecord(value)?.attempts;
|
|
431
|
+
return Array.isArray(attempts)
|
|
432
|
+
? attempts.flatMap((attempt, index) => validateTimestampFields(attempt, ["created_at", "started_at", "completed_at"], `/attempts/${index}`))
|
|
433
|
+
: [];
|
|
434
|
+
});
|
|
435
|
+
export const validateCustomerEndpointVerificationChallenge = createContractValidator(standaloneCustomerEndpointVerificationChallenge);
|
|
436
|
+
export const validateRotateApiCredentialRequest = createContractValidator(standaloneRotateApiCredentialRequest);
|
|
437
|
+
export const validateApiCredential = createContractValidator(standaloneApiCredential, validateApiCredentialFormats);
|
|
438
|
+
export const validateApiCredentialCollection = createContractValidator(standaloneApiCredentialCollection, validateApiCredentialCollectionFormats);
|
|
439
|
+
export const validateApiCredentialSecretReveal = createContractValidator(standaloneApiCredentialSecretReveal, validateApiCredentialSecretRevealFormats);
|
|
440
|
+
export const validateApiCredentialRotation = createContractValidator(standaloneApiCredentialRotation, validateApiCredentialRotationFormats);
|
|
441
|
+
export const validateCreateProjectRequest = createContractValidator(standaloneCreateProjectRequest);
|
|
442
|
+
export const validateProject = createContractValidator(standaloneProject, validateProjectFormats);
|
|
443
|
+
export const validateProjectCollection = createContractValidator(standaloneProjectCollection, validateProjectCollectionFormats);
|
|
444
|
+
export const validateBindingSummary = createContractValidator(standaloneBindingSummary);
|
|
445
|
+
export const validateCreateSubscriptionLinkRequest = createContractValidator(standaloneCreateSubscriptionLinkRequest, (value) => validateUrlField(value, "return_url", true));
|
|
446
|
+
export const validateSubscriptionLink = createContractValidator(standaloneSubscriptionLink, (value) => [
|
|
447
|
+
...validateTimestampFields(value, [
|
|
448
|
+
"created_at",
|
|
449
|
+
"updated_at",
|
|
450
|
+
"expires_at",
|
|
451
|
+
]),
|
|
452
|
+
...validateUrlField(value, "authorization_url", false),
|
|
453
|
+
]);
|
|
454
|
+
export const validateCreateMessageRequest = createContractValidator(standaloneCreateMessageRequest, (value) => {
|
|
455
|
+
const record = asRecord(value);
|
|
456
|
+
return [
|
|
457
|
+
...validateTimestampFields(value, ["expires_at"]),
|
|
458
|
+
...validateTimestampFields(record?.interaction, ["expires_at"], "/interaction"),
|
|
459
|
+
];
|
|
460
|
+
});
|
|
461
|
+
export const validateDeliveryAttemptSummary = createContractValidator(standaloneDeliveryAttemptSummary, validateDeliveryFormats);
|
|
462
|
+
export const validateMessage = createContractValidator(standaloneMessage, validateMessageFormats);
|
|
463
|
+
export const validateProblem = createContractValidator(standaloneProblem, (value) => validateTimestampFields(value, ["retry_at"]));
|
|
464
|
+
export const validateInteractionRequest = createContractValidator(standaloneInteractionRequest, validateInteractionFormats);
|
|
465
|
+
export const validateInteractionSummary = createContractValidator(standaloneInteractionSummary, validateInteractionFormats);
|
|
466
|
+
export const validateInteractionEvent = createContractValidator(standaloneInteractionEvent, validateInteractionFormats);
|
|
467
|
+
export const validateProviderCallbackToken = createContractValidator(standaloneProviderCallbackToken);
|
|
468
|
+
export const validateCreateMachineClientRequest = createContractValidator(standaloneCreateMachineClientRequest);
|
|
469
|
+
export const validateMachineClient = createContractValidator(standaloneMachineClient, validateMachineResourceFormats);
|
|
470
|
+
export const validateRegisterMachineCredentialRequest = createContractValidator(standaloneRegisterMachineCredentialRequest);
|
|
471
|
+
export const validateMachineCredential = createContractValidator(standaloneMachineCredential, validateMachineResourceFormats);
|
|
472
|
+
export const validateMachineCredentialBearer = createContractValidator(standaloneMachineCredentialBearer);
|
|
473
|
+
export const validateMachineEventPollResponse = createContractValidator(standaloneMachineEventPollResponse, validatePollResponseFormats);
|
|
474
|
+
export const validateMachineEventAckRequest = createContractValidator(standaloneMachineEventAckRequest);
|
|
475
|
+
export const validateMachineEventAckResponse = createContractValidator(standaloneMachineEventAckResponse);
|
|
476
|
+
export const validateProviderCapabilities = createContractValidator(standaloneProviderCapabilities);
|
|
477
|
+
export const validateProviderCapabilitiesCollection = createContractValidator(standaloneProviderCapabilitiesCollection);
|
|
478
|
+
export const validateWhooshBangEvent = createContractValidator(standaloneWhooshBangEvent, validateWhooshBangEventFormats);
|
|
479
|
+
export const validateSubscriptionActivatedEvent = createContractValidator(standaloneSubscriptionActivatedEvent, validateWhooshBangEventFormats);
|
|
480
|
+
export const validateSubscriptionRevokedEvent = createContractValidator(standaloneSubscriptionRevokedEvent, validateWhooshBangEventFormats);
|
|
481
|
+
export const validateMessageProviderAcceptedEvent = createContractValidator(standaloneMessageProviderAcceptedEvent, validateWhooshBangEventFormats);
|
|
482
|
+
export const validateMessageDeliveredEvent = createContractValidator(standaloneMessageDeliveredEvent, validateWhooshBangEventFormats);
|
|
483
|
+
export const validateMessageFailedEvent = createContractValidator(standaloneMessageFailedEvent, validateWhooshBangEventFormats);
|
|
484
|
+
export const validateMessageExpiredEvent = createContractValidator(standaloneMessageExpiredEvent, validateWhooshBangEventFormats);
|
|
485
|
+
export const validateInteractionReceivedEvent = createContractValidator(standaloneInteractionReceivedEvent, validateWhooshBangEventFormats);
|
|
486
|
+
export const validateInteractionExpiredEvent = createContractValidator(standaloneInteractionExpiredEvent, validateWhooshBangEventFormats);
|
|
487
|
+
export const validateAgentBindingDegradedEvent = createContractValidator(standaloneAgentBindingDegradedEvent, validateWhooshBangEventFormats);
|
|
488
|
+
export const validateWebhookSigningVectorSet = createContractValidator(standaloneWebhookSigningVectorSet);
|
|
489
|
+
export const validateWebhookDeliveryCaseSet = createContractValidator(standaloneWebhookDeliveryCaseSet);
|
|
490
|
+
export function contractValidationErrors(validator) {
|
|
491
|
+
return validator.errors ?? [];
|
|
492
|
+
}
|
|
493
|
+
//# sourceMappingURL=validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/generated/validators.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,yBAAyB,IAAI,2BAA2B,EACxD,qBAAqB,IAAI,uBAAuB,EAChD,+BAA+B,IAAI,iCAAiC,EACpE,6BAA6B,IAAI,+BAA+B,EAChE,iCAAiC,IAAI,mCAAmC,EACxE,sBAAsB,IAAI,wBAAwB,EAClD,kCAAkC,IAAI,oCAAoC,EAC1E,qCAAqC,IAAI,uCAAuC,EAChF,kCAAkC,IAAI,oCAAoC,EAC1E,4BAA4B,IAAI,8BAA8B,EAC9D,4BAA4B,IAAI,8BAA8B,EAC9D,qCAAqC,IAAI,uCAAuC,EAChF,8BAA8B,IAAI,gCAAgC,EAClE,wBAAwB,IAAI,0BAA0B,EACtD,kCAAkC,IAAI,oCAAoC,EAC1E,sCAAsC,IAAI,wCAAwC,EAClF,yCAAyC,IAAI,2CAA2C,EACxF,6CAA6C,IAAI,+CAA+C,EAChG,sBAAsB,IAAI,wBAAwB,EAClD,iCAAiC,IAAI,mCAAmC,EACxE,wBAAwB,IAAI,0BAA0B,EACtD,+BAA+B,IAAI,iCAAiC,EACpE,gCAAgC,IAAI,kCAAkC,EACtE,0BAA0B,IAAI,4BAA4B,EAC1D,0BAA0B,IAAI,4BAA4B,EAC1D,qBAAqB,IAAI,uBAAuB,EAChD,yBAAyB,IAAI,2BAA2B,EACxD,+BAA+B,IAAI,iCAAiC,EACpE,8BAA8B,IAAI,gCAAgC,EAClE,+BAA+B,IAAI,iCAAiC,EACpE,gCAAgC,IAAI,kCAAkC,EACtE,eAAe,IAAI,iBAAiB,EACpC,6BAA6B,IAAI,+BAA+B,EAChE,2BAA2B,IAAI,6BAA6B,EAC5D,0BAA0B,IAAI,4BAA4B,EAC1D,oCAAoC,IAAI,sCAAsC,EAC9E,uBAAuB,IAAI,yBAAyB,EACpD,eAAe,IAAI,iBAAiB,EACpC,eAAe,IAAI,iBAAiB,EACpC,yBAAyB,IAAI,2BAA2B,EACxD,kCAAkC,IAAI,oCAAoC,EAC1E,qCAAqC,IAAI,uCAAuC,EAChF,6BAA6B,IAAI,+BAA+B,EAChE,4BAA4B,IAAI,8BAA8B,EAC9D,sCAAsC,IAAI,wCAAwC,EAClF,wCAAwC,IAAI,0CAA0C,EACtF,kCAAkC,IAAI,oCAAoC,EAC1E,wBAAwB,IAAI,0BAA0B,EACtD,gCAAgC,IAAI,kCAAkC,EACtE,8BAA8B,IAAI,gCAAgC,EAClE,+BAA+B,IAAI,iCAAiC,GACrE,MAAM,4BAA4B,CAAC;AAyFpC,MAAM,eAAe,GACnB,yJAAyJ,CAAC;AAE5J,SAAS,QAAQ,CACf,KAAc;IAEd,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzE,CAAC,CAAE,KAA2C;QAC9C,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAClB,YAAoB,EACpB,UAAkB;IAElB,OAAO;QACL,YAAY;QACZ,OAAO,EAAE,QAAQ;QACjB,OAAO,EAAE,sBAAsB,UAAU,GAAG;QAC5C,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;QAC9B,UAAU,EAAE,UAAU;KACvB,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IACtC,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG;QAClB,EAAE;QACF,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QAClB,EAAE;QACF,EAAE;QACF,EAAE;QACF,EAAE;QACF,EAAE;QACF,EAAE;QACF,EAAE;QACF,EAAE;QACF,EAAE;QACF,EAAE;KACH,CAAC;IACF,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,iBAAiB,CACxB,KAAa,EACb,oBAA6B;IAE7B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,CACL,oBAAoB;YACpB,GAAG,CAAC,QAAQ,KAAK,OAAO;YACxB,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAC5D,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAc,EACd,MAAyB,EACzB,QAAQ,GAAG,EAAE;IAEb,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;YACnE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,QAAQ,IAAI,KAAK,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CACxB,KAAc,EACd,YAAoB,EACpB,UAAkB,EAClB,QAAQ,GAAG,EAAE;IAEb,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC;IACnC,IACE,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,iBAAiB,CAAC,OAAO,CAAC;QAC3B,CAAC,iBAAiB,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EACvC,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO;QACL;YACE,YAAY,EAAE,GAAG,QAAQ,IAAI,YAAY,EAAE;YAC3C,OAAO,EAAE,cAAc;YACvB,OAAO,EAAE,kBAAkB,UAAU,EAAE;YACvC,MAAM,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE;YACpC,UAAU,EAAE,gBAAgB;SAC7B;KACF,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAc,EACd,YAAoB,EACpB,UAAkB,EAClB,QAAQ,GAAG,EAAE;IAEb,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC;IACnC,IACE,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,iBAAiB,CAAC,OAAO,CAAC;QAC3B,CAAC,iBAAiB,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EACxC,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO;QACL;YACE,YAAY,EAAE,GAAG,QAAQ,IAAI,YAAY,EAAE;YAC3C,OAAO,EAAE,cAAc;YACvB,OAAO,EAAE,qBAAqB,UAAU,EAAE;YAC1C,MAAM,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE;YACpC,UAAU,EAAE,gBAAgB;SAC7B;KACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,KAAc,EACd,KAAa,EACb,oBAA6B;IAE7B,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,OAAO,SAAS,KAAK,QAAQ;QAClC,CAAC,iBAAiB,CAAC,SAAS,EAAE,oBAAoB,CAAC;QACnD,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAc,EACd,QAAQ,GAAG,EAAE;IAEb,OAAO,uBAAuB,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,sBAAsB,CAC7B,KAAc;IAEd,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO;QACL,GAAG,uBAAuB,CAAC,KAAK,EAAE;YAChC,aAAa;YACb,YAAY;YACZ,YAAY;SACb,CAAC;QACF,GAAG,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC;QACzD,GAAG,0BAA0B,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC;KACnE,CAAC;AACJ,CAAC;AAED,SAAS,+BAA+B,CACtC,KAAc;IAEd,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO;QACL,GAAG,uBAAuB,CAAC,KAAK,EAAE;YAChC,YAAY;YACZ,YAAY;YACZ,2BAA2B;YAC3B,aAAa;YACb,YAAY;YACZ,WAAW;YACX,aAAa;YACb,iBAAiB;SAClB,CAAC;QACF,GAAG,uBAAuB,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC;KAC1E,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CACjC,KAAc,EACd,QAAQ,GAAG,EAAE;IAEb,OAAO;QACL,GAAG,uBAAuB,CACxB,KAAK,EACL,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,CAAC,EAC5C,QAAQ,CACT;QACD,GAAG,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,CAAC;QAClE,GAAG,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,CAAC;KACnE,CAAC;AACJ,CAAC;AAED,SAAS,8BAA8B,CACrC,KAAc;IAEd,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;IACnC,OAAO;QACL,GAAG,uBAAuB,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,CAAC;QACjD,GAAG,uBAAuB,CACxB,IAAI,EACJ;YACE,cAAc;YACd,YAAY;YACZ,aAAa;YACb,cAAc;YACd,WAAW;YACX,YAAY;YACZ,aAAa;YACb,YAAY;YACZ,aAAa;SACd,EACD,OAAO,CACR;QACD,GAAG,iBAAiB,CAAC,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,CAAC;KACjE,CAAC;AACJ,CAAC;AAED,SAAS,8BAA8B,CACrC,KAAc;IAEd,OAAO,uBAAuB,CAAC,KAAK,EAAE;QACpC,YAAY;QACZ,YAAY;QACZ,cAAc;QACd,YAAY;KACb,CAAC,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB,CAC7B,KAAc,EACd,QAAQ,GAAG,EAAE;IAEb,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC;QACtD,CAAC,CAAC,MAAM,CAAC,YAAY;QACrB,CAAC,CAAC,EAAE,CAAC;IACP,OAAO;QACL,GAAG,uBAAuB,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,QAAQ,CAAC;QACzE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE;YAC7C,MAAM,iBAAiB,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;YAChD,MAAM,QAAQ,GAAG,QAAQ,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;YAC/D,MAAM,MAAM,GAA8B,EAAE,CAAC;YAC7C,IACE,OAAO,MAAM,EAAE,EAAE,KAAK,QAAQ;gBAC9B,iBAAiB,EAAE,UAAU,KAAK,MAAM,CAAC,EAAE,EAC3C,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC;oBACV,YAAY,EAAE,GAAG,QAAQ,iBAAiB,KAAK,aAAa;oBAC5D,OAAO,EAAE,mBAAmB;oBAC5B,OAAO,EAAE,sCAAsC;oBAC/C,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;oBAC7B,UAAU,EAAE,qBAAqB;iBAClC,CAAC,CAAC;YACL,CAAC;YACD,IACE,OAAO,iBAAiB,EAAE,EAAE,KAAK,QAAQ;gBACzC,QAAQ,EAAE,cAAc,KAAK,iBAAiB,CAAC,EAAE,EACjD,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC;oBACV,YAAY,EAAE,GAAG,QAAQ,iBAAiB,KAAK,kCAAkC;oBACjF,OAAO,EAAE,mBAAmB;oBAC5B,OAAO,EAAE,0CAA0C;oBACnD,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;oBAC7B,UAAU,EAAE,qBAAqB;iBAClC,CAAC,CAAC;YACL,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,gCAAgC,CACvC,KAAc;IAEd,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACrC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAC/B,sBAAsB,CAAC,OAAO,EAAE,UAAU,KAAK,EAAE,CAAC,CACnD;QACH,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAED,SAAS,4BAA4B,CACnC,KAAc,EACd,QAAQ,GAAG,EAAE;IAEb,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC;IAC9B,MAAM,MAAM,GAAG;QACb,GAAG,uBAAuB,CACxB,KAAK,EACL,CAAC,YAAY,EAAE,cAAc,EAAE,yBAAyB,EAAE,YAAY,CAAC,EACvE,QAAQ,CACT;QACD,GAAG,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,CAAC;QACtE,GAAG,oBAAoB,CACrB,KAAK,EACL,YAAY,EACZ,yBAAyB,EACzB,QAAQ,CACT;QACD,GAAG,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC;QACpE,GAAG,oBAAoB,CACrB,KAAK,EACL,cAAc,EACd,yBAAyB,EACzB,QAAQ,CACT;QACD,GAAG,oBAAoB,CAAC,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,CAAC;KACvE,CAAC;IACF,IACE,OAAO,EAAE,KAAK,QAAQ;QACtB,OAAO,MAAM,KAAK,QAAQ;QAC1B,MAAM,KAAK,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EACtC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,YAAY,EAAE,GAAG,QAAQ,SAAS;YAClC,OAAO,EAAE,qBAAqB;YAC9B,OAAO,EAAE,2DAA2D;YACpE,MAAM,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;YACjC,UAAU,EAAE,uBAAuB;SACpC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,sCAAsC,CAC7C,KAAc;IAEd,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACrC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,CAClC,4BAA4B,CAAC,UAAU,EAAE,UAAU,KAAK,EAAE,CAAC,CAC5D;QACH,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAED,SAAS,wCAAwC,CAC/C,KAAc,EACd,QAAQ,GAAG,EAAE;IAEb,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC;IAC9B,MAAM,MAAM,GAA8B;QACxC,GAAG,4BAA4B,CAAC,UAAU,EAAE,GAAG,QAAQ,aAAa,CAAC;KACtE,CAAC;IACF,IACE,UAAU,EAAE,MAAM,KAAK,SAAS;QAChC,CAAC,UAAU,CAAC,MAAM,KAAK,QAAQ;YAC7B,UAAU,CAAC,YAAY,KAAK,SAAS;YACrC,UAAU,CAAC,uBAAuB,KAAK,SAAS;YAChD,UAAU,CAAC,UAAU,KAAK,SAAS,CAAC,EACtC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,YAAY,EAAE,GAAG,QAAQ,aAAa;YACtC,OAAO,EAAE,kBAAkB;YAC3B,OAAO,EAAE,iDAAiD;YAC1D,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,oBAAoB;SACjC,CAAC,CAAC;IACL,CAAC;IACD,IACE,OAAO,UAAU,EAAE,EAAE,KAAK,QAAQ;QAClC,OAAO,MAAM,KAAK,QAAQ;QAC1B,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,UAAU,CAAC,EAAE,GAAG,CAAC,EAC9C,CAAC;QACD,OAAO;YACL,GAAG,MAAM;YACT;gBACE,YAAY,EAAE,GAAG,QAAQ,SAAS;gBAClC,OAAO,EAAE,uBAAuB;gBAChC,OAAO,EAAE,uCAAuC;gBAChD,MAAM,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE;gBAC5C,UAAU,EAAE,yBAAyB;aACtC;SACF,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,oCAAoC,CAC3C,KAAc;IAEd,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACvD,MAAM,MAAM,GAA8B;QACxC,GAAG,wCAAwC,CACzC,MAAM,EAAE,UAAU,EAClB,aAAa,CACd;QACD,GAAG,4BAA4B,CAC7B,MAAM,EAAE,mBAAmB,EAC3B,sBAAsB,CACvB;KACF,CAAC;IACF,IACE,OAAO,WAAW,EAAE,EAAE,KAAK,QAAQ;QACnC,OAAO,QAAQ,EAAE,EAAE,KAAK,QAAQ;QAChC,WAAW,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,EAC9B,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,YAAY,EAAE,2BAA2B;YACzC,OAAO,EAAE,wBAAwB;YACjC,OAAO,EAAE,yCAAyC;YAClD,MAAM,EAAE,EAAE,aAAa,EAAE,wBAAwB,EAAE;YACnD,UAAU,EAAE,0BAA0B;SACvC,CAAC,CAAC;IACL,CAAC;IACD,IACE,QAAQ,EAAE,MAAM,KAAK,QAAQ;QAC7B,QAAQ,CAAC,uBAAuB,KAAK,SAAS,EAC9C,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,YAAY,EAAE,8CAA8C;YAC5D,OAAO,EAAE,uBAAuB;YAChC,OAAO,EAAE,8DAA8D;YACvE,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,yBAAyB;SACtC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,oBAAoB,GAAG,WAAW,EAAE,UAAU,CAAC;IACrD,MAAM,iBAAiB,GAAG,QAAQ,EAAE,UAAU,CAAC;IAC/C,MAAM,oBAAoB,GACxB,QAAQ,EAAE,MAAM,KAAK,QAAQ;QAC3B,CAAC,CAAC,QAAQ,CAAC,uBAAuB;QAClC,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC3B,IACE,OAAO,oBAAoB,KAAK,QAAQ;QACxC,OAAO,iBAAiB,KAAK,QAAQ;QACrC,iBAAiB,CAAC,oBAAoB,CAAC;QACvC,iBAAiB,CAAC,iBAAiB,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAChE,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,YAAY,EAAE,mCAAmC;YACjD,OAAO,EAAE,uBAAuB;YAChC,OAAO,EAAE,mDAAmD;YAC5D,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,yBAAyB;SACtC,CAAC,CAAC;IACL,CAAC;IACD,IACE,OAAO,oBAAoB,KAAK,QAAQ;QACxC,OAAO,oBAAoB,KAAK,QAAQ;QACxC,iBAAiB,CAAC,oBAAoB,CAAC;QACvC,iBAAiB,CAAC,oBAAoB,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,EACnE,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,YAAY,EACV,QAAQ,EAAE,MAAM,KAAK,QAAQ;gBAC3B,CAAC,CAAC,8CAA8C;gBAChD,CAAC,CAAC,iCAAiC;YACvC,OAAO,EAAE,uBAAuB;YAChC,OAAO,EAAE,2DAA2D;YACpE,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,yBAAyB;SACtC,CAAC,CAAC;IACL,CAAC;IACD,KAAK,MAAM,KAAK,IAAI;QAClB,YAAY;QACZ,gBAAgB;QAChB,aAAa;QACb,OAAO;KACC,EAAE,CAAC;QACX,IACE,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,SAAS;YAClC,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,SAAS;YAC/B,WAAW,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,EACtC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC;gBACV,YAAY,EAAE,0BAA0B,KAAK,EAAE;gBAC/C,OAAO,EAAE,sBAAsB;gBAC/B,OAAO,EAAE,qCAAqC,KAAK,EAAE;gBACrD,MAAM,EAAE,EAAE,KAAK,EAAE;gBACjB,UAAU,EAAE,wBAAwB;aACrC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC;QAC1D,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;QAChC,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;QACpD,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;QAC7B,CAAC,CAAC,EAAE,CAAC;IACP,IACE,iBAAiB,CAAC,MAAM,GAAG,CAAC;QAC5B,cAAc,CAAC,MAAM,GAAG,CAAC;QACzB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EACpE,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,YAAY,EAAE,+BAA+B;YAC7C,OAAO,EAAE,sBAAsB;YAC/B,OAAO,EAAE,0CAA0C;YACnD,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;YAC3B,UAAU,EAAE,wBAAwB;SACrC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,2BAA2B,CAClC,KAAc;IAEd,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,OAAO;QACL,GAAG,uBAAuB,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,CAAC;QAClD,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CACjC,0BAA0B,CAAC,KAAK,EAAE,WAAW,KAAK,EAAE,CAAC,CACtD;KACF,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAC9B,MAA2B,EAC3B,qBAAyC,GAAG,EAAE,CAAC,EAAE;IAEjD,IAAI,SAAsC,CAAC;IAC3C,SAAS,GAAG,CAAC,CAAC,KAAc,EAAc,EAAE;QAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACnB,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,SAAS,CAAC,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IACvC,CAAC,CAAgC,CAAC;IAClC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,uBAAuB,CAC3D,wBAA0D,CAC3D,CAAC;AACF,MAAM,CAAC,MAAM,yBAAyB,GACpC,uBAAuB,CACrB,2BAA6D,EAC7D,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CACxE,CAAC;AACJ,MAAM,CAAC,MAAM,kCAAkC,GAC7C,uBAAuB,CACrB,oCAAsE,CACvE,CAAC;AACJ,MAAM,CAAC,MAAM,qCAAqC,GAChD,uBAAuB,CACrB,uCAAyE,EACzE,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CACjD,CAAC;AACJ,MAAM,CAAC,MAAM,qCAAqC,GAChD,uBAAuB,CACrB,uCAAyE,CAC1E,CAAC;AACJ,MAAM,CAAC,MAAM,wBAAwB,GACnC,uBAAuB,CACrB,0BAA4D,EAC5D,+BAA+B,CAChC,CAAC;AACJ,MAAM,CAAC,MAAM,kCAAkC,GAC7C,uBAAuB,CACrB,oCAAsE,EACtE,CAAC,KAAK,EAAE,EAAE;IACR,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACrC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC;QAChE,CAAC,CAAC,EAAE,CAAC;AACT,CAAC,CACF,CAAC;AACJ,MAAM,CAAC,MAAM,sCAAsC,GACjD,uBAAuB,CACrB,wCAA0E,EAC1E,CAAC,KAAK,EAAE,EAAE,CAAC,+BAA+B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CACtE,CAAC;AACJ,MAAM,CAAC,MAAM,yCAAyC,GACpD,uBAAuB,CACrB,2CAA6E,EAC7E,CAAC,KAAK,EAAE,EAAE;IACR,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAC3C,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC5B,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAClC,uBAAuB,CACrB,OAAO,EACP,CAAC,YAAY,EAAE,YAAY,EAAE,cAAc,CAAC,EAC5C,aAAa,KAAK,EAAE,CACrB,CACF;QACH,CAAC,CAAC,EAAE,CAAC;AACT,CAAC,CACF,CAAC;AACJ,MAAM,CAAC,MAAM,6CAA6C,GACxD,uBAAuB,CACrB,+CAAiF,CAClF,CAAC;AACJ,MAAM,CAAC,MAAM,kCAAkC,GAC7C,uBAAuB,CACrB,oCAAsE,CACvE,CAAC;AACJ,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAC1D,uBAAyD,EACzD,4BAA4B,CAC7B,CAAC;AACF,MAAM,CAAC,MAAM,+BAA+B,GAC1C,uBAAuB,CACrB,iCAAmE,EACnE,sCAAsC,CACvC,CAAC;AACJ,MAAM,CAAC,MAAM,iCAAiC,GAC5C,uBAAuB,CACrB,mCAAqE,EACrE,wCAAwC,CACzC,CAAC;AACJ,MAAM,CAAC,MAAM,6BAA6B,GACxC,uBAAuB,CACrB,+BAAiE,EACjE,oCAAoC,CACrC,CAAC;AACJ,MAAM,CAAC,MAAM,4BAA4B,GACvC,uBAAuB,CACrB,8BAAgE,CACjE,CAAC;AACJ,MAAM,CAAC,MAAM,eAAe,GAAG,uBAAuB,CACpD,iBAAmD,EACnD,sBAAsB,CACvB,CAAC;AACF,MAAM,CAAC,MAAM,yBAAyB,GACpC,uBAAuB,CACrB,2BAA6D,EAC7D,gCAAgC,CACjC,CAAC;AACJ,MAAM,CAAC,MAAM,sBAAsB,GAAG,uBAAuB,CAC3D,wBAA0D,CAC3D,CAAC;AACF,MAAM,CAAC,MAAM,qCAAqC,GAChD,uBAAuB,CACrB,uCAAyE,EACzE,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,CACvD,CAAC;AACJ,MAAM,CAAC,MAAM,wBAAwB,GACnC,uBAAuB,CACrB,0BAA4D,EAC5D,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,GAAG,uBAAuB,CAAC,KAAK,EAAE;QAChC,YAAY;QACZ,YAAY;QACZ,YAAY;KACb,CAAC;IACF,GAAG,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,CAAC;CACvD,CACF,CAAC;AACJ,MAAM,CAAC,MAAM,4BAA4B,GACvC,uBAAuB,CACrB,8BAAgE,EAChE,CAAC,KAAK,EAAE,EAAE;IACR,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO;QACL,GAAG,uBAAuB,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,CAAC;QACjD,GAAG,uBAAuB,CACxB,MAAM,EAAE,WAAW,EACnB,CAAC,YAAY,CAAC,EACd,cAAc,CACf;KACF,CAAC;AACJ,CAAC,CACF,CAAC;AACJ,MAAM,CAAC,MAAM,8BAA8B,GACzC,uBAAuB,CACrB,gCAAkE,EAClE,uBAAuB,CACxB,CAAC;AACJ,MAAM,CAAC,MAAM,eAAe,GAAG,uBAAuB,CACpD,iBAAmD,EACnD,sBAAsB,CACvB,CAAC;AACF,MAAM,CAAC,MAAM,eAAe,GAAG,uBAAuB,CACpD,iBAAmD,EACnD,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC,CACxD,CAAC;AACF,MAAM,CAAC,MAAM,0BAA0B,GACrC,uBAAuB,CACrB,4BAA8D,EAC9D,0BAA0B,CAC3B,CAAC;AACJ,MAAM,CAAC,MAAM,0BAA0B,GACrC,uBAAuB,CACrB,4BAA8D,EAC9D,0BAA0B,CAC3B,CAAC;AACJ,MAAM,CAAC,MAAM,wBAAwB,GACnC,uBAAuB,CACrB,0BAA4D,EAC5D,0BAA0B,CAC3B,CAAC;AACJ,MAAM,CAAC,MAAM,6BAA6B,GACxC,uBAAuB,CACrB,+BAAiE,CAClE,CAAC;AACJ,MAAM,CAAC,MAAM,kCAAkC,GAC7C,uBAAuB,CACrB,oCAAsE,CACvE,CAAC;AACJ,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAC1D,uBAAyD,EACzD,8BAA8B,CAC/B,CAAC;AACF,MAAM,CAAC,MAAM,wCAAwC,GACnD,uBAAuB,CACrB,0CAA4E,CAC7E,CAAC;AACJ,MAAM,CAAC,MAAM,yBAAyB,GACpC,uBAAuB,CACrB,2BAA6D,EAC7D,8BAA8B,CAC/B,CAAC;AACJ,MAAM,CAAC,MAAM,+BAA+B,GAC1C,uBAAuB,CACrB,iCAAmE,CACpE,CAAC;AACJ,MAAM,CAAC,MAAM,gCAAgC,GAC3C,uBAAuB,CACrB,kCAAoE,EACpE,2BAA2B,CAC5B,CAAC;AACJ,MAAM,CAAC,MAAM,8BAA8B,GACzC,uBAAuB,CACrB,gCAAkE,CACnE,CAAC;AACJ,MAAM,CAAC,MAAM,+BAA+B,GAC1C,uBAAuB,CACrB,iCAAmE,CACpE,CAAC;AACJ,MAAM,CAAC,MAAM,4BAA4B,GACvC,uBAAuB,CACrB,8BAAgE,CACjE,CAAC;AACJ,MAAM,CAAC,MAAM,sCAAsC,GACjD,uBAAuB,CACrB,wCAA0E,CAC3E,CAAC;AACJ,MAAM,CAAC,MAAM,uBAAuB,GAClC,uBAAuB,CACrB,yBAA2D,EAC3D,8BAA8B,CAC/B,CAAC;AACJ,MAAM,CAAC,MAAM,kCAAkC,GAC7C,uBAAuB,CACrB,oCAAsE,EACtE,8BAA8B,CAC/B,CAAC;AACJ,MAAM,CAAC,MAAM,gCAAgC,GAC3C,uBAAuB,CACrB,kCAAoE,EACpE,8BAA8B,CAC/B,CAAC;AACJ,MAAM,CAAC,MAAM,oCAAoC,GAC/C,uBAAuB,CACrB,sCAAwE,EACxE,8BAA8B,CAC/B,CAAC;AACJ,MAAM,CAAC,MAAM,6BAA6B,GACxC,uBAAuB,CACrB,+BAAiE,EACjE,8BAA8B,CAC/B,CAAC;AACJ,MAAM,CAAC,MAAM,0BAA0B,GACrC,uBAAuB,CACrB,4BAA8D,EAC9D,8BAA8B,CAC/B,CAAC;AACJ,MAAM,CAAC,MAAM,2BAA2B,GACtC,uBAAuB,CACrB,6BAA+D,EAC/D,8BAA8B,CAC/B,CAAC;AACJ,MAAM,CAAC,MAAM,gCAAgC,GAC3C,uBAAuB,CACrB,kCAAoE,EACpE,8BAA8B,CAC/B,CAAC;AACJ,MAAM,CAAC,MAAM,+BAA+B,GAC1C,uBAAuB,CACrB,iCAAmE,EACnE,8BAA8B,CAC/B,CAAC;AACJ,MAAM,CAAC,MAAM,iCAAiC,GAC5C,uBAAuB,CACrB,mCAAqE,EACrE,8BAA8B,CAC/B,CAAC;AACJ,MAAM,CAAC,MAAM,+BAA+B,GAC1C,uBAAuB,CACrB,iCAAmE,CACpE,CAAC;AACJ,MAAM,CAAC,MAAM,8BAA8B,GACzC,uBAAuB,CACrB,gCAAkE,CACnE,CAAC;AAEJ,MAAM,UAAU,wBAAwB,CACtC,SAA+D;IAE/D,OAAO,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC;AAChC,CAAC"}
|