{"version":3,"file":"llm-CmflaXHA.cjs","names":["#model","createStreamFromGenerateResult","convertToDataContent","#model","createStreamFromGenerateResult","PROVIDER_REGISTRY","NetlifyGateway","MastraGateway","ModelsDevGateway","marker","symbol","_a","_b","name","normalizeHeaders","VERSION","TypeValidationError2","TypeValidationError3","EventSourceParserStream","InvalidArgumentError2","APICallError3","APICallError4","ZodFirstPartyTypeKind","ZodFirstPartyTypeKind2","ZodFirstPartyTypeKind3","z4","z","_exhaustiveCheck","getResponseMetadata","z2","lazyValidator2","zodSchema2","z3","UnsupportedFunctionalityError2","UnsupportedFunctionalityError3","lazyValidator3","zodSchema3","z4","lazyValidator4","zodSchema4","z5","parseProviderOptions2","postJsonToApi2","combineHeaders2","createJsonResponseHandler2","createEventSourceResponseHandler2","lazyValidator5","zodSchema5","z6","lazyValidator6","zodSchema6","z7","parseProviderOptions3","postJsonToApi3","combineHeaders3","createJsonResponseHandler3","lazyValidator7","zodSchema7","z8","z9","lazyValidator8","zodSchema8","parseProviderOptions4","postJsonToApi4","combineHeaders4","createJsonResponseHandler4","lazyValidator9","zodSchema9","z10","lazyValidator10","zodSchema10","z11","parseProviderOptions5","combineHeaders5","createJsonResponseHandler5","lazyValidator11","zodSchema11","z12","parseProviderOptions6","postJsonToApi5","combineHeaders6","zodSchema12","z13","convertToBase642","UnsupportedFunctionalityError4","parseProviderOptions7","z14","lazyValidator12","zodSchema13","z15","lazyValidator13","zodSchema14","z16","lazySchema2","zodSchema15","z17","createProviderDefinedToolFactoryWithOutputSchema2","z18","lazySchema3","zodSchema16","createProviderDefinedToolFactoryWithOutputSchema3","lazySchema4","zodSchema17","z19","createProviderDefinedToolFactoryWithOutputSchema4","lazySchema5","zodSchema18","z20","createProviderDefinedToolFactoryWithOutputSchema5","lazySchema6","zodSchema19","z21","createProviderDefinedToolFactoryWithOutputSchema6","validateTypes2","UnsupportedFunctionalityError5","parseProviderOptions8","postJsonToApi6","combineHeaders7","createJsonResponseHandler6","generateId2","createEventSourceResponseHandler3","z","z2","_exhaustiveCheck","normalizeHeaders","ws","WebSocket","MastraModelGateway","InMemoryServerCache","MastraError","MASTRA_USER_AGENT","MASTRA_GATEWAY_STREAM_TRANSPORT","MastraError","shouldEnableGateway","getGatewayId","findGatewayForModel","parseModelRouterId","#manager","#lastStreamTransport","modelSupportsTemperature","AISDKV5LanguageModel","createOpenAICompatible","createOpenAI","MASTRA_GATEWAY_STREAM_TRANSPORT","#model","RequestContext","AISDKV5LanguageModel","createOpenAICompatible","MASTRA_USER_AGENT","GatewayRegistry","createOpenAI","createGoogleGenerativeAI"],"sources":["../src/stream/types.ts","../src/llm/model/aisdk/v6/model.ts","../src/llm/model/aisdk/v7/model.ts","../src/llm/model/gateways/defaults.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/provider/2.0.3/baf9ca0bc6c1e850f5a9c142d47d3731e6921106a5f2b12483df7e7922a48657/node_modules/@ai-sdk/provider/dist/index.mjs","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/provider-utils/3.0.31/ec2b02e652373362f632ec2c411694343ca859aa4cde84046d95e39a09d5a1ac/node_modules/@ai-sdk/provider-utils/dist/index.mjs","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.117/3f5324097e37b29f8c67f9444d2fb0bff4a23e20e79688f7662e681ef31a4ccc/node_modules/@ai-sdk/openai/dist/internal/index.mjs","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/deepseek/1.0.49/9c43d393d233734df35193f751634bb00a7dc30acb14e2c61f11e7c064abe41a/node_modules/@ai-sdk/deepseek/dist/internal/index.mjs","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/azure/2.0.122/ab5d76f0d96c410cb157802a7d4c7d65790bf49e76b7f40883d75c8d80ef310b/node_modules/@ai-sdk/azure/dist/index.mjs","../src/llm/model/openai-websocket-fetch.ts","../src/llm/model/gateways/azure.ts","../src/llm/model/gateways/gateway-manager.ts","../src/llm/model/router.ts","../src/llm/model/aisdk/v4/model.ts","../src/llm/model/resolve-model.ts","../src/llm/model/model-auth-resolver.ts","../src/llm/model/embedding-router.ts"],"sourcesContent":["import type { TransformStream } from 'node:stream/web';\nimport type {\n  LanguageModelV2FinishReason,\n  LanguageModelV2Usage,\n  LanguageModelV2CallWarning,\n  LanguageModelV2Prompt,\n  LanguageModelV2ResponseMetadata,\n  LanguageModelV2StreamPart,\n} from '@ai-sdk/provider-v5';\n\nimport type {\n  FinishReason,\n  LanguageModelRequestMetadata,\n  LogProbs as LanguageModelV1LogProbs,\n} from '@internal/ai-sdk-v4';\nimport type { CallSettings, ModelMessage, StepResult, ToolSet, TypedToolCall, UIMessage } from '@internal/ai-sdk-v5';\nimport type { AIV5ResponseMessage } from '../agent/message-list';\nimport type { AIV5Type, MastraDBMessage } from '../agent/message-list/types';\nimport type { StructuredOutputOptions } from '../agent/types';\nimport type { MastraLanguageModel, SharedProviderOptions } from '../llm/model/shared.types';\nimport type { ScorerResult } from '../loop';\nimport type { ClientObservabilityCarrier, ObservabilityContext } from '../observability';\nimport type { OutputProcessorOrWorkflow } from '../processors';\nimport type { RequestContext } from '../request-context';\nimport type { WorkflowRunStatus, WorkflowStepStatus } from '../workflows/types';\nimport type { OutputSchema } from './base/schema';\n\nexport enum ChunkFrom {\n  AGENT = 'AGENT',\n  USER = 'USER',\n  SYSTEM = 'SYSTEM',\n  WORKFLOW = 'WORKFLOW',\n  NETWORK = 'NETWORK',\n}\n\n/**\n * Extended finish reason that includes Mastra-specific values.\n * 'tripwire' and 'retry' are used for processor scenarios.\n */\nexport type MastraFinishReason = LanguageModelV2FinishReason | 'tripwire' | 'retry';\n\n/**\nA JSON value can be a string, number, boolean, object, array, or null.\nJSON values can be serialized and deserialized by the JSON.stringify and JSON.parse methods.\n */\nexport type JSONValue = null | string | number | boolean | JSONObject | JSONArray;\nexport type JSONObject = {\n  [key: string]: JSONValue;\n};\nexport type JSONArray = JSONValue[];\n\n/**\n * Additional provider-specific metadata.\n * The outer record is keyed by the provider name, and the inner\n * record is keyed by the provider-specific metadata key.\n */\nexport type ProviderMetadata = Record<string, Record<string, JSONValue>>;\n\nexport type StreamTransport = {\n  type: 'openai-websocket';\n  close: () => void;\n  closeOnFinish: boolean;\n};\n\nexport const MASTRA_MODEL_STREAM_TRANSPORT = Symbol.for('@mastra/core.modelStreamTransport');\n\nexport type StreamTransportCarrier = {\n  [key: symbol]: StreamTransport | undefined;\n};\n\nexport function attachModelStreamTransport(target: object, transport?: StreamTransport): void {\n  if (!transport) return;\n  Object.defineProperty(target, MASTRA_MODEL_STREAM_TRANSPORT, {\n    configurable: true,\n    value: transport,\n  });\n}\n\nexport function readModelStreamTransport(target: unknown): StreamTransport | undefined {\n  return (target as StreamTransportCarrier | undefined)?.[MASTRA_MODEL_STREAM_TRANSPORT];\n}\n\nexport type StreamTransportRef = {\n  current?: StreamTransport;\n};\n\ninterface BaseChunkType {\n  runId: string;\n  from: ChunkFrom;\n  metadata?: Record<string, any>;\n}\n\ninterface ResponseMetadataPayload {\n  signature?: string;\n  [key: string]: unknown;\n}\n\nexport interface TextStartPayload {\n  id: string;\n  providerMetadata?: ProviderMetadata;\n}\n\nexport interface TextDeltaPayload {\n  id: string;\n  providerMetadata?: ProviderMetadata;\n  text: string;\n}\n\ninterface TextEndPayload {\n  id: string;\n  providerMetadata?: ProviderMetadata;\n  [key: string]: unknown;\n}\n\nexport interface ReasoningStartPayload {\n  id: string;\n  providerMetadata?: ProviderMetadata;\n  signature?: string;\n}\n\nexport interface ReasoningDeltaPayload {\n  id: string;\n  providerMetadata?: ProviderMetadata;\n  text: string;\n}\n\ninterface ReasoningEndPayload {\n  id: string;\n  providerMetadata?: ProviderMetadata;\n  signature?: string;\n}\n\nexport interface SourcePayload {\n  id: string;\n  sourceType: 'url' | 'document';\n  title: string;\n  mimeType?: string;\n  filename?: string;\n  url?: string;\n  providerMetadata?: ProviderMetadata;\n}\n\nexport interface FilePayload {\n  data: string | Uint8Array;\n  base64?: string;\n  mimeType: string;\n  providerMetadata?: ProviderMetadata;\n}\n\nexport type ReadonlyJSONValue = null | string | number | boolean | ReadonlyJSONObject | ReadonlyJSONArray;\n\nexport type ReadonlyJSONObject = {\n  readonly [key: string]: ReadonlyJSONValue;\n};\n\nexport type ReadonlyJSONArray = readonly ReadonlyJSONValue[];\n\nexport interface MastraMetadataMessage {\n  type: 'text' | 'tool';\n  content?: string;\n  toolName?: string;\n  toolInput?: ReadonlyJSONValue;\n  toolOutput?: ReadonlyJSONValue;\n  args?: ReadonlyJSONValue;\n  toolCallId?: string;\n  result?: ReadonlyJSONValue;\n}\n\nexport interface MastraMetadata {\n  isStreaming?: boolean;\n  from?: 'AGENT' | 'WORKFLOW' | 'USER' | 'SYSTEM';\n  networkMetadata?: ReadonlyJSONObject;\n  toolOutput?: ReadonlyJSONValue | ReadonlyJSONValue[];\n  messages?: MastraMetadataMessage[];\n  workflowFullState?: ReadonlyJSONObject;\n  selectionReason?: string;\n}\n\nexport interface ToolCallPayload<TArgs = unknown, TOutput = unknown> {\n  toolCallId: string;\n  toolName: string;\n  args?: TArgs & {\n    __mastraMetadata?: MastraMetadata;\n  };\n  providerExecuted?: boolean;\n  providerMetadata?: ProviderMetadata;\n  output?: TOutput;\n  dynamic?: boolean;\n  /**\n   * W3C trace context carrier for client-side tool execution.\n   *\n   * Populated by the server when emitting a tool call that will be\n   * executed in the client (`providerExecuted: false` and the tool has\n   * no server-side execute function). The client SDK extracts the\n   * carrier, parents any child spans/logs underneath it, and echoes it\n   * back in the next request body for cross-request trace correlation.\n   */\n  observability?: ClientObservabilityCarrier;\n}\n\nexport interface ToolResultPayload<TResult = unknown, TArgs = unknown> {\n  toolCallId: string;\n  toolName: string;\n  result: TResult;\n  isError?: boolean;\n  providerExecuted?: boolean;\n  providerMetadata?: ProviderMetadata;\n  args?: TArgs;\n  dynamic?: boolean;\n}\n\nexport type DynamicToolCallPayload = ToolCallPayload<any, any>;\nexport type DynamicToolResultPayload = ToolResultPayload<any, any>;\n\ninterface ToolCallInputStreamingStartPayload {\n  toolCallId: string;\n  toolName: string;\n  providerExecuted?: boolean;\n  providerMetadata?: ProviderMetadata;\n  dynamic?: boolean;\n  observability?: ClientObservabilityCarrier;\n}\n\ninterface ToolCallDeltaPayload {\n  argsTextDelta: string;\n  toolCallId: string;\n  providerMetadata?: ProviderMetadata;\n  toolName?: string;\n}\n\ninterface ToolCallInputStreamingEndPayload {\n  toolCallId: string;\n  providerMetadata?: ProviderMetadata;\n}\n\ninterface FinishPayload<Tools extends ToolSet = ToolSet, OUTPUT extends OutputSchema = undefined> {\n  stepResult: {\n    /** Includes 'tripwire' and 'retry' for processor scenarios */\n    reason: LanguageModelV2FinishReason | 'tripwire' | 'retry';\n    warnings?: LanguageModelV2CallWarning[];\n    isContinued?: boolean;\n    logprobs?: LanguageModelV1LogProbs;\n  };\n  output: {\n    usage: LanguageModelUsage;\n    /** Steps array - uses MastraStepResult which extends AI SDK StepResult with tripwire data */\n    steps?: MastraStepResult<Tools>[];\n  };\n  metadata: {\n    providerMetadata?: ProviderMetadata;\n    request?: LanguageModelRequestMetadata;\n    [key: string]: unknown;\n  };\n  providerMetadata?: ProviderMetadata;\n  messages: {\n    all: ModelMessage[];\n    user: ModelMessage[];\n    nonUser: AIV5ResponseMessage[];\n  };\n  response?: LLMStepResult<OUTPUT>['response'];\n  [key: string]: unknown;\n}\n\ninterface ErrorPayload {\n  error: unknown;\n  [key: string]: unknown;\n}\n\ninterface RawPayload {\n  [key: string]: unknown;\n}\n\ninterface StartPayload {\n  [key: string]: unknown;\n}\n\nexport interface StepStartPayload {\n  messageId?: string;\n  request: {\n    body?: string;\n    [key: string]: unknown;\n  };\n  inputMessages?: LanguageModelV2Prompt;\n  warnings?: LanguageModelV2CallWarning[];\n  [key: string]: unknown;\n}\n\nexport interface StepFinishPayload<Tools extends ToolSet = ToolSet, OUTPUT = undefined> {\n  id?: string;\n  providerMetadata?: ProviderMetadata;\n  totalUsage?: LanguageModelUsage;\n  response?: LanguageModelV2ResponseMetadata;\n  messageId?: string;\n  stepResult: {\n    logprobs?: LanguageModelV1LogProbs;\n    isContinued?: boolean;\n    warnings?: LanguageModelV2CallWarning[];\n    reason: LanguageModelV2FinishReason;\n  };\n  output: {\n    text?: string;\n    toolCalls?: TypedToolCall<Tools>[];\n    usage: LanguageModelUsage;\n    /** Steps array - uses MastraStepResult which extends AI SDK StepResult with tripwire data */\n    steps?: MastraStepResult<Tools>[];\n    object?: OUTPUT;\n  };\n  metadata: {\n    request?: LanguageModelRequestMetadata;\n    providerMetadata?: ProviderMetadata;\n    [key: string]: unknown;\n  };\n  messages?: {\n    all: ModelMessage[];\n    user: ModelMessage[];\n    nonUser: AIV5ResponseMessage[];\n  };\n  [key: string]: unknown;\n}\n\ninterface ToolErrorPayload {\n  id?: string;\n  providerMetadata?: ProviderMetadata;\n  toolCallId: string;\n  toolName: string;\n  args?: Record<string, unknown>;\n  error: unknown;\n  providerExecuted?: boolean;\n}\n\ninterface AbortPayload {\n  [key: string]: unknown;\n}\n\ninterface ReasoningSignaturePayload {\n  id: string;\n  signature: string;\n  providerMetadata?: ProviderMetadata;\n}\n\ninterface RedactedReasoningPayload {\n  id: string;\n  data: unknown;\n  providerMetadata?: ProviderMetadata;\n}\n\ninterface ToolOutputPayload<TOutput = unknown> {\n  output: TOutput; // Tool outputs can be any shape, including nested workflow chunks\n  toolCallId: string;\n  toolName?: string;\n  [key: string]: unknown;\n}\n\ntype DynamicToolOutputPayload = ToolOutputPayload<any>;\n\n// Define a specific type for nested workflow outputs\ntype NestedWorkflowOutput = {\n  from: ChunkFrom;\n  type: string;\n  payload?: {\n    output?: ChunkType | NestedWorkflowOutput; // Allow one level of nesting\n    usage?: unknown;\n    [key: string]: unknown;\n  };\n  [key: string]: unknown;\n};\n\ninterface StepOutputPayload {\n  output: ChunkType | NestedWorkflowOutput;\n  [key: string]: unknown;\n}\n\ninterface WatchPayload {\n  [key: string]: unknown;\n}\n\nexport interface TripwirePayload<TMetadata = unknown> {\n  /** The reason for the tripwire */\n  reason: string;\n  /** If true, the agent should retry with the tripwire reason as feedback */\n  retry?: boolean;\n  /** Strongly typed metadata from the processor */\n  metadata?: TMetadata;\n  /** The ID of the processor that triggered the tripwire */\n  processorId?: string;\n}\n\n/**\n * Payload for is-task-complete events emitted during stream/generate scoring.\n */\nexport interface IsTaskCompletePayload {\n  /** Current iteration number */\n  iteration: number;\n  /** Whether all/any scorers passed based on strategy */\n  passed: boolean;\n  /** Individual scorer results */\n  results: ScorerResult[];\n  /** Total duration of all scoring checks */\n  duration: number;\n  /** Whether scoring timed out */\n  timedOut: boolean;\n  /** Reason from the relevant scorer */\n  reason?: string;\n  /** Whether the maximum iteration was reached */\n  maxIterationReached: boolean;\n  /** Whether to suppress the completion feedback message */\n  suppressFeedback: boolean;\n}\n\n/**\n * Payload for `goal` events emitted by the in-loop goal scorer. Consumers (TUIs,\n * `@mastra/client-js`) use this to render judge progress and the result.\n */\nexport interface GoalEvaluationActivity {\n  type: 'tool-call' | 'tool-result' | 'reason';\n  name?: string;\n  message: string;\n}\n\nexport interface GoalEvaluationPayload {\n  /** The objective being judged. */\n  objective: string;\n  /** Goal evaluations consumed so far (runsUsed after this evaluation). */\n  iteration: number;\n  /** Max evaluations before the goal stops. */\n  maxRuns: number;\n  /** Whether the goal is judged complete. */\n  passed: boolean;\n  /** The objective status after this evaluation. */\n  status: 'active' | 'paused' | 'done';\n  /** Individual scorer results. */\n  results: ScorerResult[];\n  /** Judge feedback / stop reason. Falls back to the pause reason when parked. */\n  reason?: string;\n  /**\n   * Why the objective is parked (`status === 'paused'`). Set for judge failure\n   * or budget exhaustion. Cleared when `status` is `'active'` or `'done'`.\n   */\n  pausedReason?: string;\n  /**\n   * True when the judge decided the goal is not finished but explicitly wants\n   * the user to provide input before continuing. The record stays `active` (so\n   * the next agent turn is still judged), but `isContinued` is `false` (the\n   * auto-loop stops). Display layers use this to show a \"waiting\" indicator.\n   */\n  waitingForUser?: boolean;\n  /** True when the scorer/judge itself errored (as opposed to scoring 0). */\n  judgeFailed?: boolean;\n  /** Total duration of the goal scoring check. */\n  duration: number;\n  /** Whether scoring timed out. */\n  timedOut: boolean;\n  /** Whether the run budget (`maxRuns`) was reached. */\n  maxRunsReached: boolean;\n  /** Whether the goal feedback message is suppressed from memory. */\n  suppressFeedback: boolean;\n  /**\n   * The goal gate's continuation decision: `true` when the run loops into\n   * another judged iteration, `false` on a terminal evaluation (completion,\n   * waiting for user, judge failure, or budget exhaustion). Only set on final\n   * (non-pending) evaluation chunks. A `true` value marks an iteration\n   * boundary — the turn's messages are persisted and the stream may safely\n   * truncate its run-lifetime buffers.\n   */\n  shouldContinue?: boolean;\n  /**\n   * True on the \"pre-evaluation\" chunk emitted before scoring starts. Display\n   * layers use this to show a loading/evaluating indicator while the scorer\n   * runs. A second chunk with `pending: false` (or absent) follows once the\n   * evaluation is complete.\n   */\n  pending?: boolean;\n  /** Judge activity emitted while the evaluation is still running. */\n  activity?: GoalEvaluationActivity[];\n}\n\nexport interface BackgroundTaskStartedPayload {\n  taskId: string;\n  toolName: string;\n  toolCallId: string;\n}\n\nexport interface BackgroundTaskResultPayload {\n  taskId: string;\n  toolName: string;\n  toolCallId: string;\n  agentId: string;\n  result: unknown;\n  runId: string;\n  completedAt: Date;\n  isError?: boolean;\n}\n\nexport interface BackgroundTaskFailedPayload {\n  taskId: string;\n  toolName: string;\n  toolCallId: string;\n  runId: string;\n  agentId: string;\n  error: { message: string };\n  completedAt: Date;\n}\n\nexport interface BackgroundTaskProgressPayload {\n  taskIds: string[];\n  runningCount: number;\n  elapsedMs: number;\n}\n\nexport interface BackgroundTaskRunningPayload {\n  taskId: string;\n  toolName: string;\n  toolCallId: string;\n  runId: string;\n  agentId: string;\n  startedAt: Date;\n  args: Record<string, unknown>;\n}\n\nexport interface BackgroundTaskCancelledPayload {\n  taskId: string;\n  toolName: string;\n  toolCallId: string;\n  runId: string;\n  agentId: string;\n  completedAt: Date;\n}\n\nexport interface BackgroundTaskOutputPayload {\n  taskId: string;\n  toolName: string;\n  toolCallId: string;\n  runId: string;\n  agentId: string;\n  payload: Extract<AgentChunkType, { type: 'tool-output' }>;\n}\n\nexport interface BackgroundTaskSuspendedPayload {\n  taskId: string;\n  toolName: string;\n  toolCallId: string;\n  runId: string;\n  agentId: string;\n  args: Record<string, unknown>;\n  /** Whatever the tool passed to `suspend(data)`. */\n  suspendPayload?: unknown;\n  /** When the task suspended. */\n  suspendedAt?: Date;\n}\n\nexport interface BackgroundTaskResumedPayload {\n  taskId: string;\n  toolName: string;\n  toolCallId: string;\n  runId: string;\n  agentId: string;\n  startedAt: Date;\n  args: Record<string, unknown>;\n}\n\n// Network-specific payload interfaces\ninterface RoutingAgentStartPayload {\n  agentId: string;\n  networkId: string;\n  runId: string;\n  inputData: {\n    task: string;\n    primitiveId: string;\n    primitiveType: string;\n    result?: string;\n    iteration: number;\n    threadId?: string;\n    threadResourceId?: string;\n    isOneOff: boolean;\n    verboseIntrospection: boolean;\n  };\n}\n\ninterface RoutingAgentEndPayload {\n  task: string;\n  primitiveId: string;\n  primitiveType: string;\n  prompt: string;\n  result: string;\n  isComplete?: boolean;\n  selectionReason: string;\n  iteration: number;\n  runId: string;\n  usage: LanguageModelUsage;\n}\n\ninterface RoutingAgentTextDeltaPayload {\n  text: string;\n}\n\ninterface RoutingAgentTextStartPayload {\n  runId: string;\n}\n\ninterface AgentExecutionStartPayload {\n  agentId: string;\n  args: {\n    task: string;\n    primitiveId: string;\n    primitiveType: string;\n    prompt: string;\n    result: string;\n    isComplete?: boolean;\n    selectionReason: string;\n    iteration: number;\n  };\n  runId: string;\n}\n\ninterface AgentExecutionApprovalPayload extends ToolCallApprovalPayload {\n  agentId: string;\n  usage: LanguageModelUsage;\n  runId: string;\n  selectionReason: string;\n}\n\ninterface AgentExecutionSuspendedPayload extends ToolCallSuspendedPayload {\n  agentId: string;\n  suspendPayload: any;\n  usage: LanguageModelUsage;\n  runId: string;\n  selectionReason: string;\n}\n\ninterface AgentExecutionEndPayload {\n  task: string;\n  agentId: string;\n  result: string;\n  isComplete: boolean;\n  iteration: number;\n  usage: LanguageModelUsage;\n  runId: string;\n}\n\ninterface WorkflowExecutionStartPayload {\n  name: string;\n  workflowId: string;\n  args: {\n    task: string;\n    primitiveId: string;\n    primitiveType: string;\n    prompt: string;\n    result: string;\n    isComplete?: boolean;\n    selectionReason: string;\n    iteration: number;\n  };\n  runId: string;\n}\n\ninterface WorkflowExecutionEndPayload {\n  name: string;\n  workflowId: string;\n  task: string;\n  primitiveId: string;\n  primitiveType: string;\n  result: string;\n  isComplete: boolean;\n  iteration: number;\n  usage: LanguageModelUsage;\n  runId: string;\n}\n\ninterface WorkflowExecutionSuspendPayload extends ToolCallSuspendedPayload {\n  name: string;\n  workflowId: string;\n  suspendPayload: any;\n  usage: LanguageModelUsage;\n  runId: string;\n  selectionReason: string;\n}\n\ninterface ToolExecutionStartPayload {\n  args: Record<string, unknown> & {\n    toolName?: string;\n    toolCallId?: string;\n    args?: Record<string, unknown>; // The actual tool arguments are nested here\n    selectionReason?: string;\n    __mastraMetadata?: MastraMetadata;\n    // Other inputData fields spread here\n    [key: string]: unknown;\n  };\n  runId: string;\n}\n\ninterface ToolExecutionApprovalPayload extends ToolCallApprovalPayload {\n  selectionReason: string;\n  runId: string;\n}\n\ninterface ToolExecutionSuspendedPayload extends ToolCallSuspendedPayload {\n  selectionReason: string;\n  runId: string;\n}\n\ninterface ToolExecutionEndPayload {\n  task: string;\n  primitiveId: string;\n  primitiveType: string;\n  result: unknown;\n  isComplete: boolean;\n  iteration: number;\n  toolCallId: string;\n  toolName: string;\n}\n\ninterface NetworkStepFinishPayload {\n  task: string;\n  result: string;\n  isComplete: boolean;\n  iteration: number;\n  runId: string;\n}\n\ninterface NetworkFinishPayload<OUTPUT = undefined> {\n  task: string;\n  primitiveId: string;\n  primitiveType: string;\n  prompt: string;\n  result: string;\n  /** Structured output object when structuredOutput option is provided */\n  object?: OUTPUT;\n  isComplete?: boolean;\n  completionReason: string;\n  iteration: number;\n  threadId?: string;\n  threadResourceId?: string;\n  isOneOff: boolean;\n  usage: LanguageModelUsage;\n}\n\ninterface NetworkValidationStartPayload {\n  runId: string;\n  iteration: number;\n  checksCount: number;\n}\n\ninterface NetworkValidationEndPayload {\n  runId: string;\n  iteration: number;\n  passed: boolean;\n  results: ScorerResult[];\n  duration: number;\n  timedOut: boolean;\n  reason?: string;\n  maxIterationReached: boolean;\n  suppressFeedback: boolean;\n}\n\ninterface RoutingAgentAbortPayload {\n  primitiveType: 'routing';\n  primitiveId: string;\n}\n\ninterface AgentExecutionAbortPayload {\n  primitiveType: 'agent';\n  primitiveId: string;\n}\n\ninterface WorkflowExecutionAbortPayload {\n  primitiveType: 'workflow';\n  primitiveId: string;\n}\n\ninterface ToolExecutionAbortPayload {\n  primitiveType: 'tool';\n  primitiveId: string;\n}\n\ninterface ToolCallApprovalPayload {\n  toolCallId: string;\n  toolName: string;\n  args: Record<string, any>;\n  resumeSchema: string;\n}\n\ninterface ToolCallSuspendedPayload {\n  toolCallId: string;\n  toolName: string;\n  suspendPayload: any;\n  args: Record<string, any>;\n  resumeSchema: string;\n}\n\nexport type DataChunkType = {\n  type: `data-${string}`;\n  data: any;\n  id?: string;\n  /** When true, the chunk is streamed to the client but not persisted to storage. */\n  transient?: boolean;\n};\n\nexport type NetworkChunkType<OUTPUT = undefined> =\n  | (BaseChunkType & { type: 'routing-agent-start'; payload: RoutingAgentStartPayload })\n  | (BaseChunkType & { type: 'routing-agent-text-delta'; payload: RoutingAgentTextDeltaPayload })\n  | (BaseChunkType & { type: 'routing-agent-text-start'; payload: RoutingAgentTextStartPayload })\n  | (BaseChunkType & { type: 'routing-agent-end'; payload: RoutingAgentEndPayload })\n  | (BaseChunkType & { type: 'routing-agent-abort'; payload: RoutingAgentAbortPayload })\n  | (BaseChunkType & { type: 'agent-execution-start'; payload: AgentExecutionStartPayload })\n  | (BaseChunkType & { type: 'agent-execution-approval'; payload: AgentExecutionApprovalPayload })\n  | (BaseChunkType & { type: 'agent-execution-suspended'; payload: AgentExecutionSuspendedPayload })\n  | (BaseChunkType & { type: 'agent-execution-end'; payload: AgentExecutionEndPayload })\n  | (BaseChunkType & { type: 'agent-execution-abort'; payload: AgentExecutionAbortPayload })\n  | (BaseChunkType & { type: 'workflow-execution-start'; payload: WorkflowExecutionStartPayload })\n  | (BaseChunkType & { type: 'workflow-execution-end'; payload: WorkflowExecutionEndPayload })\n  | (BaseChunkType & { type: 'workflow-execution-suspended'; payload: WorkflowExecutionSuspendPayload })\n  | (BaseChunkType & { type: 'workflow-execution-abort'; payload: WorkflowExecutionAbortPayload })\n  | (BaseChunkType & { type: 'tool-execution-start'; payload: ToolExecutionStartPayload })\n  | (BaseChunkType & { type: 'tool-execution-end'; payload: ToolExecutionEndPayload })\n  | (BaseChunkType & { type: 'tool-execution-approval'; payload: ToolExecutionApprovalPayload })\n  | (BaseChunkType & { type: 'tool-execution-suspended'; payload: ToolExecutionSuspendedPayload })\n  | (BaseChunkType & { type: 'tool-execution-abort'; payload: ToolExecutionAbortPayload })\n  | (BaseChunkType & { type: 'network-execution-event-step-finish'; payload: NetworkStepFinishPayload })\n  | (BaseChunkType & { type: 'network-execution-event-finish'; payload: NetworkFinishPayload<OUTPUT> })\n  | (BaseChunkType & { type: 'network-validation-start'; payload: NetworkValidationStartPayload })\n  | (BaseChunkType & { type: 'network-validation-end'; payload: NetworkValidationEndPayload })\n  | (BaseChunkType & { type: `agent-execution-event-${string}`; payload: AgentChunkType })\n  | (BaseChunkType & { type: `workflow-execution-event-${string}`; payload: WorkflowStreamEvent })\n  | (BaseChunkType & { type: 'network-object'; payload: { object: Partial<OUTPUT> } })\n  | (BaseChunkType & { type: 'network-object-result'; payload: { object: OUTPUT } });\n\n// Strongly typed chunk type (currently only OUTPUT is strongly typed, tools use dynamic types)\nexport type AgentChunkType<OUTPUT = undefined> =\n  | (BaseChunkType & { type: 'response-metadata'; payload: ResponseMetadataPayload })\n  | (BaseChunkType & { type: 'text-start'; payload: TextStartPayload })\n  | (BaseChunkType & { type: 'text-delta'; payload: TextDeltaPayload })\n  | (BaseChunkType & { type: 'text-end'; payload: TextEndPayload })\n  | (BaseChunkType & { type: 'reasoning-start'; payload: ReasoningStartPayload })\n  | (BaseChunkType & { type: 'reasoning-delta'; payload: ReasoningDeltaPayload })\n  | (BaseChunkType & { type: 'reasoning-end'; payload: ReasoningEndPayload })\n  | (BaseChunkType & { type: 'reasoning-signature'; payload: ReasoningSignaturePayload })\n  | (BaseChunkType & { type: 'redacted-reasoning'; payload: RedactedReasoningPayload })\n  | (BaseChunkType & { type: 'source'; payload: SourcePayload })\n  | (BaseChunkType & { type: 'file'; payload: FilePayload })\n  | (BaseChunkType & { type: 'tool-call'; payload: ToolCallPayload })\n  | (BaseChunkType & { type: 'tool-call-approval'; payload: ToolCallApprovalPayload })\n  | (BaseChunkType & { type: 'tool-call-suspended'; payload: ToolCallSuspendedPayload })\n  | (BaseChunkType & { type: 'tool-result'; payload: ToolResultPayload })\n  | (BaseChunkType & { type: 'tool-call-input-streaming-start'; payload: ToolCallInputStreamingStartPayload })\n  | (BaseChunkType & { type: 'tool-call-delta'; payload: ToolCallDeltaPayload })\n  | (BaseChunkType & { type: 'tool-call-input-streaming-end'; payload: ToolCallInputStreamingEndPayload })\n  | (BaseChunkType & { type: 'finish'; payload: FinishPayload })\n  | (BaseChunkType & { type: 'error'; payload: ErrorPayload })\n  | (BaseChunkType & { type: 'raw'; payload: RawPayload })\n  | (BaseChunkType & { type: 'start'; payload: StartPayload })\n  | (BaseChunkType & { type: 'step-start'; payload: StepStartPayload })\n  | (BaseChunkType & { type: 'step-finish'; payload: StepFinishPayload<ToolSet, OUTPUT> })\n  | (BaseChunkType & { type: 'tool-error'; payload: ToolErrorPayload })\n  | (BaseChunkType & { type: 'abort'; payload: AbortPayload })\n  | (BaseChunkType & {\n      type: 'object';\n      object: Partial<OUTPUT>;\n    })\n  | (BaseChunkType & {\n      /**\n       * The object promise is resolved with the object from the object-result chunk\n       */\n      type: 'object-result';\n      object: OUTPUT;\n    })\n  | (BaseChunkType & { type: 'tool-output'; payload: DynamicToolOutputPayload })\n  | (BaseChunkType & { type: 'step-output'; payload: StepOutputPayload })\n  | (BaseChunkType & { type: 'watch'; payload: WatchPayload })\n  | (BaseChunkType & { type: 'tripwire'; payload: TripwirePayload })\n  | (BaseChunkType & { type: 'is-task-complete'; payload: IsTaskCompletePayload })\n  | (BaseChunkType & { type: 'goal'; payload: GoalEvaluationPayload })\n  | (BaseChunkType & {\n      type: 'background-task-started';\n      payload: BackgroundTaskStartedPayload;\n    })\n  | (BaseChunkType & {\n      type: 'background-task-completed';\n      payload: BackgroundTaskResultPayload;\n    })\n  | (BaseChunkType & {\n      type: 'background-task-failed';\n      payload: BackgroundTaskFailedPayload;\n    })\n  | (BaseChunkType & {\n      type: 'background-task-progress';\n      payload: BackgroundTaskProgressPayload;\n    })\n  | (BaseChunkType & {\n      type: 'background-task-running';\n      payload: BackgroundTaskRunningPayload;\n    })\n  | (BaseChunkType & {\n      type: 'background-task-cancelled';\n      payload: BackgroundTaskCancelledPayload;\n    })\n  | (BaseChunkType & {\n      type: 'background-task-output';\n      payload: BackgroundTaskOutputPayload;\n    })\n  | (BaseChunkType & {\n      type: 'background-task-suspended';\n      payload: BackgroundTaskSuspendedPayload;\n    })\n  | (BaseChunkType & {\n      type: 'background-task-resumed';\n      payload: BackgroundTaskResumedPayload;\n    });\n\nexport type WorkflowStreamEvent =\n  | (BaseChunkType & {\n      type: 'workflow-start';\n      payload: {\n        workflowId: string;\n      };\n    })\n  | (BaseChunkType & {\n      type: 'workflow-finish';\n      payload: {\n        workflowStatus: WorkflowRunStatus;\n        finalWorkflowResult?: unknown;\n        output: {\n          usage: {\n            inputTokens: number;\n            outputTokens: number;\n            totalTokens: number;\n          };\n        };\n        metadata: Record<string, any>;\n      };\n    })\n  | (BaseChunkType & {\n      type: 'workflow-canceled';\n      payload: {};\n    })\n  | (BaseChunkType & {\n      type: 'workflow-paused';\n      payload: {};\n    })\n  | (BaseChunkType & {\n      type: 'workflow-step-start';\n      id: string;\n      payload: {\n        id: string;\n        stepCallId: string;\n        status: WorkflowStepStatus;\n        output?: Record<string, any>;\n        payload?: Record<string, any>;\n        resumePayload?: Record<string, any>;\n        suspendPayload?: Record<string, any>;\n      };\n    })\n  | (BaseChunkType & {\n      type: 'workflow-step-finish';\n      payload: {\n        id: string;\n        metadata: Record<string, any>;\n      };\n    })\n  | (BaseChunkType & {\n      type: 'workflow-step-suspended';\n      payload: {\n        id: string;\n        status: WorkflowStepStatus;\n        output?: Record<string, any>;\n        payload?: Record<string, any>;\n        resumePayload?: Record<string, any>;\n        suspendPayload?: Record<string, any>;\n      };\n    })\n  | (BaseChunkType & {\n      type: 'workflow-step-waiting';\n      payload: {\n        id: string;\n        payload: Record<string, any>;\n        startedAt: number;\n        status: WorkflowStepStatus;\n      };\n    })\n  | (BaseChunkType & { type: 'workflow-step-output'; payload: StepOutputPayload })\n  | (BaseChunkType & {\n      type: 'workflow-step-progress';\n      payload: {\n        id: string;\n        /** Number of iterations completed so far */\n        completedCount: number;\n        /** Total number of iterations */\n        totalCount: number;\n        /** Index of the iteration that just completed */\n        currentIndex: number;\n        /** Status of the iteration that just completed */\n        iterationStatus: 'success' | 'failed' | 'suspended';\n        /** Output of the iteration that just completed (if successful) */\n        iterationOutput?: Record<string, any>;\n      };\n    })\n  | (BaseChunkType & {\n      type: 'workflow-step-result';\n      payload: {\n        id: string;\n        stepCallId: string;\n        status: WorkflowStepStatus;\n        output?: Record<string, any>;\n        payload?: Record<string, any>;\n        resumePayload?: Record<string, any>;\n        suspendPayload?: Record<string, any>;\n        /** Tripwire data when step failed due to processor rejection */\n        tripwire?: StepTripwireData;\n      };\n    });\n\n// Strongly typed chunk type (currently only OUTPUT is strongly typed, tools use dynamic types)\nexport type TypedChunkType<OUTPUT = undefined> =\n  | AgentChunkType<OUTPUT>\n  | WorkflowStreamEvent\n  | NetworkChunkType<OUTPUT>\n  | (DataChunkType & { from: never; runId: never; metadata?: BaseChunkType['metadata']; payload: never });\n\n// Default ChunkType for backward compatibility using dynamic (any) tool types\nexport type ChunkType<OUTPUT = undefined> = TypedChunkType<OUTPUT>;\nexport type StreamChunkType<OUTPUT = undefined> = ChunkType<OUTPUT> | DataChunkType;\n\nexport interface LanguageModelV2StreamResult {\n  stream: ReadableStream<LanguageModelV2StreamPart>;\n  request: LLMStepResult['request'];\n  response?: LLMStepResult['response'];\n  rawResponse: LLMStepResult['response'] | Record<string, never>;\n  warnings?: LLMStepResult['warnings'];\n}\n\nexport type OnResult = (result: Omit<LanguageModelV2StreamResult, 'stream'>) => void | ChunkType | ChunkType[];\nexport type CreateStream = () => Promise<LanguageModelV2StreamResult>;\n\nexport type SourceChunk = BaseChunkType & { type: 'source'; payload: SourcePayload };\nexport type FileChunk = BaseChunkType & { type: 'file'; payload: FilePayload };\nexport type ToolCallChunk = BaseChunkType & { type: 'tool-call'; payload: ToolCallPayload };\nexport type ToolResultChunk = BaseChunkType & { type: 'tool-result'; payload: ToolResultPayload };\nexport type ReasoningChunk = BaseChunkType & { type: 'reasoning'; payload: ReasoningDeltaPayload };\n\nexport type PendingToolCall = {\n  toolCallId: string;\n  toolName: string;\n  argsText: string;\n  state: 'input-streaming' | 'input-available';\n  providerExecuted?: boolean;\n  providerMetadata?: ProviderMetadata;\n  dynamic?: boolean;\n};\n\nexport type ExecuteStreamModelManager<T> = (\n  callback: (modelConfig: ModelManagerModelConfig, isLastModel: boolean) => Promise<T>,\n) => Promise<T>;\n\nexport type ModelManagerModelConfig = {\n  model: MastraLanguageModel;\n  maxRetries: number;\n  id: string;\n  headers?: Record<string, string>;\n  modelSettings?: Omit<CallSettings, 'abortSignal' | 'maxRetries' | 'headers'>;\n  providerOptions?: SharedProviderOptions;\n};\n\n/**\n * Extended usage type that includes raw provider data.\n * Extends LanguageModelV2Usage with additional fields for V3 compatibility.\n */\nexport type LanguageModelUsage = LanguageModelV2Usage & {\n  reasoningTokens?: number;\n  cachedInputTokens?: number;\n  cacheCreationInputTokens?: number;\n  /**\n   * Raw usage data from the provider, preserved for advanced use cases.\n   * For V3 models, contains the full nested structure:\n   * { inputTokens: { total, noCache, cacheRead, cacheWrite }, outputTokens: { total, text, reasoning } }\n   */\n  raw?: unknown;\n};\n\nexport type partialModel = {\n  modelId?: string;\n  provider?: string;\n  version?: string;\n};\n\nexport type MastraOnStepFinishCallback<OUTPUT = undefined> = (\n  event: LLMStepResult<OUTPUT> & { model?: partialModel; runId?: string },\n) => Promise<void> | void;\n\nexport type MastraOnFinishCallbackArgs<OUTPUT = undefined> = LLMStepResult<OUTPUT> & {\n  error?: Error | string | { message: string; stack: string };\n  object?: OUTPUT;\n  steps: LLMStepResult<OUTPUT>[];\n  totalUsage: LanguageModelUsage;\n  model?: partialModel;\n  runId?: string;\n};\n\nexport type MastraOnFinishCallback<OUTPUT = undefined> = (\n  event: MastraOnFinishCallbackArgs<OUTPUT>,\n) => Promise<void> | void;\n\n/**\n * Creates a fresh transform for a Mastra model output stream.\n *\n * @experimental This API may change in a future release.\n */\nexport type MastraStreamTransform<OUTPUT = undefined> = () => TransformStream<ChunkType<OUTPUT>, ChunkType<OUTPUT>>;\n\n/** @experimental This API may change in a future release. */\nexport type MastraStreamTransformOptions<OUTPUT = undefined> =\n  | MastraStreamTransform<OUTPUT>\n  | readonly MastraStreamTransform<OUTPUT>[];\n\nexport type MastraModelOutputOptions<OUTPUT = undefined> = {\n  runId: string;\n  toolCallStreaming?: boolean;\n  onFinish?: MastraOnFinishCallback<OUTPUT>;\n  onStepFinish?: MastraOnStepFinishCallback<OUTPUT>;\n  includeRawChunks?: boolean;\n  structuredOutput?: StructuredOutputOptions<OUTPUT>;\n  outputProcessors?: OutputProcessorOrWorkflow[];\n  isLLMExecutionStep?: boolean;\n  /**\n   * When true, force text/finishReason promise resolution at step-finish even\n   * when `isLLMExecutionStep` is set.  Durable agents have a single\n   * MastraModelOutput for the entire run that needs both per-chunk output\n   * processor processing (isLLMExecutionStep) AND final promise resolution.\n   */\n  resolveFinalPromises?: boolean;\n  returnScorerData?: boolean;\n  processorStates?: Map<string, any>;\n  requestContext?: RequestContext;\n  transportRef?: StreamTransportRef;\n  /** Experimental transforms applied whenever `fullStream` is consumed. */\n  experimentalTransform?: MastraStreamTransformOptions<OUTPUT>;\n} & Partial<ObservabilityContext>;\n\n/**\n * Tripwire data attached to a step when a processor triggers a tripwire.\n * When a step has tripwire data, its text is excluded from the final output.\n */\nexport interface StepTripwireData {\n  /** The tripwire reason */\n  reason: string;\n  /** Whether retry was requested */\n  retry?: boolean;\n  /** Additional metadata from the tripwire */\n  metadata?: unknown;\n  /** ID of the processor that triggered the tripwire */\n  processorId?: string;\n}\n\n/**\n * Extended StepResult that includes tripwire data.\n * This extends the AI SDK's StepResult with our custom tripwire field.\n */\nexport type MastraStepResult<Tools extends ToolSet = ToolSet> = StepResult<Tools> & {\n  /** Tripwire data if this step was rejected by a processor */\n  tripwire?: StepTripwireData;\n};\n\nexport type LLMStepResult<OUTPUT = undefined> = {\n  stepType?: 'initial' | 'tool-result';\n  toolCalls: ToolCallChunk[];\n  pendingToolCalls?: PendingToolCall[];\n  toolResults: ToolResultChunk[];\n  dynamicToolCalls: ToolCallChunk[];\n  dynamicToolResults: ToolResultChunk[];\n  staticToolCalls: ToolCallChunk[];\n  staticToolResults: ToolResultChunk[];\n  files: FileChunk[];\n  sources: SourceChunk[];\n  text: string;\n  reasoning: ReasoningChunk[];\n  content: AIV5Type.StepResult<ToolSet>['content'];\n  finishReason?: FinishReason | string;\n  usage: LanguageModelUsage;\n  warnings: LanguageModelV2CallWarning[];\n  request: { body?: unknown };\n  response: {\n    headers?: Record<string, string>;\n    messages?: StepResult<ToolSet>['response']['messages'];\n    dbMessages?: MastraDBMessage[];\n    uiMessages?: UIMessage<\n      [OUTPUT] extends [undefined]\n        ? undefined\n        : {\n            structuredOutput?: OUTPUT;\n          } & Record<string, unknown>\n    >[];\n    id?: string;\n    timestamp?: Date;\n    modelId?: string;\n    [key: string]: unknown;\n  };\n  reasoningText: string | undefined;\n  providerMetadata: ProviderMetadata | undefined;\n  /** Tripwire data if this step was rejected by a processor */\n  tripwire?: StepTripwireData;\n};\n","import type { LanguageModelV3, LanguageModelV3CallOptions } from '@ai-sdk/provider-v6';\nimport type { MastraLanguageModelV3 } from '../../shared.types';\nimport { createStreamFromGenerateResult } from '../generate-to-stream';\n\ntype StreamResult = Awaited<ReturnType<LanguageModelV3['doStream']>>;\n\n/**\n * Remaps tool types from V2 format ('provider-defined') to V3 format ('provider').\n * Tools may arrive in V2 format when prepared upstream (e.g., by ToolBuilder or\n * prepareToolsAndToolChoice) without knowing the final model version. This ensures\n * provider tools (like openai.tools.webSearch()) work correctly with V3 models.\n */\nfunction remapToolsToV3(options: LanguageModelV3CallOptions): LanguageModelV3CallOptions {\n  if (!options.tools?.length) {\n    return options;\n  }\n\n  const remappedTools = options.tools.map((tool: Record<string, unknown>) => {\n    if (tool.type === 'provider-defined') {\n      return { ...tool, type: 'provider' as const };\n    }\n    return tool;\n  });\n\n  return {\n    ...options,\n    tools: remappedTools as typeof options.tools,\n  };\n}\n\n/**\n * Wrapper class for AI SDK V6 (LanguageModelV3) that converts doGenerate to return\n * a stream format for consistency with Mastra's streaming architecture.\n */\nexport class AISDKV6LanguageModel implements MastraLanguageModelV3 {\n  /**\n   * The language model must specify which language model interface version it implements.\n   */\n  readonly specificationVersion: 'v3' = 'v3';\n  /**\n   * Name of the provider for logging purposes.\n   */\n  readonly provider: string;\n  /**\n   * Provider-specific model ID for logging purposes.\n   */\n  readonly modelId: string;\n  /**\n   * Supported URL patterns by media type for the provider.\n   *\n   * The keys are media type patterns or full media types (e.g. `*\\/*` for everything, `audio/*`, `video/*`, or `application/pdf`).\n   * and the values are arrays of regular expressions that match the URL paths.\n   * The matching should be against lower-case URLs.\n   * Matched URLs are supported natively by the model and are not downloaded.\n   * @returns A map of supported URL patterns by media type (as a promise or a plain object).\n   */\n  supportedUrls: PromiseLike<Record<string, RegExp[]>> | Record<string, RegExp[]>;\n\n  #model: LanguageModelV3;\n\n  constructor(config: LanguageModelV3) {\n    this.#model = config;\n    this.provider = this.#model.provider;\n    this.modelId = this.#model.modelId;\n    this.supportedUrls = this.#model.supportedUrls;\n  }\n\n  async doGenerate(options: LanguageModelV3CallOptions) {\n    const result = await this.#model.doGenerate(remapToolsToV3(options));\n\n    return {\n      ...result,\n      request: result.request!,\n      response: result.response as unknown as StreamResult['response'],\n      stream: createStreamFromGenerateResult(result),\n    };\n  }\n\n  async doStream(options: LanguageModelV3CallOptions) {\n    return await this.#model.doStream(remapToolsToV3(options));\n  }\n\n  /**\n   * Custom serialization for tracing/observability spans.\n   * `#model` is already a true JS private field and not enumerable, so\n   * the wrapped provider SDK client can't leak. This method makes the\n   * safe shape explicit and avoids walking `supportedUrls` (a\n   * PromiseLike / regex map that isn't useful in spans).\n   */\n  serializeForSpan(): { specificationVersion: 'v3'; modelId: string; provider: string } {\n    return {\n      specificationVersion: this.specificationVersion,\n      modelId: this.modelId,\n      provider: this.provider,\n    };\n  }\n}\n","import type {\n  LanguageModelV4,\n  LanguageModelV4CallOptions,\n  LanguageModelV4File,\n  LanguageModelV4FilePart,\n  LanguageModelV4StreamPart,\n} from '@ai-sdk/provider-v7';\nimport { convertToDataContent } from '../../../../stream/aisdk/v5/compat/content';\nimport type { MastraLanguageModelV4 } from '../../shared.types';\nimport { createStreamFromGenerateResult } from '../generate-to-stream';\n\ntype StreamResult = Awaited<ReturnType<LanguageModelV4['doStream']>>;\ntype GenerateResult = Awaited<ReturnType<LanguageModelV4['doGenerate']>>;\ntype LegacyFileData = string | URL | Uint8Array | ArrayBuffer;\ntype FileData = LegacyFileData | LanguageModelV4FilePart['data'];\n\n/**\n * Remaps tool types from V2 format ('provider-defined') to V4 format ('provider').\n * Tools may arrive in V2 format when prepared upstream (e.g., by ToolBuilder or\n * prepareToolsAndToolChoice) without knowing the final model version. This ensures\n * provider tools (like openai.tools.webSearch()) work correctly with V4 models.\n *\n * V4 shares the V3 convention ('provider'), so the same remap applies.\n */\nfunction remapToolsToV4(options: LanguageModelV4CallOptions): LanguageModelV4CallOptions {\n  if (!options.tools?.length) {\n    return options;\n  }\n\n  const remappedTools = options.tools.map((tool: Record<string, unknown>) => {\n    if (tool.type === 'provider-defined') {\n      return { ...tool, type: 'provider' as const };\n    }\n    return tool;\n  });\n\n  return {\n    ...options,\n    tools: remappedTools as typeof options.tools,\n  };\n}\n\nfunction isTaggedV4FileData(data: unknown): data is LanguageModelV4FilePart['data'] {\n  if (typeof data !== 'object' || data === null || !('type' in data)) {\n    return false;\n  }\n\n  const type = data.type;\n  return type === 'data' || type === 'url' || type === 'reference' || type === 'text';\n}\n\n/**\n * The Agent loop calls V4 providers directly, bypassing AI SDK v7's prompt\n * conversion. Agent prompts may therefore still contain V2/V3 flat file data.\n * Convert that legacy shape while preserving already-normalized V4 data.\n */\nfunction normalizeFileDataForV4(data: FileData): {\n  data: LanguageModelV4FilePart['data'];\n  mediaType?: string;\n} {\n  if (isTaggedV4FileData(data)) {\n    return { data };\n  }\n\n  const { data: convertedData, mediaType } = convertToDataContent(data);\n\n  return {\n    data: convertedData instanceof URL ? { type: 'url', url: convertedData } : { type: 'data', data: convertedData },\n    mediaType,\n  };\n}\n\nfunction remapFilePartsToV4(options: LanguageModelV4CallOptions): LanguageModelV4CallOptions {\n  let promptModified = false;\n  const prompt = options.prompt.map(message => {\n    if (message.role !== 'user' && message.role !== 'assistant') {\n      return message;\n    }\n\n    let contentModified = false;\n    const content = message.content.map(part => {\n      if (part.type !== 'file') {\n        return part;\n      }\n\n      const { data, mediaType } = normalizeFileDataForV4(part.data);\n      if (data === part.data && mediaType == null) {\n        return part;\n      }\n\n      contentModified = true;\n      return {\n        ...part,\n        data,\n        mediaType: mediaType ?? part.mediaType,\n      };\n    });\n\n    if (!contentModified) {\n      return message;\n    }\n\n    promptModified = true;\n    return { ...message, content };\n  });\n\n  // The map only replaces file parts with file parts, but TS widens the\n  // mapped message union across roles, so restore the prompt type.\n  return promptModified ? { ...options, prompt: prompt as typeof options.prompt } : options;\n}\n\nfunction remapCallOptionsToV4(options: LanguageModelV4CallOptions): LanguageModelV4CallOptions {\n  return remapToolsToV4(remapFilePartsToV4(options));\n}\n\n/**\n * V4 responses tag generated file data ({type: 'data' | 'url'}), but Mastra's\n * shared response pipeline (chunk transforms, file buffering, message\n * persistence) expects the flat V2/V3 shape (base64 string | Uint8Array).\n * Untag before handing results to the shared pipeline so file chunks and\n * persisted message history keep the flat contract. This applies to both\n * 'file' and 'reasoning-file' parts, which carry the same tagged data shape.\n *\n * Response file data is typed as the 'data' | 'url' variants only, so this\n * guard is exhaustive for well-formed responses. Other tagged variants\n * ('reference' | 'text') have no flat equivalent and pass through untouched.\n */\nfunction isUntaggableV4ResponseFileData(data: unknown): data is LanguageModelV4File['data'] {\n  if (typeof data !== 'object' || data === null || !('type' in data)) {\n    return false;\n  }\n\n  return data.type === 'data' || data.type === 'url';\n}\n\nfunction untagV4ResponseFileData(data: LanguageModelV4File['data']): string | Uint8Array {\n  return data.type === 'url' ? data.url.toString() : data.data;\n}\n\nfunction isFilePartType(type: string): boolean {\n  return type === 'file' || type === 'reasoning-file';\n}\n\nfunction untagResponseFileContent(content: GenerateResult['content']): GenerateResult['content'] {\n  let contentModified = false;\n  const untagged = content.map(part => {\n    if (!isFilePartType(part.type) || !('data' in part) || !isUntaggableV4ResponseFileData(part.data)) {\n      return part;\n    }\n\n    contentModified = true;\n    // Downstream consumers require the flat data shape, which no longer\n    // matches the V4 content type — hence the cast.\n    return { ...part, data: untagV4ResponseFileData(part.data) } as unknown as (typeof content)[number];\n  });\n\n  return contentModified ? untagged : content;\n}\n\nfunction untagFileStreamParts(stream: StreamResult['stream']): StreamResult['stream'] {\n  return stream.pipeThrough(\n    new TransformStream<LanguageModelV4StreamPart, LanguageModelV4StreamPart>({\n      transform(part, controller) {\n        if (isFilePartType(part.type) && 'data' in part && isUntaggableV4ResponseFileData(part.data)) {\n          // Same flat-shape cast as untagResponseFileContent.\n          controller.enqueue({\n            ...part,\n            data: untagV4ResponseFileData(part.data),\n          } as unknown as LanguageModelV4StreamPart);\n        } else {\n          controller.enqueue(part);\n        }\n      },\n    }),\n  );\n}\n\n/**\n * Wrapper class for AI SDK V7 (LanguageModelV4) that converts doGenerate to return\n * a stream format for consistency with Mastra's streaming architecture.\n */\nexport class AISDKV7LanguageModel implements MastraLanguageModelV4 {\n  /**\n   * The language model must specify which language model interface version it implements.\n   */\n  readonly specificationVersion: 'v4' = 'v4';\n  /**\n   * Name of the provider for logging purposes.\n   */\n  readonly provider: string;\n  /**\n   * Provider-specific model ID for logging purposes.\n   */\n  readonly modelId: string;\n  /**\n   * Supported URL patterns by media type for the provider.\n   *\n   * The keys are media type patterns or full media types (e.g. `*\\/*` for everything, `audio/*`, `video/*`, or `application/pdf`).\n   * and the values are arrays of regular expressions that match the URL paths.\n   * The matching should be against lower-case URLs.\n   * Matched URLs are supported natively by the model and are not downloaded.\n   * @returns A map of supported URL patterns by media type (as a promise or a plain object).\n   */\n  supportedUrls: PromiseLike<Record<string, RegExp[]>> | Record<string, RegExp[]>;\n\n  #model: LanguageModelV4;\n\n  constructor(config: LanguageModelV4) {\n    this.#model = config;\n    this.provider = this.#model.provider;\n    this.modelId = this.#model.modelId;\n    this.supportedUrls = this.#model.supportedUrls;\n  }\n\n  async doGenerate(options: LanguageModelV4CallOptions) {\n    const result = await this.#model.doGenerate(remapCallOptionsToV4(options));\n    const content = untagResponseFileContent(result.content);\n    const untaggedResult = content === result.content ? result : { ...result, content };\n\n    return {\n      ...untaggedResult,\n      request: result.request!,\n      response: result.response as unknown as StreamResult['response'],\n      stream: createStreamFromGenerateResult(untaggedResult),\n    };\n  }\n\n  async doStream(options: LanguageModelV4CallOptions) {\n    const result = await this.#model.doStream(remapCallOptionsToV4(options));\n\n    return {\n      ...result,\n      stream: untagFileStreamParts(result.stream),\n    };\n  }\n\n  /**\n   * Custom serialization for tracing/observability spans.\n   * `#model` is already a true JS private field and not enumerable, so\n   * the wrapped provider SDK client can't leak. This method makes the\n   * safe shape explicit and avoids walking `supportedUrls` (a\n   * PromiseLike / regex map that isn't useful in spans).\n   */\n  serializeForSpan(): { specificationVersion: 'v4'; modelId: string; provider: string } {\n    return {\n      specificationVersion: this.specificationVersion,\n      modelId: this.modelId,\n      provider: this.provider,\n    };\n  }\n}\n","import { PROVIDER_REGISTRY } from '../provider-registry.js';\nimport { MastraGateway } from './mastra.js';\nimport { ModelsDevGateway } from './models-dev.js';\nimport { NetlifyGateway } from './netlify.js';\n\nfunction getStaticProvidersByGateway(name: string) {\n  return Object.fromEntries(Object.entries(PROVIDER_REGISTRY).filter(([_provider, config]) => config.gateway === name));\n}\n\nexport const defaultGateways = [\n  new NetlifyGateway(),\n  new MastraGateway(),\n  new ModelsDevGateway(getStaticProvidersByGateway(`models.dev`)),\n];\n\n/**\n * @deprecated Use {@link defaultGateways} instead. This export will be removed in a future version.\n */\nexport const gateways = defaultGateways;\n","// src/errors/ai-sdk-error.ts\nvar marker = \"vercel.ai.error\";\nvar symbol = Symbol.for(marker);\nvar _a, _b;\nvar AISDKError = class _AISDKError extends (_b = Error, _a = symbol, _b) {\n  /**\n   * Creates an AI SDK Error.\n   *\n   * @param {Object} params - The parameters for creating the error.\n   * @param {string} params.name - The name of the error.\n   * @param {string} params.message - The error message.\n   * @param {unknown} [params.cause] - The underlying cause of the error.\n   */\n  constructor({\n    name: name14,\n    message,\n    cause\n  }) {\n    super(message);\n    this[_a] = true;\n    this.name = name14;\n    this.cause = cause;\n  }\n  /**\n   * Checks if the given error is an AI SDK Error.\n   * @param {unknown} error - The error to check.\n   * @returns {boolean} True if the error is an AI SDK Error, false otherwise.\n   */\n  static isInstance(error) {\n    return _AISDKError.hasMarker(error, marker);\n  }\n  static hasMarker(error, marker15) {\n    const markerSymbol = Symbol.for(marker15);\n    return error != null && typeof error === \"object\" && markerSymbol in error && typeof error[markerSymbol] === \"boolean\" && error[markerSymbol] === true;\n  }\n};\n\n// src/errors/api-call-error.ts\nvar name = \"AI_APICallError\";\nvar marker2 = `vercel.ai.error.${name}`;\nvar symbol2 = Symbol.for(marker2);\nvar _a2, _b2;\nvar APICallError = class extends (_b2 = AISDKError, _a2 = symbol2, _b2) {\n  constructor({\n    message,\n    url,\n    requestBodyValues,\n    statusCode,\n    responseHeaders,\n    responseBody,\n    cause,\n    isRetryable = statusCode != null && (statusCode === 408 || // request timeout\n    statusCode === 409 || // conflict\n    statusCode === 429 || // too many requests\n    statusCode >= 500),\n    // server error\n    data\n  }) {\n    super({ name, message, cause });\n    this[_a2] = true;\n    this.url = url;\n    this.requestBodyValues = requestBodyValues;\n    this.statusCode = statusCode;\n    this.responseHeaders = responseHeaders;\n    this.responseBody = responseBody;\n    this.isRetryable = isRetryable;\n    this.data = data;\n  }\n  static isInstance(error) {\n    return AISDKError.hasMarker(error, marker2);\n  }\n};\n\n// src/errors/empty-response-body-error.ts\nvar name2 = \"AI_EmptyResponseBodyError\";\nvar marker3 = `vercel.ai.error.${name2}`;\nvar symbol3 = Symbol.for(marker3);\nvar _a3, _b3;\nvar EmptyResponseBodyError = class extends (_b3 = AISDKError, _a3 = symbol3, _b3) {\n  // used in isInstance\n  constructor({ message = \"Empty response body\" } = {}) {\n    super({ name: name2, message });\n    this[_a3] = true;\n  }\n  static isInstance(error) {\n    return AISDKError.hasMarker(error, marker3);\n  }\n};\n\n// src/errors/get-error-message.ts\nfunction getErrorMessage(error) {\n  if (error == null) {\n    return \"unknown error\";\n  }\n  if (typeof error === \"string\") {\n    return error;\n  }\n  if (error instanceof Error) {\n    return error.message;\n  }\n  return JSON.stringify(error);\n}\n\n// src/errors/invalid-argument-error.ts\nvar name3 = \"AI_InvalidArgumentError\";\nvar marker4 = `vercel.ai.error.${name3}`;\nvar symbol4 = Symbol.for(marker4);\nvar _a4, _b4;\nvar InvalidArgumentError = class extends (_b4 = AISDKError, _a4 = symbol4, _b4) {\n  constructor({\n    message,\n    cause,\n    argument\n  }) {\n    super({ name: name3, message, cause });\n    this[_a4] = true;\n    this.argument = argument;\n  }\n  static isInstance(error) {\n    return AISDKError.hasMarker(error, marker4);\n  }\n};\n\n// src/errors/invalid-prompt-error.ts\nvar name4 = \"AI_InvalidPromptError\";\nvar marker5 = `vercel.ai.error.${name4}`;\nvar symbol5 = Symbol.for(marker5);\nvar _a5, _b5;\nvar InvalidPromptError = class extends (_b5 = AISDKError, _a5 = symbol5, _b5) {\n  constructor({\n    prompt,\n    message,\n    cause\n  }) {\n    super({ name: name4, message: `Invalid prompt: ${message}`, cause });\n    this[_a5] = true;\n    this.prompt = prompt;\n  }\n  static isInstance(error) {\n    return AISDKError.hasMarker(error, marker5);\n  }\n};\n\n// src/errors/invalid-response-data-error.ts\nvar name5 = \"AI_InvalidResponseDataError\";\nvar marker6 = `vercel.ai.error.${name5}`;\nvar symbol6 = Symbol.for(marker6);\nvar _a6, _b6;\nvar InvalidResponseDataError = class extends (_b6 = AISDKError, _a6 = symbol6, _b6) {\n  constructor({\n    data,\n    message = `Invalid response data: ${JSON.stringify(data)}.`\n  }) {\n    super({ name: name5, message });\n    this[_a6] = true;\n    this.data = data;\n  }\n  static isInstance(error) {\n    return AISDKError.hasMarker(error, marker6);\n  }\n};\n\n// src/errors/json-parse-error.ts\nvar name6 = \"AI_JSONParseError\";\nvar marker7 = `vercel.ai.error.${name6}`;\nvar symbol7 = Symbol.for(marker7);\nvar _a7, _b7;\nvar JSONParseError = class extends (_b7 = AISDKError, _a7 = symbol7, _b7) {\n  constructor({ text, cause }) {\n    super({\n      name: name6,\n      message: `JSON parsing failed: Text: ${text}.\nError message: ${getErrorMessage(cause)}`,\n      cause\n    });\n    this[_a7] = true;\n    this.text = text;\n  }\n  static isInstance(error) {\n    return AISDKError.hasMarker(error, marker7);\n  }\n};\n\n// src/errors/load-api-key-error.ts\nvar name7 = \"AI_LoadAPIKeyError\";\nvar marker8 = `vercel.ai.error.${name7}`;\nvar symbol8 = Symbol.for(marker8);\nvar _a8, _b8;\nvar LoadAPIKeyError = class extends (_b8 = AISDKError, _a8 = symbol8, _b8) {\n  // used in isInstance\n  constructor({ message }) {\n    super({ name: name7, message });\n    this[_a8] = true;\n  }\n  static isInstance(error) {\n    return AISDKError.hasMarker(error, marker8);\n  }\n};\n\n// src/errors/load-setting-error.ts\nvar name8 = \"AI_LoadSettingError\";\nvar marker9 = `vercel.ai.error.${name8}`;\nvar symbol9 = Symbol.for(marker9);\nvar _a9, _b9;\nvar LoadSettingError = class extends (_b9 = AISDKError, _a9 = symbol9, _b9) {\n  // used in isInstance\n  constructor({ message }) {\n    super({ name: name8, message });\n    this[_a9] = true;\n  }\n  static isInstance(error) {\n    return AISDKError.hasMarker(error, marker9);\n  }\n};\n\n// src/errors/no-content-generated-error.ts\nvar name9 = \"AI_NoContentGeneratedError\";\nvar marker10 = `vercel.ai.error.${name9}`;\nvar symbol10 = Symbol.for(marker10);\nvar _a10, _b10;\nvar NoContentGeneratedError = class extends (_b10 = AISDKError, _a10 = symbol10, _b10) {\n  // used in isInstance\n  constructor({\n    message = \"No content generated.\"\n  } = {}) {\n    super({ name: name9, message });\n    this[_a10] = true;\n  }\n  static isInstance(error) {\n    return AISDKError.hasMarker(error, marker10);\n  }\n};\n\n// src/errors/no-such-model-error.ts\nvar name10 = \"AI_NoSuchModelError\";\nvar marker11 = `vercel.ai.error.${name10}`;\nvar symbol11 = Symbol.for(marker11);\nvar _a11, _b11;\nvar NoSuchModelError = class extends (_b11 = AISDKError, _a11 = symbol11, _b11) {\n  constructor({\n    errorName = name10,\n    modelId,\n    modelType,\n    message = `No such ${modelType}: ${modelId}`\n  }) {\n    super({ name: errorName, message });\n    this[_a11] = true;\n    this.modelId = modelId;\n    this.modelType = modelType;\n  }\n  static isInstance(error) {\n    return AISDKError.hasMarker(error, marker11);\n  }\n};\n\n// src/errors/too-many-embedding-values-for-call-error.ts\nvar name11 = \"AI_TooManyEmbeddingValuesForCallError\";\nvar marker12 = `vercel.ai.error.${name11}`;\nvar symbol12 = Symbol.for(marker12);\nvar _a12, _b12;\nvar TooManyEmbeddingValuesForCallError = class extends (_b12 = AISDKError, _a12 = symbol12, _b12) {\n  constructor(options) {\n    super({\n      name: name11,\n      message: `Too many values for a single embedding call. The ${options.provider} model \"${options.modelId}\" can only embed up to ${options.maxEmbeddingsPerCall} values per call, but ${options.values.length} values were provided.`\n    });\n    this[_a12] = true;\n    this.provider = options.provider;\n    this.modelId = options.modelId;\n    this.maxEmbeddingsPerCall = options.maxEmbeddingsPerCall;\n    this.values = options.values;\n  }\n  static isInstance(error) {\n    return AISDKError.hasMarker(error, marker12);\n  }\n};\n\n// src/errors/type-validation-error.ts\nvar name12 = \"AI_TypeValidationError\";\nvar marker13 = `vercel.ai.error.${name12}`;\nvar symbol13 = Symbol.for(marker13);\nvar _a13, _b13;\nvar TypeValidationError = class _TypeValidationError extends (_b13 = AISDKError, _a13 = symbol13, _b13) {\n  constructor({ value, cause }) {\n    super({\n      name: name12,\n      message: `Type validation failed: Value: ${JSON.stringify(value)}.\nError message: ${getErrorMessage(cause)}`,\n      cause\n    });\n    this[_a13] = true;\n    this.value = value;\n  }\n  static isInstance(error) {\n    return AISDKError.hasMarker(error, marker13);\n  }\n  /**\n   * Wraps an error into a TypeValidationError.\n   * If the cause is already a TypeValidationError with the same value, it returns the cause.\n   * Otherwise, it creates a new TypeValidationError.\n   *\n   * @param {Object} params - The parameters for wrapping the error.\n   * @param {unknown} params.value - The value that failed validation.\n   * @param {unknown} params.cause - The original error or cause of the validation failure.\n   * @returns {TypeValidationError} A TypeValidationError instance.\n   */\n  static wrap({\n    value,\n    cause\n  }) {\n    return _TypeValidationError.isInstance(cause) && cause.value === value ? cause : new _TypeValidationError({ value, cause });\n  }\n};\n\n// src/errors/unsupported-functionality-error.ts\nvar name13 = \"AI_UnsupportedFunctionalityError\";\nvar marker14 = `vercel.ai.error.${name13}`;\nvar symbol14 = Symbol.for(marker14);\nvar _a14, _b14;\nvar UnsupportedFunctionalityError = class extends (_b14 = AISDKError, _a14 = symbol14, _b14) {\n  constructor({\n    functionality,\n    message = `'${functionality}' functionality not supported.`\n  }) {\n    super({ name: name13, message });\n    this[_a14] = true;\n    this.functionality = functionality;\n  }\n  static isInstance(error) {\n    return AISDKError.hasMarker(error, marker14);\n  }\n};\n\n// src/json-value/is-json.ts\nfunction isJSONValue(value) {\n  if (value === null || typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n    return true;\n  }\n  if (Array.isArray(value)) {\n    return value.every(isJSONValue);\n  }\n  if (typeof value === \"object\") {\n    return Object.entries(value).every(\n      ([key, val]) => typeof key === \"string\" && isJSONValue(val)\n    );\n  }\n  return false;\n}\nfunction isJSONArray(value) {\n  return Array.isArray(value) && value.every(isJSONValue);\n}\nfunction isJSONObject(value) {\n  return value != null && typeof value === \"object\" && Object.entries(value).every(\n    ([key, val]) => typeof key === \"string\" && isJSONValue(val)\n  );\n}\nexport {\n  AISDKError,\n  APICallError,\n  EmptyResponseBodyError,\n  InvalidArgumentError,\n  InvalidPromptError,\n  InvalidResponseDataError,\n  JSONParseError,\n  LoadAPIKeyError,\n  LoadSettingError,\n  NoContentGeneratedError,\n  NoSuchModelError,\n  TooManyEmbeddingValuesForCallError,\n  TypeValidationError,\n  UnsupportedFunctionalityError,\n  getErrorMessage,\n  isJSONArray,\n  isJSONObject,\n  isJSONValue\n};\n//# sourceMappingURL=index.mjs.map","// src/combine-headers.ts\nfunction combineHeaders(...headers) {\n  return headers.reduce(\n    (combinedHeaders, currentHeaders) => ({\n      ...combinedHeaders,\n      ...currentHeaders != null ? currentHeaders : {}\n    }),\n    {}\n  );\n}\n\n// src/convert-async-iterator-to-readable-stream.ts\nfunction convertAsyncIteratorToReadableStream(iterator) {\n  let cancelled = false;\n  return new ReadableStream({\n    /**\n     * Called when the consumer wants to pull more data from the stream.\n     *\n     * @param {ReadableStreamDefaultController<T>} controller - The controller to enqueue data into the stream.\n     * @returns {Promise<void>}\n     */\n    async pull(controller) {\n      if (cancelled) return;\n      try {\n        const { value, done } = await iterator.next();\n        if (done) {\n          controller.close();\n        } else {\n          controller.enqueue(value);\n        }\n      } catch (error) {\n        controller.error(error);\n      }\n    },\n    /**\n     * Called when the consumer cancels the stream.\n     */\n    async cancel(reason) {\n      cancelled = true;\n      if (iterator.return) {\n        try {\n          await iterator.return(reason);\n        } catch (e) {\n        }\n      }\n    }\n  });\n}\n\n// src/delay.ts\nasync function delay(delayInMs, options) {\n  if (delayInMs == null) {\n    return Promise.resolve();\n  }\n  const signal = options == null ? void 0 : options.abortSignal;\n  return new Promise((resolve2, reject) => {\n    if (signal == null ? void 0 : signal.aborted) {\n      reject(createAbortError());\n      return;\n    }\n    const timeoutId = setTimeout(() => {\n      cleanup();\n      resolve2();\n    }, delayInMs);\n    const cleanup = () => {\n      clearTimeout(timeoutId);\n      signal == null ? void 0 : signal.removeEventListener(\"abort\", onAbort);\n    };\n    const onAbort = () => {\n      cleanup();\n      reject(createAbortError());\n    };\n    signal == null ? void 0 : signal.addEventListener(\"abort\", onAbort);\n  });\n}\nfunction createAbortError() {\n  return new DOMException(\"Delay was aborted\", \"AbortError\");\n}\n\n// src/delayed-promise.ts\nvar DelayedPromise = class {\n  constructor() {\n    this.status = { type: \"pending\" };\n    this._resolve = void 0;\n    this._reject = void 0;\n  }\n  get promise() {\n    if (this._promise) {\n      return this._promise;\n    }\n    this._promise = new Promise((resolve2, reject) => {\n      if (this.status.type === \"resolved\") {\n        resolve2(this.status.value);\n      } else if (this.status.type === \"rejected\") {\n        reject(this.status.error);\n      }\n      this._resolve = resolve2;\n      this._reject = reject;\n    });\n    return this._promise;\n  }\n  resolve(value) {\n    var _a2;\n    this.status = { type: \"resolved\", value };\n    if (this._promise) {\n      (_a2 = this._resolve) == null ? void 0 : _a2.call(this, value);\n    }\n  }\n  reject(error) {\n    var _a2;\n    this.status = { type: \"rejected\", error };\n    if (this._promise) {\n      (_a2 = this._reject) == null ? void 0 : _a2.call(this, error);\n    }\n  }\n  isResolved() {\n    return this.status.type === \"resolved\";\n  }\n  isRejected() {\n    return this.status.type === \"rejected\";\n  }\n  isPending() {\n    return this.status.type === \"pending\";\n  }\n};\n\n// src/extract-response-headers.ts\nfunction extractResponseHeaders(response) {\n  return Object.fromEntries([...response.headers]);\n}\n\n// src/download-error.ts\nimport { AISDKError } from \"@ai-sdk/provider\";\nvar name = \"AI_DownloadError\";\nvar marker = `vercel.ai.error.${name}`;\nvar symbol = Symbol.for(marker);\nvar _a, _b;\nvar DownloadError = class extends (_b = AISDKError, _a = symbol, _b) {\n  constructor({\n    url,\n    statusCode,\n    statusText,\n    cause,\n    message = cause == null ? `Failed to download ${url}: ${statusCode} ${statusText}` : `Failed to download ${url}: ${cause}`\n  }) {\n    super({ name, message, cause });\n    this[_a] = true;\n    this.url = url;\n    this.statusCode = statusCode;\n    this.statusText = statusText;\n  }\n  static isInstance(error) {\n    return AISDKError.hasMarker(error, marker);\n  }\n};\n\n// src/cancel-response-body.ts\nasync function cancelResponseBody(response) {\n  var _a2;\n  try {\n    await ((_a2 = response.body) == null ? void 0 : _a2.cancel());\n  } catch (e) {\n  }\n}\n\n// src/is-browser-runtime.ts\nfunction isBrowserRuntime(globalThisAny = globalThis) {\n  return globalThisAny.window != null;\n}\n\n// src/validate-download-url.ts\nfunction validateDownloadUrl(url) {\n  let parsed;\n  try {\n    parsed = new URL(url);\n  } catch (e) {\n    throw new DownloadError({\n      url,\n      message: `Invalid URL: ${url}`\n    });\n  }\n  if (parsed.protocol === \"data:\") {\n    return;\n  }\n  if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n    throw new DownloadError({\n      url,\n      message: `URL scheme must be http, https, or data, got ${parsed.protocol}`\n    });\n  }\n  const hostname = parsed.hostname.toLowerCase().replace(/\\.+$/, \"\");\n  if (!hostname) {\n    throw new DownloadError({\n      url,\n      message: `URL must have a hostname`\n    });\n  }\n  if (hostname === \"localhost\" || hostname.endsWith(\".local\") || hostname.endsWith(\".localhost\")) {\n    throw new DownloadError({\n      url,\n      message: `URL with hostname ${hostname} is not allowed`\n    });\n  }\n  if (hostname.startsWith(\"[\") && hostname.endsWith(\"]\")) {\n    const ipv6 = hostname.slice(1, -1);\n    if (isPrivateIPv6(ipv6)) {\n      throw new DownloadError({\n        url,\n        message: `URL with IPv6 address ${hostname} is not allowed`\n      });\n    }\n    return;\n  }\n  if (isIPv4(hostname)) {\n    if (isPrivateIPv4(hostname)) {\n      throw new DownloadError({\n        url,\n        message: `URL with IP address ${hostname} is not allowed`\n      });\n    }\n    return;\n  }\n}\nfunction validateDownloadAddress({\n  address,\n  family,\n  hostname\n}) {\n  const isUnsafe = family === 4 ? !isIPv4(address) || isPrivateIPv4(address) : family === 6 ? isPrivateIPv6(address) : true;\n  if (isUnsafe) {\n    throw new DownloadError({\n      url: hostname,\n      message: `Hostname ${hostname} resolved to disallowed IP address ${address}`\n    });\n  }\n}\nfunction isIPv4(hostname) {\n  const parts = hostname.split(\".\");\n  if (parts.length !== 4) return false;\n  return parts.every((part) => {\n    const num = Number(part);\n    return Number.isInteger(num) && num >= 0 && num <= 255 && String(num) === part;\n  });\n}\nfunction isPrivateIPv4(ip) {\n  const parts = ip.split(\".\").map(Number);\n  const [a, b, c] = parts;\n  if (a === 0) return true;\n  if (a === 10) return true;\n  if (a === 100 && b >= 64 && b <= 127) return true;\n  if (a === 127) return true;\n  if (a === 169 && b === 254) return true;\n  if (a === 172 && b >= 16 && b <= 31) return true;\n  if (a === 192 && b === 0 && c === 0) return true;\n  if (a === 192 && b === 168) return true;\n  if (a === 198 && (b === 18 || b === 19)) return true;\n  if (a >= 240) return true;\n  return false;\n}\nfunction parseIPv6(ip) {\n  let address = ip.toLowerCase();\n  const zoneIndex = address.indexOf(\"%\");\n  if (zoneIndex !== -1) {\n    address = address.slice(0, zoneIndex);\n  }\n  const halves = address.split(\"::\");\n  if (halves.length > 2) return null;\n  const toGroups = (segment) => {\n    if (segment === \"\") return [];\n    const groups = [];\n    const parts = segment.split(\":\");\n    for (let i = 0; i < parts.length; i++) {\n      const part = parts[i];\n      if (part.includes(\".\")) {\n        if (i !== parts.length - 1 || !isIPv4(part)) return null;\n        const [a, b, c, d] = part.split(\".\").map(Number);\n        groups.push(a << 8 | b, c << 8 | d);\n        continue;\n      }\n      if (!/^[0-9a-f]{1,4}$/.test(part)) return null;\n      groups.push(parseInt(part, 16));\n    }\n    return groups;\n  };\n  const head = toGroups(halves[0]);\n  if (head === null) return null;\n  if (halves.length === 2) {\n    const tail = toGroups(halves[1]);\n    if (tail === null) return null;\n    const fill = 8 - head.length - tail.length;\n    if (fill < 0) return null;\n    return [...head, ...new Array(fill).fill(0), ...tail];\n  }\n  return head.length === 8 ? head : null;\n}\nfunction isPrivateIPv6(ip) {\n  const groups = parseIPv6(ip);\n  if (groups === null) return true;\n  const topZero = (count) => groups.slice(0, count).every((group) => group === 0);\n  if (topZero(7) && (groups[7] === 0 || groups[7] === 1)) return true;\n  if ((groups[0] & 65024) === 64512) return true;\n  if ((groups[0] & 65472) === 65152) return true;\n  if ((groups[0] & 65472) === 65216) return true;\n  if ((groups[0] & 65280) === 65280) return true;\n  const embedsIPv4 = (\n    // ::/96 — IPv4-compatible (deprecated)\n    topZero(6) || // ::ffff:0:0/96 — IPv4-mapped (ffff in group 5)\n    topZero(5) && groups[5] === 65535 || // ::ffff:0:0/96 — IPv4-translated form (ffff in group 4, group 5 zero)\n    topZero(4) && groups[4] === 65535 && groups[5] === 0 || // 64:ff9b::/96 — NAT64 well-known prefix\n    groups[0] === 100 && groups[1] === 65435 && groups[2] === 0 && groups[3] === 0 && groups[4] === 0 && groups[5] === 0 || // 64:ff9b:1::/48 — NAT64 local-use prefix\n    groups[0] === 100 && groups[1] === 65435 && groups[2] === 1\n  );\n  if (embedsIPv4) {\n    const a = groups[6] >> 8 & 255;\n    const b = groups[6] & 255;\n    const c = groups[7] >> 8 & 255;\n    const d = groups[7] & 255;\n    return isPrivateIPv4(`${a}.${b}.${c}.${d}`);\n  }\n  return false;\n}\n\n// src/safe-node-fetch.ts\nfunction createSafeLookup(lookup) {\n  return ((hostname, options, callback) => {\n    lookup(hostname, { ...options, all: true }, (error, addresses) => {\n      if (error) {\n        callback(error);\n        return;\n      }\n      try {\n        const [firstAddress] = addresses;\n        if (firstAddress == null) {\n          throw new Error(`Hostname ${hostname} did not resolve to an address`);\n        }\n        for (const { address, family } of addresses) {\n          validateDownloadAddress({ address, family, hostname });\n        }\n        if (options.all === true) {\n          callback(null, addresses);\n        } else {\n          callback(\n            null,\n            firstAddress.address,\n            firstAddress.family\n          );\n        }\n      } catch (error2) {\n        callback(\n          error2 instanceof Error ? error2 : new Error(String(error2))\n        );\n      }\n    });\n  });\n}\nvar safeNodeFetchPromise;\nvar initialGlobalFetch = globalThis.fetch;\nvar initialGlobalFetchIsNodeDefault = isNodeDefaultFetch(initialGlobalFetch);\nfunction isNodeRuntime() {\n  var _a2, _b2;\n  const runtimeProcess = globalThis.process;\n  return ((_a2 = runtimeProcess == null ? void 0 : runtimeProcess.release) == null ? void 0 : _a2.name) === \"node\" && ((_b2 = runtimeProcess.versions) == null ? void 0 : _b2.bun) == null;\n}\nasync function getDefaultDownloadFetch() {\n  if (!isNodeRuntime() || !initialGlobalFetchIsNodeDefault || globalThis.fetch !== initialGlobalFetch) {\n    return globalThis.fetch;\n  }\n  return safeNodeFetchPromise != null ? safeNodeFetchPromise : safeNodeFetchPromise = createSafeNodeFetch();\n}\nfunction isNodeDefaultFetch(fetch) {\n  const source = Function.prototype.toString.call(fetch);\n  return source.includes(\"internal/deps/undici\") || source.includes(\"lazy loading of undici\");\n}\nasync function createSafeNodeFetch() {\n  const [{ createRequire }, { lookup }] = await Promise.all([\n    loadNodeModule(\"node:module\"),\n    loadNodeModule(\"node:dns\")\n  ]);\n  const { Agent, fetch } = createRequire(getCurrentModulePath())(\n    \"undici\"\n  );\n  const dispatcher = new Agent({\n    connect: {\n      lookup: createSafeLookup(lookup)\n    }\n  });\n  return ((input, init) => fetch(\n    input,\n    {\n      ...init,\n      dispatcher\n    }\n  ));\n}\nasync function loadNodeModule(id) {\n  var _a2;\n  const processWithBuiltins = globalThis.process;\n  const builtinModule = (_a2 = processWithBuiltins == null ? void 0 : processWithBuiltins.getBuiltinModule) == null ? void 0 : _a2.call(processWithBuiltins, id);\n  return builtinModule == null ? await importNodeModule(id) : builtinModule;\n}\nfunction importNodeModule(id) {\n  return import(id);\n}\nfunction getCurrentModulePath() {\n  const originalPrepareStackTrace = Error.prepareStackTrace;\n  try {\n    Error.prepareStackTrace = (_error, callSites) => callSites;\n    const error = new Error(\"Capture current module path\");\n    Error.captureStackTrace(error, getCurrentModulePath);\n    const [caller] = error.stack;\n    const fileName = caller == null ? void 0 : caller.getFileName();\n    if (fileName == null) {\n      throw new Error(\"Unable to determine the current module path\");\n    }\n    return fileName;\n  } finally {\n    Error.prepareStackTrace = originalPrepareStackTrace;\n  }\n}\n\n// src/fetch-with-validated-redirects.ts\nvar MAX_DOWNLOAD_REDIRECTS = 10;\nasync function fetchWithValidatedRedirects({\n  url,\n  headers,\n  abortSignal,\n  maxRedirects = MAX_DOWNLOAD_REDIRECTS\n}) {\n  const baseInit = { signal: abortSignal };\n  if (headers !== void 0) {\n    baseInit.headers = headers;\n  }\n  let currentUrl = url;\n  for (let redirectCount = 0; redirectCount <= maxRedirects; redirectCount++) {\n    validateDownloadUrl(currentUrl);\n    const fetch = await getDefaultDownloadFetch();\n    const response = await fetch(currentUrl, {\n      ...baseInit,\n      redirect: \"manual\"\n    });\n    if (response.type === \"opaqueredirect\") {\n      if (!isBrowserRuntime()) {\n        throw new DownloadError({\n          url,\n          message: `Redirect from ${currentUrl} could not be validated and was blocked`\n        });\n      }\n      return await fetch(currentUrl, { ...baseInit, redirect: \"follow\" });\n    }\n    const location = response.headers.get(\"location\");\n    if (response.status >= 300 && response.status < 400 && location) {\n      await cancelResponseBody(response);\n      currentUrl = new URL(location, currentUrl).toString();\n      continue;\n    }\n    return response;\n  }\n  throw new DownloadError({\n    url,\n    message: `Too many redirects (max ${maxRedirects})`\n  });\n}\n\n// src/read-response-with-size-limit.ts\nvar DEFAULT_MAX_DOWNLOAD_SIZE = 2 * 1024 * 1024 * 1024;\nasync function readResponseWithSizeLimit({\n  response,\n  url,\n  maxBytes = DEFAULT_MAX_DOWNLOAD_SIZE\n}) {\n  const contentLength = response.headers.get(\"content-length\");\n  if (contentLength != null) {\n    const length = parseInt(contentLength, 10);\n    if (!isNaN(length) && length > maxBytes) {\n      await cancelResponseBody(response);\n      throw new DownloadError({\n        url,\n        message: `Download of ${url} exceeded maximum size of ${maxBytes} bytes (Content-Length: ${length}).`\n      });\n    }\n  }\n  const body = response.body;\n  if (body == null) {\n    return new Uint8Array(0);\n  }\n  const reader = body.getReader();\n  const chunks = [];\n  let totalBytes = 0;\n  try {\n    while (true) {\n      const { done, value } = await reader.read();\n      if (done) {\n        break;\n      }\n      totalBytes += value.length;\n      if (totalBytes > maxBytes) {\n        throw new DownloadError({\n          url,\n          message: `Download of ${url} exceeded maximum size of ${maxBytes} bytes.`\n        });\n      }\n      chunks.push(value);\n    }\n  } finally {\n    try {\n      await reader.cancel();\n    } finally {\n      reader.releaseLock();\n    }\n  }\n  const result = new Uint8Array(totalBytes);\n  let offset = 0;\n  for (const chunk of chunks) {\n    result.set(chunk, offset);\n    offset += chunk.length;\n  }\n  return result;\n}\n\n// src/generate-id.ts\nimport { InvalidArgumentError } from \"@ai-sdk/provider\";\nvar createIdGenerator = ({\n  prefix,\n  size = 16,\n  alphabet = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\",\n  separator = \"-\"\n} = {}) => {\n  const generator = () => {\n    const alphabetLength = alphabet.length;\n    const chars = new Array(size);\n    for (let i = 0; i < size; i++) {\n      chars[i] = alphabet[Math.random() * alphabetLength | 0];\n    }\n    return chars.join(\"\");\n  };\n  if (prefix == null) {\n    return generator;\n  }\n  if (alphabet.includes(separator)) {\n    throw new InvalidArgumentError({\n      argument: \"separator\",\n      message: `The separator \"${separator}\" must not be part of the alphabet \"${alphabet}\".`\n    });\n  }\n  return () => `${prefix}${separator}${generator()}`;\n};\nvar generateId = createIdGenerator();\n\n// src/get-error-message.ts\nfunction getErrorMessage(error) {\n  if (error == null) {\n    return \"unknown error\";\n  }\n  if (typeof error === \"string\") {\n    return error;\n  }\n  if (error instanceof Error) {\n    return error.message;\n  }\n  return JSON.stringify(error);\n}\n\n// src/get-from-api.ts\nimport { APICallError as APICallError2 } from \"@ai-sdk/provider\";\n\n// src/handle-fetch-error.ts\nimport { APICallError } from \"@ai-sdk/provider\";\n\n// src/is-abort-error.ts\nfunction isAbortError(error) {\n  return (error instanceof Error || error instanceof DOMException) && (error.name === \"AbortError\" || error.name === \"ResponseAborted\" || // Next.js\n  error.name === \"TimeoutError\");\n}\n\n// src/handle-fetch-error.ts\nvar FETCH_FAILED_ERROR_MESSAGES = [\"fetch failed\", \"failed to fetch\"];\nfunction handleFetchError({\n  error,\n  url,\n  requestBodyValues\n}) {\n  if (isAbortError(error)) {\n    return error;\n  }\n  if (error instanceof TypeError && FETCH_FAILED_ERROR_MESSAGES.includes(error.message.toLowerCase())) {\n    const cause = error.cause;\n    if (cause != null) {\n      return new APICallError({\n        message: `Cannot connect to API: ${cause.message}`,\n        cause,\n        url,\n        requestBodyValues,\n        isRetryable: true\n        // retry when network error\n      });\n    }\n  }\n  return error;\n}\n\n// src/get-runtime-environment-user-agent.ts\nfunction getRuntimeEnvironmentUserAgent(globalThisAny = globalThis) {\n  var _a2, _b2, _c;\n  if (globalThisAny.window) {\n    return `runtime/browser`;\n  }\n  if ((_a2 = globalThisAny.navigator) == null ? void 0 : _a2.userAgent) {\n    return `runtime/${globalThisAny.navigator.userAgent.toLowerCase()}`;\n  }\n  if ((_c = (_b2 = globalThisAny.process) == null ? void 0 : _b2.versions) == null ? void 0 : _c.node) {\n    return `runtime/node.js/${globalThisAny.process.version.substring(0)}`;\n  }\n  if (globalThisAny.EdgeRuntime) {\n    return `runtime/vercel-edge`;\n  }\n  return \"runtime/unknown\";\n}\n\n// src/normalize-headers.ts\nfunction normalizeHeaders(headers) {\n  if (headers == null) {\n    return {};\n  }\n  const normalized = {};\n  if (headers instanceof Headers) {\n    headers.forEach((value, key) => {\n      normalized[key.toLowerCase()] = value;\n    });\n  } else {\n    if (!Array.isArray(headers)) {\n      headers = Object.entries(headers);\n    }\n    for (const [key, value] of headers) {\n      if (value != null) {\n        normalized[key.toLowerCase()] = value;\n      }\n    }\n  }\n  return normalized;\n}\n\n// src/with-user-agent-suffix.ts\nfunction withUserAgentSuffix(headers, ...userAgentSuffixParts) {\n  const normalizedHeaders = new Headers(normalizeHeaders(headers));\n  const currentUserAgentHeader = normalizedHeaders.get(\"user-agent\") || \"\";\n  normalizedHeaders.set(\n    \"user-agent\",\n    [currentUserAgentHeader, ...userAgentSuffixParts].filter(Boolean).join(\" \")\n  );\n  return Object.fromEntries(normalizedHeaders.entries());\n}\n\n// src/version.ts\nvar VERSION = true ? \"3.0.31\" : \"0.0.0-test\";\n\n// src/get-from-api.ts\nvar getOriginalFetch = () => globalThis.fetch;\nvar getFromApi = async ({\n  url,\n  headers = {},\n  successfulResponseHandler,\n  failedResponseHandler,\n  abortSignal,\n  fetch = getOriginalFetch()\n}) => {\n  try {\n    const response = await fetch(url, {\n      method: \"GET\",\n      headers: withUserAgentSuffix(\n        headers,\n        `ai-sdk/provider-utils/${VERSION}`,\n        getRuntimeEnvironmentUserAgent()\n      ),\n      signal: abortSignal\n    });\n    const responseHeaders = extractResponseHeaders(response);\n    if (!response.ok) {\n      let errorInformation;\n      try {\n        errorInformation = await failedResponseHandler({\n          response,\n          url,\n          requestBodyValues: {}\n        });\n      } catch (error) {\n        if (isAbortError(error) || APICallError2.isInstance(error)) {\n          throw error;\n        }\n        throw new APICallError2({\n          message: \"Failed to process error response\",\n          cause: error,\n          statusCode: response.status,\n          url,\n          responseHeaders,\n          requestBodyValues: {}\n        });\n      }\n      throw errorInformation.value;\n    }\n    try {\n      return await successfulResponseHandler({\n        response,\n        url,\n        requestBodyValues: {}\n      });\n    } catch (error) {\n      if (error instanceof Error) {\n        if (isAbortError(error) || APICallError2.isInstance(error)) {\n          throw error;\n        }\n      }\n      throw new APICallError2({\n        message: \"Failed to process successful response\",\n        cause: error,\n        statusCode: response.status,\n        url,\n        responseHeaders,\n        requestBodyValues: {}\n      });\n    }\n  } catch (error) {\n    throw handleFetchError({ error, url, requestBodyValues: {} });\n  }\n};\n\n// src/inject-json-instruction.ts\nvar DEFAULT_SCHEMA_PREFIX = \"JSON schema:\";\nvar DEFAULT_SCHEMA_SUFFIX = \"You MUST answer with a JSON object that matches the JSON schema above.\";\nvar DEFAULT_GENERIC_SUFFIX = \"You MUST answer with JSON.\";\nfunction injectJsonInstruction({\n  prompt,\n  schema,\n  schemaPrefix = schema != null ? DEFAULT_SCHEMA_PREFIX : void 0,\n  schemaSuffix = schema != null ? DEFAULT_SCHEMA_SUFFIX : DEFAULT_GENERIC_SUFFIX\n}) {\n  return [\n    prompt != null && prompt.length > 0 ? prompt : void 0,\n    prompt != null && prompt.length > 0 ? \"\" : void 0,\n    // add a newline if prompt is not null\n    schemaPrefix,\n    schema != null ? JSON.stringify(schema) : void 0,\n    schemaSuffix\n  ].filter((line) => line != null).join(\"\\n\");\n}\nfunction injectJsonInstructionIntoMessages({\n  messages,\n  schema,\n  schemaPrefix,\n  schemaSuffix\n}) {\n  var _a2, _b2;\n  const systemMessage = ((_a2 = messages[0]) == null ? void 0 : _a2.role) === \"system\" ? { ...messages[0] } : { role: \"system\", content: \"\" };\n  systemMessage.content = injectJsonInstruction({\n    prompt: systemMessage.content,\n    schema,\n    schemaPrefix,\n    schemaSuffix\n  });\n  return [\n    systemMessage,\n    ...((_b2 = messages[0]) == null ? void 0 : _b2.role) === \"system\" ? messages.slice(1) : messages\n  ];\n}\n\n// src/is-same-origin.ts\nfunction isSameOrigin(url, baseUrl) {\n  try {\n    return new URL(url).origin === new URL(baseUrl).origin;\n  } catch (e) {\n    return false;\n  }\n}\n\n// src/is-url-supported.ts\nfunction isUrlSupported({\n  mediaType,\n  url,\n  supportedUrls\n}) {\n  url = url.toLowerCase();\n  mediaType = mediaType.toLowerCase();\n  return Object.entries(supportedUrls).map(([key, value]) => {\n    const mediaType2 = key.toLowerCase();\n    return mediaType2 === \"*\" || mediaType2 === \"*/*\" ? { mediaTypePrefix: \"\", regexes: value } : { mediaTypePrefix: mediaType2.replace(/\\*/, \"\"), regexes: value };\n  }).filter(({ mediaTypePrefix }) => mediaType.startsWith(mediaTypePrefix)).flatMap(({ regexes }) => regexes).some((pattern) => pattern.test(url));\n}\n\n// src/load-api-key.ts\nimport { LoadAPIKeyError } from \"@ai-sdk/provider\";\nfunction loadApiKey({\n  apiKey,\n  environmentVariableName,\n  apiKeyParameterName = \"apiKey\",\n  description\n}) {\n  if (typeof apiKey === \"string\") {\n    return apiKey;\n  }\n  if (apiKey != null) {\n    throw new LoadAPIKeyError({\n      message: `${description} API key must be a string.`\n    });\n  }\n  if (typeof process === \"undefined\") {\n    throw new LoadAPIKeyError({\n      message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables is not supported in this environment.`\n    });\n  }\n  apiKey = process.env[environmentVariableName];\n  if (apiKey == null) {\n    throw new LoadAPIKeyError({\n      message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter or the ${environmentVariableName} environment variable.`\n    });\n  }\n  if (typeof apiKey !== \"string\") {\n    throw new LoadAPIKeyError({\n      message: `${description} API key must be a string. The value of the ${environmentVariableName} environment variable is not a string.`\n    });\n  }\n  return apiKey;\n}\n\n// src/load-optional-setting.ts\nfunction loadOptionalSetting({\n  settingValue,\n  environmentVariableName\n}) {\n  if (typeof settingValue === \"string\") {\n    return settingValue;\n  }\n  if (settingValue != null || typeof process === \"undefined\") {\n    return void 0;\n  }\n  settingValue = process.env[environmentVariableName];\n  if (settingValue == null || typeof settingValue !== \"string\") {\n    return void 0;\n  }\n  return settingValue;\n}\n\n// src/load-setting.ts\nimport { LoadSettingError } from \"@ai-sdk/provider\";\nfunction loadSetting({\n  settingValue,\n  environmentVariableName,\n  settingName,\n  description\n}) {\n  if (typeof settingValue === \"string\") {\n    return settingValue;\n  }\n  if (settingValue != null) {\n    throw new LoadSettingError({\n      message: `${description} setting must be a string.`\n    });\n  }\n  if (typeof process === \"undefined\") {\n    throw new LoadSettingError({\n      message: `${description} setting is missing. Pass it using the '${settingName}' parameter. Environment variables is not supported in this environment.`\n    });\n  }\n  settingValue = process.env[environmentVariableName];\n  if (settingValue == null) {\n    throw new LoadSettingError({\n      message: `${description} setting is missing. Pass it using the '${settingName}' parameter or the ${environmentVariableName} environment variable.`\n    });\n  }\n  if (typeof settingValue !== \"string\") {\n    throw new LoadSettingError({\n      message: `${description} setting must be a string. The value of the ${environmentVariableName} environment variable is not a string.`\n    });\n  }\n  return settingValue;\n}\n\n// src/media-type-to-extension.ts\nfunction mediaTypeToExtension(mediaType) {\n  var _a2;\n  const [_type, subtype = \"\"] = mediaType.toLowerCase().split(\"/\");\n  return (_a2 = {\n    mpeg: \"mp3\",\n    \"x-wav\": \"wav\",\n    opus: \"ogg\",\n    mp4: \"m4a\",\n    \"x-m4a\": \"m4a\"\n  }[subtype]) != null ? _a2 : subtype;\n}\n\n// src/parse-json.ts\nimport {\n  JSONParseError,\n  TypeValidationError as TypeValidationError3\n} from \"@ai-sdk/provider\";\n\n// src/secure-json-parse.ts\nvar suspectProtoRx = /\"(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])(?:p|\\\\u0070)(?:r|\\\\u0072)(?:o|\\\\u006[Ff])(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])\"\\s*:/;\nvar suspectConstructorRx = /\"(?:c|\\\\u0063)(?:o|\\\\u006[Ff])(?:n|\\\\u006[Ee])(?:s|\\\\u0073)(?:t|\\\\u0074)(?:r|\\\\u0072)(?:u|\\\\u0075)(?:c|\\\\u0063)(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:r|\\\\u0072)\"\\s*:/;\nfunction _parse(text) {\n  const obj = JSON.parse(text);\n  if (obj === null || typeof obj !== \"object\") {\n    return obj;\n  }\n  if (suspectProtoRx.test(text) === false && suspectConstructorRx.test(text) === false) {\n    return obj;\n  }\n  return filter(obj);\n}\nfunction filter(obj) {\n  let next = [obj];\n  while (next.length) {\n    const nodes = next;\n    next = [];\n    for (const node of nodes) {\n      if (Object.prototype.hasOwnProperty.call(node, \"__proto__\")) {\n        throw new SyntaxError(\"Object contains forbidden prototype property\");\n      }\n      if (Object.prototype.hasOwnProperty.call(node, \"constructor\") && node.constructor !== null && typeof node.constructor === \"object\" && Object.prototype.hasOwnProperty.call(node.constructor, \"prototype\")) {\n        throw new SyntaxError(\"Object contains forbidden prototype property\");\n      }\n      for (const key in node) {\n        const value = node[key];\n        if (value && typeof value === \"object\") {\n          next.push(value);\n        }\n      }\n    }\n  }\n  return obj;\n}\nfunction secureJsonParse(text) {\n  const { stackTraceLimit } = Error;\n  try {\n    Error.stackTraceLimit = 0;\n  } catch (e) {\n    return _parse(text);\n  }\n  try {\n    return _parse(text);\n  } finally {\n    Error.stackTraceLimit = stackTraceLimit;\n  }\n}\n\n// src/validate-types.ts\nimport { TypeValidationError as TypeValidationError2 } from \"@ai-sdk/provider\";\n\n// src/validator.ts\nimport { TypeValidationError } from \"@ai-sdk/provider\";\nvar validatorSymbol = /* @__PURE__ */ Symbol.for(\"vercel.ai.validator\");\nfunction validator(validate) {\n  return { [validatorSymbol]: true, validate };\n}\nfunction isValidator(value) {\n  return typeof value === \"object\" && value !== null && validatorSymbol in value && value[validatorSymbol] === true && \"validate\" in value;\n}\nfunction lazyValidator(createValidator) {\n  let validator2;\n  return () => {\n    if (validator2 == null) {\n      validator2 = createValidator();\n    }\n    return validator2;\n  };\n}\nfunction asValidator(value) {\n  return isValidator(value) ? value : \"~standard\" in value ? standardSchemaValidator(value) : value();\n}\nfunction standardSchemaValidator(standardSchema) {\n  return validator(async (value) => {\n    const result = await standardSchema[\"~standard\"].validate(value);\n    return result.issues == null ? { success: true, value: result.value } : {\n      success: false,\n      error: new TypeValidationError({\n        value,\n        cause: result.issues\n      })\n    };\n  });\n}\n\n// src/validate-types.ts\nasync function validateTypes({\n  value,\n  schema\n}) {\n  const result = await safeValidateTypes({ value, schema });\n  if (!result.success) {\n    throw TypeValidationError2.wrap({ value, cause: result.error });\n  }\n  return result.value;\n}\nasync function safeValidateTypes({\n  value,\n  schema\n}) {\n  const validator2 = asValidator(schema);\n  try {\n    if (validator2.validate == null) {\n      return { success: true, value, rawValue: value };\n    }\n    const result = await validator2.validate(value);\n    if (result.success) {\n      return { success: true, value: result.value, rawValue: value };\n    }\n    return {\n      success: false,\n      error: TypeValidationError2.wrap({ value, cause: result.error }),\n      rawValue: value\n    };\n  } catch (error) {\n    return {\n      success: false,\n      error: TypeValidationError2.wrap({ value, cause: error }),\n      rawValue: value\n    };\n  }\n}\n\n// src/parse-json.ts\nasync function parseJSON({\n  text,\n  schema\n}) {\n  try {\n    const value = secureJsonParse(text);\n    if (schema == null) {\n      return value;\n    }\n    return validateTypes({ value, schema });\n  } catch (error) {\n    if (JSONParseError.isInstance(error) || TypeValidationError3.isInstance(error)) {\n      throw error;\n    }\n    throw new JSONParseError({ text, cause: error });\n  }\n}\nasync function safeParseJSON({\n  text,\n  schema\n}) {\n  try {\n    const value = secureJsonParse(text);\n    if (schema == null) {\n      return { success: true, value, rawValue: value };\n    }\n    return await safeValidateTypes({ value, schema });\n  } catch (error) {\n    return {\n      success: false,\n      error: JSONParseError.isInstance(error) ? error : new JSONParseError({ text, cause: error }),\n      rawValue: void 0\n    };\n  }\n}\nfunction isParsableJson(input) {\n  try {\n    secureJsonParse(input);\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n// src/parse-json-event-stream.ts\nimport {\n  EventSourceParserStream\n} from \"eventsource-parser/stream\";\nfunction parseJsonEventStream({\n  stream,\n  schema\n}) {\n  return stream.pipeThrough(new TextDecoderStream()).pipeThrough(new EventSourceParserStream()).pipeThrough(\n    new TransformStream({\n      async transform({ data }, controller) {\n        if (data === \"[DONE]\") {\n          return;\n        }\n        controller.enqueue(await safeParseJSON({ text: data, schema }));\n      }\n    })\n  );\n}\n\n// src/parse-provider-options.ts\nimport { InvalidArgumentError as InvalidArgumentError2 } from \"@ai-sdk/provider\";\nasync function parseProviderOptions({\n  provider,\n  providerOptions,\n  schema\n}) {\n  if ((providerOptions == null ? void 0 : providerOptions[provider]) == null) {\n    return void 0;\n  }\n  const parsedProviderOptions = await safeValidateTypes({\n    value: providerOptions[provider],\n    schema\n  });\n  if (!parsedProviderOptions.success) {\n    throw new InvalidArgumentError2({\n      argument: \"providerOptions\",\n      message: `invalid ${provider} provider options`,\n      cause: parsedProviderOptions.error\n    });\n  }\n  return parsedProviderOptions.value;\n}\n\n// src/post-to-api.ts\nimport { APICallError as APICallError3 } from \"@ai-sdk/provider\";\nvar getOriginalFetch2 = () => globalThis.fetch;\nvar postJsonToApi = async ({\n  url,\n  headers,\n  body,\n  failedResponseHandler,\n  successfulResponseHandler,\n  abortSignal,\n  fetch\n}) => postToApi({\n  url,\n  headers: {\n    \"Content-Type\": \"application/json\",\n    ...headers\n  },\n  body: {\n    content: JSON.stringify(body),\n    values: body\n  },\n  failedResponseHandler,\n  successfulResponseHandler,\n  abortSignal,\n  fetch\n});\nvar postFormDataToApi = async ({\n  url,\n  headers,\n  formData,\n  failedResponseHandler,\n  successfulResponseHandler,\n  abortSignal,\n  fetch\n}) => postToApi({\n  url,\n  headers,\n  body: {\n    content: formData,\n    values: Object.fromEntries(formData.entries())\n  },\n  failedResponseHandler,\n  successfulResponseHandler,\n  abortSignal,\n  fetch\n});\nvar postToApi = async ({\n  url,\n  headers = {},\n  body,\n  successfulResponseHandler,\n  failedResponseHandler,\n  abortSignal,\n  fetch = getOriginalFetch2()\n}) => {\n  try {\n    const response = await fetch(url, {\n      method: \"POST\",\n      headers: withUserAgentSuffix(\n        headers,\n        `ai-sdk/provider-utils/${VERSION}`,\n        getRuntimeEnvironmentUserAgent()\n      ),\n      body: body.content,\n      signal: abortSignal\n    });\n    const responseHeaders = extractResponseHeaders(response);\n    if (!response.ok) {\n      let errorInformation;\n      try {\n        errorInformation = await failedResponseHandler({\n          response,\n          url,\n          requestBodyValues: body.values\n        });\n      } catch (error) {\n        if (isAbortError(error) || APICallError3.isInstance(error)) {\n          throw error;\n        }\n        throw new APICallError3({\n          message: \"Failed to process error response\",\n          cause: error,\n          statusCode: response.status,\n          url,\n          responseHeaders,\n          requestBodyValues: body.values\n        });\n      }\n      throw errorInformation.value;\n    }\n    try {\n      return await successfulResponseHandler({\n        response,\n        url,\n        requestBodyValues: body.values\n      });\n    } catch (error) {\n      if (error instanceof Error) {\n        if (isAbortError(error) || APICallError3.isInstance(error)) {\n          throw error;\n        }\n      }\n      throw new APICallError3({\n        message: \"Failed to process successful response\",\n        cause: error,\n        statusCode: response.status,\n        url,\n        responseHeaders,\n        requestBodyValues: body.values\n      });\n    }\n  } catch (error) {\n    throw handleFetchError({ error, url, requestBodyValues: body.values });\n  }\n};\n\n// src/types/tool.ts\nfunction tool(tool2) {\n  return tool2;\n}\nfunction dynamicTool(tool2) {\n  return { ...tool2, type: \"dynamic\" };\n}\n\n// src/provider-defined-tool-factory.ts\nfunction createProviderDefinedToolFactory({\n  id,\n  name: name2,\n  inputSchema\n}) {\n  return ({\n    execute,\n    outputSchema,\n    toModelOutput,\n    onInputStart,\n    onInputDelta,\n    onInputAvailable,\n    ...args\n  }) => tool({\n    type: \"provider-defined\",\n    id,\n    name: name2,\n    args,\n    inputSchema,\n    outputSchema,\n    execute,\n    toModelOutput,\n    onInputStart,\n    onInputDelta,\n    onInputAvailable\n  });\n}\nfunction createProviderDefinedToolFactoryWithOutputSchema({\n  id,\n  name: name2,\n  inputSchema,\n  outputSchema\n}) {\n  return ({\n    execute,\n    toModelOutput,\n    onInputStart,\n    onInputDelta,\n    onInputAvailable,\n    ...args\n  }) => tool({\n    type: \"provider-defined\",\n    id,\n    name: name2,\n    args,\n    inputSchema,\n    outputSchema,\n    execute,\n    toModelOutput,\n    onInputStart,\n    onInputDelta,\n    onInputAvailable\n  });\n}\n\n// src/remove-undefined-entries.ts\nfunction removeUndefinedEntries(record) {\n  return Object.fromEntries(\n    Object.entries(record).filter(([_key, value]) => value != null)\n  );\n}\n\n// src/resolve.ts\nasync function resolve(value) {\n  if (typeof value === \"function\") {\n    value = value();\n  }\n  return Promise.resolve(value);\n}\n\n// src/response-handler.ts\nimport { APICallError as APICallError4, EmptyResponseBodyError } from \"@ai-sdk/provider\";\nvar textDecoder = new TextDecoder();\nasync function readResponseBodyAsText({\n  response,\n  url\n}) {\n  return textDecoder.decode(\n    await readResponseWithSizeLimit({\n      response,\n      url\n    })\n  );\n}\nvar createJsonErrorResponseHandler = ({\n  errorSchema,\n  errorToMessage,\n  isRetryable\n}) => async ({ response, url, requestBodyValues }) => {\n  const responseBody = await readResponseBodyAsText({ response, url });\n  const responseHeaders = extractResponseHeaders(response);\n  if (responseBody.trim() === \"\") {\n    return {\n      responseHeaders,\n      value: new APICallError4({\n        message: response.statusText,\n        url,\n        requestBodyValues,\n        statusCode: response.status,\n        responseHeaders,\n        responseBody,\n        isRetryable: isRetryable == null ? void 0 : isRetryable(response)\n      })\n    };\n  }\n  try {\n    const parsedError = await parseJSON({\n      text: responseBody,\n      schema: errorSchema\n    });\n    return {\n      responseHeaders,\n      value: new APICallError4({\n        message: errorToMessage(parsedError),\n        url,\n        requestBodyValues,\n        statusCode: response.status,\n        responseHeaders,\n        responseBody,\n        data: parsedError,\n        isRetryable: isRetryable == null ? void 0 : isRetryable(response, parsedError)\n      })\n    };\n  } catch (parseError) {\n    return {\n      responseHeaders,\n      value: new APICallError4({\n        message: response.statusText,\n        url,\n        requestBodyValues,\n        statusCode: response.status,\n        responseHeaders,\n        responseBody,\n        isRetryable: isRetryable == null ? void 0 : isRetryable(response)\n      })\n    };\n  }\n};\nvar createEventSourceResponseHandler = (chunkSchema) => async ({ response }) => {\n  const responseHeaders = extractResponseHeaders(response);\n  if (response.body == null) {\n    throw new EmptyResponseBodyError({});\n  }\n  return {\n    responseHeaders,\n    value: parseJsonEventStream({\n      stream: response.body,\n      schema: chunkSchema\n    })\n  };\n};\nvar createJsonStreamResponseHandler = (chunkSchema) => async ({ response }) => {\n  const responseHeaders = extractResponseHeaders(response);\n  if (response.body == null) {\n    throw new EmptyResponseBodyError({});\n  }\n  let buffer = \"\";\n  return {\n    responseHeaders,\n    value: response.body.pipeThrough(new TextDecoderStream()).pipeThrough(\n      new TransformStream({\n        async transform(chunkText, controller) {\n          if (chunkText.endsWith(\"\\n\")) {\n            controller.enqueue(\n              await safeParseJSON({\n                text: buffer + chunkText,\n                schema: chunkSchema\n              })\n            );\n            buffer = \"\";\n          } else {\n            buffer += chunkText;\n          }\n        }\n      })\n    )\n  };\n};\nvar createJsonResponseHandler = (responseSchema) => async ({ response, url, requestBodyValues }) => {\n  const responseBody = await readResponseBodyAsText({ response, url });\n  const parsedResult = await safeParseJSON({\n    text: responseBody,\n    schema: responseSchema\n  });\n  const responseHeaders = extractResponseHeaders(response);\n  if (!parsedResult.success) {\n    throw new APICallError4({\n      message: \"Invalid JSON response\",\n      cause: parsedResult.error,\n      statusCode: response.status,\n      responseHeaders,\n      responseBody,\n      url,\n      requestBodyValues\n    });\n  }\n  return {\n    responseHeaders,\n    value: parsedResult.value,\n    rawValue: parsedResult.rawValue\n  };\n};\nvar createBinaryResponseHandler = () => async ({ response, url, requestBodyValues }) => {\n  const responseHeaders = extractResponseHeaders(response);\n  if (!response.body) {\n    throw new APICallError4({\n      message: \"Response body is empty\",\n      url,\n      requestBodyValues,\n      statusCode: response.status,\n      responseHeaders,\n      responseBody: void 0\n    });\n  }\n  try {\n    const buffer = await response.arrayBuffer();\n    return {\n      responseHeaders,\n      value: new Uint8Array(buffer)\n    };\n  } catch (error) {\n    throw new APICallError4({\n      message: \"Failed to read response as array buffer\",\n      url,\n      requestBodyValues,\n      statusCode: response.status,\n      responseHeaders,\n      responseBody: void 0,\n      cause: error\n    });\n  }\n};\nvar createStatusCodeErrorResponseHandler = () => async ({ response, url, requestBodyValues }) => {\n  const responseHeaders = extractResponseHeaders(response);\n  const responseBody = await readResponseBodyAsText({ response, url });\n  return {\n    responseHeaders,\n    value: new APICallError4({\n      message: response.statusText,\n      url,\n      requestBodyValues,\n      statusCode: response.status,\n      responseHeaders,\n      responseBody\n    })\n  };\n};\n\n// src/schema.ts\nvar schemaSymbol = /* @__PURE__ */ Symbol.for(\"vercel.ai.schema\");\nfunction lazySchema(createSchema) {\n  let schema;\n  return () => {\n    if (schema == null) {\n      schema = createSchema();\n    }\n    return schema;\n  };\n}\nfunction jsonSchema(jsonSchema2, {\n  validate\n} = {}) {\n  return {\n    [schemaSymbol]: true,\n    _type: void 0,\n    // should never be used directly\n    [validatorSymbol]: true,\n    get jsonSchema() {\n      if (typeof jsonSchema2 === \"function\") {\n        jsonSchema2 = jsonSchema2();\n      }\n      return jsonSchema2;\n    },\n    validate\n  };\n}\n\n// src/zod-schema.ts\nimport * as z4 from \"zod/v4\";\n\n// src/add-additional-properties-to-json-schema.ts\nfunction addAdditionalPropertiesToJsonSchema(jsonSchema2) {\n  if (jsonSchema2.type === \"object\") {\n    jsonSchema2.additionalProperties = false;\n    const properties = jsonSchema2.properties;\n    if (properties != null) {\n      for (const property in properties) {\n        properties[property] = addAdditionalPropertiesToJsonSchema(\n          properties[property]\n        );\n      }\n    }\n  }\n  if (jsonSchema2.type === \"array\" && jsonSchema2.items != null) {\n    if (Array.isArray(jsonSchema2.items)) {\n      jsonSchema2.items = jsonSchema2.items.map(\n        (item) => addAdditionalPropertiesToJsonSchema(item)\n      );\n    } else {\n      jsonSchema2.items = addAdditionalPropertiesToJsonSchema(\n        jsonSchema2.items\n      );\n    }\n  }\n  return jsonSchema2;\n}\n\n// src/zod-to-json-schema/options.ts\nvar ignoreOverride = /* @__PURE__ */ Symbol(\n  \"Let zodToJsonSchema decide on which parser to use\"\n);\nvar defaultOptions = {\n  name: void 0,\n  $refStrategy: \"root\",\n  basePath: [\"#\"],\n  effectStrategy: \"input\",\n  pipeStrategy: \"all\",\n  dateStrategy: \"format:date-time\",\n  mapStrategy: \"entries\",\n  removeAdditionalStrategy: \"passthrough\",\n  allowedAdditionalProperties: true,\n  rejectedAdditionalProperties: false,\n  definitionPath: \"definitions\",\n  strictUnions: false,\n  definitions: {},\n  errorMessages: false,\n  patternStrategy: \"escape\",\n  applyRegexFlags: false,\n  emailStrategy: \"format:email\",\n  base64Strategy: \"contentEncoding:base64\",\n  nameStrategy: \"ref\"\n};\nvar getDefaultOptions = (options) => typeof options === \"string\" ? {\n  ...defaultOptions,\n  name: options\n} : {\n  ...defaultOptions,\n  ...options\n};\n\n// src/zod-to-json-schema/select-parser.ts\nimport { ZodFirstPartyTypeKind as ZodFirstPartyTypeKind3 } from \"zod/v3\";\n\n// src/zod-to-json-schema/parsers/any.ts\nfunction parseAnyDef() {\n  return {};\n}\n\n// src/zod-to-json-schema/parsers/array.ts\nimport { ZodFirstPartyTypeKind } from \"zod/v3\";\nfunction parseArrayDef(def, refs) {\n  var _a2, _b2, _c;\n  const res = {\n    type: \"array\"\n  };\n  if (((_a2 = def.type) == null ? void 0 : _a2._def) && ((_c = (_b2 = def.type) == null ? void 0 : _b2._def) == null ? void 0 : _c.typeName) !== ZodFirstPartyTypeKind.ZodAny) {\n    res.items = parseDef(def.type._def, {\n      ...refs,\n      currentPath: [...refs.currentPath, \"items\"]\n    });\n  }\n  if (def.minLength) {\n    res.minItems = def.minLength.value;\n  }\n  if (def.maxLength) {\n    res.maxItems = def.maxLength.value;\n  }\n  if (def.exactLength) {\n    res.minItems = def.exactLength.value;\n    res.maxItems = def.exactLength.value;\n  }\n  return res;\n}\n\n// src/zod-to-json-schema/parsers/bigint.ts\nfunction parseBigintDef(def) {\n  const res = {\n    type: \"integer\",\n    format: \"int64\"\n  };\n  if (!def.checks) return res;\n  for (const check of def.checks) {\n    switch (check.kind) {\n      case \"min\":\n        if (check.inclusive) {\n          res.minimum = check.value;\n        } else {\n          res.exclusiveMinimum = check.value;\n        }\n        break;\n      case \"max\":\n        if (check.inclusive) {\n          res.maximum = check.value;\n        } else {\n          res.exclusiveMaximum = check.value;\n        }\n        break;\n      case \"multipleOf\":\n        res.multipleOf = check.value;\n        break;\n    }\n  }\n  return res;\n}\n\n// src/zod-to-json-schema/parsers/boolean.ts\nfunction parseBooleanDef() {\n  return { type: \"boolean\" };\n}\n\n// src/zod-to-json-schema/parsers/branded.ts\nfunction parseBrandedDef(_def, refs) {\n  return parseDef(_def.type._def, refs);\n}\n\n// src/zod-to-json-schema/parsers/catch.ts\nvar parseCatchDef = (def, refs) => {\n  return parseDef(def.innerType._def, refs);\n};\n\n// src/zod-to-json-schema/parsers/date.ts\nfunction parseDateDef(def, refs, overrideDateStrategy) {\n  const strategy = overrideDateStrategy != null ? overrideDateStrategy : refs.dateStrategy;\n  if (Array.isArray(strategy)) {\n    return {\n      anyOf: strategy.map((item, i) => parseDateDef(def, refs, item))\n    };\n  }\n  switch (strategy) {\n    case \"string\":\n    case \"format:date-time\":\n      return {\n        type: \"string\",\n        format: \"date-time\"\n      };\n    case \"format:date\":\n      return {\n        type: \"string\",\n        format: \"date\"\n      };\n    case \"integer\":\n      return integerDateParser(def);\n  }\n}\nvar integerDateParser = (def) => {\n  const res = {\n    type: \"integer\",\n    format: \"unix-time\"\n  };\n  for (const check of def.checks) {\n    switch (check.kind) {\n      case \"min\":\n        res.minimum = check.value;\n        break;\n      case \"max\":\n        res.maximum = check.value;\n        break;\n    }\n  }\n  return res;\n};\n\n// src/zod-to-json-schema/parsers/default.ts\nfunction parseDefaultDef(_def, refs) {\n  return {\n    ...parseDef(_def.innerType._def, refs),\n    default: _def.defaultValue()\n  };\n}\n\n// src/zod-to-json-schema/parsers/effects.ts\nfunction parseEffectsDef(_def, refs) {\n  return refs.effectStrategy === \"input\" ? parseDef(_def.schema._def, refs) : parseAnyDef();\n}\n\n// src/zod-to-json-schema/parsers/enum.ts\nfunction parseEnumDef(def) {\n  return {\n    type: \"string\",\n    enum: Array.from(def.values)\n  };\n}\n\n// src/zod-to-json-schema/parsers/intersection.ts\nvar isJsonSchema7AllOfType = (type) => {\n  if (\"type\" in type && type.type === \"string\") return false;\n  return \"allOf\" in type;\n};\nfunction parseIntersectionDef(def, refs) {\n  const allOf = [\n    parseDef(def.left._def, {\n      ...refs,\n      currentPath: [...refs.currentPath, \"allOf\", \"0\"]\n    }),\n    parseDef(def.right._def, {\n      ...refs,\n      currentPath: [...refs.currentPath, \"allOf\", \"1\"]\n    })\n  ].filter((x) => !!x);\n  const mergedAllOf = [];\n  allOf.forEach((schema) => {\n    if (isJsonSchema7AllOfType(schema)) {\n      mergedAllOf.push(...schema.allOf);\n    } else {\n      let nestedSchema = schema;\n      if (\"additionalProperties\" in schema && schema.additionalProperties === false) {\n        const { additionalProperties, ...rest } = schema;\n        nestedSchema = rest;\n      }\n      mergedAllOf.push(nestedSchema);\n    }\n  });\n  return mergedAllOf.length ? { allOf: mergedAllOf } : void 0;\n}\n\n// src/zod-to-json-schema/parsers/literal.ts\nfunction parseLiteralDef(def) {\n  const parsedType = typeof def.value;\n  if (parsedType !== \"bigint\" && parsedType !== \"number\" && parsedType !== \"boolean\" && parsedType !== \"string\") {\n    return {\n      type: Array.isArray(def.value) ? \"array\" : \"object\"\n    };\n  }\n  return {\n    type: parsedType === \"bigint\" ? \"integer\" : parsedType,\n    const: def.value\n  };\n}\n\n// src/zod-to-json-schema/parsers/record.ts\nimport {\n  ZodFirstPartyTypeKind as ZodFirstPartyTypeKind2\n} from \"zod/v3\";\n\n// src/zod-to-json-schema/parsers/string.ts\nvar emojiRegex = void 0;\nvar zodPatterns = {\n  /**\n   * `c` was changed to `[cC]` to replicate /i flag\n   */\n  cuid: /^[cC][^\\s-]{8,}$/,\n  cuid2: /^[0-9a-z]+$/,\n  ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,\n  /**\n   * `a-z` was added to replicate /i flag\n   */\n  email: /^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,\n  /**\n   * Constructed a valid Unicode RegExp\n   *\n   * Lazily instantiate since this type of regex isn't supported\n   * in all envs (e.g. React Native).\n   *\n   * See:\n   * https://github.com/colinhacks/zod/issues/2433\n   * Fix in Zod:\n   * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b\n   */\n  emoji: () => {\n    if (emojiRegex === void 0) {\n      emojiRegex = RegExp(\n        \"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\",\n        \"u\"\n      );\n    }\n    return emojiRegex;\n  },\n  /**\n   * Unused\n   */\n  uuid: /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/,\n  /**\n   * Unused\n   */\n  ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,\n  ipv4Cidr: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/,\n  /**\n   * Unused\n   */\n  ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,\n  ipv6Cidr: /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,\n  base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,\n  base64url: /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,\n  nanoid: /^[a-zA-Z0-9_-]{21}$/,\n  jwt: /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/\n};\nfunction parseStringDef(def, refs) {\n  const res = {\n    type: \"string\"\n  };\n  if (def.checks) {\n    for (const check of def.checks) {\n      switch (check.kind) {\n        case \"min\":\n          res.minLength = typeof res.minLength === \"number\" ? Math.max(res.minLength, check.value) : check.value;\n          break;\n        case \"max\":\n          res.maxLength = typeof res.maxLength === \"number\" ? Math.min(res.maxLength, check.value) : check.value;\n          break;\n        case \"email\":\n          switch (refs.emailStrategy) {\n            case \"format:email\":\n              addFormat(res, \"email\", check.message, refs);\n              break;\n            case \"format:idn-email\":\n              addFormat(res, \"idn-email\", check.message, refs);\n              break;\n            case \"pattern:zod\":\n              addPattern(res, zodPatterns.email, check.message, refs);\n              break;\n          }\n          break;\n        case \"url\":\n          addFormat(res, \"uri\", check.message, refs);\n          break;\n        case \"uuid\":\n          addFormat(res, \"uuid\", check.message, refs);\n          break;\n        case \"regex\":\n          addPattern(res, check.regex, check.message, refs);\n          break;\n        case \"cuid\":\n          addPattern(res, zodPatterns.cuid, check.message, refs);\n          break;\n        case \"cuid2\":\n          addPattern(res, zodPatterns.cuid2, check.message, refs);\n          break;\n        case \"startsWith\":\n          addPattern(\n            res,\n            RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`),\n            check.message,\n            refs\n          );\n          break;\n        case \"endsWith\":\n          addPattern(\n            res,\n            RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`),\n            check.message,\n            refs\n          );\n          break;\n        case \"datetime\":\n          addFormat(res, \"date-time\", check.message, refs);\n          break;\n        case \"date\":\n          addFormat(res, \"date\", check.message, refs);\n          break;\n        case \"time\":\n          addFormat(res, \"time\", check.message, refs);\n          break;\n        case \"duration\":\n          addFormat(res, \"duration\", check.message, refs);\n          break;\n        case \"length\":\n          res.minLength = typeof res.minLength === \"number\" ? Math.max(res.minLength, check.value) : check.value;\n          res.maxLength = typeof res.maxLength === \"number\" ? Math.min(res.maxLength, check.value) : check.value;\n          break;\n        case \"includes\": {\n          addPattern(\n            res,\n            RegExp(escapeLiteralCheckValue(check.value, refs)),\n            check.message,\n            refs\n          );\n          break;\n        }\n        case \"ip\": {\n          if (check.version !== \"v6\") {\n            addFormat(res, \"ipv4\", check.message, refs);\n          }\n          if (check.version !== \"v4\") {\n            addFormat(res, \"ipv6\", check.message, refs);\n          }\n          break;\n        }\n        case \"base64url\":\n          addPattern(res, zodPatterns.base64url, check.message, refs);\n          break;\n        case \"jwt\":\n          addPattern(res, zodPatterns.jwt, check.message, refs);\n          break;\n        case \"cidr\": {\n          if (check.version !== \"v6\") {\n            addPattern(res, zodPatterns.ipv4Cidr, check.message, refs);\n          }\n          if (check.version !== \"v4\") {\n            addPattern(res, zodPatterns.ipv6Cidr, check.message, refs);\n          }\n          break;\n        }\n        case \"emoji\":\n          addPattern(res, zodPatterns.emoji(), check.message, refs);\n          break;\n        case \"ulid\": {\n          addPattern(res, zodPatterns.ulid, check.message, refs);\n          break;\n        }\n        case \"base64\": {\n          switch (refs.base64Strategy) {\n            case \"format:binary\": {\n              addFormat(res, \"binary\", check.message, refs);\n              break;\n            }\n            case \"contentEncoding:base64\": {\n              res.contentEncoding = \"base64\";\n              break;\n            }\n            case \"pattern:zod\": {\n              addPattern(res, zodPatterns.base64, check.message, refs);\n              break;\n            }\n          }\n          break;\n        }\n        case \"nanoid\": {\n          addPattern(res, zodPatterns.nanoid, check.message, refs);\n        }\n        case \"toLowerCase\":\n        case \"toUpperCase\":\n        case \"trim\":\n          break;\n        default:\n          /* @__PURE__ */ ((_) => {\n          })(check);\n      }\n    }\n  }\n  return res;\n}\nfunction escapeLiteralCheckValue(literal, refs) {\n  return refs.patternStrategy === \"escape\" ? escapeNonAlphaNumeric(literal) : literal;\n}\nvar ALPHA_NUMERIC = new Set(\n  \"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789\"\n);\nfunction escapeNonAlphaNumeric(source) {\n  let result = \"\";\n  for (let i = 0; i < source.length; i++) {\n    if (!ALPHA_NUMERIC.has(source[i])) {\n      result += \"\\\\\";\n    }\n    result += source[i];\n  }\n  return result;\n}\nfunction addFormat(schema, value, message, refs) {\n  var _a2;\n  if (schema.format || ((_a2 = schema.anyOf) == null ? void 0 : _a2.some((x) => x.format))) {\n    if (!schema.anyOf) {\n      schema.anyOf = [];\n    }\n    if (schema.format) {\n      schema.anyOf.push({\n        format: schema.format\n      });\n      delete schema.format;\n    }\n    schema.anyOf.push({\n      format: value,\n      ...message && refs.errorMessages && { errorMessage: { format: message } }\n    });\n  } else {\n    schema.format = value;\n  }\n}\nfunction addPattern(schema, regex, message, refs) {\n  var _a2;\n  if (schema.pattern || ((_a2 = schema.allOf) == null ? void 0 : _a2.some((x) => x.pattern))) {\n    if (!schema.allOf) {\n      schema.allOf = [];\n    }\n    if (schema.pattern) {\n      schema.allOf.push({\n        pattern: schema.pattern\n      });\n      delete schema.pattern;\n    }\n    schema.allOf.push({\n      pattern: stringifyRegExpWithFlags(regex, refs),\n      ...message && refs.errorMessages && { errorMessage: { pattern: message } }\n    });\n  } else {\n    schema.pattern = stringifyRegExpWithFlags(regex, refs);\n  }\n}\nfunction stringifyRegExpWithFlags(regex, refs) {\n  var _a2;\n  if (!refs.applyRegexFlags || !regex.flags) {\n    return regex.source;\n  }\n  const flags = {\n    i: regex.flags.includes(\"i\"),\n    // Case-insensitive\n    m: regex.flags.includes(\"m\"),\n    // `^` and `$` matches adjacent to newline characters\n    s: regex.flags.includes(\"s\")\n    // `.` matches newlines\n  };\n  const source = flags.i ? regex.source.toLowerCase() : regex.source;\n  let pattern = \"\";\n  let isEscaped = false;\n  let inCharGroup = false;\n  let inCharRange = false;\n  for (let i = 0; i < source.length; i++) {\n    if (isEscaped) {\n      pattern += source[i];\n      isEscaped = false;\n      continue;\n    }\n    if (flags.i) {\n      if (inCharGroup) {\n        if (source[i].match(/[a-z]/)) {\n          if (inCharRange) {\n            pattern += source[i];\n            pattern += `${source[i - 2]}-${source[i]}`.toUpperCase();\n            inCharRange = false;\n          } else if (source[i + 1] === \"-\" && ((_a2 = source[i + 2]) == null ? void 0 : _a2.match(/[a-z]/))) {\n            pattern += source[i];\n            inCharRange = true;\n          } else {\n            pattern += `${source[i]}${source[i].toUpperCase()}`;\n          }\n          continue;\n        }\n      } else if (source[i].match(/[a-z]/)) {\n        pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n        continue;\n      }\n    }\n    if (flags.m) {\n      if (source[i] === \"^\") {\n        pattern += `(^|(?<=[\\r\n]))`;\n        continue;\n      } else if (source[i] === \"$\") {\n        pattern += `($|(?=[\\r\n]))`;\n        continue;\n      }\n    }\n    if (flags.s && source[i] === \".\") {\n      pattern += inCharGroup ? `${source[i]}\\r\n` : `[${source[i]}\\r\n]`;\n      continue;\n    }\n    pattern += source[i];\n    if (source[i] === \"\\\\\") {\n      isEscaped = true;\n    } else if (inCharGroup && source[i] === \"]\") {\n      inCharGroup = false;\n    } else if (!inCharGroup && source[i] === \"[\") {\n      inCharGroup = true;\n    }\n  }\n  try {\n    new RegExp(pattern);\n  } catch (e) {\n    console.warn(\n      `Could not convert regex pattern at ${refs.currentPath.join(\n        \"/\"\n      )} to a flag-independent form! Falling back to the flag-ignorant source`\n    );\n    return regex.source;\n  }\n  return pattern;\n}\n\n// src/zod-to-json-schema/parsers/record.ts\nfunction parseRecordDef(def, refs) {\n  var _a2, _b2, _c, _d, _e, _f;\n  const schema = {\n    type: \"object\",\n    additionalProperties: (_a2 = parseDef(def.valueType._def, {\n      ...refs,\n      currentPath: [...refs.currentPath, \"additionalProperties\"]\n    })) != null ? _a2 : refs.allowedAdditionalProperties\n  };\n  if (((_b2 = def.keyType) == null ? void 0 : _b2._def.typeName) === ZodFirstPartyTypeKind2.ZodString && ((_c = def.keyType._def.checks) == null ? void 0 : _c.length)) {\n    const { type, ...keyType } = parseStringDef(def.keyType._def, refs);\n    return {\n      ...schema,\n      propertyNames: keyType\n    };\n  } else if (((_d = def.keyType) == null ? void 0 : _d._def.typeName) === ZodFirstPartyTypeKind2.ZodEnum) {\n    return {\n      ...schema,\n      propertyNames: {\n        enum: def.keyType._def.values\n      }\n    };\n  } else if (((_e = def.keyType) == null ? void 0 : _e._def.typeName) === ZodFirstPartyTypeKind2.ZodBranded && def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind2.ZodString && ((_f = def.keyType._def.type._def.checks) == null ? void 0 : _f.length)) {\n    const { type, ...keyType } = parseBrandedDef(\n      def.keyType._def,\n      refs\n    );\n    return {\n      ...schema,\n      propertyNames: keyType\n    };\n  }\n  return schema;\n}\n\n// src/zod-to-json-schema/parsers/map.ts\nfunction parseMapDef(def, refs) {\n  if (refs.mapStrategy === \"record\") {\n    return parseRecordDef(def, refs);\n  }\n  const keys = parseDef(def.keyType._def, {\n    ...refs,\n    currentPath: [...refs.currentPath, \"items\", \"items\", \"0\"]\n  }) || parseAnyDef();\n  const values = parseDef(def.valueType._def, {\n    ...refs,\n    currentPath: [...refs.currentPath, \"items\", \"items\", \"1\"]\n  }) || parseAnyDef();\n  return {\n    type: \"array\",\n    maxItems: 125,\n    items: {\n      type: \"array\",\n      items: [keys, values],\n      minItems: 2,\n      maxItems: 2\n    }\n  };\n}\n\n// src/zod-to-json-schema/parsers/native-enum.ts\nfunction parseNativeEnumDef(def) {\n  const object = def.values;\n  const actualKeys = Object.keys(def.values).filter((key) => {\n    return typeof object[object[key]] !== \"number\";\n  });\n  const actualValues = actualKeys.map((key) => object[key]);\n  const parsedTypes = Array.from(\n    new Set(actualValues.map((values) => typeof values))\n  );\n  return {\n    type: parsedTypes.length === 1 ? parsedTypes[0] === \"string\" ? \"string\" : \"number\" : [\"string\", \"number\"],\n    enum: actualValues\n  };\n}\n\n// src/zod-to-json-schema/parsers/never.ts\nfunction parseNeverDef() {\n  return { not: parseAnyDef() };\n}\n\n// src/zod-to-json-schema/parsers/null.ts\nfunction parseNullDef() {\n  return {\n    type: \"null\"\n  };\n}\n\n// src/zod-to-json-schema/parsers/union.ts\nvar primitiveMappings = {\n  ZodString: \"string\",\n  ZodNumber: \"number\",\n  ZodBigInt: \"integer\",\n  ZodBoolean: \"boolean\",\n  ZodNull: \"null\"\n};\nfunction parseUnionDef(def, refs) {\n  const options = def.options instanceof Map ? Array.from(def.options.values()) : def.options;\n  if (options.every(\n    (x) => x._def.typeName in primitiveMappings && (!x._def.checks || !x._def.checks.length)\n  )) {\n    const types = options.reduce((types2, x) => {\n      const type = primitiveMappings[x._def.typeName];\n      return type && !types2.includes(type) ? [...types2, type] : types2;\n    }, []);\n    return {\n      type: types.length > 1 ? types : types[0]\n    };\n  } else if (options.every((x) => x._def.typeName === \"ZodLiteral\" && !x.description)) {\n    const types = options.reduce(\n      (acc, x) => {\n        const type = typeof x._def.value;\n        switch (type) {\n          case \"string\":\n          case \"number\":\n          case \"boolean\":\n            return [...acc, type];\n          case \"bigint\":\n            return [...acc, \"integer\"];\n          case \"object\":\n            if (x._def.value === null) return [...acc, \"null\"];\n          case \"symbol\":\n          case \"undefined\":\n          case \"function\":\n          default:\n            return acc;\n        }\n      },\n      []\n    );\n    if (types.length === options.length) {\n      const uniqueTypes = types.filter((x, i, a) => a.indexOf(x) === i);\n      return {\n        type: uniqueTypes.length > 1 ? uniqueTypes : uniqueTypes[0],\n        enum: options.reduce(\n          (acc, x) => {\n            return acc.includes(x._def.value) ? acc : [...acc, x._def.value];\n          },\n          []\n        )\n      };\n    }\n  } else if (options.every((x) => x._def.typeName === \"ZodEnum\")) {\n    return {\n      type: \"string\",\n      enum: options.reduce(\n        (acc, x) => [\n          ...acc,\n          ...x._def.values.filter((x2) => !acc.includes(x2))\n        ],\n        []\n      )\n    };\n  }\n  return asAnyOf(def, refs);\n}\nvar asAnyOf = (def, refs) => {\n  const anyOf = (def.options instanceof Map ? Array.from(def.options.values()) : def.options).map(\n    (x, i) => parseDef(x._def, {\n      ...refs,\n      currentPath: [...refs.currentPath, \"anyOf\", `${i}`]\n    })\n  ).filter(\n    (x) => !!x && (!refs.strictUnions || typeof x === \"object\" && Object.keys(x).length > 0)\n  );\n  return anyOf.length ? { anyOf } : void 0;\n};\n\n// src/zod-to-json-schema/parsers/nullable.ts\nfunction parseNullableDef(def, refs) {\n  if ([\"ZodString\", \"ZodNumber\", \"ZodBigInt\", \"ZodBoolean\", \"ZodNull\"].includes(\n    def.innerType._def.typeName\n  ) && (!def.innerType._def.checks || !def.innerType._def.checks.length)) {\n    return {\n      type: [\n        primitiveMappings[def.innerType._def.typeName],\n        \"null\"\n      ]\n    };\n  }\n  const base = parseDef(def.innerType._def, {\n    ...refs,\n    currentPath: [...refs.currentPath, \"anyOf\", \"0\"]\n  });\n  return base && { anyOf: [base, { type: \"null\" }] };\n}\n\n// src/zod-to-json-schema/parsers/number.ts\nfunction parseNumberDef(def) {\n  const res = {\n    type: \"number\"\n  };\n  if (!def.checks) return res;\n  for (const check of def.checks) {\n    switch (check.kind) {\n      case \"int\":\n        res.type = \"integer\";\n        break;\n      case \"min\":\n        if (check.inclusive) {\n          res.minimum = check.value;\n        } else {\n          res.exclusiveMinimum = check.value;\n        }\n        break;\n      case \"max\":\n        if (check.inclusive) {\n          res.maximum = check.value;\n        } else {\n          res.exclusiveMaximum = check.value;\n        }\n        break;\n      case \"multipleOf\":\n        res.multipleOf = check.value;\n        break;\n    }\n  }\n  return res;\n}\n\n// src/zod-to-json-schema/parsers/object.ts\nfunction parseObjectDef(def, refs) {\n  const result = {\n    type: \"object\",\n    properties: {}\n  };\n  const required = [];\n  const shape = def.shape();\n  for (const propName in shape) {\n    let propDef = shape[propName];\n    if (propDef === void 0 || propDef._def === void 0) {\n      continue;\n    }\n    const propOptional = safeIsOptional(propDef);\n    const parsedDef = parseDef(propDef._def, {\n      ...refs,\n      currentPath: [...refs.currentPath, \"properties\", propName],\n      propertyPath: [...refs.currentPath, \"properties\", propName]\n    });\n    if (parsedDef === void 0) {\n      continue;\n    }\n    result.properties[propName] = parsedDef;\n    if (!propOptional) {\n      required.push(propName);\n    }\n  }\n  if (required.length) {\n    result.required = required;\n  }\n  const additionalProperties = decideAdditionalProperties(def, refs);\n  if (additionalProperties !== void 0) {\n    result.additionalProperties = additionalProperties;\n  }\n  return result;\n}\nfunction decideAdditionalProperties(def, refs) {\n  if (def.catchall._def.typeName !== \"ZodNever\") {\n    return parseDef(def.catchall._def, {\n      ...refs,\n      currentPath: [...refs.currentPath, \"additionalProperties\"]\n    });\n  }\n  switch (def.unknownKeys) {\n    case \"passthrough\":\n      return refs.allowedAdditionalProperties;\n    case \"strict\":\n      return refs.rejectedAdditionalProperties;\n    case \"strip\":\n      return refs.removeAdditionalStrategy === \"strict\" ? refs.allowedAdditionalProperties : refs.rejectedAdditionalProperties;\n  }\n}\nfunction safeIsOptional(schema) {\n  try {\n    return schema.isOptional();\n  } catch (e) {\n    return true;\n  }\n}\n\n// src/zod-to-json-schema/parsers/optional.ts\nvar parseOptionalDef = (def, refs) => {\n  var _a2;\n  if (refs.currentPath.toString() === ((_a2 = refs.propertyPath) == null ? void 0 : _a2.toString())) {\n    return parseDef(def.innerType._def, refs);\n  }\n  const innerSchema = parseDef(def.innerType._def, {\n    ...refs,\n    currentPath: [...refs.currentPath, \"anyOf\", \"1\"]\n  });\n  return innerSchema ? { anyOf: [{ not: parseAnyDef() }, innerSchema] } : parseAnyDef();\n};\n\n// src/zod-to-json-schema/parsers/pipeline.ts\nvar parsePipelineDef = (def, refs) => {\n  if (refs.pipeStrategy === \"input\") {\n    return parseDef(def.in._def, refs);\n  } else if (refs.pipeStrategy === \"output\") {\n    return parseDef(def.out._def, refs);\n  }\n  const a = parseDef(def.in._def, {\n    ...refs,\n    currentPath: [...refs.currentPath, \"allOf\", \"0\"]\n  });\n  const b = parseDef(def.out._def, {\n    ...refs,\n    currentPath: [...refs.currentPath, \"allOf\", a ? \"1\" : \"0\"]\n  });\n  return {\n    allOf: [a, b].filter((x) => x !== void 0)\n  };\n};\n\n// src/zod-to-json-schema/parsers/promise.ts\nfunction parsePromiseDef(def, refs) {\n  return parseDef(def.type._def, refs);\n}\n\n// src/zod-to-json-schema/parsers/set.ts\nfunction parseSetDef(def, refs) {\n  const items = parseDef(def.valueType._def, {\n    ...refs,\n    currentPath: [...refs.currentPath, \"items\"]\n  });\n  const schema = {\n    type: \"array\",\n    uniqueItems: true,\n    items\n  };\n  if (def.minSize) {\n    schema.minItems = def.minSize.value;\n  }\n  if (def.maxSize) {\n    schema.maxItems = def.maxSize.value;\n  }\n  return schema;\n}\n\n// src/zod-to-json-schema/parsers/tuple.ts\nfunction parseTupleDef(def, refs) {\n  if (def.rest) {\n    return {\n      type: \"array\",\n      minItems: def.items.length,\n      items: def.items.map(\n        (x, i) => parseDef(x._def, {\n          ...refs,\n          currentPath: [...refs.currentPath, \"items\", `${i}`]\n        })\n      ).reduce(\n        (acc, x) => x === void 0 ? acc : [...acc, x],\n        []\n      ),\n      additionalItems: parseDef(def.rest._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, \"additionalItems\"]\n      })\n    };\n  } else {\n    return {\n      type: \"array\",\n      minItems: def.items.length,\n      maxItems: def.items.length,\n      items: def.items.map(\n        (x, i) => parseDef(x._def, {\n          ...refs,\n          currentPath: [...refs.currentPath, \"items\", `${i}`]\n        })\n      ).reduce(\n        (acc, x) => x === void 0 ? acc : [...acc, x],\n        []\n      )\n    };\n  }\n}\n\n// src/zod-to-json-schema/parsers/undefined.ts\nfunction parseUndefinedDef() {\n  return {\n    not: parseAnyDef()\n  };\n}\n\n// src/zod-to-json-schema/parsers/unknown.ts\nfunction parseUnknownDef() {\n  return parseAnyDef();\n}\n\n// src/zod-to-json-schema/parsers/readonly.ts\nvar parseReadonlyDef = (def, refs) => {\n  return parseDef(def.innerType._def, refs);\n};\n\n// src/zod-to-json-schema/select-parser.ts\nvar selectParser = (def, typeName, refs) => {\n  switch (typeName) {\n    case ZodFirstPartyTypeKind3.ZodString:\n      return parseStringDef(def, refs);\n    case ZodFirstPartyTypeKind3.ZodNumber:\n      return parseNumberDef(def);\n    case ZodFirstPartyTypeKind3.ZodObject:\n      return parseObjectDef(def, refs);\n    case ZodFirstPartyTypeKind3.ZodBigInt:\n      return parseBigintDef(def);\n    case ZodFirstPartyTypeKind3.ZodBoolean:\n      return parseBooleanDef();\n    case ZodFirstPartyTypeKind3.ZodDate:\n      return parseDateDef(def, refs);\n    case ZodFirstPartyTypeKind3.ZodUndefined:\n      return parseUndefinedDef();\n    case ZodFirstPartyTypeKind3.ZodNull:\n      return parseNullDef();\n    case ZodFirstPartyTypeKind3.ZodArray:\n      return parseArrayDef(def, refs);\n    case ZodFirstPartyTypeKind3.ZodUnion:\n    case ZodFirstPartyTypeKind3.ZodDiscriminatedUnion:\n      return parseUnionDef(def, refs);\n    case ZodFirstPartyTypeKind3.ZodIntersection:\n      return parseIntersectionDef(def, refs);\n    case ZodFirstPartyTypeKind3.ZodTuple:\n      return parseTupleDef(def, refs);\n    case ZodFirstPartyTypeKind3.ZodRecord:\n      return parseRecordDef(def, refs);\n    case ZodFirstPartyTypeKind3.ZodLiteral:\n      return parseLiteralDef(def);\n    case ZodFirstPartyTypeKind3.ZodEnum:\n      return parseEnumDef(def);\n    case ZodFirstPartyTypeKind3.ZodNativeEnum:\n      return parseNativeEnumDef(def);\n    case ZodFirstPartyTypeKind3.ZodNullable:\n      return parseNullableDef(def, refs);\n    case ZodFirstPartyTypeKind3.ZodOptional:\n      return parseOptionalDef(def, refs);\n    case ZodFirstPartyTypeKind3.ZodMap:\n      return parseMapDef(def, refs);\n    case ZodFirstPartyTypeKind3.ZodSet:\n      return parseSetDef(def, refs);\n    case ZodFirstPartyTypeKind3.ZodLazy:\n      return () => def.getter()._def;\n    case ZodFirstPartyTypeKind3.ZodPromise:\n      return parsePromiseDef(def, refs);\n    case ZodFirstPartyTypeKind3.ZodNaN:\n    case ZodFirstPartyTypeKind3.ZodNever:\n      return parseNeverDef();\n    case ZodFirstPartyTypeKind3.ZodEffects:\n      return parseEffectsDef(def, refs);\n    case ZodFirstPartyTypeKind3.ZodAny:\n      return parseAnyDef();\n    case ZodFirstPartyTypeKind3.ZodUnknown:\n      return parseUnknownDef();\n    case ZodFirstPartyTypeKind3.ZodDefault:\n      return parseDefaultDef(def, refs);\n    case ZodFirstPartyTypeKind3.ZodBranded:\n      return parseBrandedDef(def, refs);\n    case ZodFirstPartyTypeKind3.ZodReadonly:\n      return parseReadonlyDef(def, refs);\n    case ZodFirstPartyTypeKind3.ZodCatch:\n      return parseCatchDef(def, refs);\n    case ZodFirstPartyTypeKind3.ZodPipeline:\n      return parsePipelineDef(def, refs);\n    case ZodFirstPartyTypeKind3.ZodFunction:\n    case ZodFirstPartyTypeKind3.ZodVoid:\n    case ZodFirstPartyTypeKind3.ZodSymbol:\n      return void 0;\n    default:\n      return /* @__PURE__ */ ((_) => void 0)(typeName);\n  }\n};\n\n// src/zod-to-json-schema/get-relative-path.ts\nvar getRelativePath = (pathA, pathB) => {\n  let i = 0;\n  for (; i < pathA.length && i < pathB.length; i++) {\n    if (pathA[i] !== pathB[i]) break;\n  }\n  return [(pathA.length - i).toString(), ...pathB.slice(i)].join(\"/\");\n};\n\n// src/zod-to-json-schema/parse-def.ts\nfunction parseDef(def, refs, forceResolution = false) {\n  var _a2;\n  const seenItem = refs.seen.get(def);\n  if (refs.override) {\n    const overrideResult = (_a2 = refs.override) == null ? void 0 : _a2.call(\n      refs,\n      def,\n      refs,\n      seenItem,\n      forceResolution\n    );\n    if (overrideResult !== ignoreOverride) {\n      return overrideResult;\n    }\n  }\n  if (seenItem && !forceResolution) {\n    const seenSchema = get$ref(seenItem, refs);\n    if (seenSchema !== void 0) {\n      return seenSchema;\n    }\n  }\n  const newItem = { def, path: refs.currentPath, jsonSchema: void 0 };\n  refs.seen.set(def, newItem);\n  const jsonSchemaOrGetter = selectParser(def, def.typeName, refs);\n  const jsonSchema2 = typeof jsonSchemaOrGetter === \"function\" ? parseDef(jsonSchemaOrGetter(), refs) : jsonSchemaOrGetter;\n  if (jsonSchema2) {\n    addMeta(def, refs, jsonSchema2);\n  }\n  if (refs.postProcess) {\n    const postProcessResult = refs.postProcess(jsonSchema2, def, refs);\n    newItem.jsonSchema = jsonSchema2;\n    return postProcessResult;\n  }\n  newItem.jsonSchema = jsonSchema2;\n  return jsonSchema2;\n}\nvar get$ref = (item, refs) => {\n  switch (refs.$refStrategy) {\n    case \"root\":\n      return { $ref: item.path.join(\"/\") };\n    case \"relative\":\n      return { $ref: getRelativePath(refs.currentPath, item.path) };\n    case \"none\":\n    case \"seen\": {\n      if (item.path.length < refs.currentPath.length && item.path.every((value, index) => refs.currentPath[index] === value)) {\n        console.warn(\n          `Recursive reference detected at ${refs.currentPath.join(\n            \"/\"\n          )}! Defaulting to any`\n        );\n        return parseAnyDef();\n      }\n      return refs.$refStrategy === \"seen\" ? parseAnyDef() : void 0;\n    }\n  }\n};\nvar addMeta = (def, refs, jsonSchema2) => {\n  if (def.description) {\n    jsonSchema2.description = def.description;\n  }\n  return jsonSchema2;\n};\n\n// src/zod-to-json-schema/refs.ts\nvar getRefs = (options) => {\n  const _options = getDefaultOptions(options);\n  const currentPath = _options.name !== void 0 ? [..._options.basePath, _options.definitionPath, _options.name] : _options.basePath;\n  return {\n    ..._options,\n    currentPath,\n    propertyPath: void 0,\n    seen: new Map(\n      Object.entries(_options.definitions).map(([name2, def]) => [\n        def._def,\n        {\n          def: def._def,\n          path: [..._options.basePath, _options.definitionPath, name2],\n          // Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now.\n          jsonSchema: void 0\n        }\n      ])\n    )\n  };\n};\n\n// src/zod-to-json-schema/zod-to-json-schema.ts\nvar zodToJsonSchema = (schema, options) => {\n  var _a2;\n  const refs = getRefs(options);\n  let definitions = typeof options === \"object\" && options.definitions ? Object.entries(options.definitions).reduce(\n    (acc, [name3, schema2]) => {\n      var _a3;\n      return {\n        ...acc,\n        [name3]: (_a3 = parseDef(\n          schema2._def,\n          {\n            ...refs,\n            currentPath: [...refs.basePath, refs.definitionPath, name3]\n          },\n          true\n        )) != null ? _a3 : parseAnyDef()\n      };\n    },\n    {}\n  ) : void 0;\n  const name2 = typeof options === \"string\" ? options : (options == null ? void 0 : options.nameStrategy) === \"title\" ? void 0 : options == null ? void 0 : options.name;\n  const main = (_a2 = parseDef(\n    schema._def,\n    name2 === void 0 ? refs : {\n      ...refs,\n      currentPath: [...refs.basePath, refs.definitionPath, name2]\n    },\n    false\n  )) != null ? _a2 : parseAnyDef();\n  const title = typeof options === \"object\" && options.name !== void 0 && options.nameStrategy === \"title\" ? options.name : void 0;\n  if (title !== void 0) {\n    main.title = title;\n  }\n  const combined = name2 === void 0 ? definitions ? {\n    ...main,\n    [refs.definitionPath]: definitions\n  } : main : {\n    $ref: [\n      ...refs.$refStrategy === \"relative\" ? [] : refs.basePath,\n      refs.definitionPath,\n      name2\n    ].join(\"/\"),\n    [refs.definitionPath]: {\n      ...definitions,\n      [name2]: main\n    }\n  };\n  combined.$schema = \"http://json-schema.org/draft-07/schema#\";\n  return combined;\n};\n\n// src/zod-to-json-schema/index.ts\nvar zod_to_json_schema_default = zodToJsonSchema;\n\n// src/zod-schema.ts\nfunction zod3Schema(zodSchema2, options) {\n  var _a2;\n  const useReferences = (_a2 = options == null ? void 0 : options.useReferences) != null ? _a2 : false;\n  return jsonSchema(\n    // defer json schema creation to avoid unnecessary computation when only validation is needed\n    () => zod_to_json_schema_default(zodSchema2, {\n      $refStrategy: useReferences ? \"root\" : \"none\"\n    }),\n    {\n      validate: async (value) => {\n        const result = await zodSchema2.safeParseAsync(value);\n        return result.success ? { success: true, value: result.data } : { success: false, error: result.error };\n      }\n    }\n  );\n}\nfunction zod4Schema(zodSchema2, options) {\n  var _a2;\n  const useReferences = (_a2 = options == null ? void 0 : options.useReferences) != null ? _a2 : false;\n  return jsonSchema(\n    // defer json schema creation to avoid unnecessary computation when only validation is needed\n    () => addAdditionalPropertiesToJsonSchema(\n      z4.toJSONSchema(zodSchema2, {\n        target: \"draft-7\",\n        io: \"input\",\n        reused: useReferences ? \"ref\" : \"inline\"\n      })\n    ),\n    {\n      validate: async (value) => {\n        const result = await z4.safeParseAsync(zodSchema2, value);\n        return result.success ? { success: true, value: result.data } : { success: false, error: result.error };\n      }\n    }\n  );\n}\nfunction isZod4Schema(zodSchema2) {\n  return \"_zod\" in zodSchema2;\n}\nfunction zodSchema(zodSchema2, options) {\n  if (isZod4Schema(zodSchema2)) {\n    return zod4Schema(zodSchema2, options);\n  } else {\n    return zod3Schema(zodSchema2, options);\n  }\n}\n\n// src/as-schema.ts\nfunction isSchema(value) {\n  return typeof value === \"object\" && value !== null && schemaSymbol in value && value[schemaSymbol] === true && \"jsonSchema\" in value && \"validate\" in value;\n}\nfunction asSchema(schema) {\n  return schema == null ? jsonSchema({\n    properties: {},\n    additionalProperties: false\n  }) : isSchema(schema) ? schema : typeof schema === \"function\" ? schema() : zodSchema(schema);\n}\n\n// src/uint8-utils.ts\nvar { btoa, atob } = globalThis;\nfunction convertBase64ToUint8Array(base64String) {\n  const base64Url = base64String.replace(/-/g, \"+\").replace(/_/g, \"/\");\n  const latin1string = atob(base64Url);\n  return Uint8Array.from(latin1string, (byte) => byte.codePointAt(0));\n}\nfunction convertUint8ArrayToBase64(array) {\n  let latin1string = \"\";\n  for (let i = 0; i < array.length; i++) {\n    latin1string += String.fromCodePoint(array[i]);\n  }\n  return btoa(latin1string);\n}\nfunction convertToBase64(value) {\n  return value instanceof Uint8Array ? convertUint8ArrayToBase64(value) : value;\n}\n\n// src/without-trailing-slash.ts\nfunction withoutTrailingSlash(url) {\n  return url == null ? void 0 : url.replace(/\\/$/, \"\");\n}\n\n// src/is-async-iterable.ts\nfunction isAsyncIterable(obj) {\n  return obj != null && typeof obj[Symbol.asyncIterator] === \"function\";\n}\n\n// src/types/execute-tool.ts\nasync function* executeTool({\n  execute,\n  input,\n  options\n}) {\n  const result = execute(input, options);\n  if (isAsyncIterable(result)) {\n    let lastOutput;\n    for await (const output of result) {\n      lastOutput = output;\n      yield { type: \"preliminary\", output };\n    }\n    yield { type: \"final\", output: lastOutput };\n  } else {\n    yield { type: \"final\", output: await result };\n  }\n}\n\n// src/index.ts\nexport * from \"@standard-schema/spec\";\nimport {\n  EventSourceParserStream as EventSourceParserStream2\n} from \"eventsource-parser/stream\";\nexport {\n  DEFAULT_MAX_DOWNLOAD_SIZE,\n  DelayedPromise,\n  DownloadError,\n  EventSourceParserStream2 as EventSourceParserStream,\n  VERSION,\n  asSchema,\n  asValidator,\n  cancelResponseBody,\n  combineHeaders,\n  convertAsyncIteratorToReadableStream,\n  convertBase64ToUint8Array,\n  convertToBase64,\n  convertUint8ArrayToBase64,\n  createBinaryResponseHandler,\n  createEventSourceResponseHandler,\n  createIdGenerator,\n  createJsonErrorResponseHandler,\n  createJsonResponseHandler,\n  createJsonStreamResponseHandler,\n  createProviderDefinedToolFactory,\n  createProviderDefinedToolFactoryWithOutputSchema,\n  createStatusCodeErrorResponseHandler,\n  delay,\n  dynamicTool,\n  executeTool,\n  extractResponseHeaders,\n  fetchWithValidatedRedirects,\n  generateId,\n  getErrorMessage,\n  getFromApi,\n  getRuntimeEnvironmentUserAgent,\n  injectJsonInstructionIntoMessages,\n  isAbortError,\n  isBrowserRuntime,\n  isParsableJson,\n  isSameOrigin,\n  isUrlSupported,\n  isValidator,\n  jsonSchema,\n  lazySchema,\n  lazyValidator,\n  loadApiKey,\n  loadOptionalSetting,\n  loadSetting,\n  mediaTypeToExtension,\n  normalizeHeaders,\n  parseJSON,\n  parseJsonEventStream,\n  parseProviderOptions,\n  postFormDataToApi,\n  postJsonToApi,\n  postToApi,\n  readResponseWithSizeLimit,\n  removeUndefinedEntries,\n  resolve,\n  safeParseJSON,\n  safeValidateTypes,\n  standardSchemaValidator,\n  tool,\n  validateDownloadUrl,\n  validateTypes,\n  validator,\n  withUserAgentSuffix,\n  withoutTrailingSlash,\n  zodSchema\n};\n//# sourceMappingURL=index.mjs.map","// src/chat/openai-chat-language-model.ts\nimport {\n  InvalidResponseDataError\n} from \"@ai-sdk/provider\";\nimport {\n  combineHeaders,\n  createEventSourceResponseHandler,\n  createJsonResponseHandler,\n  generateId,\n  isParsableJson,\n  parseProviderOptions,\n  postJsonToApi\n} from \"@ai-sdk/provider-utils\";\n\n// src/openai-error.ts\nimport { z } from \"zod/v4\";\nimport { createJsonErrorResponseHandler } from \"@ai-sdk/provider-utils\";\nvar openaiErrorDataSchema = z.object({\n  error: z.object({\n    message: z.string(),\n    // The additional information below is handled loosely to support\n    // OpenAI-compatible providers that have slightly different error\n    // responses:\n    type: z.string().nullish(),\n    param: z.any().nullish(),\n    code: z.union([z.string(), z.number()]).nullish()\n  })\n});\nvar openaiFailedResponseHandler = createJsonErrorResponseHandler({\n  errorSchema: openaiErrorDataSchema,\n  errorToMessage: (data) => data.error.message\n});\n\n// src/openai-language-model-capabilities.ts\nfunction getOpenAILanguageModelCapabilities(modelId) {\n  var _a, _b, _c, _d, _e;\n  const oSeriesVersion = getOSeriesVersion(modelId);\n  const gptVersion = getGptVersion(modelId);\n  const isGptChatModel = (gptVersion == null ? void 0 : gptVersion.minor) == null && ((_b = (_a = gptVersion == null ? void 0 : gptVersion.variant) == null ? void 0 : _a.startsWith(\"chat\")) != null ? _b : false);\n  const isGptNanoModel = (_d = (_c = gptVersion == null ? void 0 : gptVersion.variant) == null ? void 0 : _c.startsWith(\"nano\")) != null ? _d : false;\n  const supportsFlexProcessing = oSeriesVersion != null && oSeriesVersion >= 3 || gptVersion != null && gptVersion.major >= 5 && !isGptChatModel;\n  const supportsPriorityProcessing = modelId.startsWith(\"gpt-4\") || gptVersion != null && gptVersion.major >= 5 && !isGptNanoModel && !isGptChatModel || oSeriesVersion != null && oSeriesVersion >= 3;\n  const isReasoningModel = oSeriesVersion != null || gptVersion != null && gptVersion.major >= 5 && !isGptChatModel || modelId === \"codex-mini-latest\" || modelId === \"computer-use-preview\";\n  const supportsNonReasoningParameters = gptVersion != null && (gptVersion.major > 5 || gptVersion.major === 5 && ((_e = gptVersion.minor) != null ? _e : 0) >= 1);\n  const systemMessageMode = isReasoningModel ? \"developer\" : \"system\";\n  return {\n    supportsFlexProcessing,\n    supportsPriorityProcessing,\n    isReasoningModel,\n    systemMessageMode,\n    supportsNonReasoningParameters\n  };\n}\nfunction getOSeriesVersion(modelId) {\n  const match = /^o(\\d+)(?:-|$)/.exec(modelId);\n  return match == null ? void 0 : Number(match[1]);\n}\nfunction getGptVersion(modelId) {\n  const match = /^gpt-(\\d+)(?:\\.(\\d+))?(?:-(.+))?$/.exec(modelId);\n  if (match == null) {\n    return void 0;\n  }\n  return {\n    major: Number(match[1]),\n    minor: match[2] == null ? void 0 : Number(match[2]),\n    variant: match[3]\n  };\n}\n\n// src/chat/convert-to-openai-chat-messages.ts\nimport {\n  UnsupportedFunctionalityError\n} from \"@ai-sdk/provider\";\nimport { convertToBase64 } from \"@ai-sdk/provider-utils\";\nfunction getPromptCacheBreakpoint(providerOptions) {\n  var _a;\n  return (_a = providerOptions == null ? void 0 : providerOptions.openai) == null ? void 0 : _a.promptCacheBreakpoint;\n}\nfunction convertToOpenAIChatMessages({\n  prompt,\n  systemMessageMode = \"system\"\n}) {\n  const messages = [];\n  const warnings = [];\n  for (const { role, content, providerOptions } of prompt) {\n    switch (role) {\n      case \"system\": {\n        switch (systemMessageMode) {\n          case \"system\": {\n            const promptCacheBreakpoint = getPromptCacheBreakpoint(providerOptions);\n            messages.push({\n              role: \"system\",\n              content: promptCacheBreakpoint == null ? content : [\n                {\n                  type: \"text\",\n                  text: content,\n                  prompt_cache_breakpoint: promptCacheBreakpoint\n                }\n              ]\n            });\n            break;\n          }\n          case \"developer\": {\n            const promptCacheBreakpoint = getPromptCacheBreakpoint(providerOptions);\n            messages.push({\n              role: \"developer\",\n              content: promptCacheBreakpoint == null ? content : [\n                {\n                  type: \"text\",\n                  text: content,\n                  prompt_cache_breakpoint: promptCacheBreakpoint\n                }\n              ]\n            });\n            break;\n          }\n          case \"remove\": {\n            warnings.push({\n              type: \"other\",\n              message: \"system messages are removed for this model\"\n            });\n            break;\n          }\n          default: {\n            const _exhaustiveCheck = systemMessageMode;\n            throw new Error(\n              `Unsupported system message mode: ${_exhaustiveCheck}`\n            );\n          }\n        }\n        break;\n      }\n      case \"user\": {\n        if (content.length === 1 && content[0].type === \"text\" && getPromptCacheBreakpoint(content[0].providerOptions) == null) {\n          messages.push({ role: \"user\", content: content[0].text });\n          break;\n        }\n        messages.push({\n          role: \"user\",\n          content: content.map((part, index) => {\n            var _a, _b, _c;\n            switch (part.type) {\n              case \"text\": {\n                const promptCacheBreakpoint = getPromptCacheBreakpoint(\n                  part.providerOptions\n                );\n                return {\n                  type: \"text\",\n                  text: part.text,\n                  ...promptCacheBreakpoint != null && {\n                    prompt_cache_breakpoint: promptCacheBreakpoint\n                  }\n                };\n              }\n              case \"file\": {\n                const promptCacheBreakpoint = getPromptCacheBreakpoint(\n                  part.providerOptions\n                );\n                if (part.mediaType.startsWith(\"image/\")) {\n                  const mediaType = part.mediaType === \"image/*\" ? \"image/jpeg\" : part.mediaType;\n                  return {\n                    type: \"image_url\",\n                    image_url: {\n                      url: part.data instanceof URL ? part.data.toString() : `data:${mediaType};base64,${convertToBase64(part.data)}`,\n                      // OpenAI specific extension: image detail\n                      detail: (_b = (_a = part.providerOptions) == null ? void 0 : _a.openai) == null ? void 0 : _b.imageDetail\n                    },\n                    ...promptCacheBreakpoint != null && {\n                      prompt_cache_breakpoint: promptCacheBreakpoint\n                    }\n                  };\n                } else if (part.mediaType.startsWith(\"audio/\")) {\n                  if (part.data instanceof URL) {\n                    throw new UnsupportedFunctionalityError({\n                      functionality: \"audio file parts with URLs\"\n                    });\n                  }\n                  switch (part.mediaType) {\n                    case \"audio/wav\": {\n                      return {\n                        type: \"input_audio\",\n                        input_audio: {\n                          data: convertToBase64(part.data),\n                          format: \"wav\"\n                        },\n                        ...promptCacheBreakpoint != null && {\n                          prompt_cache_breakpoint: promptCacheBreakpoint\n                        }\n                      };\n                    }\n                    case \"audio/mp3\":\n                    case \"audio/mpeg\": {\n                      return {\n                        type: \"input_audio\",\n                        input_audio: {\n                          data: convertToBase64(part.data),\n                          format: \"mp3\"\n                        },\n                        ...promptCacheBreakpoint != null && {\n                          prompt_cache_breakpoint: promptCacheBreakpoint\n                        }\n                      };\n                    }\n                    default: {\n                      throw new UnsupportedFunctionalityError({\n                        functionality: `audio content parts with media type ${part.mediaType}`\n                      });\n                    }\n                  }\n                } else if (part.mediaType === \"application/pdf\") {\n                  if (part.data instanceof URL) {\n                    throw new UnsupportedFunctionalityError({\n                      functionality: \"PDF file parts with URLs\"\n                    });\n                  }\n                  return {\n                    type: \"file\",\n                    file: typeof part.data === \"string\" && part.data.startsWith(\"file-\") ? { file_id: part.data } : {\n                      filename: (_c = part.filename) != null ? _c : `part-${index}.pdf`,\n                      file_data: `data:application/pdf;base64,${convertToBase64(part.data)}`\n                    },\n                    ...promptCacheBreakpoint != null && {\n                      prompt_cache_breakpoint: promptCacheBreakpoint\n                    }\n                  };\n                } else {\n                  throw new UnsupportedFunctionalityError({\n                    functionality: `file part media type ${part.mediaType}`\n                  });\n                }\n              }\n            }\n          })\n        });\n        break;\n      }\n      case \"assistant\": {\n        let text = \"\";\n        const textParts = [];\n        let hasPromptCacheBreakpoint = false;\n        const toolCalls = [];\n        for (const part of content) {\n          switch (part.type) {\n            case \"text\": {\n              const promptCacheBreakpoint = getPromptCacheBreakpoint(\n                part.providerOptions\n              );\n              text += part.text;\n              textParts.push({\n                type: \"text\",\n                text: part.text,\n                ...promptCacheBreakpoint != null && {\n                  prompt_cache_breakpoint: promptCacheBreakpoint\n                }\n              });\n              hasPromptCacheBreakpoint || (hasPromptCacheBreakpoint = promptCacheBreakpoint != null);\n              break;\n            }\n            case \"tool-call\": {\n              toolCalls.push({\n                id: part.toolCallId,\n                type: \"function\",\n                function: {\n                  name: part.toolName,\n                  arguments: JSON.stringify(part.input)\n                }\n              });\n              break;\n            }\n          }\n        }\n        messages.push({\n          role: \"assistant\",\n          content: hasPromptCacheBreakpoint ? textParts : toolCalls.length > 0 ? text || null : text,\n          tool_calls: toolCalls.length > 0 ? toolCalls : void 0\n        });\n        break;\n      }\n      case \"tool\": {\n        for (const toolResponse of content) {\n          const output = toolResponse.output;\n          const promptCacheBreakpoint = getPromptCacheBreakpoint(\n            toolResponse.providerOptions\n          );\n          let contentValue;\n          switch (output.type) {\n            case \"text\":\n            case \"error-text\":\n              contentValue = output.value;\n              break;\n            case \"content\":\n            case \"json\":\n            case \"error-json\":\n              contentValue = JSON.stringify(output.value);\n              break;\n          }\n          messages.push({\n            role: \"tool\",\n            tool_call_id: toolResponse.toolCallId,\n            content: promptCacheBreakpoint == null ? contentValue : [\n              {\n                type: \"text\",\n                text: contentValue,\n                prompt_cache_breakpoint: promptCacheBreakpoint\n              }\n            ]\n          });\n        }\n        break;\n      }\n      default: {\n        const _exhaustiveCheck = role;\n        throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n      }\n    }\n  }\n  return { messages, warnings };\n}\n\n// src/chat/get-response-metadata.ts\nfunction getResponseMetadata({\n  id,\n  model,\n  created\n}) {\n  return {\n    id: id != null ? id : void 0,\n    modelId: model != null ? model : void 0,\n    timestamp: created ? new Date(created * 1e3) : void 0\n  };\n}\n\n// src/chat/map-openai-finish-reason.ts\nfunction mapOpenAIFinishReason(finishReason) {\n  switch (finishReason) {\n    case \"stop\":\n      return \"stop\";\n    case \"length\":\n      return \"length\";\n    case \"content_filter\":\n      return \"content-filter\";\n    case \"function_call\":\n    case \"tool_calls\":\n      return \"tool-calls\";\n    default:\n      return \"unknown\";\n  }\n}\n\n// src/chat/openai-chat-api.ts\nimport {\n  lazyValidator,\n  zodSchema\n} from \"@ai-sdk/provider-utils\";\nimport { z as z2 } from \"zod/v4\";\nvar openaiChatResponseSchema = lazyValidator(\n  () => zodSchema(\n    z2.object({\n      id: z2.string().nullish(),\n      created: z2.number().nullish(),\n      model: z2.string().nullish(),\n      choices: z2.array(\n        z2.object({\n          message: z2.object({\n            role: z2.literal(\"assistant\").nullish(),\n            content: z2.string().nullish(),\n            tool_calls: z2.array(\n              z2.object({\n                id: z2.string().nullish(),\n                type: z2.literal(\"function\"),\n                function: z2.object({\n                  name: z2.string(),\n                  arguments: z2.string()\n                })\n              })\n            ).nullish(),\n            annotations: z2.array(\n              z2.object({\n                type: z2.literal(\"url_citation\"),\n                url_citation: z2.object({\n                  start_index: z2.number(),\n                  end_index: z2.number(),\n                  url: z2.string(),\n                  title: z2.string()\n                })\n              })\n            ).nullish()\n          }),\n          index: z2.number(),\n          logprobs: z2.object({\n            content: z2.array(\n              z2.object({\n                token: z2.string(),\n                logprob: z2.number(),\n                top_logprobs: z2.array(\n                  z2.object({\n                    token: z2.string(),\n                    logprob: z2.number()\n                  })\n                )\n              })\n            ).nullish()\n          }).nullish(),\n          finish_reason: z2.string().nullish()\n        })\n      ),\n      usage: z2.object({\n        prompt_tokens: z2.number().nullish(),\n        completion_tokens: z2.number().nullish(),\n        total_tokens: z2.number().nullish(),\n        prompt_tokens_details: z2.object({\n          cached_tokens: z2.number().nullish(),\n          cache_write_tokens: z2.number().nullish()\n        }).nullish(),\n        completion_tokens_details: z2.object({\n          reasoning_tokens: z2.number().nullish(),\n          accepted_prediction_tokens: z2.number().nullish(),\n          rejected_prediction_tokens: z2.number().nullish()\n        }).nullish()\n      }).nullish()\n    })\n  )\n);\nvar openaiChatChunkSchema = lazyValidator(\n  () => zodSchema(\n    z2.union([\n      z2.object({\n        id: z2.string().nullish(),\n        created: z2.number().nullish(),\n        model: z2.string().nullish(),\n        choices: z2.array(\n          z2.object({\n            delta: z2.object({\n              role: z2.enum([\"assistant\"]).nullish(),\n              content: z2.string().nullish(),\n              tool_calls: z2.array(\n                z2.object({\n                  index: z2.number(),\n                  id: z2.string().nullish(),\n                  type: z2.literal(\"function\").nullish(),\n                  function: z2.object({\n                    name: z2.string().nullish(),\n                    arguments: z2.string().nullish()\n                  })\n                })\n              ).nullish(),\n              annotations: z2.array(\n                z2.object({\n                  type: z2.literal(\"url_citation\"),\n                  url_citation: z2.object({\n                    start_index: z2.number(),\n                    end_index: z2.number(),\n                    url: z2.string(),\n                    title: z2.string()\n                  })\n                })\n              ).nullish()\n            }).nullish(),\n            logprobs: z2.object({\n              content: z2.array(\n                z2.object({\n                  token: z2.string(),\n                  logprob: z2.number(),\n                  top_logprobs: z2.array(\n                    z2.object({\n                      token: z2.string(),\n                      logprob: z2.number()\n                    })\n                  )\n                })\n              ).nullish()\n            }).nullish(),\n            finish_reason: z2.string().nullish(),\n            index: z2.number()\n          })\n        ),\n        usage: z2.object({\n          prompt_tokens: z2.number().nullish(),\n          completion_tokens: z2.number().nullish(),\n          total_tokens: z2.number().nullish(),\n          prompt_tokens_details: z2.object({\n            cached_tokens: z2.number().nullish(),\n            cache_write_tokens: z2.number().nullish()\n          }).nullish(),\n          completion_tokens_details: z2.object({\n            reasoning_tokens: z2.number().nullish(),\n            accepted_prediction_tokens: z2.number().nullish(),\n            rejected_prediction_tokens: z2.number().nullish()\n          }).nullish()\n        }).nullish()\n      }),\n      openaiErrorDataSchema\n    ])\n  )\n);\n\n// src/chat/openai-chat-options.ts\nimport {\n  lazyValidator as lazyValidator2,\n  zodSchema as zodSchema2\n} from \"@ai-sdk/provider-utils\";\nimport { z as z3 } from \"zod/v4\";\nvar openaiChatLanguageModelOptions = lazyValidator2(\n  () => zodSchema2(\n    z3.object({\n      /**\n       * Modify the likelihood of specified tokens appearing in the completion.\n       *\n       * Accepts a JSON object that maps tokens (specified by their token ID in\n       * the GPT tokenizer) to an associated bias value from -100 to 100.\n       */\n      logitBias: z3.record(z3.coerce.number(), z3.number()).optional(),\n      /**\n       * Return the log probabilities of the tokens.\n       *\n       * Setting to true will return the log probabilities of the tokens that\n       * were generated.\n       *\n       * Setting to a number will return the log probabilities of the top n\n       * tokens that were generated.\n       */\n      logprobs: z3.union([z3.boolean(), z3.number()]).optional(),\n      /**\n       * Whether to enable parallel function calling during tool use. Default to true.\n       */\n      parallelToolCalls: z3.boolean().optional(),\n      /**\n       * A unique identifier representing your end-user, which can help OpenAI to\n       * monitor and detect abuse.\n       */\n      user: z3.string().optional(),\n      /**\n       * Reasoning effort for reasoning models. Defaults to `medium`.\n       */\n      reasoningEffort: z3.enum([\"none\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"]).optional(),\n      /**\n       * Maximum number of completion tokens to generate. Useful for reasoning models.\n       */\n      maxCompletionTokens: z3.number().optional(),\n      /**\n       * Whether to enable persistence in responses API.\n       */\n      store: z3.boolean().optional(),\n      /**\n       * Metadata to associate with the request.\n       */\n      metadata: z3.record(z3.string().max(64), z3.string().max(512)).optional(),\n      /**\n       * Parameters for prediction mode.\n       */\n      prediction: z3.record(z3.string(), z3.any()).optional(),\n      /**\n       * Whether to use structured outputs.\n       *\n       * @default true\n       */\n      structuredOutputs: z3.boolean().optional(),\n      /**\n       * Service tier for the request.\n       * - 'auto': Default service tier. The request will be processed with the service tier configured in the\n       *           Project settings. Unless otherwise configured, the Project will use 'default'.\n       * - 'flex': 50% cheaper processing at the cost of increased latency. Only available for o3 and o4-mini models.\n       * - 'priority': Higher-speed processing with predictably low latency at premium cost. Available for Enterprise customers.\n       * - 'default': The request will be processed with the standard pricing and performance for the selected model.\n       *\n       * @default 'auto'\n       */\n      serviceTier: z3.enum([\"auto\", \"flex\", \"priority\", \"default\"]).optional(),\n      /**\n       * Whether to use strict JSON schema validation.\n       *\n       * @default false\n       */\n      strictJsonSchema: z3.boolean().optional(),\n      /**\n       * Controls the verbosity of the model's responses.\n       * Lower values will result in more concise responses, while higher values will result in more verbose responses.\n       */\n      textVerbosity: z3.enum([\"low\", \"medium\", \"high\"]).optional(),\n      /**\n       * A cache key for prompt caching. Allows manual control over prompt caching behavior.\n       * Useful for improving cache hit rates and working around automatic caching issues.\n       */\n      promptCacheKey: z3.string().optional(),\n      /**\n       * Prompt cache behavior for GPT-5.6 and later models.\n       * `mode` controls whether OpenAI also places an implicit breakpoint.\n       * `ttl` sets the minimum cache lifetime and currently only supports 30 minutes.\n       */\n      promptCacheOptions: z3.object({\n        mode: z3.enum([\"implicit\", \"explicit\"]).optional(),\n        ttl: z3.literal(\"30m\").optional()\n      }).optional(),\n      /**\n       * The retention policy for the prompt cache.\n       * - 'in_memory': Default. Standard prompt caching behavior.\n       * - '24h': Extended prompt caching that keeps cached prefixes active for up to 24 hours.\n       *          Available for models before GPT-5.6 that support extended caching.\n       *\n       * @deprecated For GPT-5.6 and later models, use `promptCacheOptions.ttl`.\n       *\n       * @default 'in_memory'\n       */\n      promptCacheRetention: z3.enum([\"in_memory\", \"24h\"]).optional(),\n      /**\n       * A stable identifier used to help detect users of your application\n       * that may be violating OpenAI's usage policies. The IDs should be a\n       * string that uniquely identifies each user. We recommend hashing their\n       * username or email address, in order to avoid sending us any identifying\n       * information.\n       */\n      safetyIdentifier: z3.string().optional()\n    })\n  )\n);\n\n// src/chat/openai-chat-prepare-tools.ts\nimport {\n  UnsupportedFunctionalityError as UnsupportedFunctionalityError2\n} from \"@ai-sdk/provider\";\nfunction prepareChatTools({\n  tools,\n  toolChoice,\n  structuredOutputs,\n  strictJsonSchema\n}) {\n  tools = (tools == null ? void 0 : tools.length) ? tools : void 0;\n  const toolWarnings = [];\n  if (tools == null) {\n    return { tools: void 0, toolChoice: void 0, toolWarnings };\n  }\n  const openaiTools = [];\n  for (const tool of tools) {\n    switch (tool.type) {\n      case \"function\":\n        openaiTools.push({\n          type: \"function\",\n          function: {\n            name: tool.name,\n            description: tool.description,\n            parameters: tool.inputSchema,\n            strict: structuredOutputs ? strictJsonSchema : void 0\n          }\n        });\n        break;\n      default:\n        toolWarnings.push({ type: \"unsupported-tool\", tool });\n        break;\n    }\n  }\n  if (toolChoice == null) {\n    return { tools: openaiTools, toolChoice: void 0, toolWarnings };\n  }\n  const type = toolChoice.type;\n  switch (type) {\n    case \"auto\":\n    case \"none\":\n    case \"required\":\n      return { tools: openaiTools, toolChoice: type, toolWarnings };\n    case \"tool\":\n      return {\n        tools: openaiTools,\n        toolChoice: {\n          type: \"function\",\n          function: {\n            name: toolChoice.toolName\n          }\n        },\n        toolWarnings\n      };\n    default: {\n      const _exhaustiveCheck = type;\n      throw new UnsupportedFunctionalityError2({\n        functionality: `tool choice type: ${_exhaustiveCheck}`\n      });\n    }\n  }\n}\n\n// src/chat/openai-chat-language-model.ts\nvar OpenAIChatLanguageModel = class {\n  constructor(modelId, config) {\n    this.specificationVersion = \"v2\";\n    this.supportedUrls = {\n      \"image/*\": [/^https?:\\/\\/.*$/]\n    };\n    this.modelId = modelId;\n    this.config = config;\n  }\n  get provider() {\n    return this.config.provider;\n  }\n  async getArgs({\n    prompt,\n    maxOutputTokens,\n    temperature,\n    topP,\n    topK,\n    frequencyPenalty,\n    presencePenalty,\n    stopSequences,\n    responseFormat,\n    seed,\n    tools,\n    toolChoice,\n    providerOptions\n  }) {\n    var _a, _b, _c, _d;\n    const warnings = [];\n    const openaiOptions = (_a = await parseProviderOptions({\n      provider: \"openai\",\n      providerOptions,\n      schema: openaiChatLanguageModelOptions\n    })) != null ? _a : {};\n    const structuredOutputs = (_b = openaiOptions.structuredOutputs) != null ? _b : true;\n    const modelCapabilities = getOpenAILanguageModelCapabilities(this.modelId);\n    if (topK != null) {\n      warnings.push({\n        type: \"unsupported-setting\",\n        setting: \"topK\"\n      });\n    }\n    if ((responseFormat == null ? void 0 : responseFormat.type) === \"json\" && responseFormat.schema != null && !structuredOutputs) {\n      warnings.push({\n        type: \"unsupported-setting\",\n        setting: \"responseFormat\",\n        details: \"JSON response format schema is only supported with structuredOutputs\"\n      });\n    }\n    const { messages, warnings: messageWarnings } = convertToOpenAIChatMessages(\n      {\n        prompt,\n        systemMessageMode: modelCapabilities.systemMessageMode\n      }\n    );\n    warnings.push(...messageWarnings);\n    const strictJsonSchema = (_c = openaiOptions.strictJsonSchema) != null ? _c : false;\n    const baseArgs = {\n      // model id:\n      model: this.modelId,\n      // model specific settings:\n      logit_bias: openaiOptions.logitBias,\n      logprobs: openaiOptions.logprobs === true || typeof openaiOptions.logprobs === \"number\" ? true : void 0,\n      top_logprobs: typeof openaiOptions.logprobs === \"number\" ? openaiOptions.logprobs : typeof openaiOptions.logprobs === \"boolean\" ? openaiOptions.logprobs ? 0 : void 0 : void 0,\n      user: openaiOptions.user,\n      parallel_tool_calls: openaiOptions.parallelToolCalls,\n      // standardized settings:\n      max_tokens: maxOutputTokens,\n      temperature,\n      top_p: topP,\n      frequency_penalty: frequencyPenalty,\n      presence_penalty: presencePenalty,\n      response_format: (responseFormat == null ? void 0 : responseFormat.type) === \"json\" ? structuredOutputs && responseFormat.schema != null ? {\n        type: \"json_schema\",\n        json_schema: {\n          schema: responseFormat.schema,\n          strict: strictJsonSchema,\n          name: (_d = responseFormat.name) != null ? _d : \"response\",\n          description: responseFormat.description\n        }\n      } : { type: \"json_object\" } : void 0,\n      stop: stopSequences,\n      seed,\n      verbosity: openaiOptions.textVerbosity,\n      // openai specific settings:\n      // TODO AI SDK 6: remove, we auto-map maxOutputTokens now\n      max_completion_tokens: openaiOptions.maxCompletionTokens,\n      store: openaiOptions.store,\n      metadata: openaiOptions.metadata,\n      prediction: openaiOptions.prediction,\n      reasoning_effort: openaiOptions.reasoningEffort,\n      service_tier: openaiOptions.serviceTier,\n      prompt_cache_key: openaiOptions.promptCacheKey,\n      prompt_cache_options: openaiOptions.promptCacheOptions,\n      prompt_cache_retention: openaiOptions.promptCacheRetention,\n      safety_identifier: openaiOptions.safetyIdentifier,\n      // messages:\n      messages\n    };\n    if (modelCapabilities.isReasoningModel) {\n      if (openaiOptions.reasoningEffort !== \"none\" || !modelCapabilities.supportsNonReasoningParameters) {\n        if (baseArgs.temperature != null) {\n          baseArgs.temperature = void 0;\n          warnings.push({\n            type: \"unsupported-setting\",\n            setting: \"temperature\",\n            details: \"temperature is not supported for reasoning models\"\n          });\n        }\n        if (baseArgs.top_p != null) {\n          baseArgs.top_p = void 0;\n          warnings.push({\n            type: \"unsupported-setting\",\n            setting: \"topP\",\n            details: \"topP is not supported for reasoning models\"\n          });\n        }\n        if (baseArgs.logprobs != null) {\n          baseArgs.logprobs = void 0;\n          warnings.push({\n            type: \"other\",\n            message: \"logprobs is not supported for reasoning models\"\n          });\n        }\n      }\n      if (baseArgs.frequency_penalty != null) {\n        baseArgs.frequency_penalty = void 0;\n        warnings.push({\n          type: \"unsupported-setting\",\n          setting: \"frequencyPenalty\",\n          details: \"frequencyPenalty is not supported for reasoning models\"\n        });\n      }\n      if (baseArgs.presence_penalty != null) {\n        baseArgs.presence_penalty = void 0;\n        warnings.push({\n          type: \"unsupported-setting\",\n          setting: \"presencePenalty\",\n          details: \"presencePenalty is not supported for reasoning models\"\n        });\n      }\n      if (baseArgs.logit_bias != null) {\n        baseArgs.logit_bias = void 0;\n        warnings.push({\n          type: \"other\",\n          message: \"logitBias is not supported for reasoning models\"\n        });\n      }\n      if (baseArgs.top_logprobs != null) {\n        baseArgs.top_logprobs = void 0;\n        warnings.push({\n          type: \"other\",\n          message: \"topLogprobs is not supported for reasoning models\"\n        });\n      }\n      if (baseArgs.max_tokens != null) {\n        if (baseArgs.max_completion_tokens == null) {\n          baseArgs.max_completion_tokens = baseArgs.max_tokens;\n        }\n        baseArgs.max_tokens = void 0;\n      }\n    } else if (this.modelId.startsWith(\"gpt-4o-search-preview\") || this.modelId.startsWith(\"gpt-4o-mini-search-preview\")) {\n      if (baseArgs.temperature != null) {\n        baseArgs.temperature = void 0;\n        warnings.push({\n          type: \"unsupported-setting\",\n          setting: \"temperature\",\n          details: \"temperature is not supported for the search preview models and has been removed.\"\n        });\n      }\n    }\n    if (openaiOptions.serviceTier === \"flex\" && !modelCapabilities.supportsFlexProcessing) {\n      warnings.push({\n        type: \"unsupported-setting\",\n        setting: \"serviceTier\",\n        details: \"flex processing is only available for o3, o4-mini, and gpt-5 models\"\n      });\n      baseArgs.service_tier = void 0;\n    }\n    if (openaiOptions.serviceTier === \"priority\" && !modelCapabilities.supportsPriorityProcessing) {\n      warnings.push({\n        type: \"unsupported-setting\",\n        setting: \"serviceTier\",\n        details: \"priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported\"\n      });\n      baseArgs.service_tier = void 0;\n    }\n    const {\n      tools: openaiTools,\n      toolChoice: openaiToolChoice,\n      toolWarnings\n    } = prepareChatTools({\n      tools,\n      toolChoice,\n      structuredOutputs,\n      strictJsonSchema\n    });\n    return {\n      args: {\n        ...baseArgs,\n        tools: openaiTools,\n        tool_choice: openaiToolChoice\n      },\n      warnings: [...warnings, ...toolWarnings]\n    };\n  }\n  async doGenerate(options) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;\n    const { args: body, warnings } = await this.getArgs(options);\n    const {\n      responseHeaders,\n      value: response,\n      rawValue: rawResponse\n    } = await postJsonToApi({\n      url: this.config.url({\n        path: \"/chat/completions\",\n        modelId: this.modelId\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler(\n        openaiChatResponseSchema\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch\n    });\n    const choice = response.choices[0];\n    const content = [];\n    const text = choice.message.content;\n    if (text != null && text.length > 0) {\n      content.push({ type: \"text\", text });\n    }\n    for (const toolCall of (_a = choice.message.tool_calls) != null ? _a : []) {\n      content.push({\n        type: \"tool-call\",\n        toolCallId: (_b = toolCall.id) != null ? _b : generateId(),\n        toolName: toolCall.function.name,\n        input: toolCall.function.arguments\n      });\n    }\n    for (const annotation of (_c = choice.message.annotations) != null ? _c : []) {\n      content.push({\n        type: \"source\",\n        sourceType: \"url\",\n        id: generateId(),\n        url: annotation.url_citation.url,\n        title: annotation.url_citation.title\n      });\n    }\n    const completionTokenDetails = (_d = response.usage) == null ? void 0 : _d.completion_tokens_details;\n    const promptTokenDetails = (_e = response.usage) == null ? void 0 : _e.prompt_tokens_details;\n    const providerMetadata = { openai: {} };\n    if ((completionTokenDetails == null ? void 0 : completionTokenDetails.accepted_prediction_tokens) != null) {\n      providerMetadata.openai.acceptedPredictionTokens = completionTokenDetails == null ? void 0 : completionTokenDetails.accepted_prediction_tokens;\n    }\n    if ((completionTokenDetails == null ? void 0 : completionTokenDetails.rejected_prediction_tokens) != null) {\n      providerMetadata.openai.rejectedPredictionTokens = completionTokenDetails == null ? void 0 : completionTokenDetails.rejected_prediction_tokens;\n    }\n    if ((promptTokenDetails == null ? void 0 : promptTokenDetails.cache_write_tokens) != null) {\n      providerMetadata.openai.usage = {\n        cacheWriteTokens: promptTokenDetails.cache_write_tokens\n      };\n    }\n    if (((_f = choice.logprobs) == null ? void 0 : _f.content) != null) {\n      providerMetadata.openai.logprobs = choice.logprobs.content;\n    }\n    return {\n      content,\n      finishReason: mapOpenAIFinishReason(choice.finish_reason),\n      usage: {\n        inputTokens: (_h = (_g = response.usage) == null ? void 0 : _g.prompt_tokens) != null ? _h : void 0,\n        outputTokens: (_j = (_i = response.usage) == null ? void 0 : _i.completion_tokens) != null ? _j : void 0,\n        totalTokens: (_l = (_k = response.usage) == null ? void 0 : _k.total_tokens) != null ? _l : void 0,\n        reasoningTokens: (_m = completionTokenDetails == null ? void 0 : completionTokenDetails.reasoning_tokens) != null ? _m : void 0,\n        cachedInputTokens: (_n = promptTokenDetails == null ? void 0 : promptTokenDetails.cached_tokens) != null ? _n : void 0\n      },\n      request: { body },\n      response: {\n        ...getResponseMetadata(response),\n        headers: responseHeaders,\n        body: rawResponse\n      },\n      warnings,\n      providerMetadata\n    };\n  }\n  async doStream(options) {\n    const { args, warnings } = await this.getArgs(options);\n    const body = {\n      ...args,\n      stream: true,\n      stream_options: {\n        include_usage: true\n      }\n    };\n    const { responseHeaders, value: response } = await postJsonToApi({\n      url: this.config.url({\n        path: \"/chat/completions\",\n        modelId: this.modelId\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createEventSourceResponseHandler(\n        openaiChatChunkSchema\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch\n    });\n    const toolCalls = [];\n    let finishReason = \"unknown\";\n    const usage = {\n      inputTokens: void 0,\n      outputTokens: void 0,\n      totalTokens: void 0\n    };\n    let metadataExtracted = false;\n    let isActiveText = false;\n    const providerMetadata = { openai: {} };\n    return {\n      stream: response.pipeThrough(\n        new TransformStream({\n          start(controller) {\n            controller.enqueue({ type: \"stream-start\", warnings });\n          },\n          transform(chunk, controller) {\n            var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y;\n            if (options.includeRawChunks) {\n              controller.enqueue({ type: \"raw\", rawValue: chunk.rawValue });\n            }\n            if (!chunk.success) {\n              finishReason = \"error\";\n              controller.enqueue({ type: \"error\", error: chunk.error });\n              return;\n            }\n            const value = chunk.value;\n            if (\"error\" in value) {\n              finishReason = \"error\";\n              controller.enqueue({ type: \"error\", error: value.error });\n              return;\n            }\n            if (!metadataExtracted) {\n              const metadata = getResponseMetadata(value);\n              if (Object.values(metadata).some(Boolean)) {\n                metadataExtracted = true;\n                controller.enqueue({\n                  type: \"response-metadata\",\n                  ...getResponseMetadata(value)\n                });\n              }\n            }\n            if (value.usage != null) {\n              usage.inputTokens = (_a = value.usage.prompt_tokens) != null ? _a : void 0;\n              usage.outputTokens = (_b = value.usage.completion_tokens) != null ? _b : void 0;\n              usage.totalTokens = (_c = value.usage.total_tokens) != null ? _c : void 0;\n              usage.reasoningTokens = (_e = (_d = value.usage.completion_tokens_details) == null ? void 0 : _d.reasoning_tokens) != null ? _e : void 0;\n              usage.cachedInputTokens = (_g = (_f = value.usage.prompt_tokens_details) == null ? void 0 : _f.cached_tokens) != null ? _g : void 0;\n              if (((_h = value.usage.prompt_tokens_details) == null ? void 0 : _h.cache_write_tokens) != null) {\n                providerMetadata.openai.usage = {\n                  cacheWriteTokens: value.usage.prompt_tokens_details.cache_write_tokens\n                };\n              }\n              if (((_i = value.usage.completion_tokens_details) == null ? void 0 : _i.accepted_prediction_tokens) != null) {\n                providerMetadata.openai.acceptedPredictionTokens = (_j = value.usage.completion_tokens_details) == null ? void 0 : _j.accepted_prediction_tokens;\n              }\n              if (((_k = value.usage.completion_tokens_details) == null ? void 0 : _k.rejected_prediction_tokens) != null) {\n                providerMetadata.openai.rejectedPredictionTokens = (_l = value.usage.completion_tokens_details) == null ? void 0 : _l.rejected_prediction_tokens;\n              }\n            }\n            const choice = value.choices[0];\n            if ((choice == null ? void 0 : choice.finish_reason) != null) {\n              finishReason = mapOpenAIFinishReason(choice.finish_reason);\n            }\n            if (((_m = choice == null ? void 0 : choice.logprobs) == null ? void 0 : _m.content) != null) {\n              providerMetadata.openai.logprobs = choice.logprobs.content;\n            }\n            if ((choice == null ? void 0 : choice.delta) == null) {\n              return;\n            }\n            const delta = choice.delta;\n            if (delta.content != null) {\n              if (!isActiveText) {\n                controller.enqueue({ type: \"text-start\", id: \"0\" });\n                isActiveText = true;\n              }\n              controller.enqueue({\n                type: \"text-delta\",\n                id: \"0\",\n                delta: delta.content\n              });\n            }\n            if (delta.tool_calls != null) {\n              for (const toolCallDelta of delta.tool_calls) {\n                const index = toolCallDelta.index;\n                if (toolCalls[index] == null) {\n                  if (toolCallDelta.type != null && toolCallDelta.type !== \"function\") {\n                    throw new InvalidResponseDataError({\n                      data: toolCallDelta,\n                      message: `Expected 'function' type.`\n                    });\n                  }\n                  if (toolCallDelta.id == null) {\n                    throw new InvalidResponseDataError({\n                      data: toolCallDelta,\n                      message: `Expected 'id' to be a string.`\n                    });\n                  }\n                  if (((_n = toolCallDelta.function) == null ? void 0 : _n.name) == null) {\n                    throw new InvalidResponseDataError({\n                      data: toolCallDelta,\n                      message: `Expected 'function.name' to be a string.`\n                    });\n                  }\n                  controller.enqueue({\n                    type: \"tool-input-start\",\n                    id: toolCallDelta.id,\n                    toolName: toolCallDelta.function.name\n                  });\n                  toolCalls[index] = {\n                    id: toolCallDelta.id,\n                    type: \"function\",\n                    function: {\n                      name: toolCallDelta.function.name,\n                      arguments: (_o = toolCallDelta.function.arguments) != null ? _o : \"\"\n                    },\n                    hasFinished: false\n                  };\n                  const toolCall2 = toolCalls[index];\n                  if (((_p = toolCall2.function) == null ? void 0 : _p.name) != null && ((_q = toolCall2.function) == null ? void 0 : _q.arguments) != null) {\n                    if (toolCall2.function.arguments.length > 0) {\n                      controller.enqueue({\n                        type: \"tool-input-delta\",\n                        id: toolCall2.id,\n                        delta: toolCall2.function.arguments\n                      });\n                    }\n                    if (isParsableJson(toolCall2.function.arguments)) {\n                      controller.enqueue({\n                        type: \"tool-input-end\",\n                        id: toolCall2.id\n                      });\n                      controller.enqueue({\n                        type: \"tool-call\",\n                        toolCallId: (_r = toolCall2.id) != null ? _r : generateId(),\n                        toolName: toolCall2.function.name,\n                        input: toolCall2.function.arguments\n                      });\n                      toolCall2.hasFinished = true;\n                    }\n                  }\n                  continue;\n                }\n                const toolCall = toolCalls[index];\n                if (toolCall.hasFinished) {\n                  continue;\n                }\n                if (((_s = toolCallDelta.function) == null ? void 0 : _s.arguments) != null) {\n                  toolCall.function.arguments += (_u = (_t = toolCallDelta.function) == null ? void 0 : _t.arguments) != null ? _u : \"\";\n                }\n                controller.enqueue({\n                  type: \"tool-input-delta\",\n                  id: toolCall.id,\n                  delta: (_v = toolCallDelta.function.arguments) != null ? _v : \"\"\n                });\n                if (((_w = toolCall.function) == null ? void 0 : _w.name) != null && ((_x = toolCall.function) == null ? void 0 : _x.arguments) != null && isParsableJson(toolCall.function.arguments)) {\n                  controller.enqueue({\n                    type: \"tool-input-end\",\n                    id: toolCall.id\n                  });\n                  controller.enqueue({\n                    type: \"tool-call\",\n                    toolCallId: (_y = toolCall.id) != null ? _y : generateId(),\n                    toolName: toolCall.function.name,\n                    input: toolCall.function.arguments\n                  });\n                  toolCall.hasFinished = true;\n                }\n              }\n            }\n            if (delta.annotations != null) {\n              for (const annotation of delta.annotations) {\n                controller.enqueue({\n                  type: \"source\",\n                  sourceType: \"url\",\n                  id: generateId(),\n                  url: annotation.url_citation.url,\n                  title: annotation.url_citation.title\n                });\n              }\n            }\n          },\n          flush(controller) {\n            if (isActiveText) {\n              controller.enqueue({ type: \"text-end\", id: \"0\" });\n            }\n            controller.enqueue({\n              type: \"finish\",\n              finishReason,\n              usage,\n              ...providerMetadata != null ? { providerMetadata } : {}\n            });\n          }\n        })\n      ),\n      request: { body },\n      response: { headers: responseHeaders }\n    };\n  }\n};\n\n// src/completion/openai-completion-language-model.ts\nimport {\n  combineHeaders as combineHeaders2,\n  createEventSourceResponseHandler as createEventSourceResponseHandler2,\n  createJsonResponseHandler as createJsonResponseHandler2,\n  parseProviderOptions as parseProviderOptions2,\n  postJsonToApi as postJsonToApi2\n} from \"@ai-sdk/provider-utils\";\n\n// src/completion/convert-to-openai-completion-prompt.ts\nimport {\n  InvalidPromptError,\n  UnsupportedFunctionalityError as UnsupportedFunctionalityError3\n} from \"@ai-sdk/provider\";\nfunction convertToOpenAICompletionPrompt({\n  prompt,\n  user = \"user\",\n  assistant = \"assistant\"\n}) {\n  let text = \"\";\n  if (prompt[0].role === \"system\") {\n    text += `${prompt[0].content}\n\n`;\n    prompt = prompt.slice(1);\n  }\n  for (const { role, content } of prompt) {\n    switch (role) {\n      case \"system\": {\n        throw new InvalidPromptError({\n          message: \"Unexpected system message in prompt: ${content}\",\n          prompt\n        });\n      }\n      case \"user\": {\n        const userMessage = content.map((part) => {\n          switch (part.type) {\n            case \"text\": {\n              return part.text;\n            }\n          }\n        }).filter(Boolean).join(\"\");\n        text += `${user}:\n${userMessage}\n\n`;\n        break;\n      }\n      case \"assistant\": {\n        const assistantMessage = content.map((part) => {\n          switch (part.type) {\n            case \"text\": {\n              return part.text;\n            }\n            case \"tool-call\": {\n              throw new UnsupportedFunctionalityError3({\n                functionality: \"tool-call messages\"\n              });\n            }\n          }\n        }).join(\"\");\n        text += `${assistant}:\n${assistantMessage}\n\n`;\n        break;\n      }\n      case \"tool\": {\n        throw new UnsupportedFunctionalityError3({\n          functionality: \"tool messages\"\n        });\n      }\n      default: {\n        const _exhaustiveCheck = role;\n        throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n      }\n    }\n  }\n  text += `${assistant}:\n`;\n  return {\n    prompt: text,\n    stopSequences: [`\n${user}:`]\n  };\n}\n\n// src/completion/get-response-metadata.ts\nfunction getResponseMetadata2({\n  id,\n  model,\n  created\n}) {\n  return {\n    id: id != null ? id : void 0,\n    modelId: model != null ? model : void 0,\n    timestamp: created != null ? new Date(created * 1e3) : void 0\n  };\n}\n\n// src/completion/map-openai-finish-reason.ts\nfunction mapOpenAIFinishReason2(finishReason) {\n  switch (finishReason) {\n    case \"stop\":\n      return \"stop\";\n    case \"length\":\n      return \"length\";\n    case \"content_filter\":\n      return \"content-filter\";\n    case \"function_call\":\n    case \"tool_calls\":\n      return \"tool-calls\";\n    default:\n      return \"unknown\";\n  }\n}\n\n// src/completion/openai-completion-api.ts\nimport { z as z4 } from \"zod/v4\";\nimport {\n  lazyValidator as lazyValidator3,\n  zodSchema as zodSchema3\n} from \"@ai-sdk/provider-utils\";\nvar openaiCompletionResponseSchema = lazyValidator3(\n  () => zodSchema3(\n    z4.object({\n      id: z4.string().nullish(),\n      created: z4.number().nullish(),\n      model: z4.string().nullish(),\n      choices: z4.array(\n        z4.object({\n          text: z4.string(),\n          finish_reason: z4.string(),\n          logprobs: z4.object({\n            tokens: z4.array(z4.string()),\n            token_logprobs: z4.array(z4.number()),\n            top_logprobs: z4.array(z4.record(z4.string(), z4.number())).nullish()\n          }).nullish()\n        })\n      ),\n      usage: z4.object({\n        prompt_tokens: z4.number(),\n        completion_tokens: z4.number(),\n        total_tokens: z4.number()\n      }).nullish()\n    })\n  )\n);\nvar openaiCompletionChunkSchema = lazyValidator3(\n  () => zodSchema3(\n    z4.union([\n      z4.object({\n        id: z4.string().nullish(),\n        created: z4.number().nullish(),\n        model: z4.string().nullish(),\n        choices: z4.array(\n          z4.object({\n            text: z4.string(),\n            finish_reason: z4.string().nullish(),\n            index: z4.number(),\n            logprobs: z4.object({\n              tokens: z4.array(z4.string()),\n              token_logprobs: z4.array(z4.number()),\n              top_logprobs: z4.array(z4.record(z4.string(), z4.number())).nullish()\n            }).nullish()\n          })\n        ),\n        usage: z4.object({\n          prompt_tokens: z4.number(),\n          completion_tokens: z4.number(),\n          total_tokens: z4.number()\n        }).nullish()\n      }),\n      openaiErrorDataSchema\n    ])\n  )\n);\n\n// src/completion/openai-completion-options.ts\nimport {\n  lazyValidator as lazyValidator4,\n  zodSchema as zodSchema4\n} from \"@ai-sdk/provider-utils\";\nimport { z as z5 } from \"zod/v4\";\nvar openaiCompletionProviderOptions = lazyValidator4(\n  () => zodSchema4(\n    z5.object({\n      /**\n      Echo back the prompt in addition to the completion.\n         */\n      echo: z5.boolean().optional(),\n      /**\n      Modify the likelihood of specified tokens appearing in the completion.\n      \n      Accepts a JSON object that maps tokens (specified by their token ID in\n      the GPT tokenizer) to an associated bias value from -100 to 100. You\n      can use this tokenizer tool to convert text to token IDs. Mathematically,\n      the bias is added to the logits generated by the model prior to sampling.\n      The exact effect will vary per model, but values between -1 and 1 should\n      decrease or increase likelihood of selection; values like -100 or 100\n      should result in a ban or exclusive selection of the relevant token.\n      \n      As an example, you can pass {\"50256\": -100} to prevent the <|endoftext|>\n      token from being generated.\n       */\n      logitBias: z5.record(z5.string(), z5.number()).optional(),\n      /**\n      The suffix that comes after a completion of inserted text.\n       */\n      suffix: z5.string().optional(),\n      /**\n      A unique identifier representing your end-user, which can help OpenAI to\n      monitor and detect abuse. Learn more.\n       */\n      user: z5.string().optional(),\n      /**\n      Return the log probabilities of the tokens. Including logprobs will increase\n      the response size and can slow down response times. However, it can\n      be useful to better understand how the model is behaving.\n      Setting to true will return the log probabilities of the tokens that\n      were generated.\n      Setting to a number will return the log probabilities of the top n\n      tokens that were generated.\n         */\n      logprobs: z5.union([z5.boolean(), z5.number()]).optional()\n    })\n  )\n);\n\n// src/completion/openai-completion-language-model.ts\nvar OpenAICompletionLanguageModel = class {\n  constructor(modelId, config) {\n    this.specificationVersion = \"v2\";\n    this.supportedUrls = {\n      // No URLs are supported for completion models.\n    };\n    this.modelId = modelId;\n    this.config = config;\n  }\n  get providerOptionsName() {\n    return this.config.provider.split(\".\")[0].trim();\n  }\n  get provider() {\n    return this.config.provider;\n  }\n  async getArgs({\n    prompt,\n    maxOutputTokens,\n    temperature,\n    topP,\n    topK,\n    frequencyPenalty,\n    presencePenalty,\n    stopSequences: userStopSequences,\n    responseFormat,\n    tools,\n    toolChoice,\n    seed,\n    providerOptions\n  }) {\n    const warnings = [];\n    const openaiOptions = {\n      ...await parseProviderOptions2({\n        provider: \"openai\",\n        providerOptions,\n        schema: openaiCompletionProviderOptions\n      }),\n      ...await parseProviderOptions2({\n        provider: this.providerOptionsName,\n        providerOptions,\n        schema: openaiCompletionProviderOptions\n      })\n    };\n    if (topK != null) {\n      warnings.push({ type: \"unsupported-setting\", setting: \"topK\" });\n    }\n    if (tools == null ? void 0 : tools.length) {\n      warnings.push({ type: \"unsupported-setting\", setting: \"tools\" });\n    }\n    if (toolChoice != null) {\n      warnings.push({ type: \"unsupported-setting\", setting: \"toolChoice\" });\n    }\n    if (responseFormat != null && responseFormat.type !== \"text\") {\n      warnings.push({\n        type: \"unsupported-setting\",\n        setting: \"responseFormat\",\n        details: \"JSON response format is not supported.\"\n      });\n    }\n    const { prompt: completionPrompt, stopSequences } = convertToOpenAICompletionPrompt({ prompt });\n    const stop = [...stopSequences != null ? stopSequences : [], ...userStopSequences != null ? userStopSequences : []];\n    return {\n      args: {\n        // model id:\n        model: this.modelId,\n        // model specific settings:\n        echo: openaiOptions.echo,\n        logit_bias: openaiOptions.logitBias,\n        logprobs: (openaiOptions == null ? void 0 : openaiOptions.logprobs) === true ? 0 : (openaiOptions == null ? void 0 : openaiOptions.logprobs) === false ? void 0 : openaiOptions == null ? void 0 : openaiOptions.logprobs,\n        suffix: openaiOptions.suffix,\n        user: openaiOptions.user,\n        // standardized settings:\n        max_tokens: maxOutputTokens,\n        temperature,\n        top_p: topP,\n        frequency_penalty: frequencyPenalty,\n        presence_penalty: presencePenalty,\n        seed,\n        // prompt:\n        prompt: completionPrompt,\n        // stop sequences:\n        stop: stop.length > 0 ? stop : void 0\n      },\n      warnings\n    };\n  }\n  async doGenerate(options) {\n    var _a, _b, _c;\n    const { args, warnings } = await this.getArgs(options);\n    const {\n      responseHeaders,\n      value: response,\n      rawValue: rawResponse\n    } = await postJsonToApi2({\n      url: this.config.url({\n        path: \"/completions\",\n        modelId: this.modelId\n      }),\n      headers: combineHeaders2(this.config.headers(), options.headers),\n      body: args,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler2(\n        openaiCompletionResponseSchema\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch\n    });\n    const choice = response.choices[0];\n    const providerMetadata = { openai: {} };\n    if (choice.logprobs != null) {\n      providerMetadata.openai.logprobs = choice.logprobs;\n    }\n    return {\n      content: [{ type: \"text\", text: choice.text }],\n      usage: {\n        inputTokens: (_a = response.usage) == null ? void 0 : _a.prompt_tokens,\n        outputTokens: (_b = response.usage) == null ? void 0 : _b.completion_tokens,\n        totalTokens: (_c = response.usage) == null ? void 0 : _c.total_tokens\n      },\n      finishReason: mapOpenAIFinishReason2(choice.finish_reason),\n      request: { body: args },\n      response: {\n        ...getResponseMetadata2(response),\n        headers: responseHeaders,\n        body: rawResponse\n      },\n      providerMetadata,\n      warnings\n    };\n  }\n  async doStream(options) {\n    const { args, warnings } = await this.getArgs(options);\n    const body = {\n      ...args,\n      stream: true,\n      stream_options: {\n        include_usage: true\n      }\n    };\n    const { responseHeaders, value: response } = await postJsonToApi2({\n      url: this.config.url({\n        path: \"/completions\",\n        modelId: this.modelId\n      }),\n      headers: combineHeaders2(this.config.headers(), options.headers),\n      body,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createEventSourceResponseHandler2(\n        openaiCompletionChunkSchema\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch\n    });\n    let finishReason = \"unknown\";\n    const providerMetadata = { openai: {} };\n    const usage = {\n      inputTokens: void 0,\n      outputTokens: void 0,\n      totalTokens: void 0\n    };\n    let isFirstChunk = true;\n    return {\n      stream: response.pipeThrough(\n        new TransformStream({\n          start(controller) {\n            controller.enqueue({ type: \"stream-start\", warnings });\n          },\n          transform(chunk, controller) {\n            if (options.includeRawChunks) {\n              controller.enqueue({ type: \"raw\", rawValue: chunk.rawValue });\n            }\n            if (!chunk.success) {\n              finishReason = \"error\";\n              controller.enqueue({ type: \"error\", error: chunk.error });\n              return;\n            }\n            const value = chunk.value;\n            if (\"error\" in value) {\n              finishReason = \"error\";\n              controller.enqueue({ type: \"error\", error: value.error });\n              return;\n            }\n            if (isFirstChunk) {\n              isFirstChunk = false;\n              controller.enqueue({\n                type: \"response-metadata\",\n                ...getResponseMetadata2(value)\n              });\n              controller.enqueue({ type: \"text-start\", id: \"0\" });\n            }\n            if (value.usage != null) {\n              usage.inputTokens = value.usage.prompt_tokens;\n              usage.outputTokens = value.usage.completion_tokens;\n              usage.totalTokens = value.usage.total_tokens;\n            }\n            const choice = value.choices[0];\n            if ((choice == null ? void 0 : choice.finish_reason) != null) {\n              finishReason = mapOpenAIFinishReason2(choice.finish_reason);\n            }\n            if ((choice == null ? void 0 : choice.logprobs) != null) {\n              providerMetadata.openai.logprobs = choice.logprobs;\n            }\n            if ((choice == null ? void 0 : choice.text) != null && choice.text.length > 0) {\n              controller.enqueue({\n                type: \"text-delta\",\n                id: \"0\",\n                delta: choice.text\n              });\n            }\n          },\n          flush(controller) {\n            if (!isFirstChunk) {\n              controller.enqueue({ type: \"text-end\", id: \"0\" });\n            }\n            controller.enqueue({\n              type: \"finish\",\n              finishReason,\n              providerMetadata,\n              usage\n            });\n          }\n        })\n      ),\n      request: { body },\n      response: { headers: responseHeaders }\n    };\n  }\n};\n\n// src/embedding/openai-embedding-model.ts\nimport {\n  TooManyEmbeddingValuesForCallError\n} from \"@ai-sdk/provider\";\nimport {\n  combineHeaders as combineHeaders3,\n  createJsonResponseHandler as createJsonResponseHandler3,\n  parseProviderOptions as parseProviderOptions3,\n  postJsonToApi as postJsonToApi3\n} from \"@ai-sdk/provider-utils\";\n\n// src/embedding/openai-embedding-options.ts\nimport {\n  lazyValidator as lazyValidator5,\n  zodSchema as zodSchema5\n} from \"@ai-sdk/provider-utils\";\nimport { z as z6 } from \"zod/v4\";\nvar openaiEmbeddingProviderOptions = lazyValidator5(\n  () => zodSchema5(\n    z6.object({\n      /**\n      The number of dimensions the resulting output embeddings should have.\n      Only supported in text-embedding-3 and later models.\n         */\n      dimensions: z6.number().optional(),\n      /**\n      A unique identifier representing your end-user, which can help OpenAI to\n      monitor and detect abuse. Learn more.\n      */\n      user: z6.string().optional()\n    })\n  )\n);\n\n// src/embedding/openai-embedding-api.ts\nimport { lazyValidator as lazyValidator6, zodSchema as zodSchema6 } from \"@ai-sdk/provider-utils\";\nimport { z as z7 } from \"zod/v4\";\nvar openaiTextEmbeddingResponseSchema = lazyValidator6(\n  () => zodSchema6(\n    z7.object({\n      data: z7.array(z7.object({ embedding: z7.array(z7.number()) })),\n      usage: z7.object({ prompt_tokens: z7.number() }).nullish()\n    })\n  )\n);\n\n// src/embedding/openai-embedding-model.ts\nvar OpenAIEmbeddingModel = class {\n  constructor(modelId, config) {\n    this.specificationVersion = \"v2\";\n    this.maxEmbeddingsPerCall = 2048;\n    this.supportsParallelCalls = true;\n    this.modelId = modelId;\n    this.config = config;\n  }\n  get provider() {\n    return this.config.provider;\n  }\n  async doEmbed({\n    values,\n    headers,\n    abortSignal,\n    providerOptions\n  }) {\n    var _a;\n    if (values.length > this.maxEmbeddingsPerCall) {\n      throw new TooManyEmbeddingValuesForCallError({\n        provider: this.provider,\n        modelId: this.modelId,\n        maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n        values\n      });\n    }\n    const openaiOptions = (_a = await parseProviderOptions3({\n      provider: \"openai\",\n      providerOptions,\n      schema: openaiEmbeddingProviderOptions\n    })) != null ? _a : {};\n    const {\n      responseHeaders,\n      value: response,\n      rawValue\n    } = await postJsonToApi3({\n      url: this.config.url({\n        path: \"/embeddings\",\n        modelId: this.modelId\n      }),\n      headers: combineHeaders3(this.config.headers(), headers),\n      body: {\n        model: this.modelId,\n        input: values,\n        encoding_format: \"float\",\n        dimensions: openaiOptions.dimensions,\n        user: openaiOptions.user\n      },\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler3(\n        openaiTextEmbeddingResponseSchema\n      ),\n      abortSignal,\n      fetch: this.config.fetch\n    });\n    return {\n      embeddings: response.data.map((item) => item.embedding),\n      usage: response.usage ? { tokens: response.usage.prompt_tokens } : void 0,\n      response: { headers: responseHeaders, body: rawValue }\n    };\n  }\n};\n\n// src/image/openai-image-model.ts\nimport {\n  combineHeaders as combineHeaders4,\n  createJsonResponseHandler as createJsonResponseHandler4,\n  parseProviderOptions as parseProviderOptions4,\n  postJsonToApi as postJsonToApi4\n} from \"@ai-sdk/provider-utils\";\n\n// src/image/openai-image-api.ts\nimport { lazyValidator as lazyValidator7, zodSchema as zodSchema7 } from \"@ai-sdk/provider-utils\";\nimport { z as z8 } from \"zod/v4\";\nvar openaiImageResponseSchema = lazyValidator7(\n  () => zodSchema7(\n    z8.object({\n      created: z8.number().nullish(),\n      data: z8.array(\n        z8.object({\n          b64_json: z8.string(),\n          revised_prompt: z8.string().nullish()\n        })\n      ),\n      background: z8.string().nullish(),\n      output_format: z8.string().nullish(),\n      size: z8.string().nullish(),\n      quality: z8.string().nullish(),\n      usage: z8.object({\n        input_tokens: z8.number().nullish(),\n        output_tokens: z8.number().nullish(),\n        total_tokens: z8.number().nullish(),\n        input_tokens_details: z8.object({\n          image_tokens: z8.number().nullish(),\n          text_tokens: z8.number().nullish()\n        }).nullish()\n      }).nullish()\n    })\n  )\n);\n\n// src/image/openai-image-options.ts\nimport {\n  lazyValidator as lazyValidator8,\n  zodSchema as zodSchema8\n} from \"@ai-sdk/provider-utils\";\nimport { z as z9 } from \"zod/v4\";\nvar modelMaxImagesPerCall = {\n  \"dall-e-3\": 1,\n  \"dall-e-2\": 10,\n  \"gpt-image-1\": 10,\n  \"gpt-image-1-mini\": 10,\n  \"gpt-image-1.5\": 10,\n  \"gpt-image-2\": 10\n};\nvar defaultResponseFormatPrefixes = [\"gpt-image-\"];\nfunction hasDefaultResponseFormat(modelId) {\n  return defaultResponseFormatPrefixes.some(\n    (prefix) => modelId.startsWith(prefix)\n  );\n}\nfunction getMaxImagesPerCall(modelId) {\n  var _a;\n  return (_a = modelMaxImagesPerCall[modelId]) != null ? _a : modelId.startsWith(\"gpt-image-\") ? 10 : 1;\n}\nvar baseImageModelOptionsObject = z9.object({\n  /**\n   * Quality of the generated image(s).\n   *\n   * Valid values: `standard`, `hd`, `low`, `medium`, `high`, `auto`.\n   */\n  quality: z9.enum([\"standard\", \"hd\", \"low\", \"medium\", \"high\", \"auto\"]).optional(),\n  /**\n   * Background behavior for the generated image(s).\n   *\n   * If `transparent`, the output format must support transparency\n   * (i.e. `png` or `webp`).\n   */\n  background: z9.enum([\"transparent\", \"opaque\", \"auto\"]).optional(),\n  /**\n   * Format in which the generated image(s) are returned.\n   */\n  outputFormat: z9.enum([\"png\", \"jpeg\", \"webp\"]).optional(),\n  /**\n   * Compression level (0-100) for the generated image(s). Applies to the\n   * `jpeg` and `webp` output formats.\n   */\n  outputCompression: z9.number().int().min(0).max(100).optional(),\n  /**\n   * A unique identifier representing your end-user, which can help OpenAI\n   * to monitor and detect abuse.\n   */\n  user: z9.string().optional()\n});\nvar openaiImageModelOptions = lazyValidator8(\n  () => zodSchema8(baseImageModelOptionsObject)\n);\nvar openaiImageModelGenerationOptions = lazyValidator8(\n  () => zodSchema8(\n    baseImageModelOptionsObject.extend({\n      /**\n       * Style of the generated image. `vivid` produces hyper-real and\n       * dramatic images; `natural` produces more subdued, less hyper-real\n       * looking images.\n       */\n      style: z9.enum([\"vivid\", \"natural\"]).optional(),\n      /**\n       * Content moderation level for the generated image(s). `low` applies\n       * less restrictive filtering.\n       */\n      moderation: z9.enum([\"auto\", \"low\"]).optional()\n    })\n  )\n);\n\n// src/image/openai-image-model.ts\nvar OpenAIImageModel = class {\n  constructor(modelId, config) {\n    this.modelId = modelId;\n    this.config = config;\n    this.specificationVersion = \"v2\";\n  }\n  get maxImagesPerCall() {\n    return getMaxImagesPerCall(this.modelId);\n  }\n  get provider() {\n    return this.config.provider;\n  }\n  async doGenerate({\n    prompt,\n    n,\n    size,\n    aspectRatio,\n    seed,\n    providerOptions,\n    headers,\n    abortSignal\n  }) {\n    var _a, _b, _c, _d;\n    const warnings = [];\n    if (aspectRatio != null) {\n      warnings.push({\n        type: \"unsupported-setting\",\n        setting: \"aspectRatio\",\n        details: \"This model does not support aspect ratio. Use `size` instead.\"\n      });\n    }\n    if (seed != null) {\n      warnings.push({ type: \"unsupported-setting\", setting: \"seed\" });\n    }\n    const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();\n    const openaiOptions = (_d = await parseProviderOptions4({\n      provider: \"openai\",\n      providerOptions,\n      schema: openaiImageModelGenerationOptions\n    })) != null ? _d : {};\n    const { value: response, responseHeaders } = await postJsonToApi4({\n      url: this.config.url({\n        path: \"/images/generations\",\n        modelId: this.modelId\n      }),\n      headers: combineHeaders4(this.config.headers(), headers),\n      body: {\n        model: this.modelId,\n        prompt,\n        n,\n        size,\n        quality: openaiOptions.quality,\n        style: openaiOptions.style,\n        background: openaiOptions.background,\n        moderation: openaiOptions.moderation,\n        output_format: openaiOptions.outputFormat,\n        output_compression: openaiOptions.outputCompression,\n        user: openaiOptions.user,\n        ...!hasDefaultResponseFormat(this.modelId) ? { response_format: \"b64_json\" } : {}\n      },\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler4(\n        openaiImageResponseSchema\n      ),\n      abortSignal,\n      fetch: this.config.fetch\n    });\n    return {\n      images: response.data.map((item) => item.b64_json),\n      warnings,\n      response: {\n        timestamp: currentDate,\n        modelId: this.modelId,\n        headers: responseHeaders\n      },\n      providerMetadata: {\n        openai: {\n          images: response.data.map((item, index) => ({\n            ...item.revised_prompt ? { revisedPrompt: item.revised_prompt } : {},\n            ...response.created != null ? { created: response.created } : {},\n            ...response.size != null ? { size: response.size } : {},\n            ...response.quality != null ? { quality: response.quality } : {},\n            ...response.background != null ? { background: response.background } : {},\n            ...response.output_format != null ? { outputFormat: response.output_format } : {},\n            ...distributeTokenDetails(\n              response.usage,\n              index,\n              response.data.length\n            )\n          }))\n        }\n      }\n    };\n  }\n};\nfunction distributeTokenDetails(usage, index, total) {\n  if (usage == null) {\n    return {};\n  }\n  const result = {};\n  const details = usage.input_tokens_details;\n  if ((details == null ? void 0 : details.image_tokens) != null) {\n    const base = Math.floor(details.image_tokens / total);\n    const remainder = details.image_tokens - base * (total - 1);\n    result.imageTokens = index === total - 1 ? remainder : base;\n  }\n  if ((details == null ? void 0 : details.text_tokens) != null) {\n    const base = Math.floor(details.text_tokens / total);\n    const remainder = details.text_tokens - base * (total - 1);\n    result.textTokens = index === total - 1 ? remainder : base;\n  }\n  if (usage.input_tokens != null) {\n    const base = Math.floor(usage.input_tokens / total);\n    const remainder = usage.input_tokens - base * (total - 1);\n    result.inputTokens = index === total - 1 ? remainder : base;\n  }\n  if (usage.output_tokens != null) {\n    const base = Math.floor(usage.output_tokens / total);\n    const remainder = usage.output_tokens - base * (total - 1);\n    result.outputTokens = index === total - 1 ? remainder : base;\n  }\n  return result;\n}\n\n// src/transcription/openai-transcription-model.ts\nimport {\n  combineHeaders as combineHeaders5,\n  convertBase64ToUint8Array,\n  createJsonResponseHandler as createJsonResponseHandler5,\n  mediaTypeToExtension,\n  parseProviderOptions as parseProviderOptions5,\n  postFormDataToApi\n} from \"@ai-sdk/provider-utils\";\n\n// src/transcription/openai-transcription-api.ts\nimport { lazyValidator as lazyValidator9, zodSchema as zodSchema9 } from \"@ai-sdk/provider-utils\";\nimport { z as z10 } from \"zod/v4\";\nvar openaiTranscriptionResponseSchema = lazyValidator9(\n  () => zodSchema9(\n    z10.object({\n      text: z10.string(),\n      language: z10.string().nullish(),\n      duration: z10.number().nullish(),\n      words: z10.array(\n        z10.object({\n          word: z10.string(),\n          start: z10.number(),\n          end: z10.number()\n        })\n      ).nullish(),\n      segments: z10.array(\n        z10.object({\n          id: z10.number(),\n          seek: z10.number(),\n          start: z10.number(),\n          end: z10.number(),\n          text: z10.string(),\n          tokens: z10.array(z10.number()),\n          temperature: z10.number(),\n          avg_logprob: z10.number(),\n          compression_ratio: z10.number(),\n          no_speech_prob: z10.number()\n        })\n      ).nullish()\n    })\n  )\n);\n\n// src/transcription/openai-transcription-options.ts\nimport {\n  lazyValidator as lazyValidator10,\n  zodSchema as zodSchema10\n} from \"@ai-sdk/provider-utils\";\nimport { z as z11 } from \"zod/v4\";\nvar openAITranscriptionProviderOptions = lazyValidator10(\n  () => zodSchema10(\n    z11.object({\n      /**\n       * Additional information to include in the transcription response.\n       */\n      include: z11.array(z11.string()).optional(),\n      /**\n       * The language of the input audio in ISO-639-1 format.\n       */\n      language: z11.string().optional(),\n      /**\n       * An optional text to guide the model's style or continue a previous audio segment.\n       */\n      prompt: z11.string().optional(),\n      /**\n       * The sampling temperature, between 0 and 1.\n       * @default 0\n       */\n      temperature: z11.number().min(0).max(1).default(0).optional(),\n      /**\n       * The timestamp granularities to populate for this transcription.\n       * @default ['segment']\n       */\n      timestampGranularities: z11.array(z11.enum([\"word\", \"segment\"])).default([\"segment\"]).optional()\n    })\n  )\n);\n\n// src/transcription/openai-transcription-model.ts\nvar languageMap = {\n  afrikaans: \"af\",\n  arabic: \"ar\",\n  armenian: \"hy\",\n  azerbaijani: \"az\",\n  belarusian: \"be\",\n  bosnian: \"bs\",\n  bulgarian: \"bg\",\n  catalan: \"ca\",\n  chinese: \"zh\",\n  croatian: \"hr\",\n  czech: \"cs\",\n  danish: \"da\",\n  dutch: \"nl\",\n  english: \"en\",\n  estonian: \"et\",\n  finnish: \"fi\",\n  french: \"fr\",\n  galician: \"gl\",\n  german: \"de\",\n  greek: \"el\",\n  hebrew: \"he\",\n  hindi: \"hi\",\n  hungarian: \"hu\",\n  icelandic: \"is\",\n  indonesian: \"id\",\n  italian: \"it\",\n  japanese: \"ja\",\n  kannada: \"kn\",\n  kazakh: \"kk\",\n  korean: \"ko\",\n  latvian: \"lv\",\n  lithuanian: \"lt\",\n  macedonian: \"mk\",\n  malay: \"ms\",\n  marathi: \"mr\",\n  maori: \"mi\",\n  nepali: \"ne\",\n  norwegian: \"no\",\n  persian: \"fa\",\n  polish: \"pl\",\n  portuguese: \"pt\",\n  romanian: \"ro\",\n  russian: \"ru\",\n  serbian: \"sr\",\n  slovak: \"sk\",\n  slovenian: \"sl\",\n  spanish: \"es\",\n  swahili: \"sw\",\n  swedish: \"sv\",\n  tagalog: \"tl\",\n  tamil: \"ta\",\n  thai: \"th\",\n  turkish: \"tr\",\n  ukrainian: \"uk\",\n  urdu: \"ur\",\n  vietnamese: \"vi\",\n  welsh: \"cy\"\n};\nvar OpenAITranscriptionModel = class {\n  constructor(modelId, config) {\n    this.modelId = modelId;\n    this.config = config;\n    this.specificationVersion = \"v2\";\n  }\n  get provider() {\n    return this.config.provider;\n  }\n  async getArgs({\n    audio,\n    mediaType,\n    providerOptions\n  }) {\n    const warnings = [];\n    const openAIOptions = await parseProviderOptions5({\n      provider: \"openai\",\n      providerOptions,\n      schema: openAITranscriptionProviderOptions\n    });\n    const formData = new FormData();\n    const blob = audio instanceof Uint8Array ? new Blob([audio]) : new Blob([convertBase64ToUint8Array(audio)]);\n    formData.append(\"model\", this.modelId);\n    const fileExtension = mediaTypeToExtension(mediaType);\n    formData.append(\n      \"file\",\n      new File([blob], \"audio\", { type: mediaType }),\n      `audio.${fileExtension}`\n    );\n    if (openAIOptions) {\n      const transcriptionModelOptions = {\n        include: openAIOptions.include,\n        language: openAIOptions.language,\n        prompt: openAIOptions.prompt,\n        // https://platform.openai.com/docs/api-reference/audio/createTranscription#audio_createtranscription-response_format\n        // prefer verbose_json to get segments for models that support it\n        response_format: [\n          \"gpt-4o-transcribe\",\n          \"gpt-4o-mini-transcribe\"\n        ].includes(this.modelId) ? \"json\" : \"verbose_json\",\n        temperature: openAIOptions.temperature,\n        timestamp_granularities: openAIOptions.timestampGranularities\n      };\n      for (const [key, value] of Object.entries(transcriptionModelOptions)) {\n        if (value != null) {\n          if (Array.isArray(value)) {\n            for (const item of value) {\n              formData.append(`${key}[]`, String(item));\n            }\n          } else {\n            formData.append(key, String(value));\n          }\n        }\n      }\n    }\n    return {\n      formData,\n      warnings\n    };\n  }\n  async doGenerate(options) {\n    var _a, _b, _c, _d, _e, _f, _g, _h;\n    const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();\n    const { formData, warnings } = await this.getArgs(options);\n    const {\n      value: response,\n      responseHeaders,\n      rawValue: rawResponse\n    } = await postFormDataToApi({\n      url: this.config.url({\n        path: \"/audio/transcriptions\",\n        modelId: this.modelId\n      }),\n      headers: combineHeaders5(this.config.headers(), options.headers),\n      formData,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler5(\n        openaiTranscriptionResponseSchema\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch\n    });\n    const language = response.language != null && response.language in languageMap ? languageMap[response.language] : void 0;\n    return {\n      text: response.text,\n      segments: (_g = (_f = (_d = response.segments) == null ? void 0 : _d.map((segment) => ({\n        text: segment.text,\n        startSecond: segment.start,\n        endSecond: segment.end\n      }))) != null ? _f : (_e = response.words) == null ? void 0 : _e.map((word) => ({\n        text: word.word,\n        startSecond: word.start,\n        endSecond: word.end\n      }))) != null ? _g : [],\n      language,\n      durationInSeconds: (_h = response.duration) != null ? _h : void 0,\n      warnings,\n      response: {\n        timestamp: currentDate,\n        modelId: this.modelId,\n        headers: responseHeaders,\n        body: rawResponse\n      }\n    };\n  }\n};\n\n// src/speech/openai-speech-model.ts\nimport {\n  combineHeaders as combineHeaders6,\n  createBinaryResponseHandler,\n  parseProviderOptions as parseProviderOptions6,\n  postJsonToApi as postJsonToApi5\n} from \"@ai-sdk/provider-utils\";\n\n// src/speech/openai-speech-options.ts\nimport {\n  lazyValidator as lazyValidator11,\n  zodSchema as zodSchema11\n} from \"@ai-sdk/provider-utils\";\nimport { z as z12 } from \"zod/v4\";\nvar openaiSpeechProviderOptionsSchema = lazyValidator11(\n  () => zodSchema11(\n    z12.object({\n      instructions: z12.string().nullish(),\n      speed: z12.number().min(0.25).max(4).default(1).nullish()\n    })\n  )\n);\n\n// src/speech/openai-speech-model.ts\nvar OpenAISpeechModel = class {\n  constructor(modelId, config) {\n    this.modelId = modelId;\n    this.config = config;\n    this.specificationVersion = \"v2\";\n  }\n  get provider() {\n    return this.config.provider;\n  }\n  async getArgs({\n    text,\n    voice = \"alloy\",\n    outputFormat = \"mp3\",\n    speed,\n    instructions,\n    language,\n    providerOptions\n  }) {\n    const warnings = [];\n    const openAIOptions = await parseProviderOptions6({\n      provider: \"openai\",\n      providerOptions,\n      schema: openaiSpeechProviderOptionsSchema\n    });\n    const requestBody = {\n      model: this.modelId,\n      input: text,\n      voice,\n      response_format: \"mp3\",\n      speed,\n      instructions\n    };\n    if (outputFormat) {\n      if ([\"mp3\", \"opus\", \"aac\", \"flac\", \"wav\", \"pcm\"].includes(outputFormat)) {\n        requestBody.response_format = outputFormat;\n      } else {\n        warnings.push({\n          type: \"unsupported-setting\",\n          setting: \"outputFormat\",\n          details: `Unsupported output format: ${outputFormat}. Using mp3 instead.`\n        });\n      }\n    }\n    if (openAIOptions) {\n      const speechModelOptions = {};\n      for (const key in speechModelOptions) {\n        const value = speechModelOptions[key];\n        if (value !== void 0) {\n          requestBody[key] = value;\n        }\n      }\n    }\n    if (language) {\n      warnings.push({\n        type: \"unsupported-setting\",\n        setting: \"language\",\n        details: `OpenAI speech models do not support language selection. Language parameter \"${language}\" was ignored.`\n      });\n    }\n    return {\n      requestBody,\n      warnings\n    };\n  }\n  async doGenerate(options) {\n    var _a, _b, _c;\n    const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();\n    const { requestBody, warnings } = await this.getArgs(options);\n    const {\n      value: audio,\n      responseHeaders,\n      rawValue: rawResponse\n    } = await postJsonToApi5({\n      url: this.config.url({\n        path: \"/audio/speech\",\n        modelId: this.modelId\n      }),\n      headers: combineHeaders6(this.config.headers(), options.headers),\n      body: requestBody,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createBinaryResponseHandler(),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch\n    });\n    return {\n      audio,\n      warnings,\n      request: {\n        body: JSON.stringify(requestBody)\n      },\n      response: {\n        timestamp: currentDate,\n        modelId: this.modelId,\n        headers: responseHeaders,\n        body: rawResponse\n      }\n    };\n  }\n};\n\n// src/responses/openai-responses-language-model.ts\nimport {\n  APICallError\n} from \"@ai-sdk/provider\";\nimport {\n  combineHeaders as combineHeaders7,\n  createEventSourceResponseHandler as createEventSourceResponseHandler3,\n  createJsonResponseHandler as createJsonResponseHandler6,\n  generateId as generateId2,\n  parseProviderOptions as parseProviderOptions8,\n  postJsonToApi as postJsonToApi6\n} from \"@ai-sdk/provider-utils\";\n\n// src/responses/convert-to-openai-responses-input.ts\nimport {\n  UnsupportedFunctionalityError as UnsupportedFunctionalityError4\n} from \"@ai-sdk/provider\";\nimport {\n  convertToBase64 as convertToBase642,\n  parseProviderOptions as parseProviderOptions7,\n  validateTypes\n} from \"@ai-sdk/provider-utils\";\nimport { z as z14 } from \"zod/v4\";\n\n// src/tool/local-shell.ts\nimport {\n  createProviderDefinedToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema as zodSchema12\n} from \"@ai-sdk/provider-utils\";\nimport { z as z13 } from \"zod/v4\";\nvar localShellInputSchema = lazySchema(\n  () => zodSchema12(\n    z13.object({\n      action: z13.object({\n        type: z13.literal(\"exec\"),\n        command: z13.array(z13.string()),\n        timeoutMs: z13.number().optional(),\n        user: z13.string().optional(),\n        workingDirectory: z13.string().optional(),\n        env: z13.record(z13.string(), z13.string()).optional()\n      })\n    })\n  )\n);\nvar localShellOutputSchema = lazySchema(\n  () => zodSchema12(z13.object({ output: z13.string() }))\n);\nvar localShell = createProviderDefinedToolFactoryWithOutputSchema({\n  id: \"openai.local_shell\",\n  name: \"local_shell\",\n  inputSchema: localShellInputSchema,\n  outputSchema: localShellOutputSchema\n});\n\n// src/responses/convert-to-openai-responses-input.ts\nfunction getPromptCacheBreakpoint2(providerOptions) {\n  var _a;\n  return (_a = providerOptions == null ? void 0 : providerOptions.openai) == null ? void 0 : _a.promptCacheBreakpoint;\n}\nfunction isFileId(data, prefixes) {\n  if (!prefixes) return false;\n  return prefixes.some((prefix) => data.startsWith(prefix));\n}\nasync function convertToOpenAIResponsesInput({\n  prompt,\n  systemMessageMode,\n  fileIdPrefixes,\n  store,\n  hasLocalShellTool = false\n}) {\n  var _a, _b, _c, _d, _e, _f;\n  let input = [];\n  const warnings = [];\n  for (const { role, content, providerOptions } of prompt) {\n    switch (role) {\n      case \"system\": {\n        switch (systemMessageMode) {\n          case \"system\": {\n            const promptCacheBreakpoint = getPromptCacheBreakpoint2(providerOptions);\n            input.push({\n              role: \"system\",\n              content: promptCacheBreakpoint == null ? content : [\n                {\n                  type: \"input_text\",\n                  text: content,\n                  prompt_cache_breakpoint: promptCacheBreakpoint\n                }\n              ]\n            });\n            break;\n          }\n          case \"developer\": {\n            const promptCacheBreakpoint = getPromptCacheBreakpoint2(providerOptions);\n            input.push({\n              role: \"developer\",\n              content: promptCacheBreakpoint == null ? content : [\n                {\n                  type: \"input_text\",\n                  text: content,\n                  prompt_cache_breakpoint: promptCacheBreakpoint\n                }\n              ]\n            });\n            break;\n          }\n          case \"remove\": {\n            warnings.push({\n              type: \"other\",\n              message: \"system messages are removed for this model\"\n            });\n            break;\n          }\n          default: {\n            const _exhaustiveCheck = systemMessageMode;\n            throw new Error(\n              `Unsupported system message mode: ${_exhaustiveCheck}`\n            );\n          }\n        }\n        break;\n      }\n      case \"user\": {\n        input.push({\n          role: \"user\",\n          content: content.map((part, index) => {\n            var _a2, _b2, _c2;\n            switch (part.type) {\n              case \"text\": {\n                const promptCacheBreakpoint = getPromptCacheBreakpoint2(\n                  part.providerOptions\n                );\n                return {\n                  type: \"input_text\",\n                  text: part.text,\n                  ...promptCacheBreakpoint != null && {\n                    prompt_cache_breakpoint: promptCacheBreakpoint\n                  }\n                };\n              }\n              case \"file\": {\n                const promptCacheBreakpoint = getPromptCacheBreakpoint2(\n                  part.providerOptions\n                );\n                if (part.mediaType.startsWith(\"image/\")) {\n                  const mediaType = part.mediaType === \"image/*\" ? \"image/jpeg\" : part.mediaType;\n                  return {\n                    type: \"input_image\",\n                    ...part.data instanceof URL ? { image_url: part.data.toString() } : typeof part.data === \"string\" && isFileId(part.data, fileIdPrefixes) ? { file_id: part.data } : {\n                      image_url: `data:${mediaType};base64,${convertToBase642(part.data)}`\n                    },\n                    detail: (_b2 = (_a2 = part.providerOptions) == null ? void 0 : _a2.openai) == null ? void 0 : _b2.imageDetail,\n                    ...promptCacheBreakpoint != null && {\n                      prompt_cache_breakpoint: promptCacheBreakpoint\n                    }\n                  };\n                } else if (part.mediaType === \"application/pdf\") {\n                  if (part.data instanceof URL) {\n                    return {\n                      type: \"input_file\",\n                      file_url: part.data.toString(),\n                      ...promptCacheBreakpoint != null && {\n                        prompt_cache_breakpoint: promptCacheBreakpoint\n                      }\n                    };\n                  }\n                  return {\n                    type: \"input_file\",\n                    ...typeof part.data === \"string\" && isFileId(part.data, fileIdPrefixes) ? { file_id: part.data } : {\n                      filename: (_c2 = part.filename) != null ? _c2 : `part-${index}.pdf`,\n                      file_data: `data:application/pdf;base64,${convertToBase642(part.data)}`\n                    },\n                    ...promptCacheBreakpoint != null && {\n                      prompt_cache_breakpoint: promptCacheBreakpoint\n                    }\n                  };\n                } else {\n                  throw new UnsupportedFunctionalityError4({\n                    functionality: `file part media type ${part.mediaType}`\n                  });\n                }\n              }\n            }\n          })\n        });\n        break;\n      }\n      case \"assistant\": {\n        const reasoningMessages = {};\n        const toolCallParts = {};\n        for (const part of content) {\n          switch (part.type) {\n            case \"text\": {\n              const id = (_b = (_a = part.providerOptions) == null ? void 0 : _a.openai) == null ? void 0 : _b.itemId;\n              const phase = (_d = (_c = part.providerOptions) == null ? void 0 : _c.openai) == null ? void 0 : _d.phase;\n              if (store && id != null) {\n                input.push({ type: \"item_reference\", id });\n                break;\n              }\n              input.push({\n                role: \"assistant\",\n                content: [{ type: \"output_text\", text: part.text }],\n                id,\n                ...phase != null && { phase }\n              });\n              break;\n            }\n            case \"tool-call\": {\n              toolCallParts[part.toolCallId] = part;\n              if (part.providerExecuted) {\n                break;\n              }\n              const id = (_f = (_e = part.providerOptions) == null ? void 0 : _e.openai) == null ? void 0 : _f.itemId;\n              if (store && id != null) {\n                input.push({ type: \"item_reference\", id });\n                break;\n              }\n              if (hasLocalShellTool && part.toolName === \"local_shell\") {\n                const parsedInput = await validateTypes({\n                  value: part.input,\n                  schema: localShellInputSchema\n                });\n                input.push({\n                  type: \"local_shell_call\",\n                  call_id: part.toolCallId,\n                  id,\n                  action: {\n                    type: \"exec\",\n                    command: parsedInput.action.command,\n                    timeout_ms: parsedInput.action.timeoutMs,\n                    user: parsedInput.action.user,\n                    working_directory: parsedInput.action.workingDirectory,\n                    env: parsedInput.action.env\n                  }\n                });\n                break;\n              }\n              input.push({\n                type: \"function_call\",\n                call_id: part.toolCallId,\n                name: part.toolName,\n                arguments: JSON.stringify(part.input),\n                id\n              });\n              break;\n            }\n            // assistant tool result parts are from provider-executed tools:\n            case \"tool-result\": {\n              if (store) {\n                input.push({ type: \"item_reference\", id: part.toolCallId });\n              } else {\n                warnings.push({\n                  type: \"other\",\n                  message: `Results for OpenAI tool ${part.toolName} are not sent to the API when store is false`\n                });\n              }\n              break;\n            }\n            case \"reasoning\": {\n              const providerOptions2 = await parseProviderOptions7({\n                provider: \"openai\",\n                providerOptions: part.providerOptions,\n                schema: openaiResponsesReasoningProviderOptionsSchema\n              });\n              const reasoningId = providerOptions2 == null ? void 0 : providerOptions2.itemId;\n              if (reasoningId != null) {\n                const reasoningMessage = reasoningMessages[reasoningId];\n                if (store) {\n                  if (reasoningMessage === void 0) {\n                    input.push({ type: \"item_reference\", id: reasoningId });\n                    reasoningMessages[reasoningId] = {\n                      type: \"reasoning\",\n                      id: reasoningId,\n                      summary: []\n                    };\n                  }\n                } else {\n                  const summaryParts = [];\n                  if (part.text.length > 0) {\n                    summaryParts.push({\n                      type: \"summary_text\",\n                      text: part.text\n                    });\n                  } else if (reasoningMessage !== void 0) {\n                    warnings.push({\n                      type: \"other\",\n                      message: `Cannot append empty reasoning part to existing reasoning sequence. Skipping reasoning part: ${JSON.stringify(part)}.`\n                    });\n                  }\n                  if (reasoningMessage === void 0) {\n                    reasoningMessages[reasoningId] = {\n                      type: \"reasoning\",\n                      id: reasoningId,\n                      encrypted_content: providerOptions2 == null ? void 0 : providerOptions2.reasoningEncryptedContent,\n                      summary: summaryParts\n                    };\n                    input.push(reasoningMessages[reasoningId]);\n                  } else {\n                    reasoningMessage.summary.push(...summaryParts);\n                    if ((providerOptions2 == null ? void 0 : providerOptions2.reasoningEncryptedContent) != null) {\n                      reasoningMessage.encrypted_content = providerOptions2.reasoningEncryptedContent;\n                    }\n                  }\n                }\n              } else {\n                warnings.push({\n                  type: \"other\",\n                  message: `Non-OpenAI reasoning parts are not supported. Skipping reasoning part: ${JSON.stringify(part)}.`\n                });\n              }\n              break;\n            }\n          }\n        }\n        break;\n      }\n      case \"tool\": {\n        for (const part of content) {\n          const output = part.output;\n          const promptCacheBreakpoint = getPromptCacheBreakpoint2(\n            part.providerOptions\n          );\n          if (hasLocalShellTool && part.toolName === \"local_shell\" && output.type === \"json\") {\n            const parsedOutput = await validateTypes({\n              value: output.value,\n              schema: localShellOutputSchema\n            });\n            input.push({\n              type: \"local_shell_call_output\",\n              call_id: part.toolCallId,\n              output: parsedOutput.output\n            });\n            break;\n          }\n          let contentValue;\n          switch (output.type) {\n            case \"text\":\n            case \"error-text\":\n              contentValue = promptCacheBreakpoint == null ? output.value : [\n                {\n                  type: \"input_text\",\n                  text: output.value,\n                  prompt_cache_breakpoint: promptCacheBreakpoint\n                }\n              ];\n              break;\n            case \"json\":\n            case \"error-json\":\n              contentValue = promptCacheBreakpoint == null ? JSON.stringify(output.value) : [\n                {\n                  type: \"input_text\",\n                  text: JSON.stringify(output.value),\n                  prompt_cache_breakpoint: promptCacheBreakpoint\n                }\n              ];\n              break;\n            case \"content\":\n              contentValue = output.value.map((item, index) => {\n                const isBreakpoint = promptCacheBreakpoint != null && index === output.value.length - 1;\n                switch (item.type) {\n                  case \"text\": {\n                    return {\n                      type: \"input_text\",\n                      text: item.text,\n                      ...isBreakpoint && {\n                        prompt_cache_breakpoint: promptCacheBreakpoint\n                      }\n                    };\n                  }\n                  case \"media\": {\n                    return item.mediaType.startsWith(\"image/\") ? {\n                      type: \"input_image\",\n                      image_url: `data:${item.mediaType};base64,${item.data}`,\n                      ...isBreakpoint && {\n                        prompt_cache_breakpoint: promptCacheBreakpoint\n                      }\n                    } : {\n                      type: \"input_file\",\n                      filename: \"data\",\n                      file_data: `data:${item.mediaType};base64,${item.data}`,\n                      ...isBreakpoint && {\n                        prompt_cache_breakpoint: promptCacheBreakpoint\n                      }\n                    };\n                  }\n                }\n              });\n              break;\n          }\n          input.push({\n            type: \"function_call_output\",\n            call_id: part.toolCallId,\n            output: contentValue\n          });\n        }\n        break;\n      }\n      default: {\n        const _exhaustiveCheck = role;\n        throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n      }\n    }\n  }\n  if (!store && input.some(\n    (item) => \"type\" in item && item.type === \"reasoning\" && item.encrypted_content == null\n  )) {\n    warnings.push({\n      type: \"other\",\n      message: \"Reasoning parts without encrypted content are not supported when store is false. Skipping reasoning parts.\"\n    });\n    input = input.filter(\n      (item) => !(\"type\" in item) || item.type !== \"reasoning\" || item.encrypted_content != null\n    );\n  }\n  return { input, warnings };\n}\nvar openaiResponsesReasoningProviderOptionsSchema = z14.object({\n  itemId: z14.string().nullish(),\n  reasoningEncryptedContent: z14.string().nullish()\n});\n\n// src/responses/map-openai-responses-finish-reason.ts\nfunction mapOpenAIResponseFinishReason({\n  finishReason,\n  hasFunctionCall\n}) {\n  switch (finishReason) {\n    case void 0:\n    case null:\n      return hasFunctionCall ? \"tool-calls\" : \"stop\";\n    case \"max_output_tokens\":\n      return \"length\";\n    case \"content_filter\":\n      return \"content-filter\";\n    default:\n      return hasFunctionCall ? \"tool-calls\" : \"unknown\";\n  }\n}\n\n// src/responses/openai-responses-api.ts\nimport {\n  lazyValidator as lazyValidator12,\n  zodSchema as zodSchema13\n} from \"@ai-sdk/provider-utils\";\nimport { z as z15 } from \"zod/v4\";\nvar openaiResponsesChunkSchema = lazyValidator12(\n  () => zodSchema13(\n    z15.union([\n      z15.object({\n        type: z15.literal(\"response.output_text.delta\"),\n        item_id: z15.string(),\n        delta: z15.string(),\n        logprobs: z15.array(\n          z15.object({\n            token: z15.string(),\n            logprob: z15.number(),\n            top_logprobs: z15.array(\n              z15.object({\n                token: z15.string(),\n                logprob: z15.number()\n              })\n            )\n          })\n        ).nullish()\n      }),\n      z15.object({\n        type: z15.enum([\"response.completed\", \"response.incomplete\"]),\n        response: z15.object({\n          incomplete_details: z15.object({ reason: z15.string() }).nullish(),\n          usage: z15.object({\n            input_tokens: z15.number(),\n            input_tokens_details: z15.object({\n              cached_tokens: z15.number().nullish(),\n              cache_write_tokens: z15.number().nullish(),\n              orchestration_input_tokens: z15.number().nullish(),\n              orchestration_input_cached_tokens: z15.number().nullish()\n            }).nullish(),\n            output_tokens: z15.number(),\n            output_tokens_details: z15.object({\n              reasoning_tokens: z15.number().nullish(),\n              orchestration_output_tokens: z15.number().nullish()\n            }).nullish()\n          }),\n          reasoning: z15.object({\n            context: z15.string().nullish()\n          }).nullish(),\n          service_tier: z15.string().nullish()\n        })\n      }),\n      z15.object({\n        type: z15.literal(\"response.created\"),\n        response: z15.object({\n          id: z15.string(),\n          created_at: z15.number(),\n          model: z15.string(),\n          service_tier: z15.string().nullish()\n        })\n      }),\n      z15.object({\n        type: z15.literal(\"response.output_item.added\"),\n        output_index: z15.number(),\n        item: z15.discriminatedUnion(\"type\", [\n          z15.object({\n            type: z15.literal(\"message\"),\n            id: z15.string(),\n            phase: z15.enum([\"commentary\", \"final_answer\"]).nullish()\n          }),\n          z15.object({\n            type: z15.literal(\"reasoning\"),\n            id: z15.string(),\n            encrypted_content: z15.string().nullish()\n          }),\n          z15.object({\n            type: z15.literal(\"function_call\"),\n            id: z15.string(),\n            call_id: z15.string(),\n            name: z15.string(),\n            arguments: z15.string()\n          }),\n          z15.object({\n            type: z15.literal(\"web_search_call\"),\n            id: z15.string(),\n            status: z15.string()\n          }),\n          z15.object({\n            type: z15.literal(\"computer_call\"),\n            id: z15.string(),\n            status: z15.string()\n          }),\n          z15.object({\n            type: z15.literal(\"file_search_call\"),\n            id: z15.string()\n          }),\n          z15.object({\n            type: z15.literal(\"image_generation_call\"),\n            id: z15.string()\n          }),\n          z15.object({\n            type: z15.literal(\"code_interpreter_call\"),\n            id: z15.string(),\n            container_id: z15.string(),\n            code: z15.string().nullable(),\n            outputs: z15.array(\n              z15.discriminatedUnion(\"type\", [\n                z15.object({ type: z15.literal(\"logs\"), logs: z15.string() }),\n                z15.object({ type: z15.literal(\"image\"), url: z15.string() })\n              ])\n            ).nullable(),\n            status: z15.string()\n          })\n        ])\n      }),\n      z15.object({\n        type: z15.literal(\"response.output_item.done\"),\n        output_index: z15.number(),\n        item: z15.discriminatedUnion(\"type\", [\n          z15.object({\n            type: z15.literal(\"message\"),\n            id: z15.string(),\n            phase: z15.enum([\"commentary\", \"final_answer\"]).nullish()\n          }),\n          z15.object({\n            type: z15.literal(\"reasoning\"),\n            id: z15.string(),\n            encrypted_content: z15.string().nullish()\n          }),\n          z15.object({\n            type: z15.literal(\"function_call\"),\n            id: z15.string(),\n            call_id: z15.string(),\n            name: z15.string(),\n            arguments: z15.string(),\n            status: z15.literal(\"completed\")\n          }),\n          z15.object({\n            type: z15.literal(\"code_interpreter_call\"),\n            id: z15.string(),\n            code: z15.string().nullable(),\n            container_id: z15.string(),\n            outputs: z15.array(\n              z15.discriminatedUnion(\"type\", [\n                z15.object({ type: z15.literal(\"logs\"), logs: z15.string() }),\n                z15.object({ type: z15.literal(\"image\"), url: z15.string() })\n              ])\n            ).nullable()\n          }),\n          z15.object({\n            type: z15.literal(\"image_generation_call\"),\n            id: z15.string(),\n            result: z15.string()\n          }),\n          z15.object({\n            type: z15.literal(\"web_search_call\"),\n            id: z15.string(),\n            status: z15.string(),\n            action: z15.discriminatedUnion(\"type\", [\n              z15.object({\n                type: z15.literal(\"search\"),\n                query: z15.string().nullish(),\n                sources: z15.array(\n                  z15.discriminatedUnion(\"type\", [\n                    z15.object({ type: z15.literal(\"url\"), url: z15.string() }),\n                    z15.object({ type: z15.literal(\"api\"), name: z15.string() })\n                  ])\n                ).nullish()\n              }),\n              z15.object({\n                type: z15.literal(\"open_page\"),\n                url: z15.string().nullish()\n              }),\n              z15.object({\n                type: z15.literal(\"find_in_page\"),\n                url: z15.string().nullish(),\n                pattern: z15.string().nullish()\n              })\n            ]).nullish()\n          }),\n          z15.object({\n            type: z15.literal(\"file_search_call\"),\n            id: z15.string(),\n            queries: z15.array(z15.string()),\n            results: z15.array(\n              z15.object({\n                attributes: z15.record(z15.string(), z15.unknown()),\n                file_id: z15.string(),\n                filename: z15.string(),\n                score: z15.number(),\n                text: z15.string()\n              })\n            ).nullish()\n          }),\n          z15.object({\n            type: z15.literal(\"local_shell_call\"),\n            id: z15.string(),\n            call_id: z15.string(),\n            action: z15.object({\n              type: z15.literal(\"exec\"),\n              command: z15.array(z15.string()),\n              timeout_ms: z15.number().optional(),\n              user: z15.string().optional(),\n              working_directory: z15.string().optional(),\n              env: z15.record(z15.string(), z15.string()).optional()\n            })\n          }),\n          z15.object({\n            type: z15.literal(\"computer_call\"),\n            id: z15.string(),\n            status: z15.literal(\"completed\")\n          })\n        ])\n      }),\n      z15.object({\n        type: z15.literal(\"response.function_call_arguments.delta\"),\n        item_id: z15.string(),\n        output_index: z15.number(),\n        delta: z15.string()\n      }),\n      z15.object({\n        type: z15.literal(\"response.image_generation_call.partial_image\"),\n        item_id: z15.string(),\n        output_index: z15.number(),\n        partial_image_b64: z15.string()\n      }),\n      z15.object({\n        type: z15.literal(\"response.code_interpreter_call_code.delta\"),\n        item_id: z15.string(),\n        output_index: z15.number(),\n        delta: z15.string()\n      }),\n      z15.object({\n        type: z15.literal(\"response.code_interpreter_call_code.done\"),\n        item_id: z15.string(),\n        output_index: z15.number(),\n        code: z15.string()\n      }),\n      z15.object({\n        type: z15.literal(\"response.output_text.annotation.added\"),\n        annotation: z15.discriminatedUnion(\"type\", [\n          z15.object({\n            type: z15.literal(\"url_citation\"),\n            start_index: z15.number(),\n            end_index: z15.number(),\n            url: z15.string(),\n            title: z15.string()\n          }),\n          z15.object({\n            type: z15.literal(\"file_citation\"),\n            file_id: z15.string(),\n            filename: z15.string().nullish(),\n            index: z15.number().nullish(),\n            start_index: z15.number().nullish(),\n            end_index: z15.number().nullish(),\n            quote: z15.string().nullish()\n          })\n        ])\n      }),\n      z15.object({\n        type: z15.literal(\"response.reasoning_summary_part.added\"),\n        item_id: z15.string(),\n        summary_index: z15.number()\n      }),\n      z15.object({\n        type: z15.literal(\"response.reasoning_summary_text.delta\"),\n        item_id: z15.string(),\n        summary_index: z15.number(),\n        delta: z15.string()\n      }),\n      z15.object({\n        type: z15.literal(\"response.reasoning_summary_part.done\"),\n        item_id: z15.string(),\n        summary_index: z15.number()\n      }),\n      z15.object({\n        type: z15.literal(\"error\"),\n        sequence_number: z15.number(),\n        error: z15.object({\n          type: z15.string(),\n          code: z15.string(),\n          message: z15.string(),\n          param: z15.string().nullish()\n        })\n      }),\n      z15.object({ type: z15.string() }).loose().transform((value) => ({\n        type: \"unknown_chunk\",\n        message: value.type\n      }))\n      // fallback for unknown chunks\n    ])\n  )\n);\nvar openaiResponsesResponseSchema = lazyValidator12(\n  () => zodSchema13(\n    z15.object({\n      id: z15.string().optional(),\n      created_at: z15.number().optional(),\n      error: z15.object({\n        message: z15.string(),\n        type: z15.string(),\n        param: z15.string().nullish(),\n        code: z15.string()\n      }).nullish(),\n      model: z15.string().optional(),\n      output: z15.array(\n        z15.discriminatedUnion(\"type\", [\n          z15.object({\n            type: z15.literal(\"message\"),\n            role: z15.literal(\"assistant\"),\n            id: z15.string(),\n            phase: z15.enum([\"commentary\", \"final_answer\"]).nullish(),\n            content: z15.array(\n              z15.object({\n                type: z15.literal(\"output_text\"),\n                text: z15.string(),\n                logprobs: z15.array(\n                  z15.object({\n                    token: z15.string(),\n                    logprob: z15.number(),\n                    top_logprobs: z15.array(\n                      z15.object({\n                        token: z15.string(),\n                        logprob: z15.number()\n                      })\n                    )\n                  })\n                ).nullish(),\n                annotations: z15.array(\n                  z15.discriminatedUnion(\"type\", [\n                    z15.object({\n                      type: z15.literal(\"url_citation\"),\n                      start_index: z15.number(),\n                      end_index: z15.number(),\n                      url: z15.string(),\n                      title: z15.string()\n                    }),\n                    z15.object({\n                      type: z15.literal(\"file_citation\"),\n                      file_id: z15.string(),\n                      filename: z15.string().nullish(),\n                      index: z15.number().nullish(),\n                      start_index: z15.number().nullish(),\n                      end_index: z15.number().nullish(),\n                      quote: z15.string().nullish()\n                    }),\n                    z15.object({\n                      type: z15.literal(\"container_file_citation\"),\n                      container_id: z15.string(),\n                      file_id: z15.string(),\n                      filename: z15.string().nullish(),\n                      start_index: z15.number().nullish(),\n                      end_index: z15.number().nullish(),\n                      index: z15.number().nullish()\n                    }),\n                    z15.object({\n                      type: z15.literal(\"file_path\"),\n                      file_id: z15.string(),\n                      index: z15.number().nullish()\n                    })\n                  ])\n                )\n              })\n            )\n          }),\n          z15.object({\n            type: z15.literal(\"web_search_call\"),\n            id: z15.string(),\n            status: z15.string(),\n            action: z15.discriminatedUnion(\"type\", [\n              z15.object({\n                type: z15.literal(\"search\"),\n                query: z15.string().nullish(),\n                sources: z15.array(\n                  z15.discriminatedUnion(\"type\", [\n                    z15.object({ type: z15.literal(\"url\"), url: z15.string() }),\n                    z15.object({\n                      type: z15.literal(\"api\"),\n                      name: z15.string()\n                    })\n                  ])\n                ).nullish()\n              }),\n              z15.object({\n                type: z15.literal(\"open_page\"),\n                url: z15.string().nullish()\n              }),\n              z15.object({\n                type: z15.literal(\"find_in_page\"),\n                url: z15.string().nullish(),\n                pattern: z15.string().nullish()\n              })\n            ]).nullish()\n          }),\n          z15.object({\n            type: z15.literal(\"file_search_call\"),\n            id: z15.string(),\n            queries: z15.array(z15.string()),\n            results: z15.array(\n              z15.object({\n                attributes: z15.record(\n                  z15.string(),\n                  z15.union([z15.string(), z15.number(), z15.boolean()])\n                ),\n                file_id: z15.string(),\n                filename: z15.string(),\n                score: z15.number(),\n                text: z15.string()\n              })\n            ).nullish()\n          }),\n          z15.object({\n            type: z15.literal(\"code_interpreter_call\"),\n            id: z15.string(),\n            code: z15.string().nullable(),\n            container_id: z15.string(),\n            outputs: z15.array(\n              z15.discriminatedUnion(\"type\", [\n                z15.object({ type: z15.literal(\"logs\"), logs: z15.string() }),\n                z15.object({ type: z15.literal(\"image\"), url: z15.string() })\n              ])\n            ).nullable()\n          }),\n          z15.object({\n            type: z15.literal(\"image_generation_call\"),\n            id: z15.string(),\n            result: z15.string()\n          }),\n          z15.object({\n            type: z15.literal(\"local_shell_call\"),\n            id: z15.string(),\n            call_id: z15.string(),\n            action: z15.object({\n              type: z15.literal(\"exec\"),\n              command: z15.array(z15.string()),\n              timeout_ms: z15.number().optional(),\n              user: z15.string().optional(),\n              working_directory: z15.string().optional(),\n              env: z15.record(z15.string(), z15.string()).optional()\n            })\n          }),\n          z15.object({\n            type: z15.literal(\"function_call\"),\n            call_id: z15.string(),\n            name: z15.string(),\n            arguments: z15.string(),\n            id: z15.string()\n          }),\n          z15.object({\n            type: z15.literal(\"computer_call\"),\n            id: z15.string(),\n            status: z15.string().optional()\n          }),\n          z15.object({\n            type: z15.literal(\"reasoning\"),\n            id: z15.string(),\n            encrypted_content: z15.string().nullish(),\n            summary: z15.array(\n              z15.object({\n                type: z15.literal(\"summary_text\"),\n                text: z15.string()\n              })\n            )\n          })\n        ])\n      ).optional(),\n      service_tier: z15.string().nullish(),\n      reasoning: z15.object({\n        context: z15.string().nullish()\n      }).nullish(),\n      incomplete_details: z15.object({ reason: z15.string() }).nullish(),\n      usage: z15.object({\n        input_tokens: z15.number(),\n        input_tokens_details: z15.object({\n          cached_tokens: z15.number().nullish(),\n          cache_write_tokens: z15.number().nullish(),\n          orchestration_input_tokens: z15.number().nullish(),\n          orchestration_input_cached_tokens: z15.number().nullish()\n        }).nullish(),\n        output_tokens: z15.number(),\n        output_tokens_details: z15.object({\n          reasoning_tokens: z15.number().nullish(),\n          orchestration_output_tokens: z15.number().nullish()\n        }).nullish()\n      }).optional()\n    })\n  )\n);\n\n// src/responses/openai-responses-options.ts\nimport {\n  lazyValidator as lazyValidator13,\n  zodSchema as zodSchema14\n} from \"@ai-sdk/provider-utils\";\nimport { z as z16 } from \"zod/v4\";\nvar TOP_LOGPROBS_MAX = 20;\nvar openaiResponsesReasoningModelIds = [\n  \"o1\",\n  \"o1-2024-12-17\",\n  \"o3\",\n  \"o3-2025-04-16\",\n  \"o3-deep-research\",\n  \"o3-deep-research-2025-06-26\",\n  \"o3-mini\",\n  \"o3-mini-2025-01-31\",\n  \"o4-mini\",\n  \"o4-mini-2025-04-16\",\n  \"o4-mini-deep-research\",\n  \"o4-mini-deep-research-2025-06-26\",\n  \"codex-mini-latest\",\n  \"computer-use-preview\",\n  \"gpt-5\",\n  \"gpt-5-2025-08-07\",\n  \"gpt-5-codex\",\n  \"gpt-5-mini\",\n  \"gpt-5-mini-2025-08-07\",\n  \"gpt-5-nano\",\n  \"gpt-5-nano-2025-08-07\",\n  \"gpt-5-pro\",\n  \"gpt-5-pro-2025-10-06\",\n  \"gpt-5.1\",\n  \"gpt-5.1-chat-latest\",\n  \"gpt-5.1-codex-mini\",\n  \"gpt-5.1-codex\",\n  \"gpt-5.1-codex-max\",\n  \"gpt-5.2\",\n  \"gpt-5.2-chat-latest\",\n  \"gpt-5.2-pro\",\n  \"gpt-5.2-codex\",\n  \"gpt-5.3-chat-latest\",\n  \"gpt-5.3-codex\",\n  \"gpt-5.4\",\n  \"gpt-5.4-2026-03-05\",\n  \"gpt-5.4-mini\",\n  \"gpt-5.4-mini-2026-03-17\",\n  \"gpt-5.4-nano\",\n  \"gpt-5.4-nano-2026-03-17\",\n  \"gpt-5.4-pro\",\n  \"gpt-5.4-pro-2026-03-05\",\n  \"gpt-5.6\",\n  \"gpt-5.6-luna\",\n  \"gpt-5.6-sol\",\n  \"gpt-5.6-terra\"\n];\nvar openaiResponsesModelIds = [\n  \"gpt-4.1\",\n  \"gpt-4.1-2025-04-14\",\n  \"gpt-4.1-mini\",\n  \"gpt-4.1-mini-2025-04-14\",\n  \"gpt-4.1-nano\",\n  \"gpt-4.1-nano-2025-04-14\",\n  \"gpt-4o\",\n  \"gpt-4o-2024-05-13\",\n  \"gpt-4o-2024-08-06\",\n  \"gpt-4o-2024-11-20\",\n  \"gpt-4o-audio-preview\",\n  \"gpt-4o-audio-preview-2024-10-01\",\n  \"gpt-4o-audio-preview-2024-12-17\",\n  \"gpt-4o-search-preview\",\n  \"gpt-4o-search-preview-2025-03-11\",\n  \"gpt-4o-mini-search-preview\",\n  \"gpt-4o-mini-search-preview-2025-03-11\",\n  \"gpt-4o-mini\",\n  \"gpt-4o-mini-2024-07-18\",\n  \"gpt-4-turbo\",\n  \"gpt-4-turbo-2024-04-09\",\n  \"gpt-4-turbo-preview\",\n  \"gpt-4-0125-preview\",\n  \"gpt-4-1106-preview\",\n  \"gpt-4\",\n  \"gpt-4-0613\",\n  \"gpt-4.5-preview\",\n  \"gpt-4.5-preview-2025-02-27\",\n  \"gpt-3.5-turbo-0125\",\n  \"gpt-3.5-turbo\",\n  \"gpt-3.5-turbo-1106\",\n  \"chatgpt-4o-latest\",\n  \"gpt-5-chat-latest\",\n  ...openaiResponsesReasoningModelIds\n];\nvar openaiResponsesProviderOptionsSchema = lazyValidator13(\n  () => zodSchema14(\n    z16.object({\n      conversation: z16.string().nullish(),\n      include: z16.array(\n        z16.enum([\n          \"reasoning.encrypted_content\",\n          // handled internally by default, only needed for unknown reasoning models\n          \"file_search_call.results\",\n          \"message.output_text.logprobs\"\n        ])\n      ).nullish(),\n      instructions: z16.string().nullish(),\n      /**\n       * Return the log probabilities of the tokens.\n       *\n       * Setting to true will return the log probabilities of the tokens that\n       * were generated.\n       *\n       * Setting to a number will return the log probabilities of the top n\n       * tokens that were generated.\n       *\n       * @see https://platform.openai.com/docs/api-reference/responses/create\n       * @see https://cookbook.openai.com/examples/using_logprobs\n       */\n      logprobs: z16.union([z16.boolean(), z16.number().min(1).max(TOP_LOGPROBS_MAX)]).optional(),\n      /**\n       * The maximum number of total calls to built-in tools that can be processed in a response.\n       * This maximum number applies across all built-in tool calls, not per individual tool.\n       * Any further attempts to call a tool by the model will be ignored.\n       */\n      maxToolCalls: z16.number().nullish(),\n      metadata: z16.any().nullish(),\n      parallelToolCalls: z16.boolean().nullish(),\n      previousResponseId: z16.string().nullish(),\n      promptCacheKey: z16.string().nullish(),\n      /**\n       * Prompt cache behavior for GPT-5.6 and later models.\n       * `mode` controls whether OpenAI also places an implicit breakpoint.\n       * `ttl` sets the minimum cache lifetime and currently only supports 30 minutes.\n       */\n      promptCacheOptions: z16.object({\n        mode: z16.enum([\"implicit\", \"explicit\"]).optional(),\n        ttl: z16.literal(\"30m\").optional()\n      }).optional(),\n      /**\n       * The retention policy for the prompt cache.\n       * - 'in_memory': Default. Standard prompt caching behavior.\n       * - '24h': Extended prompt caching that keeps cached prefixes active for up to 24 hours.\n       *          Available for models before GPT-5.6 that support extended caching.\n       *\n       * @deprecated For GPT-5.6 and later models, use `promptCacheOptions.ttl`.\n       *\n       * @default 'in_memory'\n       */\n      promptCacheRetention: z16.enum([\"in_memory\", \"24h\"]).nullish(),\n      /**\n       * Reasoning effort for reasoning models. Defaults to `medium`. If you use\n       * `providerOptions` to set the `reasoningEffort` option, this model setting will be ignored.\n       * GPT-5.6 supports 'none' | 'low' | 'medium' | 'high' | 'xhigh' | 'max'.\n       * Supported values vary by model.\n       */\n      reasoningEffort: z16.string().nullish(),\n      /**\n       * Controls how much model work GPT-5.6 performs before returning a final answer.\n       * `standard` is the default. `pro` increases quality, latency, and token usage.\n       */\n      reasoningMode: z16.enum([\"standard\", \"pro\"]).optional(),\n      /**\n       * Controls which available reasoning items GPT-5.6 can use.\n       * `auto` uses the model default, `current_turn` excludes reasoning from earlier\n       * turns, and `all_turns` makes compatible earlier reasoning available.\n       */\n      reasoningContext: z16.enum([\"auto\", \"current_turn\", \"all_turns\"]).optional(),\n      reasoningSummary: z16.string().nullish(),\n      safetyIdentifier: z16.string().nullish(),\n      serviceTier: z16.enum([\"auto\", \"flex\", \"priority\", \"default\"]).nullish(),\n      store: z16.boolean().nullish(),\n      strictJsonSchema: z16.boolean().nullish(),\n      textVerbosity: z16.enum([\"low\", \"medium\", \"high\"]).nullish(),\n      truncation: z16.enum([\"auto\", \"disabled\"]).nullish(),\n      user: z16.string().nullish()\n    })\n  )\n);\n\n// src/responses/openai-responses-prepare-tools.ts\nimport {\n  UnsupportedFunctionalityError as UnsupportedFunctionalityError5\n} from \"@ai-sdk/provider\";\n\n// src/tool/code-interpreter.ts\nimport {\n  createProviderDefinedToolFactoryWithOutputSchema as createProviderDefinedToolFactoryWithOutputSchema2,\n  lazySchema as lazySchema2,\n  zodSchema as zodSchema15\n} from \"@ai-sdk/provider-utils\";\nimport { z as z17 } from \"zod/v4\";\nvar codeInterpreterInputSchema = lazySchema2(\n  () => zodSchema15(\n    z17.object({\n      code: z17.string().nullish(),\n      containerId: z17.string()\n    })\n  )\n);\nvar codeInterpreterOutputSchema = lazySchema2(\n  () => zodSchema15(\n    z17.object({\n      outputs: z17.array(\n        z17.discriminatedUnion(\"type\", [\n          z17.object({ type: z17.literal(\"logs\"), logs: z17.string() }),\n          z17.object({ type: z17.literal(\"image\"), url: z17.string() })\n        ])\n      ).nullish()\n    })\n  )\n);\nvar codeInterpreterArgsSchema = lazySchema2(\n  () => zodSchema15(\n    z17.object({\n      container: z17.union([\n        z17.string(),\n        z17.object({\n          fileIds: z17.array(z17.string()).optional()\n        })\n      ]).optional()\n    })\n  )\n);\nvar codeInterpreterToolFactory = createProviderDefinedToolFactoryWithOutputSchema2({\n  id: \"openai.code_interpreter\",\n  name: \"code_interpreter\",\n  inputSchema: codeInterpreterInputSchema,\n  outputSchema: codeInterpreterOutputSchema\n});\nvar codeInterpreter = (args = {}) => {\n  return codeInterpreterToolFactory(args);\n};\n\n// src/tool/file-search.ts\nimport {\n  createProviderDefinedToolFactoryWithOutputSchema as createProviderDefinedToolFactoryWithOutputSchema3,\n  lazySchema as lazySchema3,\n  zodSchema as zodSchema16\n} from \"@ai-sdk/provider-utils\";\nimport { z as z18 } from \"zod/v4\";\nvar comparisonFilterSchema = z18.object({\n  key: z18.string(),\n  type: z18.enum([\"eq\", \"ne\", \"gt\", \"gte\", \"lt\", \"lte\", \"in\", \"nin\"]),\n  value: z18.union([z18.string(), z18.number(), z18.boolean(), z18.array(z18.string())])\n});\nvar compoundFilterSchema = z18.object({\n  type: z18.enum([\"and\", \"or\"]),\n  filters: z18.array(\n    z18.union([comparisonFilterSchema, z18.lazy(() => compoundFilterSchema)])\n  )\n});\nvar fileSearchArgsSchema = lazySchema3(\n  () => zodSchema16(\n    z18.object({\n      vectorStoreIds: z18.array(z18.string()),\n      maxNumResults: z18.number().optional(),\n      ranking: z18.object({\n        ranker: z18.string().optional(),\n        scoreThreshold: z18.number().optional()\n      }).optional(),\n      filters: z18.union([comparisonFilterSchema, compoundFilterSchema]).optional()\n    })\n  )\n);\nvar fileSearchOutputSchema = lazySchema3(\n  () => zodSchema16(\n    z18.object({\n      queries: z18.array(z18.string()),\n      results: z18.array(\n        z18.object({\n          attributes: z18.record(z18.string(), z18.unknown()),\n          fileId: z18.string(),\n          filename: z18.string(),\n          score: z18.number(),\n          text: z18.string()\n        })\n      ).nullable()\n    })\n  )\n);\nvar fileSearch = createProviderDefinedToolFactoryWithOutputSchema3({\n  id: \"openai.file_search\",\n  name: \"file_search\",\n  inputSchema: z18.object({}),\n  outputSchema: fileSearchOutputSchema\n});\n\n// src/tool/web-search.ts\nimport {\n  createProviderDefinedToolFactoryWithOutputSchema as createProviderDefinedToolFactoryWithOutputSchema4,\n  lazySchema as lazySchema4,\n  zodSchema as zodSchema17\n} from \"@ai-sdk/provider-utils\";\nimport { z as z19 } from \"zod/v4\";\nvar webSearchArgsSchema = lazySchema4(\n  () => zodSchema17(\n    z19.object({\n      externalWebAccess: z19.boolean().optional(),\n      filters: z19.object({\n        allowedDomains: z19.array(z19.string()).optional(),\n        blockedDomains: z19.array(z19.string()).optional()\n      }).optional(),\n      searchContextSize: z19.enum([\"low\", \"medium\", \"high\"]).optional(),\n      userLocation: z19.object({\n        type: z19.literal(\"approximate\"),\n        country: z19.string().optional(),\n        city: z19.string().optional(),\n        region: z19.string().optional(),\n        timezone: z19.string().optional()\n      }).optional()\n    })\n  )\n);\nvar webSearchInputSchema = lazySchema4(() => zodSchema17(z19.object({})));\nvar webSearchOutputSchema = lazySchema4(\n  () => zodSchema17(\n    z19.object({\n      action: z19.discriminatedUnion(\"type\", [\n        z19.object({\n          type: z19.literal(\"search\"),\n          query: z19.string().optional()\n        }),\n        z19.object({\n          type: z19.literal(\"openPage\"),\n          url: z19.string().nullish()\n        }),\n        z19.object({\n          type: z19.literal(\"findInPage\"),\n          url: z19.string().nullish(),\n          pattern: z19.string().nullish()\n        })\n      ]).optional(),\n      sources: z19.array(\n        z19.discriminatedUnion(\"type\", [\n          z19.object({ type: z19.literal(\"url\"), url: z19.string() }),\n          z19.object({ type: z19.literal(\"api\"), name: z19.string() })\n        ])\n      ).optional()\n    })\n  )\n);\nvar webSearchToolFactory = createProviderDefinedToolFactoryWithOutputSchema4({\n  id: \"openai.web_search\",\n  name: \"web_search\",\n  inputSchema: webSearchInputSchema,\n  outputSchema: webSearchOutputSchema\n});\nvar webSearch = (args = {}) => webSearchToolFactory(args);\n\n// src/tool/web-search-preview.ts\nimport {\n  createProviderDefinedToolFactoryWithOutputSchema as createProviderDefinedToolFactoryWithOutputSchema5,\n  lazySchema as lazySchema5,\n  zodSchema as zodSchema18\n} from \"@ai-sdk/provider-utils\";\nimport { z as z20 } from \"zod/v4\";\nvar webSearchPreviewArgsSchema = lazySchema5(\n  () => zodSchema18(\n    z20.object({\n      searchContextSize: z20.enum([\"low\", \"medium\", \"high\"]).optional(),\n      userLocation: z20.object({\n        type: z20.literal(\"approximate\"),\n        country: z20.string().optional(),\n        city: z20.string().optional(),\n        region: z20.string().optional(),\n        timezone: z20.string().optional()\n      }).optional()\n    })\n  )\n);\nvar webSearchPreviewInputSchema = lazySchema5(\n  () => zodSchema18(z20.object({}))\n);\nvar webSearchPreviewOutputSchema = lazySchema5(\n  () => zodSchema18(\n    z20.object({\n      action: z20.discriminatedUnion(\"type\", [\n        z20.object({\n          type: z20.literal(\"search\"),\n          query: z20.string().optional()\n        }),\n        z20.object({\n          type: z20.literal(\"openPage\"),\n          url: z20.string().nullish()\n        }),\n        z20.object({\n          type: z20.literal(\"findInPage\"),\n          url: z20.string().nullish(),\n          pattern: z20.string().nullish()\n        })\n      ]).optional()\n    })\n  )\n);\nvar webSearchPreview = createProviderDefinedToolFactoryWithOutputSchema5({\n  id: \"openai.web_search_preview\",\n  name: \"web_search_preview\",\n  inputSchema: webSearchPreviewInputSchema,\n  outputSchema: webSearchPreviewOutputSchema\n});\n\n// src/tool/image-generation.ts\nimport {\n  createProviderDefinedToolFactoryWithOutputSchema as createProviderDefinedToolFactoryWithOutputSchema6,\n  lazySchema as lazySchema6,\n  zodSchema as zodSchema19\n} from \"@ai-sdk/provider-utils\";\nimport { z as z21 } from \"zod/v4\";\nvar imageGenerationArgsSchema = lazySchema6(\n  () => zodSchema19(\n    z21.object({\n      background: z21.enum([\"auto\", \"opaque\", \"transparent\"]).optional(),\n      inputFidelity: z21.enum([\"low\", \"high\"]).optional(),\n      inputImageMask: z21.object({\n        fileId: z21.string().optional(),\n        imageUrl: z21.string().optional()\n      }).optional(),\n      model: z21.string().optional(),\n      moderation: z21.enum([\"auto\"]).optional(),\n      outputCompression: z21.number().int().min(0).max(100).optional(),\n      outputFormat: z21.enum([\"png\", \"jpeg\", \"webp\"]).optional(),\n      partialImages: z21.number().int().min(0).max(3).optional(),\n      quality: z21.enum([\"auto\", \"low\", \"medium\", \"high\"]).optional(),\n      size: z21.enum([\"1024x1024\", \"1024x1536\", \"1536x1024\", \"auto\"]).optional()\n    }).strict()\n  )\n);\nvar imageGenerationInputSchema = lazySchema6(() => zodSchema19(z21.object({})));\nvar imageGenerationOutputSchema = lazySchema6(\n  () => zodSchema19(z21.object({ result: z21.string() }))\n);\nvar imageGenerationToolFactory = createProviderDefinedToolFactoryWithOutputSchema6({\n  id: \"openai.image_generation\",\n  name: \"image_generation\",\n  inputSchema: imageGenerationInputSchema,\n  outputSchema: imageGenerationOutputSchema\n});\nvar imageGeneration = (args = {}) => {\n  return imageGenerationToolFactory(args);\n};\n\n// src/responses/openai-responses-prepare-tools.ts\nimport { validateTypes as validateTypes2 } from \"@ai-sdk/provider-utils\";\nasync function prepareResponsesTools({\n  tools,\n  toolChoice,\n  strictJsonSchema\n}) {\n  tools = (tools == null ? void 0 : tools.length) ? tools : void 0;\n  const toolWarnings = [];\n  if (tools == null) {\n    return { tools: void 0, toolChoice: void 0, toolWarnings };\n  }\n  const openaiTools = [];\n  for (const tool of tools) {\n    switch (tool.type) {\n      case \"function\":\n        openaiTools.push({\n          type: \"function\",\n          name: tool.name,\n          description: tool.description,\n          parameters: tool.inputSchema,\n          strict: strictJsonSchema\n        });\n        break;\n      case \"provider-defined\": {\n        switch (tool.id) {\n          case \"openai.file_search\": {\n            const args = await validateTypes2({\n              value: tool.args,\n              schema: fileSearchArgsSchema\n            });\n            openaiTools.push({\n              type: \"file_search\",\n              vector_store_ids: args.vectorStoreIds,\n              max_num_results: args.maxNumResults,\n              ranking_options: args.ranking ? {\n                ranker: args.ranking.ranker,\n                score_threshold: args.ranking.scoreThreshold\n              } : void 0,\n              filters: args.filters\n            });\n            break;\n          }\n          case \"openai.local_shell\": {\n            openaiTools.push({\n              type: \"local_shell\"\n            });\n            break;\n          }\n          case \"openai.web_search_preview\": {\n            const args = await validateTypes2({\n              value: tool.args,\n              schema: webSearchPreviewArgsSchema\n            });\n            openaiTools.push({\n              type: \"web_search_preview\",\n              search_context_size: args.searchContextSize,\n              user_location: args.userLocation\n            });\n            break;\n          }\n          case \"openai.web_search\": {\n            const args = await validateTypes2({\n              value: tool.args,\n              schema: webSearchArgsSchema\n            });\n            openaiTools.push({\n              type: \"web_search\",\n              filters: args.filters != null ? {\n                allowed_domains: args.filters.allowedDomains,\n                blocked_domains: args.filters.blockedDomains\n              } : void 0,\n              external_web_access: args.externalWebAccess,\n              search_context_size: args.searchContextSize,\n              user_location: args.userLocation\n            });\n            break;\n          }\n          case \"openai.code_interpreter\": {\n            const args = await validateTypes2({\n              value: tool.args,\n              schema: codeInterpreterArgsSchema\n            });\n            openaiTools.push({\n              type: \"code_interpreter\",\n              container: args.container == null ? { type: \"auto\", file_ids: void 0 } : typeof args.container === \"string\" ? args.container : { type: \"auto\", file_ids: args.container.fileIds }\n            });\n            break;\n          }\n          case \"openai.image_generation\": {\n            const args = await validateTypes2({\n              value: tool.args,\n              schema: imageGenerationArgsSchema\n            });\n            openaiTools.push({\n              type: \"image_generation\",\n              background: args.background,\n              input_fidelity: args.inputFidelity,\n              input_image_mask: args.inputImageMask ? {\n                file_id: args.inputImageMask.fileId,\n                image_url: args.inputImageMask.imageUrl\n              } : void 0,\n              model: args.model,\n              size: args.size,\n              quality: args.quality,\n              moderation: args.moderation,\n              output_format: args.outputFormat,\n              output_compression: args.outputCompression\n            });\n            break;\n          }\n        }\n        break;\n      }\n      default:\n        toolWarnings.push({ type: \"unsupported-tool\", tool });\n        break;\n    }\n  }\n  if (toolChoice == null) {\n    return { tools: openaiTools, toolChoice: void 0, toolWarnings };\n  }\n  const type = toolChoice.type;\n  switch (type) {\n    case \"auto\":\n    case \"none\":\n    case \"required\":\n      return { tools: openaiTools, toolChoice: type, toolWarnings };\n    case \"tool\":\n      return {\n        tools: openaiTools,\n        toolChoice: toolChoice.toolName === \"code_interpreter\" || toolChoice.toolName === \"file_search\" || toolChoice.toolName === \"image_generation\" || toolChoice.toolName === \"web_search_preview\" || toolChoice.toolName === \"web_search\" ? { type: toolChoice.toolName } : { type: \"function\", name: toolChoice.toolName },\n        toolWarnings\n      };\n    default: {\n      const _exhaustiveCheck = type;\n      throw new UnsupportedFunctionalityError5({\n        functionality: `tool choice type: ${_exhaustiveCheck}`\n      });\n    }\n  }\n}\n\n// src/responses/openai-responses-language-model.ts\nvar OpenAIResponsesLanguageModel = class {\n  constructor(modelId, config) {\n    this.specificationVersion = \"v2\";\n    this.supportedUrls = {\n      \"image/*\": [/^https?:\\/\\/.*$/],\n      \"application/pdf\": [/^https?:\\/\\/.*$/]\n    };\n    this.modelId = modelId;\n    this.config = config;\n  }\n  get provider() {\n    return this.config.provider;\n  }\n  async getArgs({\n    maxOutputTokens,\n    temperature,\n    stopSequences,\n    topP,\n    topK,\n    presencePenalty,\n    frequencyPenalty,\n    seed,\n    prompt,\n    providerOptions,\n    tools,\n    toolChoice,\n    responseFormat\n  }) {\n    var _a, _b, _c, _d;\n    const warnings = [];\n    const modelCapabilities = getOpenAILanguageModelCapabilities(this.modelId);\n    if (topK != null) {\n      warnings.push({ type: \"unsupported-setting\", setting: \"topK\" });\n    }\n    if (seed != null) {\n      warnings.push({ type: \"unsupported-setting\", setting: \"seed\" });\n    }\n    if (presencePenalty != null) {\n      warnings.push({\n        type: \"unsupported-setting\",\n        setting: \"presencePenalty\"\n      });\n    }\n    if (frequencyPenalty != null) {\n      warnings.push({\n        type: \"unsupported-setting\",\n        setting: \"frequencyPenalty\"\n      });\n    }\n    if (stopSequences != null) {\n      warnings.push({ type: \"unsupported-setting\", setting: \"stopSequences\" });\n    }\n    const openaiOptions = await parseProviderOptions8({\n      provider: \"openai\",\n      providerOptions,\n      schema: openaiResponsesProviderOptionsSchema\n    });\n    if ((openaiOptions == null ? void 0 : openaiOptions.conversation) && (openaiOptions == null ? void 0 : openaiOptions.previousResponseId)) {\n      warnings.push({\n        type: \"unsupported-setting\",\n        setting: \"conversation\",\n        details: \"conversation and previousResponseId cannot be used together\"\n      });\n    }\n    const { input, warnings: inputWarnings } = await convertToOpenAIResponsesInput({\n      prompt,\n      systemMessageMode: modelCapabilities.systemMessageMode,\n      fileIdPrefixes: this.config.fileIdPrefixes,\n      store: (_a = openaiOptions == null ? void 0 : openaiOptions.store) != null ? _a : true,\n      hasLocalShellTool: hasOpenAITool(\"openai.local_shell\")\n    });\n    warnings.push(...inputWarnings);\n    const strictJsonSchema = (_b = openaiOptions == null ? void 0 : openaiOptions.strictJsonSchema) != null ? _b : false;\n    let include = openaiOptions == null ? void 0 : openaiOptions.include;\n    function addInclude(key) {\n      if (include == null) {\n        include = [key];\n      } else if (!include.includes(key)) {\n        include = [...include, key];\n      }\n    }\n    function hasOpenAITool(id) {\n      return (tools == null ? void 0 : tools.find(\n        (tool) => tool.type === \"provider-defined\" && tool.id === id\n      )) != null;\n    }\n    const topLogprobs = typeof (openaiOptions == null ? void 0 : openaiOptions.logprobs) === \"number\" ? openaiOptions == null ? void 0 : openaiOptions.logprobs : (openaiOptions == null ? void 0 : openaiOptions.logprobs) === true ? TOP_LOGPROBS_MAX : void 0;\n    if (topLogprobs) {\n      addInclude(\"message.output_text.logprobs\");\n    }\n    const webSearchToolName = (_c = tools == null ? void 0 : tools.find(\n      (tool) => tool.type === \"provider-defined\" && (tool.id === \"openai.web_search\" || tool.id === \"openai.web_search_preview\")\n    )) == null ? void 0 : _c.name;\n    if (webSearchToolName) {\n      addInclude(\"web_search_call.action.sources\");\n    }\n    if (hasOpenAITool(\"openai.code_interpreter\")) {\n      addInclude(\"code_interpreter_call.outputs\");\n    }\n    const store = openaiOptions == null ? void 0 : openaiOptions.store;\n    if (store === false && modelCapabilities.isReasoningModel) {\n      addInclude(\"reasoning.encrypted_content\");\n    }\n    const baseArgs = {\n      model: this.modelId,\n      input,\n      temperature,\n      top_p: topP,\n      max_output_tokens: maxOutputTokens,\n      ...((responseFormat == null ? void 0 : responseFormat.type) === \"json\" || (openaiOptions == null ? void 0 : openaiOptions.textVerbosity)) && {\n        text: {\n          ...(responseFormat == null ? void 0 : responseFormat.type) === \"json\" && {\n            format: responseFormat.schema != null ? {\n              type: \"json_schema\",\n              strict: strictJsonSchema,\n              name: (_d = responseFormat.name) != null ? _d : \"response\",\n              description: responseFormat.description,\n              schema: responseFormat.schema\n            } : { type: \"json_object\" }\n          },\n          ...(openaiOptions == null ? void 0 : openaiOptions.textVerbosity) && {\n            verbosity: openaiOptions.textVerbosity\n          }\n        }\n      },\n      // provider options:\n      conversation: openaiOptions == null ? void 0 : openaiOptions.conversation,\n      max_tool_calls: openaiOptions == null ? void 0 : openaiOptions.maxToolCalls,\n      metadata: openaiOptions == null ? void 0 : openaiOptions.metadata,\n      parallel_tool_calls: openaiOptions == null ? void 0 : openaiOptions.parallelToolCalls,\n      previous_response_id: openaiOptions == null ? void 0 : openaiOptions.previousResponseId,\n      store,\n      user: openaiOptions == null ? void 0 : openaiOptions.user,\n      instructions: openaiOptions == null ? void 0 : openaiOptions.instructions,\n      service_tier: openaiOptions == null ? void 0 : openaiOptions.serviceTier,\n      include,\n      prompt_cache_key: openaiOptions == null ? void 0 : openaiOptions.promptCacheKey,\n      prompt_cache_options: openaiOptions == null ? void 0 : openaiOptions.promptCacheOptions,\n      prompt_cache_retention: openaiOptions == null ? void 0 : openaiOptions.promptCacheRetention,\n      safety_identifier: openaiOptions == null ? void 0 : openaiOptions.safetyIdentifier,\n      top_logprobs: topLogprobs,\n      truncation: openaiOptions == null ? void 0 : openaiOptions.truncation,\n      // model-specific settings:\n      ...modelCapabilities.isReasoningModel && ((openaiOptions == null ? void 0 : openaiOptions.reasoningEffort) != null || (openaiOptions == null ? void 0 : openaiOptions.reasoningSummary) != null || (openaiOptions == null ? void 0 : openaiOptions.reasoningMode) != null || (openaiOptions == null ? void 0 : openaiOptions.reasoningContext) != null) && {\n        reasoning: {\n          ...(openaiOptions == null ? void 0 : openaiOptions.reasoningEffort) != null && {\n            effort: openaiOptions.reasoningEffort\n          },\n          ...(openaiOptions == null ? void 0 : openaiOptions.reasoningSummary) != null && {\n            summary: openaiOptions.reasoningSummary\n          },\n          ...(openaiOptions == null ? void 0 : openaiOptions.reasoningMode) != null && {\n            mode: openaiOptions.reasoningMode\n          },\n          ...(openaiOptions == null ? void 0 : openaiOptions.reasoningContext) != null && {\n            context: openaiOptions.reasoningContext\n          }\n        }\n      }\n    };\n    if (modelCapabilities.isReasoningModel) {\n      if (!((openaiOptions == null ? void 0 : openaiOptions.reasoningEffort) === \"none\" && modelCapabilities.supportsNonReasoningParameters)) {\n        if (baseArgs.temperature != null) {\n          baseArgs.temperature = void 0;\n          warnings.push({\n            type: \"unsupported-setting\",\n            setting: \"temperature\",\n            details: \"temperature is not supported for reasoning models\"\n          });\n        }\n        if (baseArgs.top_p != null) {\n          baseArgs.top_p = void 0;\n          warnings.push({\n            type: \"unsupported-setting\",\n            setting: \"topP\",\n            details: \"topP is not supported for reasoning models\"\n          });\n        }\n      }\n    } else {\n      if ((openaiOptions == null ? void 0 : openaiOptions.reasoningEffort) != null) {\n        warnings.push({\n          type: \"unsupported-setting\",\n          setting: \"reasoningEffort\",\n          details: \"reasoningEffort is not supported for non-reasoning models\"\n        });\n      }\n      if ((openaiOptions == null ? void 0 : openaiOptions.reasoningSummary) != null) {\n        warnings.push({\n          type: \"unsupported-setting\",\n          setting: \"reasoningSummary\",\n          details: \"reasoningSummary is not supported for non-reasoning models\"\n        });\n      }\n      if ((openaiOptions == null ? void 0 : openaiOptions.reasoningMode) != null) {\n        warnings.push({\n          type: \"unsupported-setting\",\n          setting: \"reasoningMode\",\n          details: \"reasoningMode is not supported for non-reasoning models\"\n        });\n      }\n      if ((openaiOptions == null ? void 0 : openaiOptions.reasoningContext) != null) {\n        warnings.push({\n          type: \"unsupported-setting\",\n          setting: \"reasoningContext\",\n          details: \"reasoningContext is not supported for non-reasoning models\"\n        });\n      }\n    }\n    if ((openaiOptions == null ? void 0 : openaiOptions.serviceTier) === \"flex\" && !modelCapabilities.supportsFlexProcessing) {\n      warnings.push({\n        type: \"unsupported-setting\",\n        setting: \"serviceTier\",\n        details: \"flex processing is only available for o3, o4-mini, and gpt-5 models\"\n      });\n      delete baseArgs.service_tier;\n    }\n    if ((openaiOptions == null ? void 0 : openaiOptions.serviceTier) === \"priority\" && !modelCapabilities.supportsPriorityProcessing) {\n      warnings.push({\n        type: \"unsupported-setting\",\n        setting: \"serviceTier\",\n        details: \"priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported\"\n      });\n      delete baseArgs.service_tier;\n    }\n    const {\n      tools: openaiTools,\n      toolChoice: openaiToolChoice,\n      toolWarnings\n    } = await prepareResponsesTools({\n      tools,\n      toolChoice,\n      strictJsonSchema\n    });\n    return {\n      webSearchToolName,\n      args: {\n        ...baseArgs,\n        tools: openaiTools,\n        tool_choice: openaiToolChoice\n      },\n      warnings: [...warnings, ...toolWarnings],\n      store\n    };\n  }\n  async doGenerate(options) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C;\n    const {\n      args: body,\n      warnings,\n      webSearchToolName\n    } = await this.getArgs(options);\n    const url = this.config.url({\n      path: \"/responses\",\n      modelId: this.modelId\n    });\n    const providerKey = this.config.provider.replace(\".responses\", \"\");\n    const {\n      responseHeaders,\n      value: response,\n      rawValue: rawResponse\n    } = await postJsonToApi6({\n      url,\n      headers: combineHeaders7(this.config.headers(), options.headers),\n      body,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler6(\n        openaiResponsesResponseSchema\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch\n    });\n    if (response.error) {\n      throw new APICallError({\n        message: response.error.message,\n        url,\n        requestBodyValues: body,\n        statusCode: 400,\n        responseHeaders,\n        responseBody: rawResponse,\n        isRetryable: false\n      });\n    }\n    const content = [];\n    const logprobs = [];\n    let hasFunctionCall = false;\n    for (const part of response.output) {\n      switch (part.type) {\n        case \"reasoning\": {\n          if (part.summary.length === 0) {\n            part.summary.push({ type: \"summary_text\", text: \"\" });\n          }\n          for (const summary of part.summary) {\n            content.push({\n              type: \"reasoning\",\n              text: summary.text,\n              providerMetadata: {\n                [providerKey]: {\n                  itemId: part.id,\n                  reasoningEncryptedContent: (_a = part.encrypted_content) != null ? _a : null\n                }\n              }\n            });\n          }\n          break;\n        }\n        case \"image_generation_call\": {\n          content.push({\n            type: \"tool-call\",\n            toolCallId: part.id,\n            toolName: \"image_generation\",\n            input: \"{}\",\n            providerExecuted: true\n          });\n          content.push({\n            type: \"tool-result\",\n            toolCallId: part.id,\n            toolName: \"image_generation\",\n            result: {\n              result: part.result\n            },\n            providerExecuted: true\n          });\n          break;\n        }\n        case \"local_shell_call\": {\n          content.push({\n            type: \"tool-call\",\n            toolCallId: part.call_id,\n            toolName: \"local_shell\",\n            input: JSON.stringify({\n              action: part.action\n            }),\n            providerMetadata: {\n              [providerKey]: {\n                itemId: part.id\n              }\n            }\n          });\n          break;\n        }\n        case \"message\": {\n          for (const contentPart of part.content) {\n            if (((_c = (_b = options.providerOptions) == null ? void 0 : _b.openai) == null ? void 0 : _c.logprobs) && contentPart.logprobs) {\n              logprobs.push(contentPart.logprobs);\n            }\n            content.push({\n              type: \"text\",\n              text: contentPart.text,\n              providerMetadata: {\n                [providerKey]: {\n                  itemId: part.id,\n                  ...part.phase != null && { phase: part.phase }\n                }\n              }\n            });\n            for (const annotation of contentPart.annotations) {\n              if (annotation.type === \"url_citation\") {\n                content.push({\n                  type: \"source\",\n                  sourceType: \"url\",\n                  id: (_f = (_e = (_d = this.config).generateId) == null ? void 0 : _e.call(_d)) != null ? _f : generateId2(),\n                  url: annotation.url,\n                  title: annotation.title\n                });\n              } else if (annotation.type === \"file_citation\") {\n                content.push({\n                  type: \"source\",\n                  sourceType: \"document\",\n                  id: (_i = (_h = (_g = this.config).generateId) == null ? void 0 : _h.call(_g)) != null ? _i : generateId2(),\n                  mediaType: \"text/plain\",\n                  title: (_k = (_j = annotation.quote) != null ? _j : annotation.filename) != null ? _k : \"Document\",\n                  filename: (_l = annotation.filename) != null ? _l : annotation.file_id,\n                  ...annotation.file_id ? {\n                    providerMetadata: {\n                      [providerKey]: {\n                        fileId: annotation.file_id\n                      }\n                    }\n                  } : {}\n                });\n              } else if (annotation.type === \"container_file_citation\") {\n                content.push({\n                  type: \"source\",\n                  sourceType: \"document\",\n                  id: (_o = (_n = (_m = this.config).generateId) == null ? void 0 : _n.call(_m)) != null ? _o : generateId2(),\n                  mediaType: \"text/plain\",\n                  title: (_q = (_p = annotation.filename) != null ? _p : annotation.file_id) != null ? _q : \"Document\",\n                  filename: (_r = annotation.filename) != null ? _r : annotation.file_id,\n                  providerMetadata: {\n                    [providerKey]: {\n                      fileId: annotation.file_id,\n                      containerId: annotation.container_id,\n                      ...annotation.index != null ? { index: annotation.index } : {}\n                    }\n                  }\n                });\n              } else if (annotation.type === \"file_path\") {\n                content.push({\n                  type: \"source\",\n                  sourceType: \"document\",\n                  id: (_u = (_t = (_s = this.config).generateId) == null ? void 0 : _t.call(_s)) != null ? _u : generateId2(),\n                  mediaType: \"application/octet-stream\",\n                  title: annotation.file_id,\n                  filename: annotation.file_id,\n                  providerMetadata: {\n                    [providerKey]: {\n                      fileId: annotation.file_id,\n                      ...annotation.index != null ? { index: annotation.index } : {}\n                    }\n                  }\n                });\n              }\n            }\n          }\n          break;\n        }\n        case \"function_call\": {\n          hasFunctionCall = true;\n          content.push({\n            type: \"tool-call\",\n            toolCallId: part.call_id,\n            toolName: part.name,\n            input: part.arguments,\n            providerMetadata: {\n              [providerKey]: {\n                itemId: part.id\n              }\n            }\n          });\n          break;\n        }\n        case \"web_search_call\": {\n          content.push({\n            type: \"tool-call\",\n            toolCallId: part.id,\n            toolName: webSearchToolName != null ? webSearchToolName : \"web_search\",\n            input: JSON.stringify({}),\n            providerExecuted: true\n          });\n          content.push({\n            type: \"tool-result\",\n            toolCallId: part.id,\n            toolName: webSearchToolName != null ? webSearchToolName : \"web_search\",\n            result: mapWebSearchOutput(part.action),\n            providerExecuted: true\n          });\n          break;\n        }\n        case \"computer_call\": {\n          content.push({\n            type: \"tool-call\",\n            toolCallId: part.id,\n            toolName: \"computer_use\",\n            input: \"\",\n            providerExecuted: true\n          });\n          content.push({\n            type: \"tool-result\",\n            toolCallId: part.id,\n            toolName: \"computer_use\",\n            result: {\n              type: \"computer_use_tool_result\",\n              status: part.status || \"completed\"\n            },\n            providerExecuted: true\n          });\n          break;\n        }\n        case \"file_search_call\": {\n          content.push({\n            type: \"tool-call\",\n            toolCallId: part.id,\n            toolName: \"file_search\",\n            input: \"{}\",\n            providerExecuted: true\n          });\n          content.push({\n            type: \"tool-result\",\n            toolCallId: part.id,\n            toolName: \"file_search\",\n            result: {\n              queries: part.queries,\n              results: (_w = (_v = part.results) == null ? void 0 : _v.map((result) => ({\n                attributes: result.attributes,\n                fileId: result.file_id,\n                filename: result.filename,\n                score: result.score,\n                text: result.text\n              }))) != null ? _w : null\n            },\n            providerExecuted: true\n          });\n          break;\n        }\n        case \"code_interpreter_call\": {\n          content.push({\n            type: \"tool-call\",\n            toolCallId: part.id,\n            toolName: \"code_interpreter\",\n            input: JSON.stringify({\n              code: part.code,\n              containerId: part.container_id\n            }),\n            providerExecuted: true\n          });\n          content.push({\n            type: \"tool-result\",\n            toolCallId: part.id,\n            toolName: \"code_interpreter\",\n            result: {\n              outputs: part.outputs\n            },\n            providerExecuted: true\n          });\n          break;\n        }\n      }\n    }\n    const providerMetadata = {\n      [providerKey]: {\n        ...response.id != null ? { responseId: response.id } : {}\n      }\n    };\n    if (logprobs.length > 0) {\n      providerMetadata[providerKey].logprobs = logprobs;\n    }\n    if (typeof response.service_tier === \"string\") {\n      providerMetadata[providerKey].serviceTier = response.service_tier;\n    }\n    if (((_x = response.reasoning) == null ? void 0 : _x.context) != null) {\n      providerMetadata[providerKey].reasoningContext = response.reasoning.context;\n    }\n    const usage = response.usage;\n    const responsesUsage = getResponsesUsageMetadata(usage);\n    if (responsesUsage != null) {\n      providerMetadata[providerKey].usage = responsesUsage;\n    }\n    return {\n      content,\n      finishReason: mapOpenAIResponseFinishReason({\n        finishReason: (_y = response.incomplete_details) == null ? void 0 : _y.reason,\n        hasFunctionCall\n      }),\n      usage: {\n        inputTokens: usage.input_tokens,\n        outputTokens: usage.output_tokens,\n        totalTokens: usage.input_tokens + usage.output_tokens,\n        reasoningTokens: (_A = (_z = usage.output_tokens_details) == null ? void 0 : _z.reasoning_tokens) != null ? _A : void 0,\n        cachedInputTokens: (_C = (_B = usage.input_tokens_details) == null ? void 0 : _B.cached_tokens) != null ? _C : void 0\n      },\n      request: { body },\n      response: {\n        id: response.id,\n        timestamp: new Date(response.created_at * 1e3),\n        modelId: response.model,\n        headers: responseHeaders,\n        body: rawResponse\n      },\n      providerMetadata,\n      warnings\n    };\n  }\n  async doStream(options) {\n    const {\n      args: body,\n      warnings,\n      webSearchToolName,\n      store\n    } = await this.getArgs(options);\n    const { responseHeaders, value: response } = await postJsonToApi6({\n      url: this.config.url({\n        path: \"/responses\",\n        modelId: this.modelId\n      }),\n      headers: combineHeaders7(this.config.headers(), options.headers),\n      body: {\n        ...body,\n        stream: true\n      },\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createEventSourceResponseHandler3(\n        openaiResponsesChunkSchema\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch\n    });\n    const self = this;\n    const providerKey = this.config.provider.replace(\".responses\", \"\");\n    let finishReason = \"unknown\";\n    const usage = {\n      inputTokens: void 0,\n      outputTokens: void 0,\n      totalTokens: void 0\n    };\n    const logprobs = [];\n    let responseId = null;\n    const ongoingToolCalls = {};\n    const ongoingAnnotations = [];\n    let activeMessagePhase;\n    let hasFunctionCall = false;\n    const activeReasoning = {};\n    let serviceTier;\n    let reasoningContext;\n    let responsesUsage;\n    return {\n      stream: response.pipeThrough(\n        new TransformStream({\n          start(controller) {\n            controller.enqueue({ type: \"stream-start\", warnings });\n          },\n          transform(chunk, controller) {\n            var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y;\n            if (options.includeRawChunks) {\n              controller.enqueue({ type: \"raw\", rawValue: chunk.rawValue });\n            }\n            if (!chunk.success) {\n              finishReason = \"error\";\n              controller.enqueue({ type: \"error\", error: chunk.error });\n              return;\n            }\n            const value = chunk.value;\n            if (isResponseOutputItemAddedChunk(value)) {\n              if (value.item.type === \"function_call\") {\n                ongoingToolCalls[value.output_index] = {\n                  toolName: value.item.name,\n                  toolCallId: value.item.call_id\n                };\n                controller.enqueue({\n                  type: \"tool-input-start\",\n                  id: value.item.call_id,\n                  toolName: value.item.name\n                });\n              } else if (value.item.type === \"web_search_call\") {\n                ongoingToolCalls[value.output_index] = {\n                  toolName: webSearchToolName != null ? webSearchToolName : \"web_search\",\n                  toolCallId: value.item.id\n                };\n                controller.enqueue({\n                  type: \"tool-input-start\",\n                  id: value.item.id,\n                  toolName: webSearchToolName != null ? webSearchToolName : \"web_search\",\n                  providerExecuted: true\n                });\n                controller.enqueue({\n                  type: \"tool-input-end\",\n                  id: value.item.id\n                });\n                controller.enqueue({\n                  type: \"tool-call\",\n                  toolCallId: value.item.id,\n                  toolName: webSearchToolName != null ? webSearchToolName : \"web_search\",\n                  input: JSON.stringify({}),\n                  providerExecuted: true\n                });\n              } else if (value.item.type === \"computer_call\") {\n                ongoingToolCalls[value.output_index] = {\n                  toolName: \"computer_use\",\n                  toolCallId: value.item.id\n                };\n                controller.enqueue({\n                  type: \"tool-input-start\",\n                  id: value.item.id,\n                  toolName: \"computer_use\",\n                  providerExecuted: true\n                });\n              } else if (value.item.type === \"code_interpreter_call\") {\n                ongoingToolCalls[value.output_index] = {\n                  toolName: \"code_interpreter\",\n                  toolCallId: value.item.id,\n                  codeInterpreter: {\n                    containerId: value.item.container_id\n                  }\n                };\n                controller.enqueue({\n                  type: \"tool-input-start\",\n                  id: value.item.id,\n                  toolName: \"code_interpreter\",\n                  providerExecuted: true\n                });\n                controller.enqueue({\n                  type: \"tool-input-delta\",\n                  id: value.item.id,\n                  delta: `{\"containerId\":\"${value.item.container_id}\",\"code\":\"`\n                });\n              } else if (value.item.type === \"file_search_call\") {\n                controller.enqueue({\n                  type: \"tool-call\",\n                  toolCallId: value.item.id,\n                  toolName: \"file_search\",\n                  input: \"{}\",\n                  providerExecuted: true\n                });\n              } else if (value.item.type === \"image_generation_call\") {\n                controller.enqueue({\n                  type: \"tool-call\",\n                  toolCallId: value.item.id,\n                  toolName: \"image_generation\",\n                  input: \"{}\",\n                  providerExecuted: true\n                });\n              } else if (value.item.type === \"message\") {\n                ongoingAnnotations.splice(0, ongoingAnnotations.length);\n                activeMessagePhase = (_a = value.item.phase) != null ? _a : void 0;\n                controller.enqueue({\n                  type: \"text-start\",\n                  id: value.item.id,\n                  providerMetadata: {\n                    [providerKey]: {\n                      itemId: value.item.id,\n                      ...value.item.phase != null && {\n                        phase: value.item.phase\n                      }\n                    }\n                  }\n                });\n              } else if (isResponseOutputItemAddedChunk(value) && value.item.type === \"reasoning\") {\n                activeReasoning[value.item.id] = {\n                  encryptedContent: value.item.encrypted_content,\n                  summaryParts: { 0: \"active\" }\n                };\n                controller.enqueue({\n                  type: \"reasoning-start\",\n                  id: `${value.item.id}:0`,\n                  providerMetadata: {\n                    [providerKey]: {\n                      itemId: value.item.id,\n                      reasoningEncryptedContent: (_b = value.item.encrypted_content) != null ? _b : null\n                    }\n                  }\n                });\n              }\n            } else if (isResponseOutputItemDoneChunk(value)) {\n              if (value.item.type === \"message\") {\n                const phase = (_c = value.item.phase) != null ? _c : activeMessagePhase;\n                activeMessagePhase = void 0;\n                controller.enqueue({\n                  type: \"text-end\",\n                  id: value.item.id,\n                  providerMetadata: {\n                    [providerKey]: {\n                      itemId: value.item.id,\n                      ...phase != null && { phase },\n                      ...ongoingAnnotations.length > 0 && {\n                        annotations: ongoingAnnotations\n                      }\n                    }\n                  }\n                });\n              } else if (value.item.type === \"function_call\") {\n                ongoingToolCalls[value.output_index] = void 0;\n                hasFunctionCall = true;\n                controller.enqueue({\n                  type: \"tool-input-end\",\n                  id: value.item.call_id\n                });\n                controller.enqueue({\n                  type: \"tool-call\",\n                  toolCallId: value.item.call_id,\n                  toolName: value.item.name,\n                  input: value.item.arguments,\n                  providerMetadata: {\n                    [providerKey]: {\n                      itemId: value.item.id\n                    }\n                  }\n                });\n              } else if (value.item.type === \"web_search_call\") {\n                ongoingToolCalls[value.output_index] = void 0;\n                controller.enqueue({\n                  type: \"tool-result\",\n                  toolCallId: value.item.id,\n                  toolName: webSearchToolName != null ? webSearchToolName : \"web_search\",\n                  result: mapWebSearchOutput(value.item.action),\n                  providerExecuted: true\n                });\n              } else if (value.item.type === \"computer_call\") {\n                ongoingToolCalls[value.output_index] = void 0;\n                controller.enqueue({\n                  type: \"tool-input-end\",\n                  id: value.item.id\n                });\n                controller.enqueue({\n                  type: \"tool-call\",\n                  toolCallId: value.item.id,\n                  toolName: \"computer_use\",\n                  input: \"\",\n                  providerExecuted: true\n                });\n                controller.enqueue({\n                  type: \"tool-result\",\n                  toolCallId: value.item.id,\n                  toolName: \"computer_use\",\n                  result: {\n                    type: \"computer_use_tool_result\",\n                    status: value.item.status || \"completed\"\n                  },\n                  providerExecuted: true\n                });\n              } else if (value.item.type === \"file_search_call\") {\n                ongoingToolCalls[value.output_index] = void 0;\n                controller.enqueue({\n                  type: \"tool-result\",\n                  toolCallId: value.item.id,\n                  toolName: \"file_search\",\n                  result: {\n                    queries: value.item.queries,\n                    results: (_e = (_d = value.item.results) == null ? void 0 : _d.map((result) => ({\n                      attributes: result.attributes,\n                      fileId: result.file_id,\n                      filename: result.filename,\n                      score: result.score,\n                      text: result.text\n                    }))) != null ? _e : null\n                  },\n                  providerExecuted: true\n                });\n              } else if (value.item.type === \"code_interpreter_call\") {\n                ongoingToolCalls[value.output_index] = void 0;\n                controller.enqueue({\n                  type: \"tool-result\",\n                  toolCallId: value.item.id,\n                  toolName: \"code_interpreter\",\n                  result: {\n                    outputs: value.item.outputs\n                  },\n                  providerExecuted: true\n                });\n              } else if (value.item.type === \"image_generation_call\") {\n                controller.enqueue({\n                  type: \"tool-result\",\n                  toolCallId: value.item.id,\n                  toolName: \"image_generation\",\n                  result: {\n                    result: value.item.result\n                  },\n                  providerExecuted: true\n                });\n              } else if (value.item.type === \"local_shell_call\") {\n                ongoingToolCalls[value.output_index] = void 0;\n                controller.enqueue({\n                  type: \"tool-call\",\n                  toolCallId: value.item.call_id,\n                  toolName: \"local_shell\",\n                  input: JSON.stringify({\n                    action: {\n                      type: \"exec\",\n                      command: value.item.action.command,\n                      timeoutMs: value.item.action.timeout_ms,\n                      user: value.item.action.user,\n                      workingDirectory: value.item.action.working_directory,\n                      env: value.item.action.env\n                    }\n                  }),\n                  providerMetadata: {\n                    [providerKey]: { itemId: value.item.id }\n                  }\n                });\n              } else if (value.item.type === \"reasoning\") {\n                const activeReasoningPart = activeReasoning[value.item.id];\n                const summaryPartIndices = Object.entries(\n                  activeReasoningPart.summaryParts\n                ).filter(\n                  ([_, status]) => status === \"active\" || status === \"can-conclude\"\n                ).map(([summaryIndex]) => summaryIndex);\n                for (const summaryIndex of summaryPartIndices) {\n                  controller.enqueue({\n                    type: \"reasoning-end\",\n                    id: `${value.item.id}:${summaryIndex}`,\n                    providerMetadata: {\n                      [providerKey]: {\n                        itemId: value.item.id,\n                        reasoningEncryptedContent: (_f = value.item.encrypted_content) != null ? _f : null\n                      }\n                    }\n                  });\n                }\n                delete activeReasoning[value.item.id];\n              }\n            } else if (isResponseFunctionCallArgumentsDeltaChunk(value)) {\n              const toolCall = ongoingToolCalls[value.output_index];\n              if (toolCall != null) {\n                controller.enqueue({\n                  type: \"tool-input-delta\",\n                  id: toolCall.toolCallId,\n                  delta: value.delta\n                });\n              }\n            } else if (isResponseCodeInterpreterCallCodeDeltaChunk(value)) {\n              const toolCall = ongoingToolCalls[value.output_index];\n              if (toolCall != null) {\n                controller.enqueue({\n                  type: \"tool-input-delta\",\n                  id: toolCall.toolCallId,\n                  // The delta is code, which is embedding in a JSON string.\n                  // To escape it, we use JSON.stringify and slice to remove the outer quotes.\n                  delta: JSON.stringify(value.delta).slice(1, -1)\n                });\n              }\n            } else if (isResponseCodeInterpreterCallCodeDoneChunk(value)) {\n              const toolCall = ongoingToolCalls[value.output_index];\n              if (toolCall != null) {\n                controller.enqueue({\n                  type: \"tool-input-delta\",\n                  id: toolCall.toolCallId,\n                  delta: '\"}'\n                });\n                controller.enqueue({\n                  type: \"tool-input-end\",\n                  id: toolCall.toolCallId\n                });\n                controller.enqueue({\n                  type: \"tool-call\",\n                  toolCallId: toolCall.toolCallId,\n                  toolName: \"code_interpreter\",\n                  input: JSON.stringify({\n                    code: value.code,\n                    containerId: toolCall.codeInterpreter.containerId\n                  }),\n                  providerExecuted: true\n                });\n              }\n            } else if (isResponseCreatedChunk(value)) {\n              responseId = value.response.id;\n              controller.enqueue({\n                type: \"response-metadata\",\n                id: value.response.id,\n                timestamp: new Date(value.response.created_at * 1e3),\n                modelId: value.response.model\n              });\n            } else if (isTextDeltaChunk(value)) {\n              controller.enqueue({\n                type: \"text-delta\",\n                id: value.item_id,\n                delta: value.delta\n              });\n              if (((_h = (_g = options.providerOptions) == null ? void 0 : _g.openai) == null ? void 0 : _h.logprobs) && value.logprobs) {\n                logprobs.push(value.logprobs);\n              }\n            } else if (value.type === \"response.reasoning_summary_part.added\") {\n              if (value.summary_index > 0) {\n                const activeReasoningPart = activeReasoning[value.item_id];\n                activeReasoningPart.summaryParts[value.summary_index] = \"active\";\n                for (const summaryIndex of Object.keys(\n                  activeReasoningPart.summaryParts\n                )) {\n                  if (activeReasoningPart.summaryParts[summaryIndex] === \"can-conclude\") {\n                    controller.enqueue({\n                      type: \"reasoning-end\",\n                      id: `${value.item_id}:${summaryIndex}`,\n                      providerMetadata: {\n                        [providerKey]: { itemId: value.item_id }\n                      }\n                    });\n                    activeReasoningPart.summaryParts[summaryIndex] = \"concluded\";\n                  }\n                }\n                controller.enqueue({\n                  type: \"reasoning-start\",\n                  id: `${value.item_id}:${value.summary_index}`,\n                  providerMetadata: {\n                    [providerKey]: {\n                      itemId: value.item_id,\n                      reasoningEncryptedContent: (_j = (_i = activeReasoning[value.item_id]) == null ? void 0 : _i.encryptedContent) != null ? _j : null\n                    }\n                  }\n                });\n              }\n            } else if (value.type === \"response.reasoning_summary_text.delta\") {\n              controller.enqueue({\n                type: \"reasoning-delta\",\n                id: `${value.item_id}:${value.summary_index}`,\n                delta: value.delta,\n                providerMetadata: {\n                  [providerKey]: {\n                    itemId: value.item_id\n                  }\n                }\n              });\n            } else if (value.type === \"response.reasoning_summary_part.done\") {\n              if (store) {\n                controller.enqueue({\n                  type: \"reasoning-end\",\n                  id: `${value.item_id}:${value.summary_index}`,\n                  providerMetadata: {\n                    [providerKey]: { itemId: value.item_id }\n                  }\n                });\n                activeReasoning[value.item_id].summaryParts[value.summary_index] = \"concluded\";\n              } else {\n                activeReasoning[value.item_id].summaryParts[value.summary_index] = \"can-conclude\";\n              }\n            } else if (isResponseFinishedChunk(value)) {\n              finishReason = mapOpenAIResponseFinishReason({\n                finishReason: (_k = value.response.incomplete_details) == null ? void 0 : _k.reason,\n                hasFunctionCall\n              });\n              usage.inputTokens = value.response.usage.input_tokens;\n              usage.outputTokens = value.response.usage.output_tokens;\n              usage.totalTokens = value.response.usage.input_tokens + value.response.usage.output_tokens;\n              usage.reasoningTokens = (_m = (_l = value.response.usage.output_tokens_details) == null ? void 0 : _l.reasoning_tokens) != null ? _m : void 0;\n              usage.cachedInputTokens = (_o = (_n = value.response.usage.input_tokens_details) == null ? void 0 : _n.cached_tokens) != null ? _o : void 0;\n              if (typeof value.response.service_tier === \"string\") {\n                serviceTier = value.response.service_tier;\n              }\n              if (((_p = value.response.reasoning) == null ? void 0 : _p.context) != null) {\n                reasoningContext = value.response.reasoning.context;\n              }\n              responsesUsage = getResponsesUsageMetadata(value.response.usage);\n            } else if (isResponseAnnotationAddedChunk(value)) {\n              ongoingAnnotations.push(value.annotation);\n              if (value.annotation.type === \"url_citation\") {\n                controller.enqueue({\n                  type: \"source\",\n                  sourceType: \"url\",\n                  id: (_s = (_r = (_q = self.config).generateId) == null ? void 0 : _r.call(_q)) != null ? _s : generateId2(),\n                  url: value.annotation.url,\n                  title: value.annotation.title\n                });\n              } else if (value.annotation.type === \"file_citation\") {\n                controller.enqueue({\n                  type: \"source\",\n                  sourceType: \"document\",\n                  id: (_v = (_u = (_t = self.config).generateId) == null ? void 0 : _u.call(_t)) != null ? _v : generateId2(),\n                  mediaType: \"text/plain\",\n                  title: (_x = (_w = value.annotation.quote) != null ? _w : value.annotation.filename) != null ? _x : \"Document\",\n                  filename: (_y = value.annotation.filename) != null ? _y : value.annotation.file_id,\n                  ...value.annotation.file_id ? {\n                    providerMetadata: {\n                      [providerKey]: {\n                        fileId: value.annotation.file_id\n                      }\n                    }\n                  } : {}\n                });\n              }\n            } else if (isErrorChunk(value)) {\n              controller.enqueue({ type: \"error\", error: value });\n            }\n          },\n          flush(controller) {\n            const providerMetadata = {\n              [providerKey]: {\n                responseId\n              }\n            };\n            if (logprobs.length > 0) {\n              providerMetadata[providerKey].logprobs = logprobs;\n            }\n            if (serviceTier !== void 0) {\n              providerMetadata[providerKey].serviceTier = serviceTier;\n            }\n            if (reasoningContext !== void 0) {\n              providerMetadata[providerKey].reasoningContext = reasoningContext;\n            }\n            if (responsesUsage != null) {\n              providerMetadata[providerKey].usage = responsesUsage;\n            }\n            controller.enqueue({\n              type: \"finish\",\n              finishReason,\n              usage,\n              providerMetadata\n            });\n          }\n        })\n      ),\n      request: { body },\n      response: { headers: responseHeaders }\n    };\n  }\n};\nfunction isTextDeltaChunk(chunk) {\n  return chunk.type === \"response.output_text.delta\";\n}\nfunction isResponseOutputItemDoneChunk(chunk) {\n  return chunk.type === \"response.output_item.done\";\n}\nfunction isResponseFinishedChunk(chunk) {\n  return chunk.type === \"response.completed\" || chunk.type === \"response.incomplete\";\n}\nfunction isResponseCreatedChunk(chunk) {\n  return chunk.type === \"response.created\";\n}\nfunction isResponseFunctionCallArgumentsDeltaChunk(chunk) {\n  return chunk.type === \"response.function_call_arguments.delta\";\n}\nfunction isResponseCodeInterpreterCallCodeDeltaChunk(chunk) {\n  return chunk.type === \"response.code_interpreter_call_code.delta\";\n}\nfunction isResponseCodeInterpreterCallCodeDoneChunk(chunk) {\n  return chunk.type === \"response.code_interpreter_call_code.done\";\n}\nfunction isResponseOutputItemAddedChunk(chunk) {\n  return chunk.type === \"response.output_item.added\";\n}\nfunction isResponseAnnotationAddedChunk(chunk) {\n  return chunk.type === \"response.output_text.annotation.added\";\n}\nfunction isErrorChunk(chunk) {\n  return chunk.type === \"error\";\n}\nfunction mapWebSearchOutput(action) {\n  var _a;\n  if (action == null) {\n    return {};\n  }\n  switch (action.type) {\n    case \"search\":\n      return {\n        action: { type: \"search\", query: (_a = action.query) != null ? _a : void 0 },\n        // include sources when provided by the Responses API (behind include flag)\n        ...action.sources != null && { sources: action.sources }\n      };\n    case \"open_page\":\n      return { action: { type: \"openPage\", url: action.url } };\n    case \"find_in_page\":\n      return {\n        action: {\n          type: \"findInPage\",\n          url: action.url,\n          pattern: action.pattern\n        }\n      };\n  }\n}\nfunction getResponsesUsageMetadata(usage) {\n  var _a, _b, _c, _d;\n  const cacheWriteTokens = (_a = usage == null ? void 0 : usage.input_tokens_details) == null ? void 0 : _a.cache_write_tokens;\n  const orchestrationInputTokens = (_b = usage == null ? void 0 : usage.input_tokens_details) == null ? void 0 : _b.orchestration_input_tokens;\n  const orchestrationInputCachedTokens = (_c = usage == null ? void 0 : usage.input_tokens_details) == null ? void 0 : _c.orchestration_input_cached_tokens;\n  const orchestrationOutputTokens = (_d = usage == null ? void 0 : usage.output_tokens_details) == null ? void 0 : _d.orchestration_output_tokens;\n  if (cacheWriteTokens == null && orchestrationInputTokens == null && orchestrationInputCachedTokens == null && orchestrationOutputTokens == null) {\n    return void 0;\n  }\n  return {\n    ...cacheWriteTokens != null && { cacheWriteTokens },\n    ...orchestrationInputTokens != null && { orchestrationInputTokens },\n    ...orchestrationInputCachedTokens != null && {\n      orchestrationInputCachedTokens\n    },\n    ...orchestrationOutputTokens != null && { orchestrationOutputTokens }\n  };\n}\nexport {\n  OpenAIChatLanguageModel,\n  OpenAICompletionLanguageModel,\n  OpenAIEmbeddingModel,\n  OpenAIImageModel,\n  OpenAIResponsesLanguageModel,\n  OpenAISpeechModel,\n  OpenAITranscriptionModel,\n  codeInterpreter,\n  codeInterpreterArgsSchema,\n  codeInterpreterInputSchema,\n  codeInterpreterOutputSchema,\n  codeInterpreterToolFactory,\n  fileSearch,\n  fileSearchArgsSchema,\n  fileSearchOutputSchema,\n  getMaxImagesPerCall,\n  hasDefaultResponseFormat,\n  imageGeneration,\n  imageGenerationArgsSchema,\n  imageGenerationOutputSchema,\n  modelMaxImagesPerCall,\n  openAITranscriptionProviderOptions,\n  openaiChatLanguageModelOptions,\n  openaiCompletionProviderOptions,\n  openaiEmbeddingProviderOptions,\n  openaiImageModelGenerationOptions,\n  openaiImageModelOptions,\n  openaiSpeechProviderOptionsSchema,\n  webSearch,\n  webSearchArgsSchema,\n  webSearchOutputSchema,\n  webSearchPreview,\n  webSearchPreviewArgsSchema,\n  webSearchPreviewInputSchema,\n  webSearchToolFactory\n};\n//# sourceMappingURL=index.mjs.map","// src/chat/deepseek-chat-language-model.ts\nimport {\n  InvalidResponseDataError\n} from \"@ai-sdk/provider\";\nimport {\n  combineHeaders,\n  createEventSourceResponseHandler,\n  createJsonErrorResponseHandler,\n  createJsonResponseHandler,\n  generateId,\n  isParsableJson,\n  parseProviderOptions,\n  postJsonToApi\n} from \"@ai-sdk/provider-utils\";\n\n// src/chat/convert-to-deepseek-chat-messages.ts\nfunction convertToDeepSeekChatMessages({\n  prompt,\n  responseFormat,\n  modelId,\n  supportsStructuredOutputs = false\n}) {\n  const isDeepSeekV4 = modelId.includes(\"deepseek-v4\");\n  const messages = [];\n  const warnings = [];\n  if ((responseFormat == null ? void 0 : responseFormat.type) === \"json\") {\n    if (responseFormat.schema == null) {\n      messages.push({\n        role: \"system\",\n        content: \"Return JSON.\"\n      });\n    } else if (!supportsStructuredOutputs) {\n      messages.push({\n        role: \"system\",\n        content: \"Return JSON that conforms to the following schema: \" + JSON.stringify(responseFormat.schema)\n      });\n    }\n  }\n  let lastUserMessageIndex = -1;\n  for (let i = prompt.length - 1; i >= 0; i--) {\n    if (prompt[i].role === \"user\") {\n      lastUserMessageIndex = i;\n      break;\n    }\n  }\n  let index = -1;\n  for (const { role, content } of prompt) {\n    index++;\n    switch (role) {\n      case \"system\": {\n        messages.push({ role: \"system\", content });\n        break;\n      }\n      case \"user\": {\n        let userContent = \"\";\n        for (const part of content) {\n          if (part.type === \"text\") {\n            userContent += part.text;\n          } else {\n            warnings.push({\n              type: \"other\",\n              message: `Unsupported user message part type: ${part.type}`\n            });\n          }\n        }\n        messages.push({\n          role: \"user\",\n          content: userContent\n        });\n        break;\n      }\n      case \"assistant\": {\n        let text = \"\";\n        let reasoning;\n        const toolCalls = [];\n        for (const part of content) {\n          switch (part.type) {\n            case \"text\": {\n              text += part.text;\n              break;\n            }\n            case \"reasoning\": {\n              if (index <= lastUserMessageIndex && !isDeepSeekV4) {\n                break;\n              }\n              if (reasoning == null) {\n                reasoning = part.text;\n              } else {\n                reasoning += part.text;\n              }\n              break;\n            }\n            case \"tool-call\": {\n              toolCalls.push({\n                id: part.toolCallId,\n                type: \"function\",\n                function: {\n                  name: part.toolName,\n                  arguments: JSON.stringify(part.input)\n                }\n              });\n              break;\n            }\n          }\n        }\n        messages.push({\n          role: \"assistant\",\n          content: text,\n          reasoning_content: reasoning != null ? reasoning : isDeepSeekV4 ? \"\" : void 0,\n          tool_calls: toolCalls.length > 0 ? toolCalls : void 0\n        });\n        break;\n      }\n      case \"tool\": {\n        for (const toolResponse of content) {\n          const output = toolResponse.output;\n          let contentValue;\n          switch (output.type) {\n            case \"text\":\n            case \"error-text\":\n              contentValue = output.value;\n              break;\n            case \"content\":\n            case \"json\":\n            case \"error-json\":\n              contentValue = JSON.stringify(output.value);\n              break;\n          }\n          messages.push({\n            role: \"tool\",\n            tool_call_id: toolResponse.toolCallId,\n            content: contentValue\n          });\n        }\n        break;\n      }\n      default: {\n        warnings.push({\n          type: \"other\",\n          message: `Unsupported message role: ${role}`\n        });\n        break;\n      }\n    }\n  }\n  return { messages, warnings };\n}\n\n// src/chat/deepseek-chat-api-types.ts\nimport { lazySchema, zodSchema } from \"@ai-sdk/provider-utils\";\nimport { z } from \"zod/v4\";\nvar tokenUsageSchema = z.object({\n  prompt_tokens: z.number().nullish(),\n  completion_tokens: z.number().nullish(),\n  prompt_cache_hit_tokens: z.number().nullish(),\n  prompt_cache_miss_tokens: z.number().nullish(),\n  total_tokens: z.number().nullish(),\n  completion_tokens_details: z.object({\n    reasoning_tokens: z.number().nullish()\n  }).nullish()\n}).nullish();\nvar deepSeekErrorSchema = z.object({\n  error: z.object({\n    message: z.string(),\n    type: z.string().nullish(),\n    param: z.any().nullish(),\n    code: z.union([z.string(), z.number()]).nullish()\n  })\n});\nvar deepseekChatResponseSchema = z.object({\n  id: z.string().nullish(),\n  created: z.number().nullish(),\n  model: z.string().nullish(),\n  choices: z.array(\n    z.object({\n      message: z.object({\n        role: z.literal(\"assistant\").nullish(),\n        content: z.string().nullish(),\n        reasoning_content: z.string().nullish(),\n        tool_calls: z.array(\n          z.object({\n            id: z.string().nullish(),\n            function: z.object({\n              name: z.string(),\n              arguments: z.string()\n            })\n          })\n        ).nullish()\n      }),\n      finish_reason: z.string().nullish()\n    })\n  ),\n  usage: tokenUsageSchema\n});\nvar deepseekChatChunkSchema = lazySchema(\n  () => zodSchema(\n    z.union([\n      z.object({\n        id: z.string().nullish(),\n        created: z.number().nullish(),\n        model: z.string().nullish(),\n        choices: z.array(\n          z.object({\n            delta: z.object({\n              role: z.enum([\"assistant\"]).nullish(),\n              content: z.string().nullish(),\n              reasoning_content: z.string().nullish(),\n              tool_calls: z.array(\n                z.object({\n                  index: z.number(),\n                  id: z.string().nullish(),\n                  function: z.object({\n                    name: z.string().nullish(),\n                    arguments: z.string().nullish()\n                  })\n                })\n              ).nullish()\n            }).nullish(),\n            finish_reason: z.string().nullish()\n          })\n        ),\n        usage: tokenUsageSchema\n      }),\n      deepSeekErrorSchema\n    ])\n  )\n);\n\n// src/chat/deepseek-chat-options.ts\nimport { z as z2 } from \"zod/v4\";\nvar deepseekChatOptions = z2.object({\n  /**\n   * Type of thinking to use. Defaults to `enabled`.\n   *\n   * See https://api-docs.deepseek.com/guides/thinking_mode for the\n   * `adaptive` option, which lets the model decide when to think.\n   */\n  thinking: z2.object({\n    type: z2.enum([\"adaptive\", \"enabled\", \"disabled\"]).optional()\n  }).optional(),\n  /**\n   * Controls the thinking strength for DeepSeek V4 reasoning models.\n   *\n   * DeepSeek's API accepts `low`, `medium`, `high`, `xhigh`, and `max`.\n   * Per their docs, `low` and `medium` are mapped to `high`, and `xhigh`\n   * is mapped to `max` server-side for compatibility with other providers.\n   */\n  reasoningEffort: z2.enum([\"low\", \"medium\", \"high\", \"xhigh\", \"max\"]).optional(),\n  /**\n   * Whether to use strict JSON schema validation for structured outputs.\n   * Only applies when the serving endpoint supports JSON schema response\n   * formats (e.g. Azure). Defaults to `true`.\n   */\n  strictJsonSchema: z2.boolean().optional()\n});\n\n// src/chat/deepseek-prepare-tools.ts\nimport {\n  UnsupportedFunctionalityError\n} from \"@ai-sdk/provider\";\nfunction prepareTools({\n  tools,\n  toolChoice\n}) {\n  tools = (tools == null ? void 0 : tools.length) ? tools : void 0;\n  const toolWarnings = [];\n  if (tools == null) {\n    return { tools: void 0, toolChoice: void 0, toolWarnings };\n  }\n  const deepseekTools = [];\n  for (const tool of tools) {\n    if (tool.type === \"provider-defined\") {\n      toolWarnings.push({\n        type: \"unsupported-tool\",\n        tool\n      });\n    } else {\n      deepseekTools.push({\n        type: \"function\",\n        function: {\n          name: tool.name,\n          description: tool.description,\n          parameters: tool.inputSchema\n        }\n      });\n    }\n  }\n  if (toolChoice == null) {\n    return { tools: deepseekTools, toolChoice: void 0, toolWarnings };\n  }\n  const type = toolChoice.type;\n  switch (type) {\n    case \"auto\":\n    case \"none\":\n    case \"required\":\n      return { tools: deepseekTools, toolChoice: type, toolWarnings };\n    case \"tool\":\n      return {\n        tools: deepseekTools,\n        toolChoice: {\n          type: \"function\",\n          function: { name: toolChoice.toolName }\n        },\n        toolWarnings\n      };\n    default: {\n      const _exhaustiveCheck = type;\n      throw new UnsupportedFunctionalityError({\n        functionality: `tool choice type: ${_exhaustiveCheck}`\n      });\n    }\n  }\n}\n\n// src/chat/get-response-metadata.ts\nfunction getResponseMetadata({\n  id,\n  model,\n  created\n}) {\n  return {\n    id: id != null ? id : void 0,\n    modelId: model != null ? model : void 0,\n    timestamp: created != null ? new Date(created * 1e3) : void 0\n  };\n}\n\n// src/chat/map-deepseek-finish-reason.ts\nfunction mapDeepSeekFinishReason(finishReason) {\n  switch (finishReason) {\n    case \"stop\":\n      return \"stop\";\n    case \"length\":\n      return \"length\";\n    case \"content_filter\":\n      return \"content-filter\";\n    case \"tool_calls\":\n      return \"tool-calls\";\n    case \"insufficient_system_resource\":\n      return \"error\";\n    default:\n      return \"unknown\";\n  }\n}\n\n// src/chat/deepseek-chat-language-model.ts\nvar DeepSeekChatLanguageModel = class {\n  constructor(modelId, config) {\n    this.specificationVersion = \"v2\";\n    this.supportedUrls = {};\n    this.modelId = modelId;\n    this.config = config;\n    this.failedResponseHandler = createJsonErrorResponseHandler({\n      errorSchema: deepSeekErrorSchema,\n      errorToMessage: (error) => error.error.message\n    });\n  }\n  get provider() {\n    return this.config.provider;\n  }\n  get providerOptionsName() {\n    return this.config.provider.split(\".\")[0].trim();\n  }\n  async getArgs({\n    prompt,\n    maxOutputTokens,\n    temperature,\n    topP,\n    topK,\n    frequencyPenalty,\n    presencePenalty,\n    providerOptions,\n    stopSequences,\n    responseFormat,\n    tools,\n    toolChoice,\n    seed\n  }) {\n    var _a, _b, _c, _d;\n    const deepseekOptions = (_a = await parseProviderOptions({\n      provider: this.providerOptionsName,\n      providerOptions,\n      schema: deepseekChatOptions\n    })) != null ? _a : {};\n    const supportsStructuredOutputs = this.config.supportsStructuredOutputs === true;\n    const { messages, warnings } = convertToDeepSeekChatMessages({\n      prompt,\n      responseFormat,\n      modelId: this.modelId,\n      supportsStructuredOutputs\n    });\n    if (topK != null) {\n      warnings.push({ type: \"unsupported-setting\", setting: \"topK\" });\n    }\n    if (seed != null) {\n      warnings.push({ type: \"unsupported-setting\", setting: \"seed\" });\n    }\n    const {\n      tools: deepseekTools,\n      toolChoice: deepseekToolChoices,\n      toolWarnings\n    } = prepareTools({\n      tools,\n      toolChoice\n    });\n    const thinking = this.config.supportsThinking === false ? void 0 : ((_b = deepseekOptions.thinking) == null ? void 0 : _b.type) != null ? { type: deepseekOptions.thinking.type } : void 0;\n    return {\n      args: {\n        model: this.modelId,\n        max_tokens: maxOutputTokens,\n        temperature,\n        top_p: topP,\n        frequency_penalty: frequencyPenalty,\n        presence_penalty: presencePenalty,\n        response_format: (responseFormat == null ? void 0 : responseFormat.type) === \"json\" ? supportsStructuredOutputs && responseFormat.schema != null ? {\n          type: \"json_schema\",\n          json_schema: {\n            schema: responseFormat.schema,\n            strict: (_c = deepseekOptions.strictJsonSchema) != null ? _c : true,\n            name: (_d = responseFormat.name) != null ? _d : \"response\",\n            description: responseFormat.description\n          }\n        } : { type: \"json_object\" } : void 0,\n        stop: stopSequences,\n        messages,\n        tools: deepseekTools,\n        tool_choice: deepseekToolChoices,\n        thinking,\n        ...(thinking == null ? void 0 : thinking.type) !== \"disabled\" && deepseekOptions.reasoningEffort != null && {\n          reasoning_effort: deepseekOptions.reasoningEffort\n        }\n      },\n      warnings: [...warnings, ...toolWarnings]\n    };\n  }\n  async doGenerate(options) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p;\n    const { args, warnings } = await this.getArgs({ ...options });\n    const {\n      responseHeaders,\n      value: responseBody,\n      rawValue: rawResponse\n    } = await postJsonToApi({\n      url: this.config.url({\n        path: \"/chat/completions\",\n        modelId: this.modelId\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body: args,\n      failedResponseHandler: this.failedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler(\n        deepseekChatResponseSchema\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch\n    });\n    const choice = responseBody.choices[0];\n    const content = [];\n    const reasoning = choice.message.reasoning_content;\n    if (reasoning != null && reasoning.length > 0) {\n      content.push({\n        type: \"reasoning\",\n        text: reasoning\n      });\n    }\n    if (choice.message.tool_calls != null) {\n      for (const toolCall of choice.message.tool_calls) {\n        content.push({\n          type: \"tool-call\",\n          toolCallId: (_a = toolCall.id) != null ? _a : generateId(),\n          toolName: toolCall.function.name,\n          input: toolCall.function.arguments\n        });\n      }\n    }\n    const text = choice.message.content;\n    if (text != null && text.length > 0) {\n      content.push({ type: \"text\", text });\n    }\n    return {\n      content,\n      finishReason: mapDeepSeekFinishReason(choice.finish_reason),\n      usage: {\n        inputTokens: (_c = (_b = responseBody.usage) == null ? void 0 : _b.prompt_tokens) != null ? _c : void 0,\n        outputTokens: (_e = (_d = responseBody.usage) == null ? void 0 : _d.completion_tokens) != null ? _e : void 0,\n        totalTokens: (_g = (_f = responseBody.usage) == null ? void 0 : _f.total_tokens) != null ? _g : void 0,\n        reasoningTokens: (_j = (_i = (_h = responseBody.usage) == null ? void 0 : _h.completion_tokens_details) == null ? void 0 : _i.reasoning_tokens) != null ? _j : void 0,\n        cachedInputTokens: (_l = (_k = responseBody.usage) == null ? void 0 : _k.prompt_cache_hit_tokens) != null ? _l : void 0\n      },\n      providerMetadata: {\n        [this.providerOptionsName]: {\n          promptCacheHitTokens: (_n = (_m = responseBody.usage) == null ? void 0 : _m.prompt_cache_hit_tokens) != null ? _n : null,\n          promptCacheMissTokens: (_p = (_o = responseBody.usage) == null ? void 0 : _o.prompt_cache_miss_tokens) != null ? _p : null\n        }\n      },\n      request: { body: args },\n      response: {\n        ...getResponseMetadata(responseBody),\n        headers: responseHeaders,\n        body: rawResponse\n      },\n      warnings\n    };\n  }\n  async doStream(options) {\n    const { args, warnings } = await this.getArgs({ ...options });\n    const body = {\n      ...args,\n      stream: true,\n      stream_options: { include_usage: true }\n    };\n    const { responseHeaders, value: response } = await postJsonToApi({\n      url: this.config.url({\n        path: \"/chat/completions\",\n        modelId: this.modelId\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body,\n      failedResponseHandler: this.failedResponseHandler,\n      successfulResponseHandler: createEventSourceResponseHandler(\n        deepseekChatChunkSchema\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch\n    });\n    const toolCalls = [];\n    let finishReason = \"unknown\";\n    let usage = void 0;\n    let isFirstChunk = true;\n    const providerOptionsName = this.providerOptionsName;\n    let isActiveReasoning = false;\n    let isActiveText = false;\n    return {\n      stream: response.pipeThrough(\n        new TransformStream({\n          start(controller) {\n            controller.enqueue({ type: \"stream-start\", warnings });\n          },\n          transform(chunk, controller) {\n            var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;\n            if (options.includeRawChunks) {\n              controller.enqueue({ type: \"raw\", rawValue: chunk.rawValue });\n            }\n            if (!chunk.success) {\n              finishReason = \"error\";\n              controller.enqueue({ type: \"error\", error: chunk.error });\n              return;\n            }\n            const value = chunk.value;\n            if (\"error\" in value) {\n              finishReason = \"error\";\n              controller.enqueue({ type: \"error\", error: value.error.message });\n              return;\n            }\n            if (isFirstChunk) {\n              isFirstChunk = false;\n              controller.enqueue({\n                type: \"response-metadata\",\n                ...getResponseMetadata(value)\n              });\n            }\n            if (value.usage != null) {\n              usage = value.usage;\n            }\n            const choice = value.choices[0];\n            if ((choice == null ? void 0 : choice.finish_reason) != null) {\n              finishReason = mapDeepSeekFinishReason(choice.finish_reason);\n            }\n            if ((choice == null ? void 0 : choice.delta) == null) {\n              return;\n            }\n            const delta = choice.delta;\n            const reasoningContent = delta.reasoning_content;\n            if (reasoningContent) {\n              if (!isActiveReasoning) {\n                controller.enqueue({\n                  type: \"reasoning-start\",\n                  id: \"reasoning-0\"\n                });\n                isActiveReasoning = true;\n              }\n              controller.enqueue({\n                type: \"reasoning-delta\",\n                id: \"reasoning-0\",\n                delta: reasoningContent\n              });\n            }\n            if (delta.content) {\n              if (!isActiveText) {\n                controller.enqueue({ type: \"text-start\", id: \"txt-0\" });\n                isActiveText = true;\n              }\n              if (isActiveReasoning) {\n                controller.enqueue({\n                  type: \"reasoning-end\",\n                  id: \"reasoning-0\"\n                });\n                isActiveReasoning = false;\n              }\n              controller.enqueue({\n                type: \"text-delta\",\n                id: \"txt-0\",\n                delta: delta.content\n              });\n            }\n            if (delta.tool_calls != null) {\n              if (isActiveReasoning) {\n                controller.enqueue({\n                  type: \"reasoning-end\",\n                  id: \"reasoning-0\"\n                });\n                isActiveReasoning = false;\n              }\n              for (const toolCallDelta of delta.tool_calls) {\n                const index = toolCallDelta.index;\n                if (toolCalls[index] == null) {\n                  if (toolCallDelta.id == null) {\n                    throw new InvalidResponseDataError({\n                      data: toolCallDelta,\n                      message: `Expected 'id' to be a string.`\n                    });\n                  }\n                  if (((_a = toolCallDelta.function) == null ? void 0 : _a.name) == null) {\n                    throw new InvalidResponseDataError({\n                      data: toolCallDelta,\n                      message: `Expected 'function.name' to be a string.`\n                    });\n                  }\n                  controller.enqueue({\n                    type: \"tool-input-start\",\n                    id: toolCallDelta.id,\n                    toolName: toolCallDelta.function.name\n                  });\n                  toolCalls[index] = {\n                    id: toolCallDelta.id,\n                    type: \"function\",\n                    function: {\n                      name: toolCallDelta.function.name,\n                      arguments: (_b = toolCallDelta.function.arguments) != null ? _b : \"\"\n                    },\n                    hasFinished: false\n                  };\n                  const toolCall2 = toolCalls[index];\n                  if (((_c = toolCall2.function) == null ? void 0 : _c.name) != null && ((_d = toolCall2.function) == null ? void 0 : _d.arguments) != null) {\n                    if (toolCall2.function.arguments.length > 0) {\n                      controller.enqueue({\n                        type: \"tool-input-delta\",\n                        id: toolCall2.id,\n                        delta: toolCall2.function.arguments\n                      });\n                    }\n                    if (isParsableJson(toolCall2.function.arguments)) {\n                      controller.enqueue({\n                        type: \"tool-input-end\",\n                        id: toolCall2.id\n                      });\n                      controller.enqueue({\n                        type: \"tool-call\",\n                        toolCallId: (_e = toolCall2.id) != null ? _e : generateId(),\n                        toolName: toolCall2.function.name,\n                        input: toolCall2.function.arguments\n                      });\n                      toolCall2.hasFinished = true;\n                    }\n                  }\n                  continue;\n                }\n                const toolCall = toolCalls[index];\n                if (toolCall.hasFinished) {\n                  continue;\n                }\n                if (((_f = toolCallDelta.function) == null ? void 0 : _f.arguments) != null) {\n                  toolCall.function.arguments += (_h = (_g = toolCallDelta.function) == null ? void 0 : _g.arguments) != null ? _h : \"\";\n                }\n                controller.enqueue({\n                  type: \"tool-input-delta\",\n                  id: toolCall.id,\n                  delta: (_i = toolCallDelta.function.arguments) != null ? _i : \"\"\n                });\n                if (((_j = toolCall.function) == null ? void 0 : _j.name) != null && ((_k = toolCall.function) == null ? void 0 : _k.arguments) != null && isParsableJson(toolCall.function.arguments)) {\n                  controller.enqueue({\n                    type: \"tool-input-end\",\n                    id: toolCall.id\n                  });\n                  controller.enqueue({\n                    type: \"tool-call\",\n                    toolCallId: (_l = toolCall.id) != null ? _l : generateId(),\n                    toolName: toolCall.function.name,\n                    input: toolCall.function.arguments\n                  });\n                  toolCall.hasFinished = true;\n                }\n              }\n            }\n          },\n          flush(controller) {\n            var _a, _b, _c, _d, _e, _f, _g, _h, _i;\n            if (isActiveReasoning) {\n              controller.enqueue({ type: \"reasoning-end\", id: \"reasoning-0\" });\n            }\n            if (isActiveText) {\n              controller.enqueue({ type: \"text-end\", id: \"txt-0\" });\n            }\n            for (const toolCall of toolCalls.filter(\n              (toolCall2) => !toolCall2.hasFinished\n            )) {\n              controller.enqueue({\n                type: \"tool-input-end\",\n                id: toolCall.id\n              });\n              controller.enqueue({\n                type: \"tool-call\",\n                toolCallId: (_a = toolCall.id) != null ? _a : generateId(),\n                toolName: toolCall.function.name,\n                input: toolCall.function.arguments\n              });\n            }\n            controller.enqueue({\n              type: \"finish\",\n              finishReason,\n              usage: {\n                inputTokens: (_b = usage == null ? void 0 : usage.prompt_tokens) != null ? _b : void 0,\n                outputTokens: (_c = usage == null ? void 0 : usage.completion_tokens) != null ? _c : void 0,\n                totalTokens: (_d = usage == null ? void 0 : usage.total_tokens) != null ? _d : void 0,\n                reasoningTokens: (_f = (_e = usage == null ? void 0 : usage.completion_tokens_details) == null ? void 0 : _e.reasoning_tokens) != null ? _f : void 0,\n                cachedInputTokens: (_g = usage == null ? void 0 : usage.prompt_cache_hit_tokens) != null ? _g : void 0\n              },\n              providerMetadata: {\n                [providerOptionsName]: {\n                  promptCacheHitTokens: (_h = usage == null ? void 0 : usage.prompt_cache_hit_tokens) != null ? _h : null,\n                  promptCacheMissTokens: (_i = usage == null ? void 0 : usage.prompt_cache_miss_tokens) != null ? _i : null\n                }\n              }\n            });\n          }\n        })\n      ),\n      request: { body },\n      response: { headers: responseHeaders }\n    };\n  }\n};\nexport {\n  DeepSeekChatLanguageModel,\n  deepseekChatOptions\n};\n//# sourceMappingURL=index.mjs.map","// src/azure-openai-provider.ts\nimport {\n  OpenAIChatLanguageModel,\n  OpenAICompletionLanguageModel,\n  OpenAIEmbeddingModel,\n  OpenAIImageModel,\n  OpenAIResponsesLanguageModel,\n  OpenAISpeechModel,\n  OpenAITranscriptionModel\n} from \"@ai-sdk/openai/internal\";\nimport { DeepSeekChatLanguageModel } from \"@ai-sdk/deepseek/internal\";\nimport {\n  InvalidArgumentError\n} from \"@ai-sdk/provider\";\nimport {\n  loadApiKey,\n  loadSetting,\n  normalizeHeaders,\n  withUserAgentSuffix\n} from \"@ai-sdk/provider-utils\";\n\n// src/azure-openai-tools.ts\nimport {\n  codeInterpreter,\n  fileSearch,\n  imageGeneration,\n  webSearch,\n  webSearchPreview\n} from \"@ai-sdk/openai/internal\";\nvar azureOpenaiTools = {\n  codeInterpreter,\n  fileSearch,\n  imageGeneration,\n  webSearch,\n  webSearchPreview\n};\n\n// src/version.ts\nvar VERSION = true ? \"2.0.122\" : \"0.0.0-test\";\n\n// src/azure-openai-provider.ts\nfunction createAzure(options = {}) {\n  var _a;\n  const tokenProvider = options.tokenProvider;\n  if (options.apiKey && tokenProvider) {\n    throw new InvalidArgumentError({\n      argument: \"apiKey/tokenProvider\",\n      message: \"Both apiKey and tokenProvider were provided. Please use only one authentication method.\"\n    });\n  }\n  const getHeaders = () => {\n    const authHeaders = tokenProvider ? {} : {\n      \"api-key\": loadApiKey({\n        apiKey: options.apiKey,\n        environmentVariableName: \"AZURE_API_KEY\",\n        description: \"Azure OpenAI\"\n      })\n    };\n    return withUserAgentSuffix(\n      {\n        ...authHeaders,\n        ...options.headers\n      },\n      `ai-sdk/azure/${VERSION}`\n    );\n  };\n  const fetch = tokenProvider ? async (input, init) => {\n    var _a2;\n    const headers = normalizeHeaders(init == null ? void 0 : init.headers);\n    if (headers.authorization == null) {\n      headers.authorization = `Bearer ${await tokenProvider()}`;\n    }\n    return ((_a2 = options.fetch) != null ? _a2 : globalThis.fetch)(input, {\n      ...init,\n      headers\n    });\n  } : options.fetch;\n  const getResourceName = () => loadSetting({\n    settingValue: options.resourceName,\n    settingName: \"resourceName\",\n    environmentVariableName: \"AZURE_RESOURCE_NAME\",\n    description: \"Azure OpenAI resource name\"\n  });\n  const apiVersion = (_a = options.apiVersion) != null ? _a : \"v1\";\n  const url = ({ path, modelId }) => {\n    var _a2;\n    const baseUrlPrefix = (_a2 = options.baseURL) != null ? _a2 : `https://${getResourceName()}.openai.azure.com/openai`;\n    let fullUrl;\n    if (options.useDeploymentBasedUrls) {\n      fullUrl = new URL(`${baseUrlPrefix}/deployments/${modelId}${path}`);\n    } else {\n      fullUrl = new URL(`${baseUrlPrefix}/v1${path}`);\n    }\n    fullUrl.searchParams.set(\"api-version\", apiVersion);\n    return fullUrl.toString();\n  };\n  const createChatModel = (deploymentName) => new OpenAIChatLanguageModel(deploymentName, {\n    provider: \"azure.chat\",\n    url,\n    headers: getHeaders,\n    fetch\n  });\n  const createCompletionModel = (modelId) => new OpenAICompletionLanguageModel(modelId, {\n    provider: \"azure.completion\",\n    url,\n    headers: getHeaders,\n    fetch\n  });\n  const createEmbeddingModel = (modelId) => new OpenAIEmbeddingModel(modelId, {\n    provider: \"azure.embeddings\",\n    headers: getHeaders,\n    url,\n    fetch\n  });\n  const createResponsesModel = (modelId) => new OpenAIResponsesLanguageModel(modelId, {\n    provider: \"azure.responses\",\n    url,\n    headers: getHeaders,\n    fetch,\n    fileIdPrefixes: [\"assistant-\"]\n  });\n  const createDeepSeekModel = (deploymentName) => new DeepSeekChatLanguageModel(deploymentName, {\n    provider: \"azure.deepseek\",\n    url,\n    headers: getHeaders,\n    fetch,\n    supportsThinking: false,\n    // json_object with thinking enabled makes Azure return the JSON in reasoning_content with empty content\n    supportsStructuredOutputs: true\n  });\n  const createImageModel = (modelId) => new OpenAIImageModel(modelId, {\n    provider: \"azure.image\",\n    url,\n    headers: getHeaders,\n    fetch\n  });\n  const createTranscriptionModel = (modelId) => new OpenAITranscriptionModel(modelId, {\n    provider: \"azure.transcription\",\n    url,\n    headers: getHeaders,\n    fetch\n  });\n  const createSpeechModel = (modelId) => new OpenAISpeechModel(modelId, {\n    provider: \"azure.speech\",\n    url,\n    headers: getHeaders,\n    fetch\n  });\n  const provider = function(deploymentId) {\n    if (new.target) {\n      throw new Error(\n        \"The Azure OpenAI model function cannot be called with the new keyword.\"\n      );\n    }\n    return createChatModel(deploymentId);\n  };\n  provider.languageModel = createChatModel;\n  provider.chat = createChatModel;\n  provider.deepseek = createDeepSeekModel;\n  provider.completion = createCompletionModel;\n  provider.embedding = createEmbeddingModel;\n  provider.image = createImageModel;\n  provider.imageModel = createImageModel;\n  provider.textEmbedding = createEmbeddingModel;\n  provider.textEmbeddingModel = createEmbeddingModel;\n  provider.responses = createResponsesModel;\n  provider.transcription = createTranscriptionModel;\n  provider.speech = createSpeechModel;\n  provider.tools = azureOpenaiTools;\n  return provider;\n}\nvar azure = createAzure();\nexport {\n  VERSION,\n  azure,\n  createAzure\n};\n//# sourceMappingURL=index.mjs.map","import WebSocket from 'ws';\n\nexport interface CreateOpenAIWebSocketFetchOptions {\n  /**\n   * WebSocket endpoint URL.\n   * @default 'wss://api.openai.com/v1/responses'\n   */\n  url?: string;\n  /**\n   * Additional headers sent when establishing the WebSocket connection.\n   * Authorization and OpenAI-Beta are managed internally.\n   */\n  headers?: Record<string, string>;\n  /**\n   * Convert an `api-key` request header into `Authorization: Bearer ...` for\n   * providers whose WebSocket endpoint authenticates API keys as bearer tokens.\n   */\n  apiKeyAsBearer?: boolean;\n  /**\n   * Move an `api-key` request header into the WebSocket URL query string for\n   * providers whose WebSocket endpoint authenticates API keys through a query\n   * parameter. Entra ID and OpenAI bearer-token auth should leave this disabled.\n   */\n  apiKeyQueryParam?: string | false;\n  /**\n   * Optional beta header sent when establishing the WebSocket connection.\n   * @default 'responses_websockets=2026-02-06'\n   */\n  betaHeader?: string | false;\n}\n\nexport type OpenAIWebSocketFetch = ((input: RequestInfo | URL, init?: RequestInit) => Promise<Response>) & {\n  close(): void;\n};\n\nconst TERMINAL_RESPONSE_EVENTS = new Set(['response.completed', 'response.failed', 'response.incomplete', 'error']);\n\n/**\n * Creates a `fetch` function that routes OpenAI Responses API streaming\n * requests through a persistent WebSocket connection instead of HTTP.\n */\nexport function createOpenAIWebSocketFetch(options?: CreateOpenAIWebSocketFetchOptions): OpenAIWebSocketFetch {\n  const wsUrl = options?.url ?? 'wss://api.openai.com/v1/responses';\n  const betaHeader = options?.betaHeader === undefined ? 'responses_websockets=2026-02-06' : options.betaHeader;\n  const apiKeyQueryParam = options?.apiKeyQueryParam ?? false;\n\n  let ws: WebSocket | null = null;\n  let connecting: Promise<WebSocket> | null = null;\n  let connectionKey: string | null = null;\n  let nextQueryCredentialId = 0;\n  const queryCredentialIds = new Map<string, string>();\n  let busy = false;\n\n  function getQueryCredentialCacheId(value?: string): string {\n    if (!value) return '';\n\n    const existing = queryCredentialIds.get(value);\n    if (existing) return existing;\n\n    const id = String(++nextQueryCredentialId);\n    queryCredentialIds.set(value, id);\n    return id;\n  }\n\n  function getConnection(\n    authorization: string,\n    headers: Record<string, string>,\n    signal?: AbortSignal | null,\n  ): Promise<WebSocket> {\n    if (signal?.aborted) {\n      return Promise.reject(getAbortError(signal));\n    }\n\n    const normalizedHeaders = { ...normalizeHeaders(options?.headers), ...headers };\n    const apiKey = normalizedHeaders['api-key'];\n    delete normalizedHeaders['authorization'];\n    delete normalizedHeaders['openai-beta'];\n    if (options?.apiKeyAsBearer || apiKeyQueryParam) {\n      delete normalizedHeaders['api-key'];\n    }\n    const queryCredential = apiKeyQueryParam ? `${apiKeyQueryParam}:${getQueryCredentialCacheId(apiKey)}` : '';\n    const nextConnectionKey = buildConnectionKey(authorization, normalizedHeaders, queryCredential);\n\n    if (ws?.readyState === WebSocket.OPEN && connectionKey === nextConnectionKey) {\n      return Promise.resolve(ws);\n    }\n\n    if (ws?.readyState === WebSocket.OPEN && connectionKey !== nextConnectionKey) {\n      ws.close();\n      ws = null;\n      connectionKey = null;\n    }\n\n    if (connecting && connectionKey === nextConnectionKey) return connecting;\n\n    connectionKey = nextConnectionKey;\n\n    connecting = new Promise<WebSocket>((resolve, reject) => {\n      let settled = false;\n      const socket = new WebSocket(getWebSocketUrl(wsUrl, apiKeyQueryParam, apiKey), {\n        headers: {\n          ...normalizedHeaders,\n          ...(authorization ? { Authorization: authorization } : {}),\n          ...(betaHeader ? { 'OpenAI-Beta': betaHeader } : {}),\n        },\n      });\n\n      function cleanupAbortListener() {\n        signal?.removeEventListener('abort', onAbort);\n      }\n\n      function rejectConnection(err: unknown, closeSocket = true) {\n        if (settled) return;\n        settled = true;\n        connecting = null;\n        connectionKey = null;\n        cleanupAbortListener();\n        if (closeSocket) socket.close();\n        reject(err);\n      }\n\n      function onAbort() {\n        rejectConnection(getAbortError(signal));\n      }\n\n      signal?.addEventListener('abort', onAbort, { once: true });\n\n      socket.on('open', () => {\n        if (signal?.aborted) {\n          rejectConnection(getAbortError(signal));\n          return;\n        }\n        settled = true;\n        ws = socket;\n        connecting = null;\n        cleanupAbortListener();\n        resolve(socket);\n      });\n\n      socket.on('error', err => {\n        rejectConnection(err, false);\n      });\n\n      socket.on('close', () => {\n        if (settled) return;\n        rejectConnection(new Error('WebSocket closed before the connection opened'), false);\n      });\n\n      socket.on('close', () => {\n        if (ws === socket) ws = null;\n        if (ws === null) connectionKey = null;\n      });\n    });\n\n    return connecting;\n  }\n\n  async function websocketFetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response> {\n    const url = input instanceof URL ? input.toString() : typeof input === 'string' ? input : input.url;\n\n    if (init?.method !== 'POST' || !isResponsesUrl(url)) {\n      return globalThis.fetch(input, init);\n    }\n\n    let body: Record<string, unknown>;\n    try {\n      body = JSON.parse(typeof init.body === 'string' ? init.body : '');\n    } catch {\n      return globalThis.fetch(input, init);\n    }\n\n    if (!body.stream) {\n      return globalThis.fetch(input, init);\n    }\n\n    // Prevent concurrent streams from sharing one WebSocket transport instance.\n    // Only fall back to HTTP when the request does not depend on the socket's\n    // connection-local previous_response_id cache.\n    if (busy) {\n      if (body.previous_response_id) {\n        throw new Error(\n          'Cannot start an overlapping WebSocket Responses continuation. Wait for the active stream to finish before sending previous_response_id.',\n        );\n      }\n      return globalThis.fetch(input, init);\n    }\n\n    const headers = normalizeHeaders(init.headers);\n    const authorization =\n      headers['authorization'] ?? (options?.apiKeyAsBearer && headers['api-key'] ? `Bearer ${headers['api-key']}` : '');\n\n    // Acquire the busy lock before awaiting to prevent races\n    busy = true;\n    let connection: WebSocket;\n    try {\n      connection = await getConnection(authorization, headers, init?.signal);\n    } catch (err) {\n      busy = false;\n      throw err;\n    }\n\n    const { stream: _stream, background: _background, ...requestBody } = body;\n    const encoder = new TextEncoder();\n\n    let cleanupActiveStream: ((options?: { closeSocket?: boolean }) => void) | undefined;\n    const responseStream = new ReadableStream<Uint8Array>({\n      start(controller) {\n        let cleanedUp = false;\n        let abortHandler: (() => void) | undefined;\n\n        function cleanup({ closeSocket = false }: { closeSocket?: boolean } = {}) {\n          if (cleanedUp) return;\n          cleanedUp = true;\n          connection.off('message', onMessage);\n          connection.off('error', onError);\n          connection.off('close', onClose);\n          if (abortHandler) {\n            init?.signal?.removeEventListener('abort', abortHandler);\n            abortHandler = undefined;\n          }\n\n          if (closeSocket && ws === connection) {\n            connection.close();\n            ws = null;\n            connectionKey = null;\n          }\n\n          busy = false;\n          cleanupActiveStream = undefined;\n        }\n\n        cleanupActiveStream = cleanup;\n\n        function onMessage(data: WebSocket.RawData) {\n          const text = data.toString();\n          controller.enqueue(encoder.encode(formatSSEData(text)));\n\n          try {\n            const event = JSON.parse(text);\n            if (isTerminalWebSocketEvent(event)) {\n              controller.enqueue(encoder.encode('data: [DONE]\\n\\n'));\n              cleanup({ closeSocket: shouldReconnectAfterEvent(event) });\n              controller.close();\n            }\n          } catch {\n            // non-JSON frame, continue\n          }\n        }\n\n        function onError(err: Error) {\n          cleanup();\n          controller.error(err);\n        }\n\n        function onClose() {\n          cleanup();\n          try {\n            controller.close();\n          } catch {\n            // already closed\n          }\n        }\n\n        connection.on('message', onMessage);\n        connection.on('error', onError);\n        connection.on('close', onClose);\n\n        const signal = init?.signal;\n        if (signal) {\n          if (signal.aborted) {\n            cleanup({ closeSocket: true });\n            controller.error(signal.reason ?? new DOMException('Aborted', 'AbortError'));\n            return;\n          }\n          abortHandler = () => {\n            cleanup({ closeSocket: true });\n            try {\n              controller.error(signal.reason ?? new DOMException('Aborted', 'AbortError'));\n            } catch {\n              // already closed\n            }\n          };\n          signal.addEventListener('abort', abortHandler, { once: true });\n        }\n\n        connection.send(JSON.stringify({ type: 'response.create', ...requestBody }));\n      },\n      cancel() {\n        cleanupActiveStream?.({ closeSocket: true });\n      },\n    });\n\n    return new Response(responseStream, {\n      status: 200,\n      headers: { 'content-type': 'text/event-stream' },\n    });\n  }\n\n  return Object.assign(websocketFetch, {\n    /** Close the underlying WebSocket connection. */\n    close() {\n      if (ws) {\n        ws.close();\n        ws = null;\n      }\n      connectionKey = null;\n      connecting = null;\n    },\n  });\n}\n\nfunction isResponsesUrl(url: string): boolean {\n  try {\n    return new URL(url).pathname.endsWith('/responses');\n  } catch {\n    return url.split('?')[0]?.endsWith('/responses') ?? false;\n  }\n}\n\nfunction getWebSocketUrl(url: string, apiKeyQueryParam: string | false, apiKey?: string): string {\n  if (!apiKeyQueryParam || !apiKey) return url;\n\n  const parsedUrl = new URL(url);\n  parsedUrl.searchParams.set(apiKeyQueryParam, apiKey);\n  return parsedUrl.toString();\n}\n\nfunction formatSSEData(text: string): string {\n  return `${text\n    .split(/\\r?\\n/)\n    .map(line => `data: ${line}`)\n    .join('\\n')}\\n\\n`;\n}\n\nfunction buildConnectionKey(authorization: string, headers: Record<string, string>, queryCredential = ''): string {\n  return JSON.stringify({\n    authorization,\n    queryCredential,\n    headers: Object.entries(headers).sort(([a], [b]) => a.localeCompare(b)),\n  });\n}\n\nfunction isTerminalWebSocketEvent(event: unknown): event is { type: string } {\n  return (\n    typeof event === 'object' &&\n    event !== null &&\n    'type' in event &&\n    typeof event.type === 'string' &&\n    TERMINAL_RESPONSE_EVENTS.has(event.type)\n  );\n}\n\nfunction shouldReconnectAfterEvent(event: unknown): boolean {\n  if (typeof event !== 'object' || event === null || !('error' in event)) return false;\n  const error = event.error;\n  return (\n    typeof error === 'object' &&\n    error !== null &&\n    'code' in error &&\n    error.code === 'websocket_connection_limit_reached'\n  );\n}\n\nfunction getAbortError(signal?: AbortSignal | null): unknown {\n  return signal?.reason ?? new DOMException('Aborted', 'AbortError');\n}\n\nfunction normalizeHeaders(headers: HeadersInit | undefined): Record<string, string> {\n  const result: Record<string, string> = {};\n  if (!headers) return result;\n\n  if (headers instanceof Headers) {\n    headers.forEach((value, key) => {\n      result[key.toLowerCase()] = value;\n    });\n  } else if (Array.isArray(headers)) {\n    for (const [key, value] of headers) {\n      result[key.toLowerCase()] = value;\n    }\n  } else {\n    for (const [key, value] of Object.entries(headers)) {\n      if (value != null) result[key.toLowerCase()] = value;\n    }\n  }\n\n  return result;\n}\n","import { createAzure } from '@ai-sdk/azure';\nimport type { LanguageModelV2 } from '@ai-sdk/provider-v5';\nimport { InMemoryServerCache } from '../../../cache/inmemory.js';\nimport { MastraError } from '../../../error/index.js';\nimport { createOpenAIWebSocketFetch } from '../openai-websocket-fetch.js';\nimport type { OpenAITransport, ResponsesWebSocketOptions } from '../provider-options.js';\nimport { MASTRA_GATEWAY_STREAM_TRANSPORT, MastraModelGateway } from './base.js';\nimport type { ProviderConfig } from './base.js';\nimport { MASTRA_USER_AGENT } from './constants.js';\n\ninterface AzureTokenResponse {\n  token_type: 'Bearer';\n  expires_in: number;\n  access_token: string;\n}\n\ninterface AzureDeployment {\n  name: string;\n  properties: {\n    model: {\n      name: string;\n      version: string;\n      format: string;\n    };\n    provisioningState: string;\n  };\n}\n\ninterface AzureDeploymentsResponse {\n  value: AzureDeployment[];\n  nextLink?: string;\n}\n\ninterface CachedToken {\n  token: string;\n  expiresAt: number;\n}\n\ntype AzureLanguageModelCallOptions = Parameters<LanguageModelV2['doGenerate']>[0];\n\nexport interface AzureAccessToken {\n  token: string;\n  expiresOnTimestamp?: number;\n}\n\nexport interface AzureTokenCredential {\n  getToken(scopes: string | string[], options?: unknown): Promise<AzureAccessToken | null>;\n}\n\nexport interface AzureOpenAIGatewayConfig {\n  resourceName: string;\n  apiKey?: string;\n  apiVersion?: string;\n  useResponsesAPI?: boolean;\n  useDeploymentBasedUrls?: boolean;\n  deployments?: string[];\n  authentication?: {\n    type: 'entraId';\n    credential: AzureTokenCredential;\n    scope?: string;\n  };\n  management?: {\n    tenantId: string;\n    clientId: string;\n    clientSecret: string;\n    subscriptionId: string;\n    resourceGroup: string;\n  };\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n  return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction mirrorAzureProviderOptionsForOpenAI<T>(providerOptions: T): T {\n  if (!isRecord(providerOptions) || !isRecord(providerOptions.azure)) {\n    return providerOptions;\n  }\n\n  const openai = isRecord(providerOptions.openai) ? providerOptions.openai : {};\n\n  return {\n    ...providerOptions,\n    openai: {\n      ...openai,\n      ...providerOptions.azure,\n    },\n  } as T;\n}\n\nfunction mirrorAzureResponseProviderOptions(\n  prompt: AzureLanguageModelCallOptions['prompt'],\n): AzureLanguageModelCallOptions['prompt'] {\n  let promptModified = false;\n\n  const mirroredPrompt = prompt.map(message => {\n    const messageWithProviderOptions = message as typeof message & { providerOptions?: unknown };\n    const providerOptions = mirrorAzureProviderOptionsForOpenAI(messageWithProviderOptions.providerOptions);\n    const providerOptionsModified = providerOptions !== messageWithProviderOptions.providerOptions;\n\n    if (!Array.isArray(message.content)) {\n      if (providerOptionsModified) {\n        promptModified = true;\n        return { ...message, providerOptions } as typeof message;\n      }\n\n      return message;\n    }\n\n    let contentModified = false;\n    const content = message.content.map(part => {\n      if (!('providerOptions' in part)) {\n        return part;\n      }\n\n      const providerOptions = mirrorAzureProviderOptionsForOpenAI(part.providerOptions);\n      if (providerOptions === part.providerOptions) {\n        return part;\n      }\n\n      contentModified = true;\n      return { ...part, providerOptions };\n    }) as typeof message.content;\n\n    if (!contentModified) {\n      if (providerOptionsModified) {\n        promptModified = true;\n        return { ...message, providerOptions } as typeof message;\n      }\n\n      return message;\n    }\n\n    promptModified = true;\n    return { ...message, ...(providerOptionsModified ? { providerOptions } : {}), content };\n  });\n\n  return (promptModified ? mirroredPrompt : prompt) as AzureLanguageModelCallOptions['prompt'];\n}\n\nfunction withAzureResponsesInputCompatibility(model: LanguageModelV2): LanguageModelV2 {\n  return new Proxy(model, {\n    get(target, property, receiver) {\n      // Audit this wrapper when AI SDK adds new prompt-taking LanguageModelV2 methods.\n      if (property === 'doGenerate') {\n        return (options: AzureLanguageModelCallOptions) =>\n          target.doGenerate({\n            ...options,\n            providerOptions: mirrorAzureProviderOptionsForOpenAI(options.providerOptions),\n            prompt: mirrorAzureResponseProviderOptions(options.prompt),\n          });\n      }\n\n      if (property === 'doStream') {\n        return (options: Parameters<LanguageModelV2['doStream']>[0]) =>\n          target.doStream({\n            ...options,\n            providerOptions: mirrorAzureProviderOptionsForOpenAI(options.providerOptions),\n            prompt: mirrorAzureResponseProviderOptions(options.prompt),\n          });\n      }\n\n      return Reflect.get(target, property, receiver);\n    },\n  });\n}\n\nexport class AzureOpenAIGateway extends MastraModelGateway {\n  readonly id = 'azure-openai';\n  readonly name = 'azure-openai';\n  private tokenCache = new InMemoryServerCache();\n  private entraIdTokenRequests = new Map<string, Promise<CachedToken>>();\n\n  constructor(private config: AzureOpenAIGatewayConfig) {\n    super();\n    this.validateConfig();\n  }\n\n  private validateConfig(): void {\n    if (!this.config.resourceName) {\n      throw new MastraError({\n        id: 'AZURE_GATEWAY_INVALID_CONFIG',\n        domain: 'LLM',\n        category: 'UNKNOWN',\n        text: 'resourceName is required for Azure OpenAI gateway',\n      });\n    }\n\n    if (!this.config.apiKey && this.config.authentication?.type !== 'entraId') {\n      throw new MastraError({\n        id: 'AZURE_GATEWAY_INVALID_CONFIG',\n        domain: 'LLM',\n        category: 'UNKNOWN',\n        text: 'apiKey or Entra ID authentication is required for Azure OpenAI gateway',\n      });\n    }\n\n    if (this.config.authentication?.type === 'entraId' && !this.config.authentication.credential) {\n      throw new MastraError({\n        id: 'AZURE_GATEWAY_INVALID_CONFIG',\n        domain: 'LLM',\n        category: 'UNKNOWN',\n        text: 'credential is required for Azure OpenAI Entra ID authentication',\n      });\n    }\n\n    if (this.config.apiKey && this.config.authentication?.type === 'entraId') {\n      console.warn(\n        '[AzureOpenAIGateway] Both apiKey and Entra ID authentication provided. Using Entra ID authentication and ignoring apiKey.',\n      );\n    }\n\n    if (this.config.useResponsesAPI && this.config.useDeploymentBasedUrls === true) {\n      throw new MastraError({\n        id: 'AZURE_GATEWAY_INVALID_CONFIG',\n        domain: 'LLM',\n        category: 'UNKNOWN',\n        text: 'useResponsesAPI: true cannot be combined with useDeploymentBasedUrls: true. Omit useDeploymentBasedUrls or set it to false.',\n      });\n    }\n\n    if (this.config.useResponsesAPI && this.config.apiVersion && !['v1', 'preview'].includes(this.config.apiVersion)) {\n      throw new MastraError({\n        id: 'AZURE_GATEWAY_INVALID_CONFIG',\n        domain: 'LLM',\n        category: 'UNKNOWN',\n        text: 'useResponsesAPI: true requires apiVersion: \"v1\" or apiVersion: \"preview\". Omit apiVersion to use \"v1\".',\n      });\n    }\n\n    if (\n      this.config.useDeploymentBasedUrls === false &&\n      this.config.apiVersion &&\n      !['v1', 'preview'].includes(this.config.apiVersion)\n    ) {\n      throw new MastraError({\n        id: 'AZURE_GATEWAY_INVALID_CONFIG',\n        domain: 'LLM',\n        category: 'UNKNOWN',\n        text: 'useDeploymentBasedUrls: false requires apiVersion: \"v1\" or apiVersion: \"preview\". Omit apiVersion to use \"v1\".',\n      });\n    }\n\n    const hasDeployments = this.config.deployments && this.config.deployments.length > 0;\n    const hasManagement = this.config.management !== undefined;\n\n    if (hasDeployments && hasManagement) {\n      console.warn(\n        '[AzureOpenAIGateway] Both deployments and management credentials provided. Using static deployments list and ignoring management API.',\n      );\n    }\n\n    if (hasManagement) {\n      this.getManagementCredentials(this.config.management!);\n    }\n  }\n\n  async fetchProviders(): Promise<Record<string, ProviderConfig>> {\n    if (this.config.deployments && this.config.deployments.length > 0) {\n      return {\n        'azure-openai': {\n          apiKeyEnvVar: [],\n          apiKeyHeader: 'api-key',\n          name: 'Azure OpenAI',\n          models: this.config.deployments,\n          docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n          gateway: 'azure-openai',\n        },\n      };\n    }\n\n    if (!this.config.management) {\n      return {\n        'azure-openai': {\n          apiKeyEnvVar: [],\n          apiKeyHeader: 'api-key',\n          name: 'Azure OpenAI',\n          models: [],\n          docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n          gateway: 'azure-openai',\n        },\n      };\n    }\n\n    try {\n      const credentials = this.getManagementCredentials(this.config.management);\n\n      const token = await this.getAzureADToken({\n        tenantId: credentials.tenantId,\n        clientId: credentials.clientId,\n        clientSecret: credentials.clientSecret,\n      });\n\n      const deployments = await this.fetchDeployments(token, {\n        subscriptionId: credentials.subscriptionId,\n        resourceGroup: credentials.resourceGroup,\n        resourceName: this.config.resourceName,\n      });\n\n      return {\n        'azure-openai': {\n          apiKeyEnvVar: [],\n          apiKeyHeader: 'api-key',\n          name: 'Azure OpenAI',\n          models: deployments.map(d => d.name),\n          docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n          gateway: 'azure-openai',\n        },\n      };\n    } catch (error) {\n      const errorMsg = error instanceof Error ? error.message : String(error);\n      console.warn(\n        `[AzureOpenAIGateway] Deployment discovery failed: ${errorMsg}`,\n        '\\nReturning fallback configuration. Azure OpenAI can still be used by manually specifying deployment names.',\n      );\n\n      return {\n        'azure-openai': {\n          apiKeyEnvVar: [],\n          apiKeyHeader: 'api-key',\n          name: 'Azure OpenAI',\n          models: [],\n          docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n          gateway: 'azure-openai',\n        },\n      };\n    }\n  }\n\n  private getManagementCredentials(management: NonNullable<AzureOpenAIGatewayConfig['management']>) {\n    const { tenantId, clientId, clientSecret, subscriptionId, resourceGroup } = management;\n\n    const missing = [];\n    if (!tenantId) missing.push('tenantId');\n    if (!clientId) missing.push('clientId');\n    if (!clientSecret) missing.push('clientSecret');\n    if (!subscriptionId) missing.push('subscriptionId');\n    if (!resourceGroup) missing.push('resourceGroup');\n\n    if (missing.length > 0) {\n      throw new MastraError({\n        id: 'AZURE_MANAGEMENT_CREDENTIALS_MISSING',\n        domain: 'LLM',\n        category: 'UNKNOWN',\n        text: `Management credentials incomplete. Missing: ${missing.join(', ')}. Required fields: tenantId, clientId, clientSecret, subscriptionId, resourceGroup.`,\n      });\n    }\n\n    return {\n      tenantId,\n      clientId,\n      clientSecret,\n      subscriptionId,\n      resourceGroup,\n    };\n  }\n\n  private async getAzureADToken(credentials: {\n    tenantId: string;\n    clientId: string;\n    clientSecret: string;\n  }): Promise<string> {\n    const { tenantId, clientId, clientSecret } = credentials;\n\n    const cacheKey = `azure-mgmt-token:${tenantId}:${clientId}`;\n\n    const cached = (await this.tokenCache.get(cacheKey)) as CachedToken | undefined;\n    if (cached && cached.expiresAt > Date.now() / 1000 + 60) {\n      return cached.token;\n    }\n\n    const tokenEndpoint = `https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/token`;\n\n    const body = new URLSearchParams({\n      grant_type: 'client_credentials',\n      client_id: clientId,\n      client_secret: clientSecret,\n      scope: 'https://management.azure.com/.default',\n    });\n\n    const response = await fetch(tokenEndpoint, {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/x-www-form-urlencoded',\n      },\n      body: body.toString(),\n    });\n\n    if (!response.ok) {\n      const error = await response.text();\n      throw new MastraError({\n        id: 'AZURE_AD_TOKEN_ERROR',\n        domain: 'LLM',\n        category: 'UNKNOWN',\n        text: `Failed to get Azure AD token: ${response.status} ${error}`,\n      });\n    }\n\n    const tokenResponse = (await response.json()) as AzureTokenResponse;\n\n    const expiresAt = Math.floor(Date.now() / 1000) + tokenResponse.expires_in;\n\n    await this.tokenCache.set(cacheKey, {\n      token: tokenResponse.access_token,\n      expiresAt,\n    });\n\n    return tokenResponse.access_token;\n  }\n\n  private async fetchDeployments(\n    token: string,\n    credentials: {\n      subscriptionId: string;\n      resourceGroup: string;\n      resourceName: string;\n    },\n  ): Promise<AzureDeployment[]> {\n    const { subscriptionId, resourceGroup, resourceName } = credentials;\n\n    let url: string | undefined =\n      `https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/Microsoft.CognitiveServices/accounts/${resourceName}/deployments?api-version=2024-10-01`;\n\n    const allDeployments: AzureDeployment[] = [];\n\n    while (url) {\n      const response = await fetch(url, {\n        headers: {\n          Authorization: `Bearer ${token}`,\n          'Content-Type': 'application/json',\n        },\n      });\n\n      if (!response.ok) {\n        const error = await response.text();\n        throw new MastraError({\n          id: 'AZURE_DEPLOYMENTS_FETCH_ERROR',\n          domain: 'LLM',\n          category: 'UNKNOWN',\n          text: `Failed to fetch Azure deployments: ${response.status} ${error}`,\n        });\n      }\n\n      const data = (await response.json()) as AzureDeploymentsResponse;\n\n      allDeployments.push(...data.value);\n\n      url = data.nextLink;\n    }\n\n    const successfulDeployments = allDeployments.filter(d => d.properties.provisioningState === 'Succeeded');\n\n    return successfulDeployments;\n  }\n\n  buildUrl(_routerId: string, _envVars?: typeof process.env): undefined {\n    return undefined;\n  }\n\n  async getApiKey(_modelId: string): Promise<string> {\n    return this.config.authentication?.type === 'entraId' ? '' : (this.config.apiKey ?? '');\n  }\n\n  private async getEntraIdToken(): Promise<string> {\n    if (this.config.authentication?.type !== 'entraId') {\n      throw new MastraError({\n        id: 'AZURE_ENTRA_ID_AUTH_NOT_CONFIGURED',\n        domain: 'LLM',\n        category: 'UNKNOWN',\n        text: 'Entra ID authentication is not configured for Azure OpenAI gateway',\n      });\n    }\n\n    const scope = this.config.authentication.scope ?? 'https://cognitiveservices.azure.com/.default';\n    const cacheKey = `azure-openai-token:${scope}`;\n    const cached = (await this.tokenCache.get(cacheKey)) as CachedToken | undefined;\n    if (cached && cached.expiresAt > Date.now() / 1000 + 60) {\n      return cached.token;\n    }\n\n    let tokenRequest = this.entraIdTokenRequests.get(cacheKey);\n\n    if (!tokenRequest) {\n      tokenRequest = this.fetchEntraIdToken(scope, cacheKey);\n      this.entraIdTokenRequests.set(cacheKey, tokenRequest);\n    }\n\n    try {\n      const token = await tokenRequest;\n      return token.token;\n    } finally {\n      this.entraIdTokenRequests.delete(cacheKey);\n    }\n  }\n\n  private async fetchEntraIdToken(scope: string, cacheKey: string): Promise<CachedToken> {\n    if (this.config.authentication?.type !== 'entraId') {\n      throw new MastraError({\n        id: 'AZURE_ENTRA_ID_AUTH_NOT_CONFIGURED',\n        domain: 'LLM',\n        category: 'UNKNOWN',\n        text: 'Entra ID authentication is not configured for Azure OpenAI gateway',\n      });\n    }\n\n    const accessToken = await this.config.authentication.credential.getToken(scope);\n    if (!accessToken?.token) {\n      throw new MastraError({\n        id: 'AZURE_ENTRA_ID_TOKEN_ERROR',\n        domain: 'LLM',\n        category: 'UNKNOWN',\n        text: 'Failed to get Entra ID token for Azure OpenAI gateway',\n      });\n    }\n\n    const token = {\n      token: accessToken.token,\n      expiresAt: accessToken.expiresOnTimestamp\n        ? Math.floor(accessToken.expiresOnTimestamp / 1000)\n        : Math.floor(Date.now() / 1000) + 300,\n    };\n\n    await this.tokenCache.set(cacheKey, token);\n\n    return token;\n  }\n\n  private createEntraIdFetch(innerFetch: typeof globalThis.fetch = fetch): typeof globalThis.fetch {\n    return async (input, init) => {\n      const token = await this.getEntraIdToken();\n      const headers = new Headers(init?.headers);\n      headers.delete('api-key');\n      headers.set('Authorization', `Bearer ${token}`);\n\n      return innerFetch(input, {\n        ...init,\n        headers,\n      });\n    };\n  }\n\n  private createAzureResponsesWebSocketFetch({\n    useEntraId,\n    responsesWebSocket,\n  }: {\n    useEntraId: boolean;\n    responsesWebSocket?: ResponsesWebSocketOptions;\n  }): typeof globalThis.fetch & { close(): void } {\n    const websocketFetch = createOpenAIWebSocketFetch({\n      url: responsesWebSocket?.url ?? `wss://${this.config.resourceName}.openai.azure.com/openai/v1/responses`,\n      headers: responsesWebSocket?.headers,\n      apiKeyQueryParam: useEntraId ? false : 'api-key',\n      betaHeader: false,\n    });\n\n    return useEntraId\n      ? Object.assign(this.createEntraIdFetch(websocketFetch), { close: websocketFetch.close })\n      : websocketFetch;\n  }\n\n  async resolveLanguageModel({\n    modelId,\n    apiKey,\n    headers,\n    transport,\n    responsesWebSocket,\n  }: {\n    modelId: string;\n    providerId: string;\n    apiKey: string;\n    headers?: Record<string, string>;\n    transport?: OpenAITransport;\n    responsesWebSocket?: ResponsesWebSocketOptions;\n  }): Promise<LanguageModelV2> {\n    const useResponsesAPI = this.config.useResponsesAPI ?? false;\n    const apiVersion =\n      this.config.apiVersion ||\n      (useResponsesAPI || this.config.useDeploymentBasedUrls === false ? 'v1' : '2024-04-01-preview');\n    const useDeploymentBasedUrls = this.config.useDeploymentBasedUrls ?? (useResponsesAPI ? false : true);\n    const useEntraId = this.config.authentication?.type === 'entraId';\n    const useWebSocket = useResponsesAPI && transport === 'websocket';\n    const websocketFetch = useWebSocket\n      ? this.createAzureResponsesWebSocketFetch({\n          useEntraId,\n          responsesWebSocket,\n        })\n      : undefined;\n    const azureConfig = {\n      resourceName: this.config.resourceName,\n      apiKey: useEntraId ? '' : apiKey,\n      apiVersion,\n      // Mastra's Azure gateway has historically used deployment-based URLs.\n      // Keep that default for compatibility; set false with apiVersion: 'v1'\n      // to use the newer Azure OpenAI v1 route.\n      useDeploymentBasedUrls,\n      headers: { 'User-Agent': MASTRA_USER_AGENT, ...headers },\n      ...(websocketFetch && !useEntraId ? { fetch: websocketFetch } : {}),\n    };\n\n    const azureProvider = createAzure(\n      useEntraId\n        ? {\n            ...azureConfig,\n            fetch: websocketFetch ?? this.createEntraIdFetch(),\n          }\n        : azureConfig,\n    );\n\n    if (useResponsesAPI) {\n      const model = withAzureResponsesInputCompatibility(azureProvider.responses(modelId));\n      if (websocketFetch) {\n        Object.defineProperty(model, MASTRA_GATEWAY_STREAM_TRANSPORT, {\n          configurable: true,\n          value: {\n            type: 'openai-websocket',\n            close: websocketFetch.close,\n          },\n        });\n      }\n\n      return model;\n    }\n\n    return azureProvider(modelId);\n  }\n}\n","import { MastraError } from '../../../error/index.js';\nimport { parseModelRouterId } from '../gateway-resolver.js';\nimport type { GatewayAuthRequest, GatewayAuthResult, MastraModelGatewayInterface, ProviderConfig } from './base.js';\nimport { findGatewayForModel, getGatewayId, shouldEnableGateway } from './gateway-helpers.js';\n\n/**\n * MastraError IDs that represent expected \"auth not available\" states —\n * missing credentials, missing gateway config, or no matching gateway.\n * These are safe to surface as `hasAuth === false` for catalog/UI checks.\n */\nconst MISSING_AUTH_ERROR_IDS = new Set<string>([\n  'MODEL_ROUTER_NO_GATEWAY_FOUND',\n  'MASTRA_GATEWAY_NO_API_KEY',\n  'NETLIFY_GATEWAY_NO_TOKEN',\n  'NETLIFY_GATEWAY_NO_SITE_ID',\n  'AZURE_ENTRA_ID_AUTH_NOT_CONFIGURED',\n]);\n\n/**\n * Returns true for errors that represent an expected \"auth not available\"\n * state (no matching gateway, missing credentials/env vars, missing provider\n * config). Real gateway failures (token exchange errors, network bugs,\n * malformed auth hooks) are not matched here so {@link hasAuth} can re-throw\n * them instead of silently hiding them.\n */\nfunction isExpectedMissingAuthError(error: unknown): boolean {\n  if (error instanceof MastraError) {\n    return MISSING_AUTH_ERROR_IDS.has(error.id);\n  }\n  if (error instanceof Error) {\n    const msg = error.message;\n    return (\n      /Missing [^ ]+ environment variable/i.test(msg) ||\n      /Could not find API key/i.test(msg) ||\n      /no api key/i.test(msg) ||\n      /Could not find config for provider/i.test(msg) ||\n      /Could not identify provider/i.test(msg)\n    );\n  }\n  return false;\n}\n\n/**\n * A model entry in the gateway catalog (without use-count tracking).\n */\nexport interface GatewayModel {\n  /** Full model ID (e.g., \"anthropic/claude-sonnet-4-20250514\") */\n  id: string;\n  /** Provider prefix (e.g., \"anthropic\" or \"netlify/anthropic\") */\n  provider: string;\n  /** Model name without provider prefix */\n  modelName: string;\n  /** Whether the provider has valid authentication */\n  hasApiKey: boolean;\n  /** Environment variable for the provider's API key */\n  apiKeyEnvVar?: string;\n}\n\n/**\n * Centralises the gateway-chain operations shared between\n * {@link ModelRouterLanguageModel} and the AgentController: gateway merging, model\n * routing, auth resolution, and provider/model listing.\n *\n * The manager owns the *gateway registry* (which gateway owns a model, auth\n * resolution through the chain). Per-instance concerns (explicit config,\n * model-instance caching, websocket/transport, doGenerate/doStream) remain in\n * the consumers.\n */\nexport class GatewayManager {\n  readonly gateways: MastraModelGatewayInterface[];\n\n  constructor(gateways: MastraModelGatewayInterface[] = []) {\n    // Filter disabled gateways and deduplicate by gateway ID (first wins).\n    // Callers pass custom gateways before default gateways, so first-wins\n    // preserves custom-over-default precedence in a single place.\n    const seen = new Set<string>();\n    this.gateways = gateways.filter(gateway => {\n      if (!shouldEnableGateway(gateway)) return false;\n      const id = getGatewayId(gateway);\n      if (seen.has(id)) return false;\n      seen.add(id);\n      return true;\n    });\n  }\n\n  /**\n   * Returns the gateway prefix used for model-id parsing.\n   * `models.dev` is a provider registry and doesn't use a prefix.\n   */\n  static getPrefix(gatewayId: string): string | undefined {\n    return gatewayId === 'models.dev' ? undefined : gatewayId;\n  }\n\n  /**\n   * Returns the prefix to use when parsing `routerId` for the given gateway.\n   * A gateway may claim an unprefixed id (e.g. `handlesModel` matching a bare\n   * `anthropic/...` id); in that case the gateway's prefix does not appear in\n   * the id, so parse it as an unprefixed `provider/model` id.\n   */\n  private static getPrefixForId(gatewayId: string, routerId: string): string | undefined {\n    const prefix = GatewayManager.getPrefix(gatewayId);\n    if (prefix && !routerId.startsWith(`${prefix}/`)) {\n      return undefined;\n    }\n    return prefix;\n  }\n\n  /** Find the gateway that handles a given model/router id. */\n  findGatewayForModel(routerId: string): MastraModelGatewayInterface {\n    return findGatewayForModel(routerId, this.gateways);\n  }\n\n  /**\n   * Resolve the gateway and parsed provider/model components for a router id\n   * in a single pass. Centralises gateway selection + id parsing so callers\n   * (router constructor, doGenerate/doStream, supportedUrls) don't each\n   * re-derive the gateway and prefix separately.\n   */\n  resolveModelId(routerId: string): {\n    gateway: MastraModelGatewayInterface;\n    gatewayId: string;\n    providerId: string;\n    modelId: string;\n  } {\n    const gateway = this.findGatewayForModel(routerId);\n    const gatewayId = getGatewayId(gateway);\n    const { providerId, modelId } = parseModelRouterId(routerId, GatewayManager.getPrefixForId(gatewayId, routerId));\n    return { gateway, gatewayId, providerId, modelId };\n  }\n\n  /** Parse a router id into its provider/model/gateway components. */\n  parseModelId(routerId: string): { providerId: string; modelId: string; gatewayId: string } {\n    const { gatewayId, providerId, modelId } = this.resolveModelId(routerId);\n    return { providerId, modelId, gatewayId };\n  }\n\n  /**\n   * Resolve auth through the gateway chain: select the gateway via\n   * {@link findGatewayForModel}, try its `resolveAuth()` (OAuth / stored\n   * credentials), and fall back to `getApiKey()` (which, for registry /\n   * openai-compatible providers, reads the API-key env var).\n   *\n   * The caller is responsible for merging any explicit headers/credentials\n   * from per-instance config on top of the result returned here.\n   */\n  async resolveAuth(routerId: string): Promise<GatewayAuthResult> {\n    const { gateway, gatewayId, providerId, modelId } = this.resolveModelId(routerId);\n    const request: GatewayAuthRequest = { gatewayId, providerId, modelId, routerId };\n\n    const rawGatewayAuth = await gateway.resolveAuth?.(request);\n    const gatewayAuth = rawGatewayAuth?.bearerToken\n      ? {\n          ...rawGatewayAuth,\n          headers: { ...rawGatewayAuth.headers, Authorization: `Bearer ${rawGatewayAuth.bearerToken}` },\n        }\n      : rawGatewayAuth;\n\n    if (gatewayAuth?.apiKey || gatewayAuth?.headers || gatewayAuth?.bearerToken) {\n      return {\n        ...gatewayAuth,\n        source: gatewayAuth.source ?? 'gateway',\n      };\n    }\n\n    return {\n      apiKey: await gateway.getApiKey(routerId),\n      source: 'legacy',\n    };\n  }\n\n  /**\n   * Convenience: whether auth is available for a model.\n   * Returns `false` for expected missing-auth states (no matching gateway,\n   * missing credentials/env vars) but re-throws unexpected errors (token\n   * exchange failures, network bugs, malformed auth hooks) so they surface\n   * instead of being silently hidden.\n   */\n  async hasAuth(routerId: string): Promise<boolean> {\n    try {\n      const auth = await this.resolveAuth(routerId);\n      return Boolean(auth.apiKey || auth.bearerToken || auth.headers);\n    } catch (error) {\n      if (isExpectedMissingAuthError(error)) {\n        return false;\n      }\n      throw error;\n    }\n  }\n\n  /**\n   * Fetch and flatten providers from all gateways, deduped by provider key\n   * (configured / earlier gateway wins). Each gateway's `fetchProviders()`\n   * is a network call for gateways like models.dev / Netlify.\n   */\n  async listProviders(): Promise<Record<string, ProviderConfig & { gateway: string }>> {\n    const registry: Record<string, ProviderConfig & { gateway: string }> = {};\n\n    for (const gateway of this.gateways) {\n      try {\n        const gatewayProviders = await gateway.fetchProviders();\n        for (const [providerId, config] of Object.entries(gatewayProviders)) {\n          const key = this.getProviderKey(gateway, providerId);\n          if (key in registry) continue; // earlier (configured) gateway wins\n          registry[key] = { ...config, gateway: getGatewayId(gateway) };\n        }\n      } catch (error) {\n        console.warn(`Failed to load providers from gateway ${getGatewayId(gateway)}:`, error);\n      }\n    }\n\n    return registry;\n  }\n\n  /**\n   * Build the model catalog from gateway providers, resolving auth per\n   * provider (using the first model). Returns models without use-count.\n   */\n  async listAvailableModels(): Promise<GatewayModel[]> {\n    const registry = await this.listProviders();\n    const models: GatewayModel[] = [];\n\n    for (const [provider, providerConfig] of Object.entries(registry)) {\n      const apiKeyEnvVar = Array.isArray(providerConfig.apiKeyEnvVar)\n        ? providerConfig.apiKeyEnvVar[0]\n        : providerConfig.apiKeyEnvVar;\n      const modelNames = providerConfig.models;\n      if (!Array.isArray(modelNames)) continue;\n\n      // Auth is resolved once per provider (using the first model) via the\n      // gateway chain, then applied to every model the provider exposes.\n      const hasApiKey = modelNames[0] ? await this.hasAuth(`${provider}/${modelNames[0]}`) : false;\n\n      for (const modelName of modelNames) {\n        models.push({\n          id: `${provider}/${modelName}`,\n          provider,\n          modelName,\n          hasApiKey,\n          apiKeyEnvVar: apiKeyEnvVar || undefined,\n        });\n      }\n    }\n\n    return models;\n  }\n\n  /** Provider key used for catalog ids: prefix with the gateway id unless it's the prefix-less models.dev registry. */\n  private getProviderKey(gateway: MastraModelGatewayInterface, providerId: string): string {\n    const gatewayId = getGatewayId(gateway);\n    if (gatewayId === 'models.dev') return providerId;\n    return providerId === gatewayId ? gatewayId : `${gatewayId}/${providerId}`;\n  }\n}\n","import { createHash } from 'node:crypto';\nimport { createOpenAICompatible } from '@ai-sdk/openai-compatible-v6';\nimport { createOpenAI } from '@ai-sdk/openai-v6';\nimport type { LanguageModelV2, LanguageModelV2CallOptions, LanguageModelV2StreamPart } from '@ai-sdk/provider-v5';\nimport type { LanguageModelV3 } from '@ai-sdk/provider-v6';\nimport type { LanguageModelV4 } from '@ai-sdk/provider-v7';\nimport { attachModelStreamTransport } from '../../stream/types';\nimport type { StreamTransport } from '../../stream/types';\nimport { AISDKV5LanguageModel } from './aisdk/v5/model';\nimport { AISDKV6LanguageModel } from './aisdk/v6/model';\nimport { AISDKV7LanguageModel } from './aisdk/v7/model';\nimport { MASTRA_GATEWAY_STREAM_TRANSPORT } from './gateways/base.js';\nimport type {\n  GatewayAuthResult,\n  GatewayLanguageModel,\n  GatewayLanguageModelWithStreamTransport,\n  GatewayStreamTransportHandle,\n  MastraModelGatewayInterface,\n} from './gateways/base.js';\nimport { defaultGateways } from './gateways/defaults.js';\nimport { GatewayManager } from './gateways/index.js';\n\nimport { createOpenAIWebSocketFetch } from './openai-websocket-fetch.js';\nimport type { OpenAIWebSocketFetch } from './openai-websocket-fetch.js';\nimport type { OpenAITransport, ProviderOptions, ResponsesWebSocketOptions } from './provider-options.js';\nimport type { ModelRouterModelId } from './provider-registry.js';\nimport { modelSupportsTemperature } from './provider-registry.js';\nimport type { MastraLanguageModelV2, OpenAICompatibleConfig } from './shared.types';\n\nexport { defaultGateways, gateways } from './gateways/defaults.js';\n\n/**\n * Type guard to check if a model is a LanguageModelV4 (AI SDK v7)\n */\nfunction isLanguageModelV4(model: GatewayLanguageModel): model is LanguageModelV4 {\n  return model.specificationVersion === 'v4';\n}\n\n/**\n * Type guard to check if a model is a LanguageModelV3 (AI SDK v6)\n */\nfunction isLanguageModelV3(model: GatewayLanguageModel): model is LanguageModelV3 {\n  return model.specificationVersion === 'v3';\n}\n\nconst OPENAI_WS_ALLOWLIST = new Set(['openai']);\nconst OPENAI_API_HOST = 'api.openai.com';\n\ntype GatewayModelCache = {\n  modelInstances: Map<string, GatewayLanguageModel>;\n  webSocketFetches: Map<string, OpenAIWebSocketFetch>;\n  gatewayStreamTransports: Map<string, GatewayStreamTransportHandle>;\n};\n\nfunction createGatewayModelCache(): GatewayModelCache {\n  return {\n    modelInstances: new Map(),\n    webSocketFetches: new Map(),\n    gatewayStreamTransports: new Map(),\n  };\n}\n\nfunction getOpenAITransport(\n  providerOptions?: ProviderOptions,\n  providerId?: string,\n): {\n  transport: OpenAITransport;\n  websocket?: ResponsesWebSocketOptions;\n} {\n  const transportOptions = (providerId === 'azure-openai' ? providerOptions?.azure : providerOptions?.openai) as\n    | {\n        transport?: OpenAITransport;\n        websocket?: ResponsesWebSocketOptions;\n      }\n    | undefined;\n\n  return {\n    transport: transportOptions?.transport ?? 'fetch',\n    websocket: transportOptions?.websocket,\n  };\n}\n\nfunction isOpenAIBaseUrl(baseURL?: string): boolean {\n  if (!baseURL) return true;\n  try {\n    const hostname = new URL(baseURL).hostname;\n    return hostname === OPENAI_API_HOST;\n  } catch {\n    return false;\n  }\n}\n\nfunction stableHeaderKey(headers?: Record<string, string>): string {\n  if (!headers) return '';\n  const entries = Object.entries(headers);\n  if (entries.length === 0) return '';\n  return JSON.stringify(entries.sort(([a], [b]) => a.localeCompare(b)));\n}\n\nfunction mergeHeaders(\n  baseHeaders?: Record<string, string>,\n  authHeaders?: Record<string, string>,\n): Record<string, string> | undefined {\n  if (!baseHeaders && !authHeaders) return undefined;\n  return { ...baseHeaders, ...authHeaders };\n}\n\ntype StreamResult = Awaited<ReturnType<LanguageModelV2['doStream']>>;\n\nexport class ModelRouterLanguageModel implements MastraLanguageModelV2 {\n  readonly specificationVersion = 'v2' as const;\n  readonly defaultObjectGenerationMode = 'json' as const;\n  readonly supportsStructuredOutputs = true;\n  readonly supportsImageUrls = true;\n\n  /**\n   * Supported URL patterns by media type for the provider.\n   * This is a lazy promise that resolves the underlying model's supportedUrls.\n   * Models like Mistral define which URL patterns they support (e.g., application/pdf for https URLs).\n   *\n   * @see https://github.com/mastra-ai/mastra/issues/12152\n   */\n  readonly supportedUrls: PromiseLike<Record<string, RegExp[]>>;\n\n  readonly modelId: string;\n  readonly provider: string;\n  readonly gatewayId: string;\n\n  private config: OpenAICompatibleConfig & { routerId: string };\n  private gateway: MastraModelGatewayInterface;\n  private _supportedUrlsPromise: Promise<Record<string, RegExp[]>> | null = null;\n  private readonly instanceGatewayCache = createGatewayModelCache();\n  #lastStreamTransport: StreamTransport | undefined;\n  #manager: GatewayManager;\n\n  constructor(config: ModelRouterModelId | OpenAICompatibleConfig, customGateways?: MastraModelGatewayInterface[]) {\n    // Normalize config to always have an 'id' field for routing\n    let normalizedConfig: {\n      id: `${string}/${string}`;\n      url?: string;\n      apiKey?: string;\n      headers?: Record<string, string>;\n    };\n\n    if (typeof config === 'string') {\n      normalizedConfig = { id: config as `${string}/${string}` };\n    } else if ('providerId' in config && 'modelId' in config) {\n      // Convert providerId/modelId to id format\n      normalizedConfig = {\n        id: `${config.providerId}/${config.modelId}` as `${string}/${string}`,\n        url: config.url,\n        apiKey: config.apiKey,\n        headers: config.headers,\n      };\n    } else {\n      // config has 'id' field\n      normalizedConfig = {\n        id: config.id,\n        url: config.url,\n        apiKey: config.apiKey,\n        headers: config.headers,\n      };\n    }\n\n    const parsedConfig: {\n      id: `${string}/${string}`;\n      routerId: string;\n      url?: string;\n      apiKey?: string;\n      headers?: Record<string, string>;\n    } = {\n      ...normalizedConfig,\n      routerId: normalizedConfig.id,\n    };\n\n    // Resolve gateway once using the normalized ID. The manager deduplicates\n    // the gateway chain (custom-before-default, first-wins) and centralises\n    // gateway selection + id parsing in a single resolveModelId call.\n    this.#manager = new GatewayManager([...(customGateways ?? []), ...defaultGateways]);\n    const resolved = this.#manager.resolveModelId(normalizedConfig.id);\n    this.gateway = resolved.gateway;\n    this.gatewayId = resolved.gatewayId;\n    this.provider = resolved.providerId || 'openai-compatible';\n\n    if (resolved.providerId && resolved.modelId !== normalizedConfig.id) {\n      parsedConfig.id = resolved.modelId as `${string}/${string}`;\n    }\n\n    this.modelId = parsedConfig.id;\n    this.config = parsedConfig;\n\n    // Create a lazy PromiseLike for supportedUrls that resolves the underlying model's supportedUrls\n    // This allows providers like Mistral to expose their native URL support (e.g., PDF URLs)\n    // See: https://github.com/mastra-ai/mastra/issues/12152\n    const self = this;\n    this.supportedUrls = {\n      then<TResult1 = Record<string, RegExp[]>, TResult2 = never>(\n        onfulfilled?: ((value: Record<string, RegExp[]>) => TResult1 | PromiseLike<TResult1>) | null,\n        onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null,\n      ): PromiseLike<TResult1 | TResult2> {\n        return self._resolveSupportedUrls().then(onfulfilled, onrejected);\n      },\n    };\n  }\n\n  /**\n   * Lazily resolves the underlying model's supportedUrls.\n   * This is cached to avoid multiple model resolutions.\n   * @internal\n   */\n  private async _resolveSupportedUrls(): Promise<Record<string, RegExp[]>> {\n    if (this._supportedUrlsPromise) {\n      return this._supportedUrlsPromise;\n    }\n\n    this._supportedUrlsPromise = this._fetchSupportedUrls();\n    return this._supportedUrlsPromise;\n  }\n\n  /**\n   * Fetches supportedUrls from the underlying model.\n   * @internal\n   */\n  private async _fetchSupportedUrls(): Promise<Record<string, RegExp[]>> {\n    let apiKey: string;\n    try {\n      const resolved = this.#manager.resolveModelId(this.config.routerId);\n      const auth = await this.resolveAuth(resolved.providerId, resolved.modelId);\n      apiKey = auth.apiKey ?? '';\n      const model = await this.resolveLanguageModel({\n        apiKey,\n        auth,\n        headers: mergeHeaders(this.config.headers, auth.headers),\n        ...resolved,\n      });\n\n      // Get supportedUrls from the underlying model\n      const modelSupportedUrls = model.supportedUrls;\n      if (!modelSupportedUrls) {\n        return {};\n      }\n\n      // Handle both Promise and plain object supportedUrls\n      if (typeof (modelSupportedUrls as PromiseLike<unknown>).then === 'function') {\n        const resolved = await (modelSupportedUrls as PromiseLike<Record<string, RegExp[]>>);\n        return resolved ?? {};\n      }\n\n      return (modelSupportedUrls as Record<string, RegExp[]>) ?? {};\n    } catch {\n      // If model resolution fails, return empty supportedUrls\n      return {};\n    }\n  }\n\n  /** @internal */\n  _getStreamTransport(): StreamTransport | undefined {\n    return this.#lastStreamTransport;\n  }\n\n  /**\n   * Custom serialization for tracing/observability spans.\n   * Excludes `config` (holds apiKey, headers, url) and `gateway`\n   * (may hold proxy credentials or cached tokens) so they cannot leak\n   * into telemetry backends.\n   */\n  serializeForSpan(): {\n    specificationVersion: 'v2';\n    modelId: string;\n    provider: string;\n    gatewayId: string;\n  } {\n    return {\n      specificationVersion: this.specificationVersion,\n      modelId: this.modelId,\n      provider: this.provider,\n      gatewayId: this.gatewayId,\n    };\n  }\n\n  private getGatewayCache(): GatewayModelCache {\n    let cache = ModelRouterLanguageModel.gatewayCaches.get(this.gateway);\n\n    if (!cache) {\n      cache = createGatewayModelCache();\n      ModelRouterLanguageModel.gatewayCaches.set(this.gateway, cache);\n    }\n\n    return cache;\n  }\n\n  private shouldUseInstanceGatewayCache(auth: GatewayAuthResult): boolean {\n    return this.config.apiKey !== undefined || auth.source === 'explicit' || auth.source === 'gateway';\n  }\n\n  private setStreamTransportHandle({\n    resolvedTransport,\n    transport,\n    responsesWebSocket,\n  }: {\n    resolvedTransport: OpenAITransport;\n    transport?: GatewayStreamTransportHandle;\n    responsesWebSocket?: ResponsesWebSocketOptions;\n  }) {\n    if (resolvedTransport !== 'websocket') {\n      this.#lastStreamTransport = undefined;\n      return;\n    }\n\n    if (!transport) {\n      this.#lastStreamTransport = undefined;\n      return;\n    }\n\n    this.#lastStreamTransport = {\n      type: transport.type,\n      close: transport.close,\n      closeOnFinish: responsesWebSocket?.closeOnFinish ?? true,\n    };\n  }\n\n  private async resolveAuth(_providerId: string, _modelId: string): Promise<GatewayAuthResult> {\n    if (this.config.url) {\n      return { apiKey: this.config.apiKey ?? '', headers: this.config.headers, source: 'explicit' };\n    }\n\n    const explicitHeaders = this.config.headers;\n\n    // explicit apiKey takes precedence\n    if (this.config.apiKey) {\n      return { apiKey: this.config.apiKey, headers: explicitHeaders, source: 'explicit' };\n    }\n\n    // delegate gateway-chain resolution (resolveAuth → getApiKey) to the manager\n    const gatewayAuth = await this.#manager.resolveAuth(this.config.routerId);\n\n    // merge any per-instance explicit headers on top of gateway-resolved auth\n    return explicitHeaders ? { ...gatewayAuth, headers: { ...explicitHeaders, ...gatewayAuth.headers } } : gatewayAuth;\n  }\n\n  private setStreamTransportFromCache({\n    cache,\n    resolvedTransport,\n    key,\n    responsesWebSocket,\n  }: {\n    cache: GatewayModelCache;\n    resolvedTransport: OpenAITransport;\n    key: string;\n    responsesWebSocket?: ResponsesWebSocketOptions;\n  }) {\n    const wsFetch = cache.webSocketFetches.get(key);\n    const gatewayTransport = cache.gatewayStreamTransports.get(key);\n    const transport = wsFetch ? { type: 'openai-websocket' as const, close: () => wsFetch.close() } : gatewayTransport;\n\n    this.setStreamTransportHandle({ resolvedTransport, transport, responsesWebSocket });\n  }\n\n  private stripUnsupportedSamplingParams(options: LanguageModelV2CallOptions): LanguageModelV2CallOptions {\n    const supports = modelSupportsTemperature(this.config.routerId);\n    if (supports !== false) return options;\n\n    const { temperature, topP, topK, ...rest } = options;\n    if (temperature === undefined && topP === undefined && topK === undefined) return options;\n    return rest;\n  }\n\n  async doGenerate(options: LanguageModelV2CallOptions): Promise<StreamResult> {\n    const resolved = this.#manager.resolveModelId(this.config.routerId);\n    let auth: GatewayAuthResult;\n    try {\n      // If custom URL is provided, skip gateway API key resolution\n      // The provider might not be in the registry (e.g., custom providers like ollama)\n      auth = await this.resolveAuth(resolved.providerId, resolved.modelId);\n    } catch (error) {\n      // Return an error stream instead of throwing\n      return {\n        stream: new ReadableStream({\n          start(controller) {\n            controller.enqueue({\n              type: 'error',\n              error: error,\n            } as LanguageModelV2StreamPart);\n            controller.close();\n          },\n        }),\n      };\n    }\n\n    const sanitizedOptions = this.stripUnsupportedSamplingParams(options);\n\n    const model = await this.resolveLanguageModel({\n      apiKey: auth.apiKey ?? '',\n      auth,\n      headers: mergeHeaders(this.config.headers, auth.headers),\n      ...resolved,\n    });\n\n    // Handle V2, V3, and V4 models\n    if (isLanguageModelV4(model)) {\n      const aiSDKV7Model = new AISDKV7LanguageModel(model);\n      return aiSDKV7Model.doGenerate(sanitizedOptions as any) as unknown as Promise<StreamResult>;\n    }\n    if (isLanguageModelV3(model)) {\n      const aiSDKV6Model = new AISDKV6LanguageModel(model);\n      return aiSDKV6Model.doGenerate(sanitizedOptions as any) as unknown as Promise<StreamResult>;\n    }\n    const aiSDKV5Model = new AISDKV5LanguageModel(model);\n    return aiSDKV5Model.doGenerate(sanitizedOptions);\n  }\n\n  async doStream(options: LanguageModelV2CallOptions): Promise<StreamResult> {\n    // Validate API key and return error stream if validation fails\n    const resolved = this.#manager.resolveModelId(this.config.routerId);\n    let auth: GatewayAuthResult;\n    try {\n      // If custom URL is provided, skip gateway API key resolution\n      // The provider might not be in the registry (e.g., custom providers like ollama)\n      auth = await this.resolveAuth(resolved.providerId, resolved.modelId);\n    } catch (error) {\n      // Return an error stream instead of throwing\n      return {\n        stream: new ReadableStream({\n          start(controller) {\n            controller.enqueue({\n              type: 'error',\n              error: error,\n            } as LanguageModelV2StreamPart);\n            controller.close();\n          },\n        }),\n      };\n    }\n\n    const sanitizedOptions = this.stripUnsupportedSamplingParams(options);\n\n    const { transport, websocket } = getOpenAITransport(\n      sanitizedOptions.providerOptions as ProviderOptions | undefined,\n      resolved.providerId,\n    );\n    const requestedTransport: OpenAITransport = transport === 'auto' ? 'websocket' : transport;\n    const allowWebSocket =\n      requestedTransport === 'websocket' &&\n      !this.config.url &&\n      ((this.gatewayId === 'models.dev' && OPENAI_WS_ALLOWLIST.has(this.provider)) ||\n        this.gatewayId === 'azure-openai');\n    const resolvedTransport: OpenAITransport = allowWebSocket ? 'websocket' : 'fetch';\n\n    const model = await this.resolveLanguageModel({\n      apiKey: auth.apiKey ?? '',\n      auth,\n      headers: mergeHeaders(this.config.headers, auth.headers),\n      transport: resolvedTransport,\n      responsesWebSocket: websocket,\n      ...resolved,\n    });\n\n    // Handle V2, V3, and V4 models\n    const streamTransport = this.#lastStreamTransport;\n    if (isLanguageModelV4(model)) {\n      const aiSDKV7Model = new AISDKV7LanguageModel(model);\n      // Cast V4 stream result to V2 format - the stream contents are compatible at runtime\n      const streamResult = (await aiSDKV7Model.doStream(sanitizedOptions as any)) as unknown as StreamResult;\n      attachModelStreamTransport(streamResult, streamTransport);\n      return streamResult;\n    }\n    if (isLanguageModelV3(model)) {\n      const aiSDKV6Model = new AISDKV6LanguageModel(model);\n      // Cast V3 stream result to V2 format - the stream contents are compatible at runtime\n      const streamResult = (await aiSDKV6Model.doStream(sanitizedOptions as any)) as unknown as StreamResult;\n      attachModelStreamTransport(streamResult, streamTransport);\n      return streamResult;\n    }\n    const aiSDKV5Model = new AISDKV5LanguageModel(model);\n    const streamResult = await aiSDKV5Model.doStream(sanitizedOptions);\n    attachModelStreamTransport(streamResult, streamTransport);\n    return streamResult;\n  }\n\n  private async resolveLanguageModel({\n    modelId,\n    providerId,\n    apiKey,\n    auth,\n    headers,\n    transport,\n    responsesWebSocket,\n  }: {\n    modelId: string;\n    providerId: string;\n    apiKey: string;\n    auth: GatewayAuthResult;\n    headers?: Record<string, string>;\n    transport?: OpenAITransport;\n    responsesWebSocket?: ResponsesWebSocketOptions;\n  }): Promise<GatewayLanguageModel> {\n    const resolvedTransport: OpenAITransport = transport ?? 'fetch';\n    const websocketKey =\n      resolvedTransport === 'websocket'\n        ? `${responsesWebSocket?.url ?? ''}:${stableHeaderKey(responsesWebSocket?.headers)}`\n        : '';\n    const useInstanceCache = this.shouldUseInstanceGatewayCache(auth);\n    const cache = useInstanceCache ? this.instanceGatewayCache : this.getGatewayCache();\n    const authScopeKey = useInstanceCache ? `${auth.source ?? ''}` : '';\n    const key = createHash('sha256')\n      .update(\n        JSON.stringify([\n          this.gatewayId,\n          modelId,\n          providerId,\n          this.config.url || '',\n          stableHeaderKey(headers),\n          resolvedTransport,\n          websocketKey,\n          authScopeKey,\n        ]),\n      )\n      .digest('hex');\n    if (cache.modelInstances.has(key)) {\n      this.setStreamTransportFromCache({ cache, resolvedTransport, key, responsesWebSocket });\n      return cache.modelInstances.get(key)!;\n    }\n\n    // If custom URL is provided, use it directly with openai-compatible\n    if (this.config.url) {\n      const modelInstance = createOpenAICompatible({\n        name: providerId,\n        apiKey,\n        baseURL: this.config.url,\n        headers,\n        supportsStructuredOutputs: true,\n      }).chatModel(modelId);\n      cache.modelInstances.set(key, modelInstance);\n      this.setStreamTransportHandle({ resolvedTransport, responsesWebSocket });\n      return modelInstance;\n    }\n\n    if (resolvedTransport === 'websocket' && providerId === 'openai' && this.gatewayId === 'models.dev') {\n      const baseURL = await this.gateway.buildUrl(this.config.routerId, process.env as Record<string, string>);\n\n      if (isOpenAIBaseUrl(baseURL)) {\n        const { modelInstance, wsFetch } = this.resolveOpenAIWebSocketModel({\n          modelId,\n          apiKey,\n          baseURL,\n          headers,\n          responsesWebSocket,\n        });\n        cache.modelInstances.set(key, modelInstance);\n        cache.webSocketFetches.set(key, wsFetch);\n        this.setStreamTransportFromCache({ cache, resolvedTransport, key, responsesWebSocket });\n        return modelInstance;\n      }\n    }\n\n    const modelInstance = await this.gateway.resolveLanguageModel({\n      modelId,\n      providerId,\n      apiKey,\n      headers,\n      transport: resolvedTransport,\n      responsesWebSocket,\n    });\n    const gatewayTransport = readGatewayStreamTransport(modelInstance);\n    cache.modelInstances.set(key, modelInstance);\n    if (gatewayTransport) {\n      cache.gatewayStreamTransports.set(key, gatewayTransport);\n    }\n    this.setStreamTransportHandle({ resolvedTransport, transport: gatewayTransport, responsesWebSocket });\n    return modelInstance;\n  }\n\n  private resolveOpenAIWebSocketModel({\n    modelId,\n    apiKey,\n    baseURL,\n    headers,\n    responsesWebSocket,\n  }: {\n    modelId: string;\n    apiKey: string;\n    baseURL?: string;\n    headers?: Record<string, string>;\n    responsesWebSocket?: ResponsesWebSocketOptions;\n  }): { modelInstance: GatewayLanguageModel; wsFetch: OpenAIWebSocketFetch } {\n    const wsFetch = createOpenAIWebSocketFetch({\n      url: responsesWebSocket?.url,\n      headers: responsesWebSocket?.headers,\n    });\n\n    const modelInstance = createOpenAI({\n      apiKey,\n      baseURL,\n      headers,\n      fetch: wsFetch,\n    }).responses(modelId);\n    return { modelInstance, wsFetch };\n  }\n  private static _clearCachesForTests() {\n    ModelRouterLanguageModel.gatewayCaches = new WeakMap();\n  }\n\n  private static gatewayCaches = new WeakMap<MastraModelGatewayInterface, GatewayModelCache>();\n}\n\nfunction readGatewayStreamTransport(model: GatewayLanguageModel): GatewayStreamTransportHandle | undefined {\n  return (model as GatewayLanguageModelWithStreamTransport)[MASTRA_GATEWAY_STREAM_TRANSPORT];\n}\n","import type { LanguageModelV1, LanguageModelV1CallOptions } from '@internal/ai-sdk-v4';\n\n/**\n * Wrapper class for AI SDK v4 (LanguageModelV1) legacy models.\n *\n * The wrapped `#model` is held in a true JS private field so the\n * underlying SDK client (and any enumerable config it exposes) cannot\n * leak into observability spans. `serializeForSpan()` makes the safe\n * shape explicit.\n *\n * This wrapper is applied by `resolveModelConfig` when a raw v4 model\n * is passed to Mastra, so callers do not need to construct it directly.\n */\nexport class AISDKV4LegacyLanguageModel implements LanguageModelV1 {\n  readonly specificationVersion: 'v1' = 'v1';\n  readonly provider: LanguageModelV1['provider'];\n  readonly modelId: LanguageModelV1['modelId'];\n  readonly defaultObjectGenerationMode: LanguageModelV1['defaultObjectGenerationMode'];\n  readonly supportsImageUrls?: LanguageModelV1['supportsImageUrls'];\n  readonly supportsStructuredOutputs?: LanguageModelV1['supportsStructuredOutputs'];\n\n  #model: LanguageModelV1;\n\n  constructor(config: LanguageModelV1) {\n    this.#model = config;\n    this.provider = config.provider;\n    this.modelId = config.modelId;\n    this.defaultObjectGenerationMode = config.defaultObjectGenerationMode;\n    this.supportsImageUrls = config.supportsImageUrls;\n    this.supportsStructuredOutputs = config.supportsStructuredOutputs;\n  }\n\n  supportsUrl(url: URL): boolean {\n    return this.#model.supportsUrl?.(url) ?? false;\n  }\n\n  doGenerate(options: LanguageModelV1CallOptions) {\n    return this.#model.doGenerate(options);\n  }\n\n  doStream(options: LanguageModelV1CallOptions) {\n    return this.#model.doStream(options);\n  }\n\n  /**\n   * Custom serialization for tracing/observability spans.\n   * `#model` is already a true JS private field and not enumerable, so\n   * the wrapped provider SDK client can't leak. This method makes the\n   * safe shape explicit.\n   */\n  serializeForSpan(): { specificationVersion: 'v1'; modelId: string; provider: string } {\n    return {\n      specificationVersion: this.specificationVersion,\n      modelId: this.modelId,\n      provider: this.provider,\n    };\n  }\n}\n","import type { LanguageModelV2 } from '@ai-sdk/provider-v5';\nimport type { LanguageModelV3 } from '@ai-sdk/provider-v6';\nimport type { LanguageModelV4 } from '@ai-sdk/provider-v7';\nimport type { LanguageModelV1 } from '@internal/ai-sdk-v4';\nimport type { Mastra } from '../../mastra';\nimport { RequestContext } from '../../request-context';\nimport { AISDKV4LegacyLanguageModel } from './aisdk/v4/model';\nimport { AISDKV5LanguageModel } from './aisdk/v5/model';\nimport { AISDKV6LanguageModel } from './aisdk/v6/model';\nimport { AISDKV7LanguageModel } from './aisdk/v7/model';\nimport { ModelRouterLanguageModel } from './router';\nimport type {\n  MastraModelConfig,\n  OpenAICompatibleConfig,\n  MastraLanguageModel,\n  MastraLegacyLanguageModel,\n} from './shared.types';\n\n/**\n * Type guard to check if a model config is an OpenAICompatibleConfig object\n * @internal\n */\nexport function isOpenAICompatibleObjectConfig(\n  modelConfig:\n    | MastraModelConfig\n    | (({\n        requestContext,\n        mastra,\n      }: {\n        requestContext: RequestContext;\n        mastra?: Mastra;\n      }) => MastraModelConfig | Promise<MastraModelConfig>),\n): modelConfig is OpenAICompatibleConfig {\n  if (typeof modelConfig === 'object' && 'specificationVersion' in modelConfig) return false;\n  // Check for OpenAICompatibleConfig - it should have either:\n  // 1. 'id' field (but NOT 'model' - that's ModelWithRetries)\n  // 2. Both 'providerId' and 'modelId' fields\n  if (typeof modelConfig === 'object' && !('model' in modelConfig)) {\n    if ('id' in modelConfig) return true;\n    if ('providerId' in modelConfig && 'modelId' in modelConfig) return true;\n  }\n  return false;\n}\n\n/**\n * Resolves a model configuration to a LanguageModel instance.\n * Supports:\n * - Magic strings like \"openai/gpt-4o\"\n * - Config objects like { id: \"openai/gpt-4o\", apiKey: \"...\" }\n * - Direct LanguageModel instances\n * - Dynamic functions that return any of the above\n *\n * @param modelConfig The model configuration\n * @param requestContext Optional request context for dynamic resolution\n * @param mastra Optional Mastra instance for dynamic resolution\n * @returns A resolved LanguageModel instance\n *\n * @example\n * ```typescript\n * // String resolution\n * const model = await resolveModelConfig(\"openai/gpt-4o\");\n *\n * // Config object resolution\n * const model = await resolveModelConfig({\n *   id: \"openai/gpt-4o\",\n *   apiKey: \"sk-...\"\n * });\n *\n * // Dynamic resolution\n * const model = await resolveModelConfig(\n *   ({ requestContext }) => requestContext.get(\"preferredModel\")\n * );\n * ```\n */\nexport async function resolveModelConfig(\n  modelConfig:\n    | MastraModelConfig\n    | (({\n        requestContext,\n        mastra,\n      }: {\n        requestContext: RequestContext;\n        mastra?: Mastra;\n      }) => MastraModelConfig | Promise<MastraModelConfig>),\n  requestContext: RequestContext = new RequestContext(),\n  mastra?: Mastra,\n): Promise<MastraLanguageModel | MastraLegacyLanguageModel> {\n  // If it's a function, resolve it first\n  if (typeof modelConfig === 'function') {\n    modelConfig = await modelConfig({ requestContext, mastra });\n  }\n\n  // Filter out custom language model instances\n  // TODO need a better trick, maybe symbol\n  if (\n    modelConfig instanceof ModelRouterLanguageModel ||\n    modelConfig instanceof AISDKV4LegacyLanguageModel ||\n    modelConfig instanceof AISDKV5LanguageModel ||\n    modelConfig instanceof AISDKV6LanguageModel ||\n    modelConfig instanceof AISDKV7LanguageModel\n  ) {\n    return modelConfig;\n  }\n\n  // If it's already a LanguageModel, wrap it with the appropriate wrapper\n  if (typeof modelConfig === 'object' && 'specificationVersion' in modelConfig) {\n    if (modelConfig.specificationVersion === 'v2') {\n      return new AISDKV5LanguageModel(modelConfig as LanguageModelV2);\n    }\n    if (modelConfig.specificationVersion === 'v3') {\n      return new AISDKV6LanguageModel(modelConfig as LanguageModelV3);\n    }\n    if (modelConfig.specificationVersion === 'v4') {\n      return new AISDKV7LanguageModel(modelConfig as LanguageModelV4);\n    }\n    if (modelConfig.specificationVersion === 'v1') {\n      // Wrap legacy v1 models so the underlying SDK client (and any\n      // enumerable config) does not leak into observability spans.\n      return new AISDKV4LegacyLanguageModel(modelConfig as LanguageModelV1);\n    }\n    // Unknown specificationVersion from a third-party provider (e.g. ollama-ai-provider-v2).\n    // If the model has doStream/doGenerate methods, wrap it as a modern model\n    // to prevent the stream()/streamLegacy() catch-22 where neither method accepts the model.\n    if (typeof (modelConfig as any).doStream === 'function' && typeof (modelConfig as any).doGenerate === 'function') {\n      return new AISDKV5LanguageModel(modelConfig as unknown as LanguageModelV2);\n    }\n    return modelConfig as MastraLanguageModel;\n  }\n\n  const gatewayRecord = mastra?.listGateways();\n  const customGateways = gatewayRecord ? Object.values(gatewayRecord) : undefined;\n\n  // If it's a string (magic string like \"openai/gpt-4o\") or OpenAICompatibleConfig, create ModelRouterLanguageModel\n  if (typeof modelConfig === 'string' || isOpenAICompatibleObjectConfig(modelConfig)) {\n    return new ModelRouterLanguageModel(modelConfig, customGateways);\n  }\n\n  throw new Error('Invalid model configuration provided');\n}\n","import type { GatewayAuthRequest, GatewayAuthResult, MastraModelGatewayInterface } from './gateways/base.js';\n\nexport type ResolveModelAuthArgs = {\n  gateway: MastraModelGatewayInterface;\n  request: GatewayAuthRequest;\n  explicit?: Pick<GatewayAuthResult, 'apiKey' | 'headers' | 'bearerToken'>;\n};\n\nfunction mergeAuthHeaders(auth: GatewayAuthResult | undefined): GatewayAuthResult | undefined {\n  if (!auth?.bearerToken) return auth;\n  return {\n    ...auth,\n    headers: {\n      ...auth.headers,\n      Authorization: `Bearer ${auth.bearerToken}`,\n    },\n  };\n}\n\nfunction hasExplicitAuth(explicit?: Pick<GatewayAuthResult, 'apiKey' | 'headers' | 'bearerToken'>): boolean {\n  return Boolean(\n    explicit?.apiKey || explicit?.bearerToken || (explicit?.headers && Object.keys(explicit.headers).length > 0),\n  );\n}\n\n/**\n * @deprecated This function is deprecated and will be removed in a future release.\n * Auth resolution is now handled internally by {@link ModelRouterLanguageModel}.\n * This function is kept for backward compatibility.\n */\nexport async function resolveModelAuth({\n  gateway,\n  request,\n  explicit,\n}: ResolveModelAuthArgs): Promise<GatewayAuthResult> {\n  if (hasExplicitAuth(explicit)) {\n    return mergeAuthHeaders({ ...explicit, source: 'explicit' }) ?? { source: 'explicit' };\n  }\n\n  const gatewayAuth = mergeAuthHeaders(await gateway.resolveAuth?.(request));\n  if (gatewayAuth?.apiKey || gatewayAuth?.headers || gatewayAuth?.bearerToken) {\n    return { ...gatewayAuth, source: gatewayAuth.source ?? 'gateway' };\n  }\n\n  return {\n    apiKey: await gateway.getApiKey(request.routerId),\n    source: 'legacy',\n  };\n}\n","import { createGoogleGenerativeAI } from '@ai-sdk/google-v6';\nimport { createOpenAICompatible } from '@ai-sdk/openai-compatible-v6';\nimport { createOpenAI } from '@ai-sdk/openai-v6';\nimport type { EmbeddingModel } from '@internal/ai-sdk-v5';\nimport type { EmbeddingModelV3 } from '@internal/ai-v6';\n\ntype EmbeddingModelV2<VALUE> = Exclude<EmbeddingModel<VALUE>, string>;\n\nimport { MASTRA_USER_AGENT } from './gateways/constants.js';\nimport { GatewayRegistry } from './provider-registry.js';\nimport type { OpenAICompatibleConfig } from './shared.types.js';\n\nconst MASTRA_GATEWAY_ID = 'mastra';\n\nfunction trimTrailingSlashes(value: string): string {\n  let end = value.length;\n  while (end > 0 && value.charCodeAt(end - 1) === 47) {\n    end -= 1;\n  }\n  return value.slice(0, end);\n}\n\nfunction getMastraGatewayBaseUrl(raw = process.env['MASTRA_GATEWAY_URL']): string {\n  const baseUrl = raw?.trim() || 'https://gateway-api.mastra.ai';\n  const withoutTrailingSlashes = trimTrailingSlashes(baseUrl);\n  const withoutVersion = withoutTrailingSlashes.endsWith('/v1')\n    ? withoutTrailingSlashes.slice(0, -'/v1'.length)\n    : withoutTrailingSlashes;\n\n  return `${withoutVersion}/v1`;\n}\n\n/**\n * Information about a known embedding model\n */\nexport interface EmbeddingModelInfo {\n  id: string;\n  provider: string;\n  dimensions: number;\n  maxInputTokens: number;\n  description?: string;\n}\n\n/**\n * Hardcoded list of known embedding models\n * This is a curated list that provides autocomplete support\n */\nexport const EMBEDDING_MODELS: EmbeddingModelInfo[] = [\n  // OpenAI\n  {\n    id: 'text-embedding-3-small',\n    provider: 'openai',\n    dimensions: 1536,\n    maxInputTokens: 8191,\n    description: 'OpenAI text-embedding-3-small model',\n  },\n  {\n    id: 'text-embedding-3-large',\n    provider: 'openai',\n    dimensions: 3072,\n    maxInputTokens: 8191,\n    description: 'OpenAI text-embedding-3-large model',\n  },\n  {\n    id: 'text-embedding-ada-002',\n    provider: 'openai',\n    dimensions: 1536,\n    maxInputTokens: 8191,\n    description: 'OpenAI text-embedding-ada-002 model',\n  },\n  // Google\n  {\n    id: 'gemini-embedding-001',\n    provider: 'google',\n    dimensions: 768,\n    maxInputTokens: 2048,\n    description: 'Google gemini-embedding-001 model',\n  },\n];\n\n/**\n * Type for embedding model IDs in the format \"provider/model\"\n */\nexport type EmbeddingModelId =\n  | 'openai/text-embedding-3-small'\n  | 'openai/text-embedding-3-large'\n  | 'openai/text-embedding-ada-002'\n  | 'google/gemini-embedding-001';\n\n/**\n * Check if a model ID is a known embedding model\n */\nexport function isKnownEmbeddingModel(modelId: string): boolean {\n  return EMBEDDING_MODELS.some(m => m.id === modelId);\n}\n\n/**\n * Get information about a known embedding model\n */\nexport function getEmbeddingModelInfo(modelId: string): EmbeddingModelInfo | undefined {\n  return EMBEDDING_MODELS.find(m => m.id === modelId);\n}\n\n/**\n * Model router for embedding models that uses the provider/model string format.\n * Automatically resolves the correct AI SDK provider and initializes the embedding model.\n *\n * @example\n * ```ts\n * const embedder = new ModelRouterEmbeddingModel('openai/text-embedding-3-small');\n * const result = await embedder.doEmbed({ values: ['hello world'] });\n * ```\n */\nexport class ModelRouterEmbeddingModel<VALUE extends string = string> implements EmbeddingModelV2<VALUE> {\n  readonly specificationVersion = 'v2' as const;\n  readonly modelId: string;\n  readonly provider: string;\n  maxEmbeddingsPerCall: number | PromiseLike<number | undefined> = 2048;\n  supportsParallelCalls: boolean | PromiseLike<boolean> = true;\n\n  // The underlying provider SDKs are on the AI SDK v6 track (V3 embedding\n  // spec). This wrapper keeps exposing the V2 interface; doEmbed adapts.\n  private providerModel: EmbeddingModelV3;\n\n  constructor(config: string | OpenAICompatibleConfig) {\n    // Normalize config to always have provider and model IDs\n    let normalizedConfig: {\n      providerId: string;\n      modelId: string;\n      url?: string;\n      apiKey?: string;\n      headers?: Record<string, string>;\n    };\n\n    if (typeof config === 'string') {\n      // Parse provider/model or gateway/provider/model from string.\n      const parts = config.split('/');\n      if (parts[0] === MASTRA_GATEWAY_ID) {\n        if (parts.length < 3) {\n          throw new Error(`Invalid model string format: \"${config}\". Expected format: \"mastra/provider/model\"`);\n        }\n        normalizedConfig = { providerId: MASTRA_GATEWAY_ID, modelId: parts.slice(1).join('/') };\n      } else {\n        if (parts.length !== 2) {\n          throw new Error(`Invalid model string format: \"${config}\". Expected format: \"provider/model\"`);\n        }\n        const [providerId, modelId] = parts as [string, string];\n        normalizedConfig = { providerId, modelId };\n      }\n    } else if ('providerId' in config && 'modelId' in config) {\n      normalizedConfig = {\n        providerId: config.providerId,\n        modelId: config.modelId,\n        url: config.url,\n        apiKey: config.apiKey,\n        headers: config.headers,\n      };\n    } else {\n      // config has 'id' field\n      const parts = config.id.split('/');\n      if (parts[0] === MASTRA_GATEWAY_ID) {\n        if (parts.length < 3) {\n          throw new Error(`Invalid model string format: \"${config.id}\". Expected format: \"mastra/provider/model\"`);\n        }\n        normalizedConfig = {\n          providerId: MASTRA_GATEWAY_ID,\n          modelId: parts.slice(1).join('/'),\n          url: config.url,\n          apiKey: config.apiKey,\n          headers: config.headers,\n        };\n      } else {\n        if (parts.length !== 2) {\n          throw new Error(`Invalid model string format: \"${config.id}\". Expected format: \"provider/model\"`);\n        }\n        const [providerId, modelId] = parts as [string, string];\n        normalizedConfig = {\n          providerId,\n          modelId,\n          url: config.url,\n          apiKey: config.apiKey,\n          headers: config.headers,\n        };\n      }\n    }\n\n    this.provider = normalizedConfig.providerId;\n    this.modelId = normalizedConfig.modelId;\n\n    if (normalizedConfig.providerId === MASTRA_GATEWAY_ID) {\n      const apiKey = normalizedConfig.apiKey ?? process.env['MASTRA_GATEWAY_API_KEY'];\n      if (!apiKey) {\n        throw new Error('API key not found for provider mastra. Set MASTRA_GATEWAY_API_KEY');\n      }\n\n      this.providerModel = createOpenAICompatible({\n        name: MASTRA_GATEWAY_ID,\n        apiKey,\n        baseURL: getMastraGatewayBaseUrl(normalizedConfig.url),\n        headers: {\n          'User-Agent': MASTRA_USER_AGENT,\n          ...normalizedConfig.headers,\n        },\n      }).embeddingModel(normalizedConfig.modelId);\n    } else if (normalizedConfig.url) {\n      // If custom URL is provided, skip provider registry validation\n      // and use the provided API key (or empty string if not provided)\n      const apiKey = normalizedConfig.apiKey || '';\n      this.providerModel = createOpenAICompatible({\n        name: normalizedConfig.providerId,\n        apiKey,\n        baseURL: normalizedConfig.url,\n        headers: normalizedConfig.headers,\n      }).embeddingModel(normalizedConfig.modelId);\n    } else {\n      // Get provider config from registry\n      const registry = GatewayRegistry.getInstance();\n      const providerConfig = registry.getProviderConfig(normalizedConfig.providerId);\n\n      if (!providerConfig) {\n        throw new Error(`Unknown provider: ${normalizedConfig.providerId}`);\n      }\n\n      // Get API key from config or environment\n      let apiKey = normalizedConfig.apiKey;\n      if (!apiKey) {\n        const apiKeyEnvVar = providerConfig.apiKeyEnvVar;\n        if (Array.isArray(apiKeyEnvVar)) {\n          // Try each possible environment variable\n          for (const envVar of apiKeyEnvVar) {\n            apiKey = process.env[envVar];\n            if (apiKey) break;\n          }\n        } else {\n          apiKey = process.env[apiKeyEnvVar];\n        }\n      }\n\n      if (!apiKey) {\n        const envVarDisplay = Array.isArray(providerConfig.apiKeyEnvVar)\n          ? providerConfig.apiKeyEnvVar.join(' or ')\n          : providerConfig.apiKeyEnvVar;\n        throw new Error(`API key not found for provider ${normalizedConfig.providerId}. Set ${envVarDisplay}`);\n      }\n\n      // Initialize the provider model directly in constructor\n      if (normalizedConfig.providerId === 'openai') {\n        this.providerModel = createOpenAI({ apiKey }).embeddingModel(normalizedConfig.modelId);\n      } else if (normalizedConfig.providerId === 'google') {\n        this.providerModel = createGoogleGenerativeAI({ apiKey }).embeddingModel(normalizedConfig.modelId);\n      } else {\n        // Use OpenAI-compatible provider for other providers\n        if (!providerConfig.url) {\n          throw new Error(`Provider ${normalizedConfig.providerId} does not have a URL configured`);\n        }\n        this.providerModel = createOpenAICompatible({\n          name: normalizedConfig.providerId,\n          apiKey,\n          baseURL: providerConfig.url,\n        }).embeddingModel(normalizedConfig.modelId);\n      }\n    }\n\n    // Copy properties from the provider model if available\n    if (this.providerModel.maxEmbeddingsPerCall !== undefined) {\n      this.maxEmbeddingsPerCall = this.providerModel.maxEmbeddingsPerCall;\n    }\n    if (this.providerModel.supportsParallelCalls !== undefined) {\n      this.supportsParallelCalls = this.providerModel.supportsParallelCalls;\n    }\n  }\n\n  async doEmbed(\n    args: Parameters<EmbeddingModelV2<VALUE>['doEmbed']>[0],\n  ): Promise<Awaited<ReturnType<EmbeddingModelV2<VALUE>['doEmbed']>>> {\n    // V3 call options require header values to be defined strings.\n    let headers: Record<string, string> | undefined;\n    if (args.headers) {\n      headers = Object.fromEntries(\n        Object.entries(args.headers).filter((entry): entry is [string, string] => entry[1] !== undefined),\n      );\n    }\n    const result = await this.providerModel.doEmbed({ ...args, headers });\n    // Ensure warnings is always an array — AI SDK v6's embedMany spreads\n    // result.warnings and crashes if it's undefined.\n    const warnings = (result as { warnings?: unknown[] }).warnings ?? [];\n    return { ...result, warnings } as Awaited<ReturnType<EmbeddingModelV2<VALUE>['doEmbed']>>;\n  }\n}\n"],"x_google_ignoreList":[4,5,6,7,8],"mappings":";;;;;;;;;;;;;;;;;;AA2BA,IAAY,YAAL,yBAAA,WAAA;CACL,UAAA,WAAA;CACA,UAAA,UAAA;CACA,UAAA,YAAA;CACA,UAAA,cAAA;CACA,UAAA,aAAA;;AACF,EAAA,CAAA,CAAA;AA+BA,MAAa,gCAAgC,OAAO,IAAI,mCAAmC;AAM3F,SAAgB,2BAA2B,QAAgB,WAAmC;CAC5F,IAAI,CAAC,WAAW;CAChB,OAAO,eAAe,QAAQ,+BAA+B;EAC3D,cAAc;EACd,OAAO;CACT,CAAC;AACH;AAEA,SAAgB,yBAAyB,QAA8C;CACrF,OAAQ,SAAgD;AAC1D;;;;;;;;;ACpEA,SAAS,eAAe,SAAiE;CACvF,IAAI,CAAC,QAAQ,OAAO,QAClB,OAAO;CAGT,MAAM,gBAAgB,QAAQ,MAAM,KAAK,SAAkC;EACzE,IAAI,KAAK,SAAS,oBAChB,OAAO;GAAE,GAAG;GAAM,MAAM;EAAoB;EAE9C,OAAO;CACT,CAAC;CAED,OAAO;EACL,GAAG;EACH,OAAO;CACT;AACF;;;;;AAMA,IAAa,uBAAb,MAAmE;;;;CAIjE,uBAAsC;;;;CAItC;;;;CAIA;;;;;;;;;;CAUA;CAEA;CAEA,YAAY,QAAyB;EACnC,KAAKA,SAAS;EACd,KAAK,WAAW,KAAKA,OAAO;EAC5B,KAAK,UAAU,KAAKA,OAAO;EAC3B,KAAK,gBAAgB,KAAKA,OAAO;CACnC;CAEA,MAAM,WAAW,SAAqC;EACpD,MAAM,SAAS,MAAM,KAAKA,OAAO,WAAW,eAAe,OAAO,CAAC;EAEnE,OAAO;GACL,GAAG;GACH,SAAS,OAAO;GAChB,UAAU,OAAO;GACjB,QAAQC,cAAAA,+BAA+B,MAAM;EAC/C;CACF;CAEA,MAAM,SAAS,SAAqC;EAClD,OAAO,MAAM,KAAKD,OAAO,SAAS,eAAe,OAAO,CAAC;CAC3D;;;;;;;;CASA,mBAAsF;EACpF,OAAO;GACL,sBAAsB,KAAK;GAC3B,SAAS,KAAK;GACd,UAAU,KAAK;EACjB;CACF;AACF;;;;;;;;;;;ACxEA,SAAS,eAAe,SAAiE;CACvF,IAAI,CAAC,QAAQ,OAAO,QAClB,OAAO;CAGT,MAAM,gBAAgB,QAAQ,MAAM,KAAK,SAAkC;EACzE,IAAI,KAAK,SAAS,oBAChB,OAAO;GAAE,GAAG;GAAM,MAAM;EAAoB;EAE9C,OAAO;CACT,CAAC;CAED,OAAO;EACL,GAAG;EACH,OAAO;CACT;AACF;AAEA,SAAS,mBAAmB,MAAwD;CAClF,IAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,EAAE,UAAU,OAC3D,OAAO;CAGT,MAAM,OAAO,KAAK;CAClB,OAAO,SAAS,UAAU,SAAS,SAAS,SAAS,eAAe,SAAS;AAC/E;;;;;;AAOA,SAAS,uBAAuB,MAG9B;CACA,IAAI,mBAAmB,IAAI,GACzB,OAAO,EAAE,KAAK;CAGhB,MAAM,EAAE,MAAM,eAAe,cAAcE,gBAAAA,qBAAqB,IAAI;CAEpE,OAAO;EACL,MAAM,yBAAyB,MAAM;GAAE,MAAM;GAAO,KAAK;EAAc,IAAI;GAAE,MAAM;GAAQ,MAAM;EAAc;EAC/G;CACF;AACF;AAEA,SAAS,mBAAmB,SAAiE;CAC3F,IAAI,iBAAiB;CACrB,MAAM,SAAS,QAAQ,OAAO,KAAI,YAAW;EAC3C,IAAI,QAAQ,SAAS,UAAU,QAAQ,SAAS,aAC9C,OAAO;EAGT,IAAI,kBAAkB;EACtB,MAAM,UAAU,QAAQ,QAAQ,KAAI,SAAQ;GAC1C,IAAI,KAAK,SAAS,QAChB,OAAO;GAGT,MAAM,EAAE,MAAM,cAAc,uBAAuB,KAAK,IAAI;GAC5D,IAAI,SAAS,KAAK,QAAQ,aAAa,MACrC,OAAO;GAGT,kBAAkB;GAClB,OAAO;IACL,GAAG;IACH;IACA,WAAW,aAAa,KAAK;GAC/B;EACF,CAAC;EAED,IAAI,CAAC,iBACH,OAAO;EAGT,iBAAiB;EACjB,OAAO;GAAE,GAAG;GAAS;EAAQ;CAC/B,CAAC;CAID,OAAO,iBAAiB;EAAE,GAAG;EAAiB;CAAgC,IAAI;AACpF;AAEA,SAAS,qBAAqB,SAAiE;CAC7F,OAAO,eAAe,mBAAmB,OAAO,CAAC;AACnD;;;;;;;;;;;;;AAcA,SAAS,+BAA+B,MAAoD;CAC1F,IAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,EAAE,UAAU,OAC3D,OAAO;CAGT,OAAO,KAAK,SAAS,UAAU,KAAK,SAAS;AAC/C;AAEA,SAAS,wBAAwB,MAAwD;CACvF,OAAO,KAAK,SAAS,QAAQ,KAAK,IAAI,SAAS,IAAI,KAAK;AAC1D;AAEA,SAAS,eAAe,MAAuB;CAC7C,OAAO,SAAS,UAAU,SAAS;AACrC;AAEA,SAAS,yBAAyB,SAA+D;CAC/F,IAAI,kBAAkB;CACtB,MAAM,WAAW,QAAQ,KAAI,SAAQ;EACnC,IAAI,CAAC,eAAe,KAAK,IAAI,KAAK,EAAE,UAAU,SAAS,CAAC,+BAA+B,KAAK,IAAI,GAC9F,OAAO;EAGT,kBAAkB;EAGlB,OAAO;GAAE,GAAG;GAAM,MAAM,wBAAwB,KAAK,IAAI;EAAE;CAC7D,CAAC;CAED,OAAO,kBAAkB,WAAW;AACtC;AAEA,SAAS,qBAAqB,QAAwD;CACpF,OAAO,OAAO,YACZ,IAAI,gBAAsE,EACxE,UAAU,MAAM,YAAY;EAC1B,IAAI,eAAe,KAAK,IAAI,KAAK,UAAU,QAAQ,+BAA+B,KAAK,IAAI,GAEzF,WAAW,QAAQ;GACjB,GAAG;GACH,MAAM,wBAAwB,KAAK,IAAI;EACzC,CAAyC;OAEzC,WAAW,QAAQ,IAAI;CAE3B,EACF,CAAC,CACH;AACF;;;;;AAMA,IAAa,uBAAb,MAAmE;;;;CAIjE,uBAAsC;;;;CAItC;;;;CAIA;;;;;;;;;;CAUA;CAEA;CAEA,YAAY,QAAyB;EACnC,KAAKC,SAAS;EACd,KAAK,WAAW,KAAKA,OAAO;EAC5B,KAAK,UAAU,KAAKA,OAAO;EAC3B,KAAK,gBAAgB,KAAKA,OAAO;CACnC;CAEA,MAAM,WAAW,SAAqC;EACpD,MAAM,SAAS,MAAM,KAAKA,OAAO,WAAW,qBAAqB,OAAO,CAAC;EACzE,MAAM,UAAU,yBAAyB,OAAO,OAAO;EACvD,MAAM,iBAAiB,YAAY,OAAO,UAAU,SAAS;GAAE,GAAG;GAAQ;EAAQ;EAElF,OAAO;GACL,GAAG;GACH,SAAS,OAAO;GAChB,UAAU,OAAO;GACjB,QAAQC,cAAAA,+BAA+B,cAAc;EACvD;CACF;CAEA,MAAM,SAAS,SAAqC;EAClD,MAAM,SAAS,MAAM,KAAKD,OAAO,SAAS,qBAAqB,OAAO,CAAC;EAEvE,OAAO;GACL,GAAG;GACH,QAAQ,qBAAqB,OAAO,MAAM;EAC5C;CACF;;;;;;;;CASA,mBAAsF;EACpF,OAAO;GACL,sBAAsB,KAAK;GAC3B,SAAS,KAAK;GACd,UAAU,KAAK;EACjB;CACF;AACF;;;ACrPA,SAAS,4BAA4B,MAAc;CACjD,OAAO,OAAO,YAAY,OAAO,QAAQE,0BAAAA,iBAAiB,CAAC,CAAC,QAAQ,CAAC,WAAW,YAAY,OAAO,YAAY,IAAI,CAAC;AACtH;AAEA,MAAa,kBAAkB;CAC7B,IAAIC,gBAAAA,eAAe;CACnB,IAAIC,0BAAAA,cAAc;CAClB,IAAIC,mBAAAA,iBAAiB,4BAA4B,YAAY,CAAC;AAChE;;;ACZA,IAAIC,WAAS;AACb,IAAIC,WAAS,OAAO,IAAID,QAAM;AAC9B,IAAIE;AAAIC,IAAAA;AACR,IAAI,aAAa,MAAM,qBAAqB,OAAK,OAAO,OAAKF,UAAQE,KAAAA,CAAI;;;;;;;;;CASvE,YAAY,EACV,MAAM,QACN,SACA,SACC;EACD,MAAM,OAAO;EACb,KAAKD,QAAM;EACX,KAAK,OAAO;EACZ,KAAK,QAAQ;CACf;;;;;;CAMA,OAAO,WAAW,OAAO;EACvB,OAAO,YAAY,UAAU,OAAOF,QAAM;CAC5C;CACA,OAAO,UAAU,OAAO,UAAU;EAChC,MAAM,eAAe,OAAO,IAAI,QAAQ;EACxC,OAAO,SAAS,QAAQ,OAAO,UAAU,YAAY,gBAAgB,SAAS,OAAO,MAAM,kBAAkB,aAAa,MAAM,kBAAkB;CACpJ;AACF;AAGA,IAAII,SAAO;AACX,IAAI,UAAU,mBAAmBA;AACjC,IAAI,UAAU,OAAO,IAAI,OAAO;AAChC,IAAI;AAAK,IAAA;AACT,IAAI,eAAe,eAAe,MAAM,YAAY,MAAM,SAAS,IAAA,CAAK;CACtE,YAAY,EACV,SACA,KACA,mBACA,YACA,iBACA,cACA,OACA,cAAc,cAAc,SAAS,eAAe,OACpD,eAAe,OACf,eAAe,OACf,cAAc,MAEd,QACC;EACD,MAAM;GAAE,MAAA;GAAM;GAAS;EAAM,CAAC;EAC9B,KAAK,OAAO;EACZ,KAAK,MAAM;EACX,KAAK,oBAAoB;EACzB,KAAK,aAAa;EAClB,KAAK,kBAAkB;EACvB,KAAK,eAAe;EACpB,KAAK,cAAc;EACnB,KAAK,OAAO;CACd;CACA,OAAO,WAAW,OAAO;EACvB,OAAO,WAAW,UAAU,OAAO,OAAO;CAC5C;AACF;AAGA,IAAI,QAAQ;AACZ,IAAI,UAAU,mBAAmB;AACjC,IAAI,UAAU,OAAO,IAAI,OAAO;AAChC,IAAI;AAAK,IAAA;AACT,IAAI,yBAAyB,eAAe,MAAM,YAAY,MAAM,SAAS,IAAA,CAAK;CAEhF,YAAY,EAAE,UAAU,0BAA0B,CAAC,GAAG;EACpD,MAAM;GAAE,MAAM;GAAO;EAAQ,CAAC;EAC9B,KAAK,OAAO;CACd;CACA,OAAO,WAAW,OAAO;EACvB,OAAO,WAAW,UAAU,OAAO,OAAO;CAC5C;AACF;AAGA,SAAS,gBAAgB,OAAO;CAC9B,IAAI,SAAS,MACX,OAAO;CAET,IAAI,OAAO,UAAU,UACnB,OAAO;CAET,IAAI,iBAAiB,OACnB,OAAO,MAAM;CAEf,OAAO,KAAK,UAAU,KAAK;AAC7B;AAGA,IAAI,QAAQ;AACZ,IAAI,UAAU,mBAAmB;AACjC,IAAI,UAAU,OAAO,IAAI,OAAO;AAChC,IAAI;AAAK,IAAA;AACT,IAAI,uBAAuB,eAAe,MAAM,YAAY,MAAM,SAAS,IAAA,CAAK;CAC9E,YAAY,EACV,SACA,OACA,YACC;EACD,MAAM;GAAE,MAAM;GAAO;GAAS;EAAM,CAAC;EACrC,KAAK,OAAO;EACZ,KAAK,WAAW;CAClB;CACA,OAAO,WAAW,OAAO;EACvB,OAAO,WAAW,UAAU,OAAO,OAAO;CAC5C;AACF;AAGA,IAAI,QAAQ;AACZ,IAAI,UAAU,mBAAmB;AACjC,IAAI,UAAU,OAAO,IAAI,OAAO;AAChC,IAAI;AAAK,IAAA;AACT,IAAI,qBAAqB,eAAe,MAAM,YAAY,MAAM,SAAS,IAAA,CAAK;CAC5E,YAAY,EACV,QACA,SACA,SACC;EACD,MAAM;GAAE,MAAM;GAAO,SAAS,mBAAmB;GAAW;EAAM,CAAC;EACnE,KAAK,OAAO;EACZ,KAAK,SAAS;CAChB;CACA,OAAO,WAAW,OAAO;EACvB,OAAO,WAAW,UAAU,OAAO,OAAO;CAC5C;AACF;AAGA,IAAI,QAAQ;AACZ,IAAI,UAAU,mBAAmB;AACjC,IAAI,UAAU,OAAO,IAAI,OAAO;AAChC,IAAI;AAAK,IAAA;AACT,IAAI,2BAA2B,eAAe,MAAM,YAAY,MAAM,SAAS,IAAA,CAAK;CAClF,YAAY,EACV,MACA,UAAU,0BAA0B,KAAK,UAAU,IAAI,EAAE,MACxD;EACD,MAAM;GAAE,MAAM;GAAO;EAAQ,CAAC;EAC9B,KAAK,OAAO;EACZ,KAAK,OAAO;CACd;CACA,OAAO,WAAW,OAAO;EACvB,OAAO,WAAW,UAAU,OAAO,OAAO;CAC5C;AACF;AAGA,IAAI,QAAQ;AACZ,IAAI,UAAU,mBAAmB;AACjC,IAAI,UAAU,OAAO,IAAI,OAAO;AAChC,IAAI;AAAK,IAAA;AACT,IAAI,iBAAiB,eAAe,MAAM,YAAY,MAAM,SAAS,IAAA,CAAK;CACxE,YAAY,EAAE,MAAM,SAAS;EAC3B,MAAM;GACJ,MAAM;GACN,SAAS,8BAA8B,KAAK;iBACjC,gBAAgB,KAAK;GAChC;EACF,CAAC;EACD,KAAK,OAAO;EACZ,KAAK,OAAO;CACd;CACA,OAAO,WAAW,OAAO;EACvB,OAAO,WAAW,UAAU,OAAO,OAAO;CAC5C;AACF;AAGA,IAAI,QAAQ;AACZ,IAAI,UAAU,mBAAmB;AACjC,IAAI,UAAU,OAAO,IAAI,OAAO;AAChC,IAAI;AAAK,IAAA;AACT,IAAI,kBAAkB,eAAe,MAAM,YAAY,MAAM,SAAS,IAAA,CAAK;CAEzE,YAAY,EAAE,WAAW;EACvB,MAAM;GAAE,MAAM;GAAO;EAAQ,CAAC;EAC9B,KAAK,OAAO;CACd;CACA,OAAO,WAAW,OAAO;EACvB,OAAO,WAAW,UAAU,OAAO,OAAO;CAC5C;AACF;AAGA,IAAI,QAAQ;AACZ,IAAI,UAAU,mBAAmB;AACjC,IAAI,UAAU,OAAO,IAAI,OAAO;AAChC,IAAI;AAAK,IAAA;AACT,IAAI,mBAAmB,eAAe,MAAM,YAAY,MAAM,SAAS,IAAA,CAAK;CAE1E,YAAY,EAAE,WAAW;EACvB,MAAM;GAAE,MAAM;GAAO;EAAQ,CAAC;EAC9B,KAAK,OAAO;CACd;CACA,OAAO,WAAW,OAAO;EACvB,OAAO,WAAW,UAAU,OAAO,OAAO;CAC5C;AACF;AAGA,IAAI,QAAQ;AACZ,IAAI,WAAW,mBAAmB;AAClC,IAAI,WAAW,OAAO,IAAI,QAAQ;AAClC,IAAI;AAAM,IAAA;CACoB,eAAe,OAAO,YAAY,OAAO,UAAU,KAAA,CAAM;CAErF,YAAY,EACV,UAAU,4BACR,CAAC,GAAG;EACN,MAAM;GAAE,MAAM;GAAO;EAAQ,CAAC;EAC9B,KAAK,QAAQ;CACf;CACA,OAAO,WAAW,OAAO;EACvB,OAAO,WAAW,UAAU,OAAO,QAAQ;CAC7C;AACF;AAGA,IAAI,SAAS;AACb,IAAI,WAAW,mBAAmB;AAClC,IAAI,WAAW,OAAO,IAAI,QAAQ;AAClC,IAAI;AAAM,IAAA;CACa,eAAe,OAAO,YAAY,OAAO,UAAU,KAAA,CAAM;CAC9E,YAAY,EACV,YAAY,QACZ,SACA,WACA,UAAU,WAAW,UAAU,IAAI,aAClC;EACD,MAAM;GAAE,MAAM;GAAW;EAAQ,CAAC;EAClC,KAAK,QAAQ;EACb,KAAK,UAAU;EACf,KAAK,YAAY;CACnB;CACA,OAAO,WAAW,OAAO;EACvB,OAAO,WAAW,UAAU,OAAO,QAAQ;CAC7C;AACF;AAGA,IAAI,SAAS;AACb,IAAI,WAAW,mBAAmB;AAClC,IAAI,WAAW,OAAO,IAAI,QAAQ;AAClC,IAAI;AAAM,IAAA;AACV,IAAI,qCAAqC,eAAe,OAAO,YAAY,OAAO,UAAU,KAAA,CAAM;CAChG,YAAY,SAAS;EACnB,MAAM;GACJ,MAAM;GACN,SAAS,oDAAoD,QAAQ,SAAS,UAAU,QAAQ,QAAQ,yBAAyB,QAAQ,qBAAqB,wBAAwB,QAAQ,OAAO,OAAO;EAC9M,CAAC;EACD,KAAK,QAAQ;EACb,KAAK,WAAW,QAAQ;EACxB,KAAK,UAAU,QAAQ;EACvB,KAAK,uBAAuB,QAAQ;EACpC,KAAK,SAAS,QAAQ;CACxB;CACA,OAAO,WAAW,OAAO;EACvB,OAAO,WAAW,UAAU,OAAO,QAAQ;CAC7C;AACF;AAGA,IAAI,SAAS;AACb,IAAI,WAAW,mBAAmB;AAClC,IAAI,WAAW,OAAO,IAAI,QAAQ;AAClC,IAAI;AAAM,IAAA;AACV,IAAI,sBAAsB,MAAM,8BAA8B,OAAO,YAAY,OAAO,UAAU,KAAA,CAAM;CACtG,YAAY,EAAE,OAAO,SAAS;EAC5B,MAAM;GACJ,MAAM;GACN,SAAS,kCAAkC,KAAK,UAAU,KAAK,EAAE;iBACtD,gBAAgB,KAAK;GAChC;EACF,CAAC;EACD,KAAK,QAAQ;EACb,KAAK,QAAQ;CACf;CACA,OAAO,WAAW,OAAO;EACvB,OAAO,WAAW,UAAU,OAAO,QAAQ;CAC7C;;;;;;;;;;;CAWA,OAAO,KAAK,EACV,OACA,SACC;EACD,OAAO,qBAAqB,WAAW,KAAK,KAAK,MAAM,UAAU,QAAQ,QAAQ,IAAI,qBAAqB;GAAE;GAAO;EAAM,CAAC;CAC5H;AACF;AAGA,IAAI,SAAS;AACb,IAAI,WAAW,mBAAmB;AAClC,IAAI,WAAW,OAAO,IAAI,QAAQ;AAClC,IAAI;AAAM,IAAA;AACV,IAAI,gCAAgC,eAAe,OAAO,YAAY,OAAO,UAAU,KAAA,CAAM;CAC3F,YAAY,EACV,eACA,UAAU,IAAI,cAAc,mCAC3B;EACD,MAAM;GAAE,MAAM;GAAQ;EAAQ,CAAC;EAC/B,KAAK,QAAQ;EACb,KAAK,gBAAgB;CACvB;CACA,OAAO,WAAW,OAAO;EACvB,OAAO,WAAW,UAAU,OAAO,QAAQ;CAC7C;AACF;;;AC1UA,SAAS,eAAe,GAAG,SAAS;CAClC,OAAO,QAAQ,QACZ,iBAAiB,oBAAoB;EACpC,GAAG;EACH,GAAG,kBAAkB,OAAO,iBAAiB,CAAC;CAChD,IACA,CAAC,CACH;AACF;AAsHA,SAAS,uBAAuB,UAAU;CACxC,OAAO,OAAO,YAAY,CAAC,GAAG,SAAS,OAAO,CAAC;AACjD;AAIA,IAAI,OAAO;AACX,IAAI,SAAS,mBAAmB;AAChC,IAAI,SAAS,OAAO,IAAI,MAAM;AAC9B,IAAI;AAAI,IAAA;AACR,IAAI,gBAAgB,eAAe,KAAK,YAAY,KAAK,QAAQ,GAAA,CAAI;CACnE,YAAY,EACV,KACA,YACA,YACA,OACA,UAAU,SAAS,OAAO,sBAAsB,IAAI,IAAI,WAAW,GAAG,eAAe,sBAAsB,IAAI,IAAI,WAClH;EACD,MAAM;GAAE;GAAM;GAAS;EAAM,CAAC;EAC9B,KAAK,MAAM;EACX,KAAK,MAAM;EACX,KAAK,aAAa;EAClB,KAAK,aAAa;CACpB;CACA,OAAO,WAAW,OAAO;EACvB,OAAO,WAAW,UAAU,OAAO,MAAM;CAC3C;AACF;AAGA,eAAe,mBAAmB,UAAU;CAC1C,IAAI;CACJ,IAAI;EACF,QAAQ,MAAM,SAAS,SAAS,OAAO,KAAK,IAAI,IAAI,OAAO;CAC7D,SAAS,GAAG,CACZ;AACF;AAiMA,IAAI,qBAAqB,WAAW;AACE,mBAAmB,kBAAkB;AAY3E,SAAS,mBAAmB,OAAO;CACjC,MAAM,SAAS,SAAS,UAAU,SAAS,KAAK,KAAK;CACrD,OAAO,OAAO,SAAS,sBAAsB,KAAK,OAAO,SAAS,wBAAwB;AAC5F;AA4FA,IAAI,4BAA4B,IAAI,OAAO,OAAO;AAClD,eAAe,0BAA0B,EACvC,UACA,KACA,WAAW,6BACV;CACD,MAAM,gBAAgB,SAAS,QAAQ,IAAI,gBAAgB;CAC3D,IAAI,iBAAiB,MAAM;EACzB,MAAM,SAAS,SAAS,eAAe,EAAE;EACzC,IAAI,CAAC,MAAM,MAAM,KAAK,SAAS,UAAU;GACvC,MAAM,mBAAmB,QAAQ;GACjC,MAAM,IAAI,cAAc;IACtB;IACA,SAAS,eAAe,IAAI,4BAA4B,SAAS,0BAA0B,OAAO;GACpG,CAAC;EACH;CACF;CACA,MAAM,OAAO,SAAS;CACtB,IAAI,QAAQ,MACV,uBAAO,IAAI,WAAW,CAAC;CAEzB,MAAM,SAAS,KAAK,UAAU;CAC9B,MAAM,SAAS,CAAC;CAChB,IAAI,aAAa;CACjB,IAAI;EACF,OAAO,MAAM;GACX,MAAM,EAAE,MAAM,UAAU,MAAM,OAAO,KAAK;GAC1C,IAAI,MACF;GAEF,cAAc,MAAM;GACpB,IAAI,aAAa,UACf,MAAM,IAAI,cAAc;IACtB;IACA,SAAS,eAAe,IAAI,4BAA4B,SAAS;GACnE,CAAC;GAEH,OAAO,KAAK,KAAK;EACnB;CACF,UAAU;EACR,IAAI;GACF,MAAM,OAAO,OAAO;EACtB,UAAU;GACR,OAAO,YAAY;EACrB;CACF;CACA,MAAM,SAAS,IAAI,WAAW,UAAU;CACxC,IAAI,SAAS;CACb,KAAK,MAAM,SAAS,QAAQ;EAC1B,OAAO,IAAI,OAAO,MAAM;EACxB,UAAU,MAAM;CAClB;CACA,OAAO;AACT;AAIA,IAAI,qBAAqB,EACvB,QACA,OAAO,IACP,WAAW,kEACX,YAAY,QACV,CAAC,MAAM;CACT,MAAM,kBAAkB;EACtB,MAAM,iBAAiB,SAAS;EAChC,MAAM,QAAQ,IAAI,MAAM,IAAI;EAC5B,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,KACxB,MAAM,KAAK,SAAS,KAAK,OAAO,IAAI,iBAAiB;EAEvD,OAAO,MAAM,KAAK,EAAE;CACtB;CACA,IAAI,UAAU,MACZ,OAAO;CAET,IAAI,SAAS,SAAS,SAAS,GAC7B,MAAM,IAAI,qBAAqB;EAC7B,UAAU;EACV,SAAS,kBAAkB,UAAU,sCAAsC,SAAS;CACtF,CAAC;CAEH,aAAa,GAAG,SAAS,YAAY,UAAU;AACjD;AACA,IAAI,aAAa,kBAAkB;AAuBnC,SAAS,aAAa,OAAO;CAC3B,QAAQ,iBAAiB,SAAS,iBAAiB,kBAAkB,MAAM,SAAS,gBAAgB,MAAM,SAAS,qBACnH,MAAM,SAAS;AACjB;AAGA,IAAI,8BAA8B,CAAC,gBAAgB,iBAAiB;AACpE,SAAS,iBAAiB,EACxB,OACA,KACA,qBACC;CACD,IAAI,aAAa,KAAK,GACpB,OAAO;CAET,IAAI,iBAAiB,aAAa,4BAA4B,SAAS,MAAM,QAAQ,YAAY,CAAC,GAAG;EACnG,MAAM,QAAQ,MAAM;EACpB,IAAI,SAAS,MACX,OAAO,IAAI,aAAa;GACtB,SAAS,0BAA0B,MAAM;GACzC;GACA;GACA;GACA,aAAa;EAEf,CAAC;CAEL;CACA,OAAO;AACT;AAGA,SAAS,+BAA+B,gBAAgB,YAAY;CAClE,IAAI,KAAK,KAAK;CACd,IAAI,cAAc,QAChB,OAAO;CAET,KAAK,MAAM,cAAc,cAAc,OAAO,KAAK,IAAI,IAAI,WACzD,OAAO,WAAW,cAAc,UAAU,UAAU,YAAY;CAElE,KAAK,MAAM,MAAM,cAAc,YAAY,OAAO,KAAK,IAAI,IAAI,aAAa,OAAO,KAAK,IAAI,GAAG,MAC7F,OAAO,mBAAmB,cAAc,QAAQ,QAAQ,UAAU,CAAC;CAErE,IAAI,cAAc,aAChB,OAAO;CAET,OAAO;AACT;AAGA,SAASC,mBAAiB,SAAS;CACjC,IAAI,WAAW,MACb,OAAO,CAAC;CAEV,MAAM,aAAa,CAAC;CACpB,IAAI,mBAAmB,SACrB,QAAQ,SAAS,OAAO,QAAQ;EAC9B,WAAW,IAAI,YAAY,KAAK;CAClC,CAAC;MACI;EACL,IAAI,CAAC,MAAM,QAAQ,OAAO,GACxB,UAAU,OAAO,QAAQ,OAAO;EAElC,KAAK,MAAM,CAAC,KAAK,UAAU,SACzB,IAAI,SAAS,MACX,WAAW,IAAI,YAAY,KAAK;CAGtC;CACA,OAAO;AACT;AAGA,SAAS,oBAAoB,SAAS,GAAG,sBAAsB;CAC7D,MAAM,oBAAoB,IAAI,QAAQA,mBAAiB,OAAO,CAAC;CAC/D,MAAM,yBAAyB,kBAAkB,IAAI,YAAY,KAAK;CACtE,kBAAkB,IAChB,cACA,CAAC,wBAAwB,GAAG,oBAAoB,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,CAC5E;CACA,OAAO,OAAO,YAAY,kBAAkB,QAAQ,CAAC;AACvD;AAGA,IAAIC,YAAiB;AAwIrB,SAAS,WAAW,EAClB,QACA,yBACA,sBAAsB,UACtB,eACC;CACD,IAAI,OAAO,WAAW,UACpB,OAAO;CAET,IAAI,UAAU,MACZ,MAAM,IAAI,gBAAgB,EACxB,SAAS,GAAG,YAAY,4BAC1B,CAAC;CAEH,IAAI,OAAO,YAAY,aACrB,MAAM,IAAI,gBAAgB,EACxB,SAAS,GAAG,YAAY,0CAA0C,oBAAoB,0EACxF,CAAC;CAEH,SAAS,QAAQ,IAAI;CACrB,IAAI,UAAU,MACZ,MAAM,IAAI,gBAAgB,EACxB,SAAS,GAAG,YAAY,0CAA0C,oBAAoB,qBAAqB,wBAAwB,wBACrI,CAAC;CAEH,IAAI,OAAO,WAAW,UACpB,MAAM,IAAI,gBAAgB,EACxB,SAAS,GAAG,YAAY,8CAA8C,wBAAwB,wCAChG,CAAC;CAEH,OAAO;AACT;AAsBA,SAAS,YAAY,EACnB,cACA,yBACA,aACA,eACC;CACD,IAAI,OAAO,iBAAiB,UAC1B,OAAO;CAET,IAAI,gBAAgB,MAClB,MAAM,IAAI,iBAAiB,EACzB,SAAS,GAAG,YAAY,4BAC1B,CAAC;CAEH,IAAI,OAAO,YAAY,aACrB,MAAM,IAAI,iBAAiB,EACzB,SAAS,GAAG,YAAY,0CAA0C,YAAY,0EAChF,CAAC;CAEH,eAAe,QAAQ,IAAI;CAC3B,IAAI,gBAAgB,MAClB,MAAM,IAAI,iBAAiB,EACzB,SAAS,GAAG,YAAY,0CAA0C,YAAY,qBAAqB,wBAAwB,wBAC7H,CAAC;CAEH,IAAI,OAAO,iBAAiB,UAC1B,MAAM,IAAI,iBAAiB,EACzB,SAAS,GAAG,YAAY,8CAA8C,wBAAwB,wCAChG,CAAC;CAEH,OAAO;AACT;AAGA,SAAS,qBAAqB,WAAW;CACvC,IAAI;CACJ,MAAM,CAAC,OAAO,UAAU,MAAM,UAAU,YAAY,CAAC,CAAC,MAAM,GAAG;CAC/D,QAAQ,MAAM;EACZ,MAAM;EACN,SAAS;EACT,MAAM;EACN,KAAK;EACL,SAAS;CACX,EAAE,aAAa,OAAO,MAAM;AAC9B;AASA,IAAI,iBAAiB;AACrB,IAAI,uBAAuB;AAC3B,SAAS,OAAO,MAAM;CACpB,MAAM,MAAM,KAAK,MAAM,IAAI;CAC3B,IAAI,QAAQ,QAAQ,OAAO,QAAQ,UACjC,OAAO;CAET,IAAI,eAAe,KAAK,IAAI,MAAM,SAAS,qBAAqB,KAAK,IAAI,MAAM,OAC7E,OAAO;CAET,OAAO,OAAO,GAAG;AACnB;AACA,SAAS,OAAO,KAAK;CACnB,IAAI,OAAO,CAAC,GAAG;CACf,OAAO,KAAK,QAAQ;EAClB,MAAM,QAAQ;EACd,OAAO,CAAC;EACR,KAAK,MAAM,QAAQ,OAAO;GACxB,IAAI,OAAO,UAAU,eAAe,KAAK,MAAM,WAAW,GACxD,MAAM,IAAI,YAAY,8CAA8C;GAEtE,IAAI,OAAO,UAAU,eAAe,KAAK,MAAM,aAAa,KAAK,KAAK,gBAAgB,QAAQ,OAAO,KAAK,gBAAgB,YAAY,OAAO,UAAU,eAAe,KAAK,KAAK,aAAa,WAAW,GACtM,MAAM,IAAI,YAAY,8CAA8C;GAEtE,KAAK,MAAM,OAAO,MAAM;IACtB,MAAM,QAAQ,KAAK;IACnB,IAAI,SAAS,OAAO,UAAU,UAC5B,KAAK,KAAK,KAAK;GAEnB;EACF;CACF;CACA,OAAO;AACT;AACA,SAAS,gBAAgB,MAAM;CAC7B,MAAM,EAAE,oBAAoB;CAC5B,IAAI;EACF,MAAM,kBAAkB;CAC1B,SAAS,GAAG;EACV,OAAO,OAAO,IAAI;CACpB;CACA,IAAI;EACF,OAAO,OAAO,IAAI;CACpB,UAAU;EACR,MAAM,kBAAkB;CAC1B;AACF;AAOA,IAAI,kBAAkC,uBAAO,IAAI,qBAAqB;AACtE,SAAS,UAAU,UAAU;CAC3B,OAAO;GAAG,kBAAkB;EAAM;CAAS;AAC7C;AACA,SAAS,YAAY,OAAO;CAC1B,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,mBAAmB,SAAS,MAAM,qBAAqB,QAAQ,cAAc;AACrI;AACA,SAAS,cAAc,iBAAiB;CACtC,IAAI;CACJ,aAAa;EACX,IAAI,cAAc,MAChB,aAAa,gBAAgB;EAE/B,OAAO;CACT;AACF;AACA,SAAS,YAAY,OAAO;CAC1B,OAAO,YAAY,KAAK,IAAI,QAAQ,eAAe,QAAQ,wBAAwB,KAAK,IAAI,MAAM;AACpG;AACA,SAAS,wBAAwB,gBAAgB;CAC/C,OAAO,UAAU,OAAO,UAAU;EAChC,MAAM,SAAS,MAAM,eAAe,YAAY,CAAC,SAAS,KAAK;EAC/D,OAAO,OAAO,UAAU,OAAO;GAAE,SAAS;GAAM,OAAO,OAAO;EAAM,IAAI;GACtE,SAAS;GACT,OAAO,IAAI,oBAAoB;IAC7B;IACA,OAAO,OAAO;GAChB,CAAC;EACH;CACF,CAAC;AACH;AAGA,eAAe,cAAc,EAC3B,OACA,UACC;CACD,MAAM,SAAS,MAAM,kBAAkB;EAAE;EAAO;CAAO,CAAC;CACxD,IAAI,CAAC,OAAO,SACV,MAAMC,oBAAqB,KAAK;EAAE;EAAO,OAAO,OAAO;CAAM,CAAC;CAEhE,OAAO,OAAO;AAChB;AACA,eAAe,kBAAkB,EAC/B,OACA,UACC;CACD,MAAM,aAAa,YAAY,MAAM;CACrC,IAAI;EACF,IAAI,WAAW,YAAY,MACzB,OAAO;GAAE,SAAS;GAAM;GAAO,UAAU;EAAM;EAEjD,MAAM,SAAS,MAAM,WAAW,SAAS,KAAK;EAC9C,IAAI,OAAO,SACT,OAAO;GAAE,SAAS;GAAM,OAAO,OAAO;GAAO,UAAU;EAAM;EAE/D,OAAO;GACL,SAAS;GACT,OAAOA,oBAAqB,KAAK;IAAE;IAAO,OAAO,OAAO;GAAM,CAAC;GAC/D,UAAU;EACZ;CACF,SAAS,OAAO;EACd,OAAO;GACL,SAAS;GACT,OAAOA,oBAAqB,KAAK;IAAE;IAAO,OAAO;GAAM,CAAC;GACxD,UAAU;EACZ;CACF;AACF;AAGA,eAAe,UAAU,EACvB,MACA,UACC;CACD,IAAI;EACF,MAAM,QAAQ,gBAAgB,IAAI;EAClC,IAAI,UAAU,MACZ,OAAO;EAET,OAAO,cAAc;GAAE;GAAO;EAAO,CAAC;CACxC,SAAS,OAAO;EACd,IAAI,eAAe,WAAW,KAAK,KAAKC,oBAAqB,WAAW,KAAK,GAC3E,MAAM;EAER,MAAM,IAAI,eAAe;GAAE;GAAM,OAAO;EAAM,CAAC;CACjD;AACF;AACA,eAAe,cAAc,EAC3B,MACA,UACC;CACD,IAAI;EACF,MAAM,QAAQ,gBAAgB,IAAI;EAClC,IAAI,UAAU,MACZ,OAAO;GAAE,SAAS;GAAM;GAAO,UAAU;EAAM;EAEjD,OAAO,MAAM,kBAAkB;GAAE;GAAO;EAAO,CAAC;CAClD,SAAS,OAAO;EACd,OAAO;GACL,SAAS;GACT,OAAO,eAAe,WAAW,KAAK,IAAI,QAAQ,IAAI,eAAe;IAAE;IAAM,OAAO;GAAM,CAAC;GAC3F,UAAU,KAAK;EACjB;CACF;AACF;AACA,SAAS,eAAe,OAAO;CAC7B,IAAI;EACF,gBAAgB,KAAK;EACrB,OAAO;CACT,SAAS,GAAG;EACV,OAAO;CACT;AACF;AAMA,SAAS,qBAAqB,EAC5B,QACA,UACC;CACD,OAAO,OAAO,YAAY,IAAI,kBAAkB,CAAC,CAAC,CAAC,YAAY,IAAIC,aAAAA,wBAAwB,CAAC,CAAC,CAAC,YAC5F,IAAI,gBAAgB,EAClB,MAAM,UAAU,EAAE,QAAQ,YAAY;EACpC,IAAI,SAAS,UACX;EAEF,WAAW,QAAQ,MAAM,cAAc;GAAE,MAAM;GAAM;EAAO,CAAC,CAAC;CAChE,EACF,CAAC,CACH;AACF;AAIA,eAAe,qBAAqB,EAClC,UACA,iBACA,UACC;CACD,KAAK,mBAAmB,OAAO,KAAK,IAAI,gBAAgB,cAAc,MACpE;CAEF,MAAM,wBAAwB,MAAM,kBAAkB;EACpD,OAAO,gBAAgB;EACvB;CACF,CAAC;CACD,IAAI,CAAC,sBAAsB,SACzB,MAAM,IAAIC,qBAAsB;EAC9B,UAAU;EACV,SAAS,WAAW,SAAS;EAC7B,OAAO,sBAAsB;CAC/B,CAAC;CAEH,OAAO,sBAAsB;AAC/B;AAIA,IAAI,0BAA0B,WAAW;AACzC,IAAI,gBAAgB,OAAO,EACzB,KACA,SACA,MACA,uBACA,2BACA,aACA,YACI,UAAU;CACd;CACA,SAAS;EACP,gBAAgB;EAChB,GAAG;CACL;CACA,MAAM;EACJ,SAAS,KAAK,UAAU,IAAI;EAC5B,QAAQ;CACV;CACA;CACA;CACA;CACA;AACF,CAAC;AACD,IAAI,oBAAoB,OAAO,EAC7B,KACA,SACA,UACA,uBACA,2BACA,aACA,YACI,UAAU;CACd;CACA;CACA,MAAM;EACJ,SAAS;EACT,QAAQ,OAAO,YAAY,SAAS,QAAQ,CAAC;CAC/C;CACA;CACA;CACA;CACA;AACF,CAAC;AACD,IAAI,YAAY,OAAO,EACrB,KACA,UAAU,CAAC,GACX,MACA,2BACA,uBACA,aACA,QAAQ,kBAAkB,QACtB;CACJ,IAAI;EACF,MAAM,WAAW,MAAM,MAAM,KAAK;GAChC,QAAQ;GACR,SAAS,oBACP,SACA,yBAAyBJ,aACzB,+BAA+B,CACjC;GACA,MAAM,KAAK;GACX,QAAQ;EACV,CAAC;EACD,MAAM,kBAAkB,uBAAuB,QAAQ;EACvD,IAAI,CAAC,SAAS,IAAI;GAChB,IAAI;GACJ,IAAI;IACF,mBAAmB,MAAM,sBAAsB;KAC7C;KACA;KACA,mBAAmB,KAAK;IAC1B,CAAC;GACH,SAAS,OAAO;IACd,IAAI,aAAa,KAAK,KAAKK,aAAc,WAAW,KAAK,GACvD,MAAM;IAER,MAAM,IAAIA,aAAc;KACtB,SAAS;KACT,OAAO;KACP,YAAY,SAAS;KACrB;KACA;KACA,mBAAmB,KAAK;IAC1B,CAAC;GACH;GACA,MAAM,iBAAiB;EACzB;EACA,IAAI;GACF,OAAO,MAAM,0BAA0B;IACrC;IACA;IACA,mBAAmB,KAAK;GAC1B,CAAC;EACH,SAAS,OAAO;GACd,IAAI,iBAAiB,OACf;QAAA,aAAa,KAAK,KAAKA,aAAc,WAAW,KAAK,GACvD,MAAM;GAAA;GAGV,MAAM,IAAIA,aAAc;IACtB,SAAS;IACT,OAAO;IACP,YAAY,SAAS;IACrB;IACA;IACA,mBAAmB,KAAK;GAC1B,CAAC;EACH;CACF,SAAS,OAAO;EACd,MAAM,iBAAiB;GAAE;GAAO;GAAK,mBAAmB,KAAK;EAAO,CAAC;CACvE;AACF;AAGA,SAAS,KAAK,OAAO;CACnB,OAAO;AACT;AAiCA,SAAS,iDAAiD,EACxD,IACA,MAAM,OACN,aACA,gBACC;CACD,QAAQ,EACN,SACA,eACA,cACA,cACA,kBACA,GAAG,WACC,KAAK;EACT,MAAM;EACN;EACA,MAAM;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;AACH;AAmBA,IAAI,cAAc,IAAI,YAAY;AAClC,eAAe,uBAAuB,EACpC,UACA,OACC;CACD,OAAO,YAAY,OACjB,MAAM,0BAA0B;EAC9B;EACA;CACF,CAAC,CACH;AACF;AACA,IAAI,kCAAkC,EACpC,aACA,gBACA,kBACI,OAAO,EAAE,UAAU,KAAK,wBAAwB;CACpD,MAAM,eAAe,MAAM,uBAAuB;EAAE;EAAU;CAAI,CAAC;CACnE,MAAM,kBAAkB,uBAAuB,QAAQ;CACvD,IAAI,aAAa,KAAK,MAAM,IAC1B,OAAO;EACL;EACA,OAAO,IAAIC,aAAc;GACvB,SAAS,SAAS;GAClB;GACA;GACA,YAAY,SAAS;GACrB;GACA;GACA,aAAa,eAAe,OAAO,KAAK,IAAI,YAAY,QAAQ;EAClE,CAAC;CACH;CAEF,IAAI;EACF,MAAM,cAAc,MAAM,UAAU;GAClC,MAAM;GACN,QAAQ;EACV,CAAC;EACD,OAAO;GACL;GACA,OAAO,IAAIA,aAAc;IACvB,SAAS,eAAe,WAAW;IACnC;IACA;IACA,YAAY,SAAS;IACrB;IACA;IACA,MAAM;IACN,aAAa,eAAe,OAAO,KAAK,IAAI,YAAY,UAAU,WAAW;GAC/E,CAAC;EACH;CACF,SAAS,YAAY;EACnB,OAAO;GACL;GACA,OAAO,IAAIA,aAAc;IACvB,SAAS,SAAS;IAClB;IACA;IACA,YAAY,SAAS;IACrB;IACA;IACA,aAAa,eAAe,OAAO,KAAK,IAAI,YAAY,QAAQ;GAClE,CAAC;EACH;CACF;AACF;AACA,IAAI,oCAAoC,gBAAgB,OAAO,EAAE,eAAe;CAC9E,MAAM,kBAAkB,uBAAuB,QAAQ;CACvD,IAAI,SAAS,QAAQ,MACnB,MAAM,IAAI,uBAAuB,CAAC,CAAC;CAErC,OAAO;EACL;EACA,OAAO,qBAAqB;GAC1B,QAAQ,SAAS;GACjB,QAAQ;EACV,CAAC;CACH;AACF;AA4BA,IAAI,6BAA6B,mBAAmB,OAAO,EAAE,UAAU,KAAK,wBAAwB;CAClG,MAAM,eAAe,MAAM,uBAAuB;EAAE;EAAU;CAAI,CAAC;CACnE,MAAM,eAAe,MAAM,cAAc;EACvC,MAAM;EACN,QAAQ;CACV,CAAC;CACD,MAAM,kBAAkB,uBAAuB,QAAQ;CACvD,IAAI,CAAC,aAAa,SAChB,MAAM,IAAIA,aAAc;EACtB,SAAS;EACT,OAAO,aAAa;EACpB,YAAY,SAAS;EACrB;EACA;EACA;EACA;CACF,CAAC;CAEH,OAAO;EACL;EACA,OAAO,aAAa;EACpB,UAAU,aAAa;CACzB;AACF;AACA,IAAI,oCAAoC,OAAO,EAAE,UAAU,KAAK,wBAAwB;CACtF,MAAM,kBAAkB,uBAAuB,QAAQ;CACvD,IAAI,CAAC,SAAS,MACZ,MAAM,IAAIA,aAAc;EACtB,SAAS;EACT;EACA;EACA,YAAY,SAAS;EACrB;EACA,cAAc,KAAK;CACrB,CAAC;CAEH,IAAI;EACF,MAAM,SAAS,MAAM,SAAS,YAAY;EAC1C,OAAO;GACL;GACA,OAAO,IAAI,WAAW,MAAM;EAC9B;CACF,SAAS,OAAO;EACd,MAAM,IAAIA,aAAc;GACtB,SAAS;GACT;GACA;GACA,YAAY,SAAS;GACrB;GACA,cAAc,KAAK;GACnB,OAAO;EACT,CAAC;CACH;AACF;AAkBA,IAAI,eAA+B,uBAAO,IAAI,kBAAkB;AAChE,SAAS,WAAW,cAAc;CAChC,IAAI;CACJ,aAAa;EACX,IAAI,UAAU,MACZ,SAAS,aAAa;EAExB,OAAO;CACT;AACF;AACA,SAAS,WAAW,aAAa,EAC/B,aACE,CAAC,GAAG;CACN,OAAO;GACJ,eAAe;EAChB,OAAO,KAAK;GAEX,kBAAkB;EACnB,IAAI,aAAa;GACf,IAAI,OAAO,gBAAgB,YACzB,cAAc,YAAY;GAE5B,OAAO;EACT;EACA;CACF;AACF;AAMA,SAAS,oCAAoC,aAAa;CACxD,IAAI,YAAY,SAAS,UAAU;EACjC,YAAY,uBAAuB;EACnC,MAAM,aAAa,YAAY;EAC/B,IAAI,cAAc,MAChB,KAAK,MAAM,YAAY,YACrB,WAAW,YAAY,oCACrB,WAAW,SACb;CAGN;CACA,IAAI,YAAY,SAAS,WAAW,YAAY,SAAS,MACvD,IAAI,MAAM,QAAQ,YAAY,KAAK,GACjC,YAAY,QAAQ,YAAY,MAAM,KACnC,SAAS,oCAAoC,IAAI,CACpD;MAEA,YAAY,QAAQ,oCAClB,YAAY,KACd;CAGJ,OAAO;AACT;AAGA,IAAI,iBAAiC,uBACnC,mDACF;AACA,IAAI,iBAAiB;CACnB,MAAM,KAAK;CACX,cAAc;CACd,UAAU,CAAC,GAAG;CACd,gBAAgB;CAChB,cAAc;CACd,cAAc;CACd,aAAa;CACb,0BAA0B;CAC1B,6BAA6B;CAC7B,8BAA8B;CAC9B,gBAAgB;CAChB,cAAc;CACd,aAAa,CAAC;CACd,eAAe;CACf,iBAAiB;CACjB,iBAAiB;CACjB,eAAe;CACf,gBAAgB;CAChB,cAAc;AAChB;AACA,IAAI,qBAAqB,YAAY,OAAO,YAAY,WAAW;CACjE,GAAG;CACH,MAAM;AACR,IAAI;CACF,GAAG;CACH,GAAG;AACL;AAMA,SAAS,cAAc;CACrB,OAAO,CAAC;AACV;AAIA,SAAS,cAAc,KAAK,MAAM;CAChC,IAAI,KAAK,KAAK;CACd,MAAM,MAAM,EACV,MAAM,QACR;CACA,MAAM,MAAM,IAAI,SAAS,OAAO,KAAK,IAAI,IAAI,WAAW,MAAM,MAAM,IAAI,SAAS,OAAO,KAAK,IAAI,IAAI,SAAS,OAAO,KAAK,IAAI,GAAG,cAAcC,OAAAA,sBAAsB,QACnK,IAAI,QAAQ,SAAS,IAAI,KAAK,MAAM;EAClC,GAAG;EACH,aAAa,CAAC,GAAG,KAAK,aAAa,OAAO;CAC5C,CAAC;CAEH,IAAI,IAAI,WACN,IAAI,WAAW,IAAI,UAAU;CAE/B,IAAI,IAAI,WACN,IAAI,WAAW,IAAI,UAAU;CAE/B,IAAI,IAAI,aAAa;EACnB,IAAI,WAAW,IAAI,YAAY;EAC/B,IAAI,WAAW,IAAI,YAAY;CACjC;CACA,OAAO;AACT;AAGA,SAAS,eAAe,KAAK;CAC3B,MAAM,MAAM;EACV,MAAM;EACN,QAAQ;CACV;CACA,IAAI,CAAC,IAAI,QAAQ,OAAO;CACxB,KAAK,MAAM,SAAS,IAAI,QACtB,QAAQ,MAAM,MAAd;EACE,KAAK;GACH,IAAI,MAAM,WACR,IAAI,UAAU,MAAM;QAEpB,IAAI,mBAAmB,MAAM;GAE/B;EACF,KAAK;GACH,IAAI,MAAM,WACR,IAAI,UAAU,MAAM;QAEpB,IAAI,mBAAmB,MAAM;GAE/B;EACF,KAAK;GACH,IAAI,aAAa,MAAM;GACvB;CACJ;CAEF,OAAO;AACT;AAGA,SAAS,kBAAkB;CACzB,OAAO,EAAE,MAAM,UAAU;AAC3B;AAGA,SAAS,gBAAgB,MAAM,MAAM;CACnC,OAAO,SAAS,KAAK,KAAK,MAAM,IAAI;AACtC;AAGA,IAAI,iBAAiB,KAAK,SAAS;CACjC,OAAO,SAAS,IAAI,UAAU,MAAM,IAAI;AAC1C;AAGA,SAAS,aAAa,KAAK,MAAM,sBAAsB;CACrD,MAAM,WAAW,wBAAwB,OAAO,uBAAuB,KAAK;CAC5E,IAAI,MAAM,QAAQ,QAAQ,GACxB,OAAO,EACL,OAAO,SAAS,KAAK,MAAM,MAAM,aAAa,KAAK,MAAM,IAAI,CAAC,EAChE;CAEF,QAAQ,UAAR;EACE,KAAK;EACL,KAAK,oBACH,OAAO;GACL,MAAM;GACN,QAAQ;EACV;EACF,KAAK,eACH,OAAO;GACL,MAAM;GACN,QAAQ;EACV;EACF,KAAK,WACH,OAAO,kBAAkB,GAAG;CAChC;AACF;AACA,IAAI,qBAAqB,QAAQ;CAC/B,MAAM,MAAM;EACV,MAAM;EACN,QAAQ;CACV;CACA,KAAK,MAAM,SAAS,IAAI,QACtB,QAAQ,MAAM,MAAd;EACE,KAAK;GACH,IAAI,UAAU,MAAM;GACpB;EACF,KAAK;GACH,IAAI,UAAU,MAAM;GACpB;CACJ;CAEF,OAAO;AACT;AAGA,SAAS,gBAAgB,MAAM,MAAM;CACnC,OAAO;EACL,GAAG,SAAS,KAAK,UAAU,MAAM,IAAI;EACrC,SAAS,KAAK,aAAa;CAC7B;AACF;AAGA,SAAS,gBAAgB,MAAM,MAAM;CACnC,OAAO,KAAK,mBAAmB,UAAU,SAAS,KAAK,OAAO,MAAM,IAAI,IAAI,YAAY;AAC1F;AAGA,SAAS,aAAa,KAAK;CACzB,OAAO;EACL,MAAM;EACN,MAAM,MAAM,KAAK,IAAI,MAAM;CAC7B;AACF;AAGA,IAAI,0BAA0B,SAAS;CACrC,IAAI,UAAU,QAAQ,KAAK,SAAS,UAAU,OAAO;CACrD,OAAO,WAAW;AACpB;AACA,SAAS,qBAAqB,KAAK,MAAM;CACvC,MAAM,QAAQ,CACZ,SAAS,IAAI,KAAK,MAAM;EACtB,GAAG;EACH,aAAa;GAAC,GAAG,KAAK;GAAa;GAAS;EAAG;CACjD,CAAC,GACD,SAAS,IAAI,MAAM,MAAM;EACvB,GAAG;EACH,aAAa;GAAC,GAAG,KAAK;GAAa;GAAS;EAAG;CACjD,CAAC,CACH,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC;CACnB,MAAM,cAAc,CAAC;CACrB,MAAM,SAAS,WAAW;EACxB,IAAI,uBAAuB,MAAM,GAC/B,YAAY,KAAK,GAAG,OAAO,KAAK;OAC3B;GACL,IAAI,eAAe;GACnB,IAAI,0BAA0B,UAAU,OAAO,yBAAyB,OAAO;IAC7E,MAAM,EAAE,sBAAsB,GAAG,SAAS;IAC1C,eAAe;GACjB;GACA,YAAY,KAAK,YAAY;EAC/B;CACF,CAAC;CACD,OAAO,YAAY,SAAS,EAAE,OAAO,YAAY,IAAI,KAAK;AAC5D;AAGA,SAAS,gBAAgB,KAAK;CAC5B,MAAM,aAAa,OAAO,IAAI;CAC9B,IAAI,eAAe,YAAY,eAAe,YAAY,eAAe,aAAa,eAAe,UACnG,OAAO,EACL,MAAM,MAAM,QAAQ,IAAI,KAAK,IAAI,UAAU,SAC7C;CAEF,OAAO;EACL,MAAM,eAAe,WAAW,YAAY;EAC5C,OAAO,IAAI;CACb;AACF;AAQA,IAAI,aAAa,KAAK;AACtB,IAAI,cAAc;;;;CAIhB,MAAM;CACN,OAAO;CACP,MAAM;;;;CAIN,OAAO;;;;;;;;;;;;CAYP,aAAa;EACX,IAAI,eAAe,KAAK,GACtB,aAAa,OACX,wDACA,GACF;EAEF,OAAO;CACT;;;;CAIA,MAAM;;;;CAIN,MAAM;CACN,UAAU;;;;CAIV,MAAM;CACN,UAAU;CACV,QAAQ;CACR,WAAW;CACX,QAAQ;CACR,KAAK;AACP;AACA,SAAS,eAAe,KAAK,MAAM;CACjC,MAAM,MAAM,EACV,MAAM,SACR;CACA,IAAI,IAAI,QACN,KAAK,MAAM,SAAS,IAAI,QACtB,QAAQ,MAAM,MAAd;EACE,KAAK;GACH,IAAI,YAAY,OAAO,IAAI,cAAc,WAAW,KAAK,IAAI,IAAI,WAAW,MAAM,KAAK,IAAI,MAAM;GACjG;EACF,KAAK;GACH,IAAI,YAAY,OAAO,IAAI,cAAc,WAAW,KAAK,IAAI,IAAI,WAAW,MAAM,KAAK,IAAI,MAAM;GACjG;EACF,KAAK;GACH,QAAQ,KAAK,eAAb;IACE,KAAK;KACH,UAAU,KAAK,SAAS,MAAM,SAAS,IAAI;KAC3C;IACF,KAAK;KACH,UAAU,KAAK,aAAa,MAAM,SAAS,IAAI;KAC/C;IACF,KAAK;KACH,WAAW,KAAK,YAAY,OAAO,MAAM,SAAS,IAAI;KACtD;GACJ;GACA;EACF,KAAK;GACH,UAAU,KAAK,OAAO,MAAM,SAAS,IAAI;GACzC;EACF,KAAK;GACH,UAAU,KAAK,QAAQ,MAAM,SAAS,IAAI;GAC1C;EACF,KAAK;GACH,WAAW,KAAK,MAAM,OAAO,MAAM,SAAS,IAAI;GAChD;EACF,KAAK;GACH,WAAW,KAAK,YAAY,MAAM,MAAM,SAAS,IAAI;GACrD;EACF,KAAK;GACH,WAAW,KAAK,YAAY,OAAO,MAAM,SAAS,IAAI;GACtD;EACF,KAAK;GACH,WACE,KACA,OAAO,IAAI,wBAAwB,MAAM,OAAO,IAAI,GAAG,GACvD,MAAM,SACN,IACF;GACA;EACF,KAAK;GACH,WACE,KACA,OAAO,GAAG,wBAAwB,MAAM,OAAO,IAAI,EAAE,EAAE,GACvD,MAAM,SACN,IACF;GACA;EACF,KAAK;GACH,UAAU,KAAK,aAAa,MAAM,SAAS,IAAI;GAC/C;EACF,KAAK;GACH,UAAU,KAAK,QAAQ,MAAM,SAAS,IAAI;GAC1C;EACF,KAAK;GACH,UAAU,KAAK,QAAQ,MAAM,SAAS,IAAI;GAC1C;EACF,KAAK;GACH,UAAU,KAAK,YAAY,MAAM,SAAS,IAAI;GAC9C;EACF,KAAK;GACH,IAAI,YAAY,OAAO,IAAI,cAAc,WAAW,KAAK,IAAI,IAAI,WAAW,MAAM,KAAK,IAAI,MAAM;GACjG,IAAI,YAAY,OAAO,IAAI,cAAc,WAAW,KAAK,IAAI,IAAI,WAAW,MAAM,KAAK,IAAI,MAAM;GACjG;EACF,KAAK;GACH,WACE,KACA,OAAO,wBAAwB,MAAM,OAAO,IAAI,CAAC,GACjD,MAAM,SACN,IACF;GACA;EAEF,KAAK;GACH,IAAI,MAAM,YAAY,MACpB,UAAU,KAAK,QAAQ,MAAM,SAAS,IAAI;GAE5C,IAAI,MAAM,YAAY,MACpB,UAAU,KAAK,QAAQ,MAAM,SAAS,IAAI;GAE5C;EAEF,KAAK;GACH,WAAW,KAAK,YAAY,WAAW,MAAM,SAAS,IAAI;GAC1D;EACF,KAAK;GACH,WAAW,KAAK,YAAY,KAAK,MAAM,SAAS,IAAI;GACpD;EACF,KAAK;GACH,IAAI,MAAM,YAAY,MACpB,WAAW,KAAK,YAAY,UAAU,MAAM,SAAS,IAAI;GAE3D,IAAI,MAAM,YAAY,MACpB,WAAW,KAAK,YAAY,UAAU,MAAM,SAAS,IAAI;GAE3D;EAEF,KAAK;GACH,WAAW,KAAK,YAAY,MAAM,GAAG,MAAM,SAAS,IAAI;GACxD;EACF,KAAK;GACH,WAAW,KAAK,YAAY,MAAM,MAAM,SAAS,IAAI;GACrD;EAEF,KAAK;GACH,QAAQ,KAAK,gBAAb;IACE,KAAK;KACH,UAAU,KAAK,UAAU,MAAM,SAAS,IAAI;KAC5C;IAEF,KAAK;KACH,IAAI,kBAAkB;KACtB;IAEF,KAAK;KACH,WAAW,KAAK,YAAY,QAAQ,MAAM,SAAS,IAAI;KACvD;GAEJ;GACA;EAEF,KAAK,UACH,WAAW,KAAK,YAAY,QAAQ,MAAM,SAAS,IAAI;EAEzD,KAAK;EACL,KAAK;EACL,KAAK,QACH;EACF;CAGF;CAGJ,OAAO;AACT;AACA,SAAS,wBAAwB,SAAS,MAAM;CAC9C,OAAO,KAAK,oBAAoB,WAAW,sBAAsB,OAAO,IAAI;AAC9E;AACA,IAAI,gCAAgB,IAAI,IACtB,8DACF;AACA,SAAS,sBAAsB,QAAQ;CACrC,IAAI,SAAS;CACb,KAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;EACtC,IAAI,CAAC,cAAc,IAAI,OAAO,EAAE,GAC9B,UAAU;EAEZ,UAAU,OAAO;CACnB;CACA,OAAO;AACT;AACA,SAAS,UAAU,QAAQ,OAAO,SAAS,MAAM;CAC/C,IAAI;CACJ,IAAI,OAAO,YAAY,MAAM,OAAO,UAAU,OAAO,KAAK,IAAI,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI;EACxF,IAAI,CAAC,OAAO,OACV,OAAO,QAAQ,CAAC;EAElB,IAAI,OAAO,QAAQ;GACjB,OAAO,MAAM,KAAK,EAChB,QAAQ,OAAO,OACjB,CAAC;GACD,OAAO,OAAO;EAChB;EACA,OAAO,MAAM,KAAK;GAChB,QAAQ;GACR,GAAG,WAAW,KAAK,iBAAiB,EAAE,cAAc,EAAE,QAAQ,QAAQ,EAAE;EAC1E,CAAC;CACH,OACE,OAAO,SAAS;AAEpB;AACA,SAAS,WAAW,QAAQ,OAAO,SAAS,MAAM;CAChD,IAAI;CACJ,IAAI,OAAO,aAAa,MAAM,OAAO,UAAU,OAAO,KAAK,IAAI,IAAI,MAAM,MAAM,EAAE,OAAO,IAAI;EAC1F,IAAI,CAAC,OAAO,OACV,OAAO,QAAQ,CAAC;EAElB,IAAI,OAAO,SAAS;GAClB,OAAO,MAAM,KAAK,EAChB,SAAS,OAAO,QAClB,CAAC;GACD,OAAO,OAAO;EAChB;EACA,OAAO,MAAM,KAAK;GAChB,SAAS,yBAAyB,OAAO,IAAI;GAC7C,GAAG,WAAW,KAAK,iBAAiB,EAAE,cAAc,EAAE,SAAS,QAAQ,EAAE;EAC3E,CAAC;CACH,OACE,OAAO,UAAU,yBAAyB,OAAO,IAAI;AAEzD;AACA,SAAS,yBAAyB,OAAO,MAAM;CAC7C,IAAI;CACJ,IAAI,CAAC,KAAK,mBAAmB,CAAC,MAAM,OAClC,OAAO,MAAM;CAEf,MAAM,QAAQ;EACZ,GAAG,MAAM,MAAM,SAAS,GAAG;EAE3B,GAAG,MAAM,MAAM,SAAS,GAAG;EAE3B,GAAG,MAAM,MAAM,SAAS,GAAG;CAE7B;CACA,MAAM,SAAS,MAAM,IAAI,MAAM,OAAO,YAAY,IAAI,MAAM;CAC5D,IAAI,UAAU;CACd,IAAI,YAAY;CAChB,IAAI,cAAc;CAClB,IAAI,cAAc;CAClB,KAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;EACtC,IAAI,WAAW;GACb,WAAW,OAAO;GAClB,YAAY;GACZ;EACF;EACA,IAAI,MAAM,GACJ;OAAA,aACE;QAAA,OAAO,EAAE,CAAC,MAAM,OAAO,GAAG;KAC5B,IAAI,aAAa;MACf,WAAW,OAAO;MAClB,WAAW,GAAG,OAAO,IAAI,GAAG,GAAG,OAAO,KAAK,YAAY;MACvD,cAAc;KAChB,OAAO,IAAI,OAAO,IAAI,OAAO,SAAS,MAAM,OAAO,IAAI,OAAO,OAAO,KAAK,IAAI,IAAI,MAAM,OAAO,IAAI;MACjG,WAAW,OAAO;MAClB,cAAc;KAChB,OACE,WAAW,GAAG,OAAO,KAAK,OAAO,EAAE,CAAC,YAAY;KAElD;IACF;UACK,IAAI,OAAO,EAAE,CAAC,MAAM,OAAO,GAAG;IACnC,WAAW,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC,YAAY,EAAE;IACnD;GACF;;EAEF,IAAI,MAAM,GACJ;OAAA,OAAO,OAAO,KAAK;IACrB,WAAW;;IAEX;GACF,OAAO,IAAI,OAAO,OAAO,KAAK;IAC5B,WAAW;;IAEX;GACF;;EAEF,IAAI,MAAM,KAAK,OAAO,OAAO,KAAK;GAChC,WAAW,cAAc,GAAG,OAAO,GAAG;IACxC,IAAI,OAAO,GAAG;;GAEZ;EACF;EACA,WAAW,OAAO;EAClB,IAAI,OAAO,OAAO,MAChB,YAAY;OACP,IAAI,eAAe,OAAO,OAAO,KACtC,cAAc;OACT,IAAI,CAAC,eAAe,OAAO,OAAO,KACvC,cAAc;CAElB;CACA,IAAI;EACF,IAAI,OAAO,OAAO;CACpB,SAAS,GAAG;EACV,QAAQ,KACN,sCAAsC,KAAK,YAAY,KACrD,GACF,EAAE,sEACJ;EACA,OAAO,MAAM;CACf;CACA,OAAO;AACT;AAGA,SAAS,eAAe,KAAK,MAAM;CACjC,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI;CAC1B,MAAM,SAAS;EACb,MAAM;EACN,uBAAuB,MAAM,SAAS,IAAI,UAAU,MAAM;GACxD,GAAG;GACH,aAAa,CAAC,GAAG,KAAK,aAAa,sBAAsB;EAC3D,CAAC,MAAM,OAAO,MAAM,KAAK;CAC3B;CACA,MAAM,MAAM,IAAI,YAAY,OAAO,KAAK,IAAI,IAAI,KAAK,cAAcC,OAAAA,sBAAuB,eAAe,KAAK,IAAI,QAAQ,KAAK,WAAW,OAAO,KAAK,IAAI,GAAG,SAAS;EACpK,MAAM,EAAE,MAAM,GAAG,YAAY,eAAe,IAAI,QAAQ,MAAM,IAAI;EAClE,OAAO;GACL,GAAG;GACH,eAAe;EACjB;CACF,OAAO,MAAM,KAAK,IAAI,YAAY,OAAO,KAAK,IAAI,GAAG,KAAK,cAAcA,OAAAA,sBAAuB,SAC7F,OAAO;EACL,GAAG;EACH,eAAe,EACb,MAAM,IAAI,QAAQ,KAAK,OACzB;CACF;MACK,MAAM,KAAK,IAAI,YAAY,OAAO,KAAK,IAAI,GAAG,KAAK,cAAcA,OAAAA,sBAAuB,cAAc,IAAI,QAAQ,KAAK,KAAK,KAAK,aAAaA,OAAAA,sBAAuB,eAAe,KAAK,IAAI,QAAQ,KAAK,KAAK,KAAK,WAAW,OAAO,KAAK,IAAI,GAAG,SAAS;EAChQ,MAAM,EAAE,MAAM,GAAG,YAAY,gBAC3B,IAAI,QAAQ,MACZ,IACF;EACA,OAAO;GACL,GAAG;GACH,eAAe;EACjB;CACF;CACA,OAAO;AACT;AAGA,SAAS,YAAY,KAAK,MAAM;CAC9B,IAAI,KAAK,gBAAgB,UACvB,OAAO,eAAe,KAAK,IAAI;CAUjC,OAAO;EACL,MAAM;EACN,UAAU;EACV,OAAO;GACL,MAAM;GACN,OAAO,CAbE,SAAS,IAAI,QAAQ,MAAM;IACtC,GAAG;IACH,aAAa;KAAC,GAAG,KAAK;KAAa;KAAS;KAAS;IAAG;GAC1D,CAAC,KAAK,YAAY,GACH,SAAS,IAAI,UAAU,MAAM;IAC1C,GAAG;IACH,aAAa;KAAC,GAAG,KAAK;KAAa;KAAS;KAAS;IAAG;GAC1D,CAAC,KAAK,YAAY,CAMM;GACpB,UAAU;GACV,UAAU;EACZ;CACF;AACF;AAGA,SAAS,mBAAmB,KAAK;CAC/B,MAAM,SAAS,IAAI;CAInB,MAAM,eAHa,OAAO,KAAK,IAAI,MAAM,CAAC,CAAC,QAAQ,QAAQ;EACzD,OAAO,OAAO,OAAO,OAAO,UAAU;CACxC,CAC8B,CAAC,CAAC,KAAK,QAAQ,OAAO,IAAI;CACxD,MAAM,cAAc,MAAM,KACxB,IAAI,IAAI,aAAa,KAAK,WAAW,OAAO,MAAM,CAAC,CACrD;CACA,OAAO;EACL,MAAM,YAAY,WAAW,IAAI,YAAY,OAAO,WAAW,WAAW,WAAW,CAAC,UAAU,QAAQ;EACxG,MAAM;CACR;AACF;AAGA,SAAS,gBAAgB;CACvB,OAAO,EAAE,KAAK,YAAY,EAAE;AAC9B;AAGA,SAAS,eAAe;CACtB,OAAO,EACL,MAAM,OACR;AACF;AAGA,IAAI,oBAAoB;CACtB,WAAW;CACX,WAAW;CACX,WAAW;CACX,YAAY;CACZ,SAAS;AACX;AACA,SAAS,cAAc,KAAK,MAAM;CAChC,MAAM,UAAU,IAAI,mBAAmB,MAAM,MAAM,KAAK,IAAI,QAAQ,OAAO,CAAC,IAAI,IAAI;CACpF,IAAI,QAAQ,OACT,MAAM,EAAE,KAAK,YAAY,sBAAsB,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,KAAK,OAAO,OACnF,GAAG;EACD,MAAM,QAAQ,QAAQ,QAAQ,QAAQ,MAAM;GAC1C,MAAM,OAAO,kBAAkB,EAAE,KAAK;GACtC,OAAO,QAAQ,CAAC,OAAO,SAAS,IAAI,IAAI,CAAC,GAAG,QAAQ,IAAI,IAAI;EAC9D,GAAG,CAAC,CAAC;EACL,OAAO,EACL,MAAM,MAAM,SAAS,IAAI,QAAQ,MAAM,GACzC;CACF,OAAO,IAAI,QAAQ,OAAO,MAAM,EAAE,KAAK,aAAa,gBAAgB,CAAC,EAAE,WAAW,GAAG;EACnF,MAAM,QAAQ,QAAQ,QACnB,KAAK,MAAM;GACV,MAAM,OAAO,OAAO,EAAE,KAAK;GAC3B,QAAQ,MAAR;IACE,KAAK;IACL,KAAK;IACL,KAAK,WACH,OAAO,CAAC,GAAG,KAAK,IAAI;IACtB,KAAK,UACH,OAAO,CAAC,GAAG,KAAK,SAAS;IAC3B,KAAK,UACH,IAAI,EAAE,KAAK,UAAU,MAAM,OAAO,CAAC,GAAG,KAAK,MAAM;IAInD,SACE,OAAO;GACX;EACF,GACA,CAAC,CACH;EACA,IAAI,MAAM,WAAW,QAAQ,QAAQ;GACnC,MAAM,cAAc,MAAM,QAAQ,GAAG,GAAG,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;GAChE,OAAO;IACL,MAAM,YAAY,SAAS,IAAI,cAAc,YAAY;IACzD,MAAM,QAAQ,QACX,KAAK,MAAM;KACV,OAAO,IAAI,SAAS,EAAE,KAAK,KAAK,IAAI,MAAM,CAAC,GAAG,KAAK,EAAE,KAAK,KAAK;IACjE,GACA,CAAC,CACH;GACF;EACF;CACF,OAAO,IAAI,QAAQ,OAAO,MAAM,EAAE,KAAK,aAAa,SAAS,GAC3D,OAAO;EACL,MAAM;EACN,MAAM,QAAQ,QACX,KAAK,MAAM,CACV,GAAG,KACH,GAAG,EAAE,KAAK,OAAO,QAAQ,OAAO,CAAC,IAAI,SAAS,EAAE,CAAC,CACnD,GACA,CAAC,CACH;CACF;CAEF,OAAO,QAAQ,KAAK,IAAI;AAC1B;AACA,IAAI,WAAW,KAAK,SAAS;CAC3B,MAAM,SAAS,IAAI,mBAAmB,MAAM,MAAM,KAAK,IAAI,QAAQ,OAAO,CAAC,IAAI,IAAI,QAAA,CAAS,KACzF,GAAG,MAAM,SAAS,EAAE,MAAM;EACzB,GAAG;EACH,aAAa;GAAC,GAAG,KAAK;GAAa;GAAS,GAAG;EAAG;CACpD,CAAC,CACH,CAAC,CAAC,QACC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,gBAAgB,OAAO,MAAM,YAAY,OAAO,KAAK,CAAC,CAAC,CAAC,SAAS,EACxF;CACA,OAAO,MAAM,SAAS,EAAE,MAAM,IAAI,KAAK;AACzC;AAGA,SAAS,iBAAiB,KAAK,MAAM;CACnC,IAAI;EAAC;EAAa;EAAa;EAAa;EAAc;CAAS,CAAC,CAAC,SACnE,IAAI,UAAU,KAAK,QACrB,MAAM,CAAC,IAAI,UAAU,KAAK,UAAU,CAAC,IAAI,UAAU,KAAK,OAAO,SAC7D,OAAO,EACL,MAAM,CACJ,kBAAkB,IAAI,UAAU,KAAK,WACrC,MACF,EACF;CAEF,MAAM,OAAO,SAAS,IAAI,UAAU,MAAM;EACxC,GAAG;EACH,aAAa;GAAC,GAAG,KAAK;GAAa;GAAS;EAAG;CACjD,CAAC;CACD,OAAO,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,EAAE;AACnD;AAGA,SAAS,eAAe,KAAK;CAC3B,MAAM,MAAM,EACV,MAAM,SACR;CACA,IAAI,CAAC,IAAI,QAAQ,OAAO;CACxB,KAAK,MAAM,SAAS,IAAI,QACtB,QAAQ,MAAM,MAAd;EACE,KAAK;GACH,IAAI,OAAO;GACX;EACF,KAAK;GACH,IAAI,MAAM,WACR,IAAI,UAAU,MAAM;QAEpB,IAAI,mBAAmB,MAAM;GAE/B;EACF,KAAK;GACH,IAAI,MAAM,WACR,IAAI,UAAU,MAAM;QAEpB,IAAI,mBAAmB,MAAM;GAE/B;EACF,KAAK;GACH,IAAI,aAAa,MAAM;GACvB;CACJ;CAEF,OAAO;AACT;AAGA,SAAS,eAAe,KAAK,MAAM;CACjC,MAAM,SAAS;EACb,MAAM;EACN,YAAY,CAAC;CACf;CACA,MAAM,WAAW,CAAC;CAClB,MAAM,QAAQ,IAAI,MAAM;CACxB,KAAK,MAAM,YAAY,OAAO;EAC5B,IAAI,UAAU,MAAM;EACpB,IAAI,YAAY,KAAK,KAAK,QAAQ,SAAS,KAAK,GAC9C;EAEF,MAAM,eAAe,eAAe,OAAO;EAC3C,MAAM,YAAY,SAAS,QAAQ,MAAM;GACvC,GAAG;GACH,aAAa;IAAC,GAAG,KAAK;IAAa;IAAc;GAAQ;GACzD,cAAc;IAAC,GAAG,KAAK;IAAa;IAAc;GAAQ;EAC5D,CAAC;EACD,IAAI,cAAc,KAAK,GACrB;EAEF,OAAO,WAAW,YAAY;EAC9B,IAAI,CAAC,cACH,SAAS,KAAK,QAAQ;CAE1B;CACA,IAAI,SAAS,QACX,OAAO,WAAW;CAEpB,MAAM,uBAAuB,2BAA2B,KAAK,IAAI;CACjE,IAAI,yBAAyB,KAAK,GAChC,OAAO,uBAAuB;CAEhC,OAAO;AACT;AACA,SAAS,2BAA2B,KAAK,MAAM;CAC7C,IAAI,IAAI,SAAS,KAAK,aAAa,YACjC,OAAO,SAAS,IAAI,SAAS,MAAM;EACjC,GAAG;EACH,aAAa,CAAC,GAAG,KAAK,aAAa,sBAAsB;CAC3D,CAAC;CAEH,QAAQ,IAAI,aAAZ;EACE,KAAK,eACH,OAAO,KAAK;EACd,KAAK,UACH,OAAO,KAAK;EACd,KAAK,SACH,OAAO,KAAK,6BAA6B,WAAW,KAAK,8BAA8B,KAAK;CAChG;AACF;AACA,SAAS,eAAe,QAAQ;CAC9B,IAAI;EACF,OAAO,OAAO,WAAW;CAC3B,SAAS,GAAG;EACV,OAAO;CACT;AACF;AAGA,IAAI,oBAAoB,KAAK,SAAS;CACpC,IAAI;CACJ,IAAI,KAAK,YAAY,SAAS,QAAQ,MAAM,KAAK,iBAAiB,OAAO,KAAK,IAAI,IAAI,SAAS,IAC7F,OAAO,SAAS,IAAI,UAAU,MAAM,IAAI;CAE1C,MAAM,cAAc,SAAS,IAAI,UAAU,MAAM;EAC/C,GAAG;EACH,aAAa;GAAC,GAAG,KAAK;GAAa;GAAS;EAAG;CACjD,CAAC;CACD,OAAO,cAAc,EAAE,OAAO,CAAC,EAAE,KAAK,YAAY,EAAE,GAAG,WAAW,EAAE,IAAI,YAAY;AACtF;AAGA,IAAI,oBAAoB,KAAK,SAAS;CACpC,IAAI,KAAK,iBAAiB,SACxB,OAAO,SAAS,IAAI,GAAG,MAAM,IAAI;MAC5B,IAAI,KAAK,iBAAiB,UAC/B,OAAO,SAAS,IAAI,IAAI,MAAM,IAAI;CAEpC,MAAM,IAAI,SAAS,IAAI,GAAG,MAAM;EAC9B,GAAG;EACH,aAAa;GAAC,GAAG,KAAK;GAAa;GAAS;EAAG;CACjD,CAAC;CAKD,OAAO,EACL,OAAO,CAAC,GALA,SAAS,IAAI,IAAI,MAAM;EAC/B,GAAG;EACH,aAAa;GAAC,GAAG,KAAK;GAAa;GAAS,IAAI,MAAM;EAAG;CAC3D,CAEa,CAAC,CAAC,CAAC,QAAQ,MAAM,MAAM,KAAK,CAAC,EAC1C;AACF;AAGA,SAAS,gBAAgB,KAAK,MAAM;CAClC,OAAO,SAAS,IAAI,KAAK,MAAM,IAAI;AACrC;AAGA,SAAS,YAAY,KAAK,MAAM;CAK9B,MAAM,SAAS;EACb,MAAM;EACN,aAAa;EACb,OAPY,SAAS,IAAI,UAAU,MAAM;GACzC,GAAG;GACH,aAAa,CAAC,GAAG,KAAK,aAAa,OAAO;EAC5C,CAIM;CACN;CACA,IAAI,IAAI,SACN,OAAO,WAAW,IAAI,QAAQ;CAEhC,IAAI,IAAI,SACN,OAAO,WAAW,IAAI,QAAQ;CAEhC,OAAO;AACT;AAGA,SAAS,cAAc,KAAK,MAAM;CAChC,IAAI,IAAI,MACN,OAAO;EACL,MAAM;EACN,UAAU,IAAI,MAAM;EACpB,OAAO,IAAI,MAAM,KACd,GAAG,MAAM,SAAS,EAAE,MAAM;GACzB,GAAG;GACH,aAAa;IAAC,GAAG,KAAK;IAAa;IAAS,GAAG;GAAG;EACpD,CAAC,CACH,CAAC,CAAC,QACC,KAAK,MAAM,MAAM,KAAK,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,GAC3C,CAAC,CACH;EACA,iBAAiB,SAAS,IAAI,KAAK,MAAM;GACvC,GAAG;GACH,aAAa,CAAC,GAAG,KAAK,aAAa,iBAAiB;EACtD,CAAC;CACH;MAEA,OAAO;EACL,MAAM;EACN,UAAU,IAAI,MAAM;EACpB,UAAU,IAAI,MAAM;EACpB,OAAO,IAAI,MAAM,KACd,GAAG,MAAM,SAAS,EAAE,MAAM;GACzB,GAAG;GACH,aAAa;IAAC,GAAG,KAAK;IAAa;IAAS,GAAG;GAAG;EACpD,CAAC,CACH,CAAC,CAAC,QACC,KAAK,MAAM,MAAM,KAAK,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,GAC3C,CAAC,CACH;CACF;AAEJ;AAGA,SAAS,oBAAoB;CAC3B,OAAO,EACL,KAAK,YAAY,EACnB;AACF;AAGA,SAAS,kBAAkB;CACzB,OAAO,YAAY;AACrB;AAGA,IAAI,oBAAoB,KAAK,SAAS;CACpC,OAAO,SAAS,IAAI,UAAU,MAAM,IAAI;AAC1C;AAGA,IAAI,gBAAgB,KAAK,UAAU,SAAS;CAC1C,QAAQ,UAAR;EACE,KAAKC,OAAAA,sBAAuB,WAC1B,OAAO,eAAe,KAAK,IAAI;EACjC,KAAKA,OAAAA,sBAAuB,WAC1B,OAAO,eAAe,GAAG;EAC3B,KAAKA,OAAAA,sBAAuB,WAC1B,OAAO,eAAe,KAAK,IAAI;EACjC,KAAKA,OAAAA,sBAAuB,WAC1B,OAAO,eAAe,GAAG;EAC3B,KAAKA,OAAAA,sBAAuB,YAC1B,OAAO,gBAAgB;EACzB,KAAKA,OAAAA,sBAAuB,SAC1B,OAAO,aAAa,KAAK,IAAI;EAC/B,KAAKA,OAAAA,sBAAuB,cAC1B,OAAO,kBAAkB;EAC3B,KAAKA,OAAAA,sBAAuB,SAC1B,OAAO,aAAa;EACtB,KAAKA,OAAAA,sBAAuB,UAC1B,OAAO,cAAc,KAAK,IAAI;EAChC,KAAKA,OAAAA,sBAAuB;EAC5B,KAAKA,OAAAA,sBAAuB,uBAC1B,OAAO,cAAc,KAAK,IAAI;EAChC,KAAKA,OAAAA,sBAAuB,iBAC1B,OAAO,qBAAqB,KAAK,IAAI;EACvC,KAAKA,OAAAA,sBAAuB,UAC1B,OAAO,cAAc,KAAK,IAAI;EAChC,KAAKA,OAAAA,sBAAuB,WAC1B,OAAO,eAAe,KAAK,IAAI;EACjC,KAAKA,OAAAA,sBAAuB,YAC1B,OAAO,gBAAgB,GAAG;EAC5B,KAAKA,OAAAA,sBAAuB,SAC1B,OAAO,aAAa,GAAG;EACzB,KAAKA,OAAAA,sBAAuB,eAC1B,OAAO,mBAAmB,GAAG;EAC/B,KAAKA,OAAAA,sBAAuB,aAC1B,OAAO,iBAAiB,KAAK,IAAI;EACnC,KAAKA,OAAAA,sBAAuB,aAC1B,OAAO,iBAAiB,KAAK,IAAI;EACnC,KAAKA,OAAAA,sBAAuB,QAC1B,OAAO,YAAY,KAAK,IAAI;EAC9B,KAAKA,OAAAA,sBAAuB,QAC1B,OAAO,YAAY,KAAK,IAAI;EAC9B,KAAKA,OAAAA,sBAAuB,SAC1B,aAAa,IAAI,OAAO,CAAC,CAAC;EAC5B,KAAKA,OAAAA,sBAAuB,YAC1B,OAAO,gBAAgB,KAAK,IAAI;EAClC,KAAKA,OAAAA,sBAAuB;EAC5B,KAAKA,OAAAA,sBAAuB,UAC1B,OAAO,cAAc;EACvB,KAAKA,OAAAA,sBAAuB,YAC1B,OAAO,gBAAgB,KAAK,IAAI;EAClC,KAAKA,OAAAA,sBAAuB,QAC1B,OAAO,YAAY;EACrB,KAAKA,OAAAA,sBAAuB,YAC1B,OAAO,gBAAgB;EACzB,KAAKA,OAAAA,sBAAuB,YAC1B,OAAO,gBAAgB,KAAK,IAAI;EAClC,KAAKA,OAAAA,sBAAuB,YAC1B,OAAO,gBAAgB,KAAK,IAAI;EAClC,KAAKA,OAAAA,sBAAuB,aAC1B,OAAO,iBAAiB,KAAK,IAAI;EACnC,KAAKA,OAAAA,sBAAuB,UAC1B,OAAO,cAAc,KAAK,IAAI;EAChC,KAAKA,OAAAA,sBAAuB,aAC1B,OAAO,iBAAiB,KAAK,IAAI;EACnC,KAAKA,OAAAA,sBAAuB;EAC5B,KAAKA,OAAAA,sBAAuB;EAC5B,KAAKA,OAAAA,sBAAuB,WAC1B;EACF,SACE,OAAuB,kBAAE,MAAM,KAAK,EAAA,CAAG,QAAQ;CACnD;AACF;AAGA,IAAI,mBAAmB,OAAO,UAAU;CACtC,IAAI,IAAI;CACR,OAAO,IAAI,MAAM,UAAU,IAAI,MAAM,QAAQ,KAC3C,IAAI,MAAM,OAAO,MAAM,IAAI;CAE7B,OAAO,EAAE,MAAM,SAAS,EAAA,CAAG,SAAS,GAAG,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;AACpE;AAGA,SAAS,SAAS,KAAK,MAAM,kBAAkB,OAAO;CACpD,IAAI;CACJ,MAAM,WAAW,KAAK,KAAK,IAAI,GAAG;CAClC,IAAI,KAAK,UAAU;EACjB,MAAM,kBAAkB,MAAM,KAAK,aAAa,OAAO,KAAK,IAAI,IAAI,KAClE,MACA,KACA,MACA,UACA,eACF;EACA,IAAI,mBAAmB,gBACrB,OAAO;CAEX;CACA,IAAI,YAAY,CAAC,iBAAiB;EAChC,MAAM,aAAa,QAAQ,UAAU,IAAI;EACzC,IAAI,eAAe,KAAK,GACtB,OAAO;CAEX;CACA,MAAM,UAAU;EAAE;EAAK,MAAM,KAAK;EAAa,YAAY,KAAK;CAAE;CAClE,KAAK,KAAK,IAAI,KAAK,OAAO;CAC1B,MAAM,qBAAqB,aAAa,KAAK,IAAI,UAAU,IAAI;CAC/D,MAAM,cAAc,OAAO,uBAAuB,aAAa,SAAS,mBAAmB,GAAG,IAAI,IAAI;CACtG,IAAI,aACF,QAAQ,KAAK,MAAM,WAAW;CAEhC,IAAI,KAAK,aAAa;EACpB,MAAM,oBAAoB,KAAK,YAAY,aAAa,KAAK,IAAI;EACjE,QAAQ,aAAa;EACrB,OAAO;CACT;CACA,QAAQ,aAAa;CACrB,OAAO;AACT;AACA,IAAI,WAAW,MAAM,SAAS;CAC5B,QAAQ,KAAK,cAAb;EACE,KAAK,QACH,OAAO,EAAE,MAAM,KAAK,KAAK,KAAK,GAAG,EAAE;EACrC,KAAK,YACH,OAAO,EAAE,MAAM,gBAAgB,KAAK,aAAa,KAAK,IAAI,EAAE;EAC9D,KAAK;EACL,KAAK;GACH,IAAI,KAAK,KAAK,SAAS,KAAK,YAAY,UAAU,KAAK,KAAK,OAAO,OAAO,UAAU,KAAK,YAAY,WAAW,KAAK,GAAG;IACtH,QAAQ,KACN,mCAAmC,KAAK,YAAY,KAClD,GACF,EAAE,oBACJ;IACA,OAAO,YAAY;GACrB;GACA,OAAO,KAAK,iBAAiB,SAAS,YAAY,IAAI,KAAK;CAE/D;AACF;AACA,IAAI,WAAW,KAAK,MAAM,gBAAgB;CACxC,IAAI,IAAI,aACN,YAAY,cAAc,IAAI;CAEhC,OAAO;AACT;AAGA,IAAI,WAAW,YAAY;CACzB,MAAM,WAAW,kBAAkB,OAAO;CAC1C,MAAM,cAAc,SAAS,SAAS,KAAK,IAAI;EAAC,GAAG,SAAS;EAAU,SAAS;EAAgB,SAAS;CAAI,IAAI,SAAS;CACzH,OAAO;EACL,GAAG;EACH;EACA,cAAc,KAAK;EACnB,MAAM,IAAI,IACR,OAAO,QAAQ,SAAS,WAAW,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CACzD,IAAI,MACJ;GACE,KAAK,IAAI;GACT,MAAM;IAAC,GAAG,SAAS;IAAU,SAAS;IAAgB;GAAK;GAE3D,YAAY,KAAK;EACnB,CACF,CAAC,CACH;CACF;AACF;AAGA,IAAI,mBAAmB,QAAQ,YAAY;CACzC,IAAI;CACJ,MAAM,OAAO,QAAQ,OAAO;CAC5B,IAAI,cAAc,OAAO,YAAY,YAAY,QAAQ,cAAc,OAAO,QAAQ,QAAQ,WAAW,CAAC,CAAC,QACxG,KAAK,CAAC,OAAO,aAAa;EACzB,IAAI;EACJ,OAAO;GACL,GAAG;IACF,SAAS,MAAM,SACd,QAAQ,MACR;IACE,GAAG;IACH,aAAa;KAAC,GAAG,KAAK;KAAU,KAAK;KAAgB;IAAK;GAC5D,GACA,IACF,MAAM,OAAO,MAAM,YAAY;EACjC;CACF,GACA,CAAC,CACH,IAAI,KAAK;CACT,MAAM,QAAQ,OAAO,YAAY,WAAW,WAAW,WAAW,OAAO,KAAK,IAAI,QAAQ,kBAAkB,UAAU,KAAK,IAAI,WAAW,OAAO,KAAK,IAAI,QAAQ;CAClK,MAAM,QAAQ,MAAM,SAClB,OAAO,MACP,UAAU,KAAK,IAAI,OAAO;EACxB,GAAG;EACH,aAAa;GAAC,GAAG,KAAK;GAAU,KAAK;GAAgB;EAAK;CAC5D,GACA,KACF,MAAM,OAAO,MAAM,YAAY;CAC/B,MAAM,QAAQ,OAAO,YAAY,YAAY,QAAQ,SAAS,KAAK,KAAK,QAAQ,iBAAiB,UAAU,QAAQ,OAAO,KAAK;CAC/H,IAAI,UAAU,KAAK,GACjB,KAAK,QAAQ;CAEf,MAAM,WAAW,UAAU,KAAK,IAAI,cAAc;EAChD,GAAG;GACF,KAAK,iBAAiB;CACzB,IAAI,OAAO;EACT,MAAM;GACJ,GAAG,KAAK,iBAAiB,aAAa,CAAC,IAAI,KAAK;GAChD,KAAK;GACL;EACF,CAAC,CAAC,KAAK,GAAG;GACT,KAAK,iBAAiB;GACrB,GAAG;IACF,QAAQ;EACX;CACF;CACA,SAAS,UAAU;CACnB,OAAO;AACT;AAGA,IAAI,6BAA6B;AAGjC,SAAS,WAAW,YAAY,SAAS;CACvC,IAAI;CACJ,MAAM,iBAAiB,MAAM,WAAW,OAAO,KAAK,IAAI,QAAQ,kBAAkB,OAAO,MAAM;CAC/F,OAAO,iBAEC,2BAA2B,YAAY,EAC3C,cAAc,gBAAgB,SAAS,OACzC,CAAC,GACD,EACE,UAAU,OAAO,UAAU;EACzB,MAAM,SAAS,MAAM,WAAW,eAAe,KAAK;EACpD,OAAO,OAAO,UAAU;GAAE,SAAS;GAAM,OAAO,OAAO;EAAK,IAAI;GAAE,SAAS;GAAO,OAAO,OAAO;EAAM;CACxG,EACF,CACF;AACF;AACA,SAAS,WAAW,YAAY,SAAS;CACvC,IAAI;CACJ,MAAM,iBAAiB,MAAM,WAAW,OAAO,KAAK,IAAI,QAAQ,kBAAkB,OAAO,MAAM;CAC/F,OAAO,iBAEC,oCACJC,OAAG,aAAa,YAAY;EAC1B,QAAQ;EACR,IAAI;EACJ,QAAQ,gBAAgB,QAAQ;CAClC,CAAC,CACH,GACA,EACE,UAAU,OAAO,UAAU;EACzB,MAAM,SAAS,MAAMA,OAAG,eAAe,YAAY,KAAK;EACxD,OAAO,OAAO,UAAU;GAAE,SAAS;GAAM,OAAO,OAAO;EAAK,IAAI;GAAE,SAAS;GAAO,OAAO,OAAO;EAAM;CACxG,EACF,CACF;AACF;AACA,SAAS,aAAa,YAAY;CAChC,OAAO,UAAU;AACnB;AACA,SAAS,UAAU,YAAY,SAAS;CACtC,IAAI,aAAa,UAAU,GACzB,OAAO,WAAW,YAAY,OAAO;MAErC,OAAO,WAAW,YAAY,OAAO;AAEzC;AAcA,IAAI,EAAE,MAAM,SAAS;AACrB,SAAS,0BAA0B,cAAc;CAE/C,MAAM,eAAe,KADH,aAAa,QAAQ,MAAM,GAAG,CAAC,CAAC,QAAQ,MAAM,GAC9B,CAAC;CACnC,OAAO,WAAW,KAAK,eAAe,SAAS,KAAK,YAAY,CAAC,CAAC;AACpE;AACA,SAAS,0BAA0B,OAAO;CACxC,IAAI,eAAe;CACnB,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAChC,gBAAgB,OAAO,cAAc,MAAM,EAAE;CAE/C,OAAO,KAAK,YAAY;AAC1B;AACA,SAAS,gBAAgB,OAAO;CAC9B,OAAO,iBAAiB,aAAa,0BAA0B,KAAK,IAAI;AAC1E;;;AC5tFA,IAAI,wBAAwBC,OAAAA,EAAE,OAAO,EACnC,OAAOA,OAAAA,EAAE,OAAO;CACd,SAASA,OAAAA,EAAE,OAAO;CAIlB,MAAMA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ;CACzB,OAAOA,OAAAA,EAAE,IAAI,CAAC,CAAC,QAAQ;CACvB,MAAMA,OAAAA,EAAE,MAAM,CAACA,OAAAA,EAAE,OAAO,GAAGA,OAAAA,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ;AAClD,CAAC,EACH,CAAC;AACD,IAAI,8BAA8B,+BAA+B;CAC/D,aAAa;CACb,iBAAiB,SAAS,KAAK,MAAM;AACvC,CAAC;AAGD,SAAS,mCAAmC,SAAS;CACnD,IAAI,IAAI,IAAI,IAAI,IAAI;CACpB,MAAM,iBAAiB,kBAAkB,OAAO;CAChD,MAAM,aAAa,cAAc,OAAO;CACxC,MAAM,kBAAkB,cAAc,OAAO,KAAK,IAAI,WAAW,UAAU,UAAU,MAAM,KAAK,cAAc,OAAO,KAAK,IAAI,WAAW,YAAY,OAAO,KAAK,IAAI,GAAG,WAAW,MAAM,MAAM,OAAO,KAAK;CAC3M,MAAM,kBAAkB,MAAM,KAAK,cAAc,OAAO,KAAK,IAAI,WAAW,YAAY,OAAO,KAAK,IAAI,GAAG,WAAW,MAAM,MAAM,OAAO,KAAK;CAC9I,MAAM,yBAAyB,kBAAkB,QAAQ,kBAAkB,KAAK,cAAc,QAAQ,WAAW,SAAS,KAAK,CAAC;CAChI,MAAM,6BAA6B,QAAQ,WAAW,OAAO,KAAK,cAAc,QAAQ,WAAW,SAAS,KAAK,CAAC,kBAAkB,CAAC,kBAAkB,kBAAkB,QAAQ,kBAAkB;CACnM,MAAM,mBAAmB,kBAAkB,QAAQ,cAAc,QAAQ,WAAW,SAAS,KAAK,CAAC,kBAAkB,YAAY,uBAAuB,YAAY;CACpK,MAAM,iCAAiC,cAAc,SAAS,WAAW,QAAQ,KAAK,WAAW,UAAU,OAAO,KAAK,WAAW,UAAU,OAAO,KAAK,MAAM;CAE9J,OAAO;EACL;EACA;EACA;EACA,mBALwB,mBAAmB,cAAc;EAMzD;CACF;AACF;AACA,SAAS,kBAAkB,SAAS;CAClC,MAAM,QAAQ,iBAAiB,KAAK,OAAO;CAC3C,OAAO,SAAS,OAAO,KAAK,IAAI,OAAO,MAAM,EAAE;AACjD;AACA,SAAS,cAAc,SAAS;CAC9B,MAAM,QAAQ,oCAAoC,KAAK,OAAO;CAC9D,IAAI,SAAS,MACX;CAEF,OAAO;EACL,OAAO,OAAO,MAAM,EAAE;EACtB,OAAO,MAAM,MAAM,OAAO,KAAK,IAAI,OAAO,MAAM,EAAE;EAClD,SAAS,MAAM;CACjB;AACF;AAOA,SAAS,yBAAyB,iBAAiB;CACjD,IAAI;CACJ,QAAQ,KAAK,mBAAmB,OAAO,KAAK,IAAI,gBAAgB,WAAW,OAAO,KAAK,IAAI,GAAG;AAChG;AACA,SAAS,4BAA4B,EACnC,QACA,oBAAoB,YACnB;CACD,MAAM,WAAW,CAAC;CAClB,MAAM,WAAW,CAAC;CAClB,KAAK,MAAM,EAAE,MAAM,SAAS,qBAAqB,QAC/C,QAAQ,MAAR;EACE,KAAK;GACH,QAAQ,mBAAR;IACE,KAAK,UAAU;KACb,MAAM,wBAAwB,yBAAyB,eAAe;KACtE,SAAS,KAAK;MACZ,MAAM;MACN,SAAS,yBAAyB,OAAO,UAAU,CACjD;OACE,MAAM;OACN,MAAM;OACN,yBAAyB;MAC3B,CACF;KACF,CAAC;KACD;IACF;IACA,KAAK,aAAa;KAChB,MAAM,wBAAwB,yBAAyB,eAAe;KACtE,SAAS,KAAK;MACZ,MAAM;MACN,SAAS,yBAAyB,OAAO,UAAU,CACjD;OACE,MAAM;OACN,MAAM;OACN,yBAAyB;MAC3B,CACF;KACF,CAAC;KACD;IACF;IACA,KAAK;KACH,SAAS,KAAK;MACZ,MAAM;MACN,SAAS;KACX,CAAC;KACD;IAEF,SAEE,MAAM,IAAI,MACR,oCAAoCC,mBACtC;GAEJ;GACA;EAEF,KAAK;GACH,IAAI,QAAQ,WAAW,KAAK,QAAQ,EAAE,CAAC,SAAS,UAAU,yBAAyB,QAAQ,EAAE,CAAC,eAAe,KAAK,MAAM;IACtH,SAAS,KAAK;KAAE,MAAM;KAAQ,SAAS,QAAQ,EAAE,CAAC;IAAK,CAAC;IACxD;GACF;GACA,SAAS,KAAK;IACZ,MAAM;IACN,SAAS,QAAQ,KAAK,MAAM,UAAU;KACpC,IAAI,IAAI,IAAI;KACZ,QAAQ,KAAK,MAAb;MACE,KAAK,QAAQ;OACX,MAAM,wBAAwB,yBAC5B,KAAK,eACP;OACA,OAAO;QACL,MAAM;QACN,MAAM,KAAK;QACX,GAAG,yBAAyB,QAAQ,EAClC,yBAAyB,sBAC3B;OACF;MACF;MACA,KAAK,QAAQ;OACX,MAAM,wBAAwB,yBAC5B,KAAK,eACP;OACA,IAAI,KAAK,UAAU,WAAW,QAAQ,GAAG;QACvC,MAAM,YAAY,KAAK,cAAc,YAAY,eAAe,KAAK;QACrE,OAAO;SACL,MAAM;SACN,WAAW;UACT,KAAK,KAAK,gBAAgB,MAAM,KAAK,KAAK,SAAS,IAAI,QAAQ,UAAU,UAAU,gBAAgB,KAAK,IAAI;UAE5G,SAAS,MAAM,KAAK,KAAK,oBAAoB,OAAO,KAAK,IAAI,GAAG,WAAW,OAAO,KAAK,IAAI,GAAG;SAChG;SACA,GAAG,yBAAyB,QAAQ,EAClC,yBAAyB,sBAC3B;QACF;OACF,OAAO,IAAI,KAAK,UAAU,WAAW,QAAQ,GAAG;QAC9C,IAAI,KAAK,gBAAgB,KACvB,MAAM,IAAI,8BAA8B,EACtC,eAAe,6BACjB,CAAC;QAEH,QAAQ,KAAK,WAAb;SACE,KAAK,aACH,OAAO;UACL,MAAM;UACN,aAAa;WACX,MAAM,gBAAgB,KAAK,IAAI;WAC/B,QAAQ;UACV;UACA,GAAG,yBAAyB,QAAQ,EAClC,yBAAyB,sBAC3B;SACF;SAEF,KAAK;SACL,KAAK,cACH,OAAO;UACL,MAAM;UACN,aAAa;WACX,MAAM,gBAAgB,KAAK,IAAI;WAC/B,QAAQ;UACV;UACA,GAAG,yBAAyB,QAAQ,EAClC,yBAAyB,sBAC3B;SACF;SAEF,SACE,MAAM,IAAI,8BAA8B,EACtC,eAAe,uCAAuC,KAAK,YAC7D,CAAC;QAEL;OACF,OAAO,IAAI,KAAK,cAAc,mBAAmB;QAC/C,IAAI,KAAK,gBAAgB,KACvB,MAAM,IAAI,8BAA8B,EACtC,eAAe,2BACjB,CAAC;QAEH,OAAO;SACL,MAAM;SACN,MAAM,OAAO,KAAK,SAAS,YAAY,KAAK,KAAK,WAAW,OAAO,IAAI,EAAE,SAAS,KAAK,KAAK,IAAI;UAC9F,WAAW,KAAK,KAAK,aAAa,OAAO,KAAK,QAAQ,MAAM;UAC5D,WAAW,+BAA+B,gBAAgB,KAAK,IAAI;SACrE;SACA,GAAG,yBAAyB,QAAQ,EAClC,yBAAyB,sBAC3B;QACF;OACF,OACE,MAAM,IAAI,8BAA8B,EACtC,eAAe,wBAAwB,KAAK,YAC9C,CAAC;MAEL;KACF;IACF,CAAC;GACH,CAAC;GACD;EAEF,KAAK,aAAa;GAChB,IAAI,OAAO;GACX,MAAM,YAAY,CAAC;GACnB,IAAI,2BAA2B;GAC/B,MAAM,YAAY,CAAC;GACnB,KAAK,MAAM,QAAQ,SACjB,QAAQ,KAAK,MAAb;IACE,KAAK,QAAQ;KACX,MAAM,wBAAwB,yBAC5B,KAAK,eACP;KACA,QAAQ,KAAK;KACb,UAAU,KAAK;MACb,MAAM;MACN,MAAM,KAAK;MACX,GAAG,yBAAyB,QAAQ,EAClC,yBAAyB,sBAC3B;KACF,CAAC;KACD,6BAA6B,2BAA2B,yBAAyB;KACjF;IACF;IACA,KAAK;KACH,UAAU,KAAK;MACb,IAAI,KAAK;MACT,MAAM;MACN,UAAU;OACR,MAAM,KAAK;OACX,WAAW,KAAK,UAAU,KAAK,KAAK;MACtC;KACF,CAAC;KACD;GAEJ;GAEF,SAAS,KAAK;IACZ,MAAM;IACN,SAAS,2BAA2B,YAAY,UAAU,SAAS,IAAI,QAAQ,OAAO;IACtF,YAAY,UAAU,SAAS,IAAI,YAAY,KAAK;GACtD,CAAC;GACD;EACF;EACA,KAAK;GACH,KAAK,MAAM,gBAAgB,SAAS;IAClC,MAAM,SAAS,aAAa;IAC5B,MAAM,wBAAwB,yBAC5B,aAAa,eACf;IACA,IAAI;IACJ,QAAQ,OAAO,MAAf;KACE,KAAK;KACL,KAAK;MACH,eAAe,OAAO;MACtB;KACF,KAAK;KACL,KAAK;KACL,KAAK;MACH,eAAe,KAAK,UAAU,OAAO,KAAK;MAC1C;IACJ;IACA,SAAS,KAAK;KACZ,MAAM;KACN,cAAc,aAAa;KAC3B,SAAS,yBAAyB,OAAO,eAAe,CACtD;MACE,MAAM;MACN,MAAM;MACN,yBAAyB;KAC3B,CACF;IACF,CAAC;GACH;GACA;EAEF,SAEE,MAAM,IAAI,MAAM,qBAAqBA,MAAkB;CAE3D;CAEF,OAAO;EAAE;EAAU;CAAS;AAC9B;AAGA,SAASC,sBAAoB,EAC3B,IACA,OACA,WACC;CACD,OAAO;EACL,IAAI,MAAM,OAAO,KAAK,KAAK;EAC3B,SAAS,SAAS,OAAO,QAAQ,KAAK;EACtC,WAAW,0BAAU,IAAI,KAAK,UAAU,GAAG,IAAI,KAAK;CACtD;AACF;AAGA,SAAS,sBAAsB,cAAc;CAC3C,QAAQ,cAAR;EACE,KAAK,QACH,OAAO;EACT,KAAK,UACH,OAAO;EACT,KAAK,kBACH,OAAO;EACT,KAAK;EACL,KAAK,cACH,OAAO;EACT,SACE,OAAO;CACX;AACF;AAQA,IAAI,2BAA2B,oBACvB,UACJC,OAAAA,EAAG,OAAO;CACR,IAAIA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;CACxB,SAASA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;CAC7B,OAAOA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;CAC3B,SAASA,OAAAA,EAAG,MACVA,OAAAA,EAAG,OAAO;EACR,SAASA,OAAAA,EAAG,OAAO;GACjB,MAAMA,OAAAA,EAAG,QAAQ,WAAW,CAAC,CAAC,QAAQ;GACtC,SAASA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;GAC7B,YAAYA,OAAAA,EAAG,MACbA,OAAAA,EAAG,OAAO;IACR,IAAIA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;IACxB,MAAMA,OAAAA,EAAG,QAAQ,UAAU;IAC3B,UAAUA,OAAAA,EAAG,OAAO;KAClB,MAAMA,OAAAA,EAAG,OAAO;KAChB,WAAWA,OAAAA,EAAG,OAAO;IACvB,CAAC;GACH,CAAC,CACH,CAAC,CAAC,QAAQ;GACV,aAAaA,OAAAA,EAAG,MACdA,OAAAA,EAAG,OAAO;IACR,MAAMA,OAAAA,EAAG,QAAQ,cAAc;IAC/B,cAAcA,OAAAA,EAAG,OAAO;KACtB,aAAaA,OAAAA,EAAG,OAAO;KACvB,WAAWA,OAAAA,EAAG,OAAO;KACrB,KAAKA,OAAAA,EAAG,OAAO;KACf,OAAOA,OAAAA,EAAG,OAAO;IACnB,CAAC;GACH,CAAC,CACH,CAAC,CAAC,QAAQ;EACZ,CAAC;EACD,OAAOA,OAAAA,EAAG,OAAO;EACjB,UAAUA,OAAAA,EAAG,OAAO,EAClB,SAASA,OAAAA,EAAG,MACVA,OAAAA,EAAG,OAAO;GACR,OAAOA,OAAAA,EAAG,OAAO;GACjB,SAASA,OAAAA,EAAG,OAAO;GACnB,cAAcA,OAAAA,EAAG,MACfA,OAAAA,EAAG,OAAO;IACR,OAAOA,OAAAA,EAAG,OAAO;IACjB,SAASA,OAAAA,EAAG,OAAO;GACrB,CAAC,CACH;EACF,CAAC,CACH,CAAC,CAAC,QAAQ,EACZ,CAAC,CAAC,CAAC,QAAQ;EACX,eAAeA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;CACrC,CAAC,CACH;CACA,OAAOA,OAAAA,EAAG,OAAO;EACf,eAAeA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;EACnC,mBAAmBA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;EACvC,cAAcA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;EAClC,uBAAuBA,OAAAA,EAAG,OAAO;GAC/B,eAAeA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;GACnC,oBAAoBA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;EAC1C,CAAC,CAAC,CAAC,QAAQ;EACX,2BAA2BA,OAAAA,EAAG,OAAO;GACnC,kBAAkBA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;GACtC,4BAA4BA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;GAChD,4BAA4BA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;EAClD,CAAC,CAAC,CAAC,QAAQ;CACb,CAAC,CAAC,CAAC,QAAQ;AACb,CAAC,CACH,CACF;AACA,IAAI,wBAAwB,oBACpB,UACJA,OAAAA,EAAG,MAAM,CACPA,OAAAA,EAAG,OAAO;CACR,IAAIA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;CACxB,SAASA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;CAC7B,OAAOA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;CAC3B,SAASA,OAAAA,EAAG,MACVA,OAAAA,EAAG,OAAO;EACR,OAAOA,OAAAA,EAAG,OAAO;GACf,MAAMA,OAAAA,EAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;GACrC,SAASA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;GAC7B,YAAYA,OAAAA,EAAG,MACbA,OAAAA,EAAG,OAAO;IACR,OAAOA,OAAAA,EAAG,OAAO;IACjB,IAAIA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;IACxB,MAAMA,OAAAA,EAAG,QAAQ,UAAU,CAAC,CAAC,QAAQ;IACrC,UAAUA,OAAAA,EAAG,OAAO;KAClB,MAAMA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;KAC1B,WAAWA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;IACjC,CAAC;GACH,CAAC,CACH,CAAC,CAAC,QAAQ;GACV,aAAaA,OAAAA,EAAG,MACdA,OAAAA,EAAG,OAAO;IACR,MAAMA,OAAAA,EAAG,QAAQ,cAAc;IAC/B,cAAcA,OAAAA,EAAG,OAAO;KACtB,aAAaA,OAAAA,EAAG,OAAO;KACvB,WAAWA,OAAAA,EAAG,OAAO;KACrB,KAAKA,OAAAA,EAAG,OAAO;KACf,OAAOA,OAAAA,EAAG,OAAO;IACnB,CAAC;GACH,CAAC,CACH,CAAC,CAAC,QAAQ;EACZ,CAAC,CAAC,CAAC,QAAQ;EACX,UAAUA,OAAAA,EAAG,OAAO,EAClB,SAASA,OAAAA,EAAG,MACVA,OAAAA,EAAG,OAAO;GACR,OAAOA,OAAAA,EAAG,OAAO;GACjB,SAASA,OAAAA,EAAG,OAAO;GACnB,cAAcA,OAAAA,EAAG,MACfA,OAAAA,EAAG,OAAO;IACR,OAAOA,OAAAA,EAAG,OAAO;IACjB,SAASA,OAAAA,EAAG,OAAO;GACrB,CAAC,CACH;EACF,CAAC,CACH,CAAC,CAAC,QAAQ,EACZ,CAAC,CAAC,CAAC,QAAQ;EACX,eAAeA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;EACnC,OAAOA,OAAAA,EAAG,OAAO;CACnB,CAAC,CACH;CACA,OAAOA,OAAAA,EAAG,OAAO;EACf,eAAeA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;EACnC,mBAAmBA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;EACvC,cAAcA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;EAClC,uBAAuBA,OAAAA,EAAG,OAAO;GAC/B,eAAeA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;GACnC,oBAAoBA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;EAC1C,CAAC,CAAC,CAAC,QAAQ;EACX,2BAA2BA,OAAAA,EAAG,OAAO;GACnC,kBAAkBA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;GACtC,4BAA4BA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;GAChD,4BAA4BA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;EAClD,CAAC,CAAC,CAAC,QAAQ;CACb,CAAC,CAAC,CAAC,QAAQ;AACb,CAAC,GACD,qBACF,CAAC,CACH,CACF;AAQA,IAAI,iCAAiCC,oBAC7BC,UACJC,OAAAA,EAAG,OAAO;;;;;;;CAOR,WAAWA,OAAAA,EAAG,OAAOA,OAAAA,EAAG,OAAO,OAAO,GAAGA,OAAAA,EAAG,OAAO,CAAC,CAAC,CAAC,SAAS;;;;;;;;;;CAU/D,UAAUA,OAAAA,EAAG,MAAM,CAACA,OAAAA,EAAG,QAAQ,GAAGA,OAAAA,EAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;;;;CAIzD,mBAAmBA,OAAAA,EAAG,QAAQ,CAAC,CAAC,SAAS;;;;;CAKzC,MAAMA,OAAAA,EAAG,OAAO,CAAC,CAAC,SAAS;;;;CAI3B,iBAAiBA,OAAAA,EAAG,KAAK;EAAC;EAAQ;EAAW;EAAO;EAAU;EAAQ;EAAS;CAAK,CAAC,CAAC,CAAC,SAAS;;;;CAIhG,qBAAqBA,OAAAA,EAAG,OAAO,CAAC,CAAC,SAAS;;;;CAI1C,OAAOA,OAAAA,EAAG,QAAQ,CAAC,CAAC,SAAS;;;;CAI7B,UAAUA,OAAAA,EAAG,OAAOA,OAAAA,EAAG,OAAO,CAAC,CAAC,IAAI,EAAE,GAAGA,OAAAA,EAAG,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS;;;;CAIxE,YAAYA,OAAAA,EAAG,OAAOA,OAAAA,EAAG,OAAO,GAAGA,OAAAA,EAAG,IAAI,CAAC,CAAC,CAAC,SAAS;;;;;;CAMtD,mBAAmBA,OAAAA,EAAG,QAAQ,CAAC,CAAC,SAAS;;;;;;;;;;;CAWzC,aAAaA,OAAAA,EAAG,KAAK;EAAC;EAAQ;EAAQ;EAAY;CAAS,CAAC,CAAC,CAAC,SAAS;;;;;;CAMvE,kBAAkBA,OAAAA,EAAG,QAAQ,CAAC,CAAC,SAAS;;;;;CAKxC,eAAeA,OAAAA,EAAG,KAAK;EAAC;EAAO;EAAU;CAAM,CAAC,CAAC,CAAC,SAAS;;;;;CAK3D,gBAAgBA,OAAAA,EAAG,OAAO,CAAC,CAAC,SAAS;;;;;;CAMrC,oBAAoBA,OAAAA,EAAG,OAAO;EAC5B,MAAMA,OAAAA,EAAG,KAAK,CAAC,YAAY,UAAU,CAAC,CAAC,CAAC,SAAS;EACjD,KAAKA,OAAAA,EAAG,QAAQ,KAAK,CAAC,CAAC,SAAS;CAClC,CAAC,CAAC,CAAC,SAAS;;;;;;;;;;;CAWZ,sBAAsBA,OAAAA,EAAG,KAAK,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,SAAS;;;;;;;;CAQ7D,kBAAkBA,OAAAA,EAAG,OAAO,CAAC,CAAC,SAAS;AACzC,CAAC,CACH,CACF;AAMA,SAAS,iBAAiB,EACxB,OACA,YACA,mBACA,oBACC;CACD,SAAS,SAAS,OAAO,KAAK,IAAI,MAAM,UAAU,QAAQ,KAAK;CAC/D,MAAM,eAAe,CAAC;CACtB,IAAI,SAAS,MACX,OAAO;EAAE,OAAO,KAAK;EAAG,YAAY,KAAK;EAAG;CAAa;CAE3D,MAAM,cAAc,CAAC;CACrB,KAAK,MAAM,QAAQ,OACjB,QAAQ,KAAK,MAAb;EACE,KAAK;GACH,YAAY,KAAK;IACf,MAAM;IACN,UAAU;KACR,MAAM,KAAK;KACX,aAAa,KAAK;KAClB,YAAY,KAAK;KACjB,QAAQ,oBAAoB,mBAAmB,KAAK;IACtD;GACF,CAAC;GACD;EACF;GACE,aAAa,KAAK;IAAE,MAAM;IAAoB;GAAK,CAAC;GACpD;CACJ;CAEF,IAAI,cAAc,MAChB,OAAO;EAAE,OAAO;EAAa,YAAY,KAAK;EAAG;CAAa;CAEhE,MAAM,OAAO,WAAW;CACxB,QAAQ,MAAR;EACE,KAAK;EACL,KAAK;EACL,KAAK,YACH,OAAO;GAAE,OAAO;GAAa,YAAY;GAAM;EAAa;EAC9D,KAAK,QACH,OAAO;GACL,OAAO;GACP,YAAY;IACV,MAAM;IACN,UAAU,EACR,MAAM,WAAW,SACnB;GACF;GACA;EACF;EACF,SAEE,MAAM,IAAIC,8BAA+B,EACvC,eAAe,qBAAqBN,OACtC,CAAC;CAEL;AACF;AAGA,IAAI,0BAA0B,MAAM;CAClC,YAAY,SAAS,QAAQ;EAC3B,KAAK,uBAAuB;EAC5B,KAAK,gBAAgB,EACnB,WAAW,CAAC,iBAAiB,EAC/B;EACA,KAAK,UAAU;EACf,KAAK,SAAS;CAChB;CACA,IAAI,WAAW;EACb,OAAO,KAAK,OAAO;CACrB;CACA,MAAM,QAAQ,EACZ,QACA,iBACA,aACA,MACA,MACA,kBACA,iBACA,eACA,gBACA,MACA,OACA,YACA,mBACC;EACD,IAAI,IAAI,IAAI,IAAI;EAChB,MAAM,WAAW,CAAC;EAClB,MAAM,iBAAiB,KAAK,MAAM,qBAAqB;GACrD,UAAU;GACV;GACA,QAAQ;EACV,CAAC,MAAM,OAAO,KAAK,CAAC;EACpB,MAAM,qBAAqB,KAAK,cAAc,sBAAsB,OAAO,KAAK;EAChF,MAAM,oBAAoB,mCAAmC,KAAK,OAAO;EACzE,IAAI,QAAQ,MACV,SAAS,KAAK;GACZ,MAAM;GACN,SAAS;EACX,CAAC;EAEH,KAAK,kBAAkB,OAAO,KAAK,IAAI,eAAe,UAAU,UAAU,eAAe,UAAU,QAAQ,CAAC,mBAC1G,SAAS,KAAK;GACZ,MAAM;GACN,SAAS;GACT,SAAS;EACX,CAAC;EAEH,MAAM,EAAE,UAAU,UAAU,oBAAoB,4BAC9C;GACE;GACA,mBAAmB,kBAAkB;EACvC,CACF;EACA,SAAS,KAAK,GAAG,eAAe;EAChC,MAAM,oBAAoB,KAAK,cAAc,qBAAqB,OAAO,KAAK;EAC9E,MAAM,WAAW;GAEf,OAAO,KAAK;GAEZ,YAAY,cAAc;GAC1B,UAAU,cAAc,aAAa,QAAQ,OAAO,cAAc,aAAa,WAAW,OAAO,KAAK;GACtG,cAAc,OAAO,cAAc,aAAa,WAAW,cAAc,WAAW,OAAO,cAAc,aAAa,YAAY,cAAc,WAAW,IAAI,KAAK,IAAI,KAAK;GAC7K,MAAM,cAAc;GACpB,qBAAqB,cAAc;GAEnC,YAAY;GACZ;GACA,OAAO;GACP,mBAAmB;GACnB,kBAAkB;GAClB,kBAAkB,kBAAkB,OAAO,KAAK,IAAI,eAAe,UAAU,SAAS,qBAAqB,eAAe,UAAU,OAAO;IACzI,MAAM;IACN,aAAa;KACX,QAAQ,eAAe;KACvB,QAAQ;KACR,OAAO,KAAK,eAAe,SAAS,OAAO,KAAK;KAChD,aAAa,eAAe;IAC9B;GACF,IAAI,EAAE,MAAM,cAAc,IAAI,KAAK;GACnC,MAAM;GACN;GACA,WAAW,cAAc;GAGzB,uBAAuB,cAAc;GACrC,OAAO,cAAc;GACrB,UAAU,cAAc;GACxB,YAAY,cAAc;GAC1B,kBAAkB,cAAc;GAChC,cAAc,cAAc;GAC5B,kBAAkB,cAAc;GAChC,sBAAsB,cAAc;GACpC,wBAAwB,cAAc;GACtC,mBAAmB,cAAc;GAEjC;EACF;EACA,IAAI,kBAAkB,kBAAkB;GACtC,IAAI,cAAc,oBAAoB,UAAU,CAAC,kBAAkB,gCAAgC;IACjG,IAAI,SAAS,eAAe,MAAM;KAChC,SAAS,cAAc,KAAK;KAC5B,SAAS,KAAK;MACZ,MAAM;MACN,SAAS;MACT,SAAS;KACX,CAAC;IACH;IACA,IAAI,SAAS,SAAS,MAAM;KAC1B,SAAS,QAAQ,KAAK;KACtB,SAAS,KAAK;MACZ,MAAM;MACN,SAAS;MACT,SAAS;KACX,CAAC;IACH;IACA,IAAI,SAAS,YAAY,MAAM;KAC7B,SAAS,WAAW,KAAK;KACzB,SAAS,KAAK;MACZ,MAAM;MACN,SAAS;KACX,CAAC;IACH;GACF;GACA,IAAI,SAAS,qBAAqB,MAAM;IACtC,SAAS,oBAAoB,KAAK;IAClC,SAAS,KAAK;KACZ,MAAM;KACN,SAAS;KACT,SAAS;IACX,CAAC;GACH;GACA,IAAI,SAAS,oBAAoB,MAAM;IACrC,SAAS,mBAAmB,KAAK;IACjC,SAAS,KAAK;KACZ,MAAM;KACN,SAAS;KACT,SAAS;IACX,CAAC;GACH;GACA,IAAI,SAAS,cAAc,MAAM;IAC/B,SAAS,aAAa,KAAK;IAC3B,SAAS,KAAK;KACZ,MAAM;KACN,SAAS;IACX,CAAC;GACH;GACA,IAAI,SAAS,gBAAgB,MAAM;IACjC,SAAS,eAAe,KAAK;IAC7B,SAAS,KAAK;KACZ,MAAM;KACN,SAAS;IACX,CAAC;GACH;GACA,IAAI,SAAS,cAAc,MAAM;IAC/B,IAAI,SAAS,yBAAyB,MACpC,SAAS,wBAAwB,SAAS;IAE5C,SAAS,aAAa,KAAK;GAC7B;EACF,OAAO,IAAI,KAAK,QAAQ,WAAW,uBAAuB,KAAK,KAAK,QAAQ,WAAW,4BAA4B,GAC7G;OAAA,SAAS,eAAe,MAAM;IAChC,SAAS,cAAc,KAAK;IAC5B,SAAS,KAAK;KACZ,MAAM;KACN,SAAS;KACT,SAAS;IACX,CAAC;GACH;;EAEF,IAAI,cAAc,gBAAgB,UAAU,CAAC,kBAAkB,wBAAwB;GACrF,SAAS,KAAK;IACZ,MAAM;IACN,SAAS;IACT,SAAS;GACX,CAAC;GACD,SAAS,eAAe,KAAK;EAC/B;EACA,IAAI,cAAc,gBAAgB,cAAc,CAAC,kBAAkB,4BAA4B;GAC7F,SAAS,KAAK;IACZ,MAAM;IACN,SAAS;IACT,SAAS;GACX,CAAC;GACD,SAAS,eAAe,KAAK;EAC/B;EACA,MAAM,EACJ,OAAO,aACP,YAAY,kBACZ,iBACE,iBAAiB;GACnB;GACA;GACA;GACA;EACF,CAAC;EACD,OAAO;GACL,MAAM;IACJ,GAAG;IACH,OAAO;IACP,aAAa;GACf;GACA,UAAU,CAAC,GAAG,UAAU,GAAG,YAAY;EACzC;CACF;CACA,MAAM,WAAW,SAAS;EACxB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;EACxD,MAAM,EAAE,MAAM,MAAM,aAAa,MAAM,KAAK,QAAQ,OAAO;EAC3D,MAAM,EACJ,iBACA,OAAO,UACP,UAAU,gBACR,MAAM,cAAc;GACtB,KAAK,KAAK,OAAO,IAAI;IACnB,MAAM;IACN,SAAS,KAAK;GAChB,CAAC;GACD,SAAS,eAAe,KAAK,OAAO,QAAQ,GAAG,QAAQ,OAAO;GAC9D;GACA,uBAAuB;GACvB,2BAA2B,0BACzB,wBACF;GACA,aAAa,QAAQ;GACrB,OAAO,KAAK,OAAO;EACrB,CAAC;EACD,MAAM,SAAS,SAAS,QAAQ;EAChC,MAAM,UAAU,CAAC;EACjB,MAAM,OAAO,OAAO,QAAQ;EAC5B,IAAI,QAAQ,QAAQ,KAAK,SAAS,GAChC,QAAQ,KAAK;GAAE,MAAM;GAAQ;EAAK,CAAC;EAErC,KAAK,MAAM,aAAa,KAAK,OAAO,QAAQ,eAAe,OAAO,KAAK,CAAC,GACtE,QAAQ,KAAK;GACX,MAAM;GACN,aAAa,KAAK,SAAS,OAAO,OAAO,KAAK,WAAW;GACzD,UAAU,SAAS,SAAS;GAC5B,OAAO,SAAS,SAAS;EAC3B,CAAC;EAEH,KAAK,MAAM,eAAe,KAAK,OAAO,QAAQ,gBAAgB,OAAO,KAAK,CAAC,GACzE,QAAQ,KAAK;GACX,MAAM;GACN,YAAY;GACZ,IAAI,WAAW;GACf,KAAK,WAAW,aAAa;GAC7B,OAAO,WAAW,aAAa;EACjC,CAAC;EAEH,MAAM,0BAA0B,KAAK,SAAS,UAAU,OAAO,KAAK,IAAI,GAAG;EAC3E,MAAM,sBAAsB,KAAK,SAAS,UAAU,OAAO,KAAK,IAAI,GAAG;EACvE,MAAM,mBAAmB,EAAE,QAAQ,CAAC,EAAE;EACtC,KAAK,0BAA0B,OAAO,KAAK,IAAI,uBAAuB,+BAA+B,MACnG,iBAAiB,OAAO,2BAA2B,0BAA0B,OAAO,KAAK,IAAI,uBAAuB;EAEtH,KAAK,0BAA0B,OAAO,KAAK,IAAI,uBAAuB,+BAA+B,MACnG,iBAAiB,OAAO,2BAA2B,0BAA0B,OAAO,KAAK,IAAI,uBAAuB;EAEtH,KAAK,sBAAsB,OAAO,KAAK,IAAI,mBAAmB,uBAAuB,MACnF,iBAAiB,OAAO,QAAQ,EAC9B,kBAAkB,mBAAmB,mBACvC;EAEF,MAAM,KAAK,OAAO,aAAa,OAAO,KAAK,IAAI,GAAG,YAAY,MAC5D,iBAAiB,OAAO,WAAW,OAAO,SAAS;EAErD,OAAO;GACL;GACA,cAAc,sBAAsB,OAAO,aAAa;GACxD,OAAO;IACL,cAAc,MAAM,KAAK,SAAS,UAAU,OAAO,KAAK,IAAI,GAAG,kBAAkB,OAAO,KAAK,KAAK;IAClG,eAAe,MAAM,KAAK,SAAS,UAAU,OAAO,KAAK,IAAI,GAAG,sBAAsB,OAAO,KAAK,KAAK;IACvG,cAAc,MAAM,KAAK,SAAS,UAAU,OAAO,KAAK,IAAI,GAAG,iBAAiB,OAAO,KAAK,KAAK;IACjG,kBAAkB,KAAK,0BAA0B,OAAO,KAAK,IAAI,uBAAuB,qBAAqB,OAAO,KAAK,KAAK;IAC9H,oBAAoB,KAAK,sBAAsB,OAAO,KAAK,IAAI,mBAAmB,kBAAkB,OAAO,KAAK,KAAK;GACvH;GACA,SAAS,EAAE,KAAK;GAChB,UAAU;IACR,GAAGC,sBAAoB,QAAQ;IAC/B,SAAS;IACT,MAAM;GACR;GACA;GACA;EACF;CACF;CACA,MAAM,SAAS,SAAS;EACtB,MAAM,EAAE,MAAM,aAAa,MAAM,KAAK,QAAQ,OAAO;EACrD,MAAM,OAAO;GACX,GAAG;GACH,QAAQ;GACR,gBAAgB,EACd,eAAe,KACjB;EACF;EACA,MAAM,EAAE,iBAAiB,OAAO,aAAa,MAAM,cAAc;GAC/D,KAAK,KAAK,OAAO,IAAI;IACnB,MAAM;IACN,SAAS,KAAK;GAChB,CAAC;GACD,SAAS,eAAe,KAAK,OAAO,QAAQ,GAAG,QAAQ,OAAO;GAC9D;GACA,uBAAuB;GACvB,2BAA2B,iCACzB,qBACF;GACA,aAAa,QAAQ;GACrB,OAAO,KAAK,OAAO;EACrB,CAAC;EACD,MAAM,YAAY,CAAC;EACnB,IAAI,eAAe;EACnB,MAAM,QAAQ;GACZ,aAAa,KAAK;GAClB,cAAc,KAAK;GACnB,aAAa,KAAK;EACpB;EACA,IAAI,oBAAoB;EACxB,IAAI,eAAe;EACnB,MAAM,mBAAmB,EAAE,QAAQ,CAAC,EAAE;EACtC,OAAO;GACL,QAAQ,SAAS,YACf,IAAI,gBAAgB;IAClB,MAAM,YAAY;KAChB,WAAW,QAAQ;MAAE,MAAM;MAAgB;KAAS,CAAC;IACvD;IACA,UAAU,OAAO,YAAY;KAC3B,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;KACpG,IAAI,QAAQ,kBACV,WAAW,QAAQ;MAAE,MAAM;MAAO,UAAU,MAAM;KAAS,CAAC;KAE9D,IAAI,CAAC,MAAM,SAAS;MAClB,eAAe;MACf,WAAW,QAAQ;OAAE,MAAM;OAAS,OAAO,MAAM;MAAM,CAAC;MACxD;KACF;KACA,MAAM,QAAQ,MAAM;KACpB,IAAI,WAAW,OAAO;MACpB,eAAe;MACf,WAAW,QAAQ;OAAE,MAAM;OAAS,OAAO,MAAM;MAAM,CAAC;MACxD;KACF;KACA,IAAI,CAAC,mBAAmB;MACtB,MAAM,WAAWA,sBAAoB,KAAK;MAC1C,IAAI,OAAO,OAAO,QAAQ,CAAC,CAAC,KAAK,OAAO,GAAG;OACzC,oBAAoB;OACpB,WAAW,QAAQ;QACjB,MAAM;QACN,GAAGA,sBAAoB,KAAK;OAC9B,CAAC;MACH;KACF;KACA,IAAI,MAAM,SAAS,MAAM;MACvB,MAAM,eAAe,KAAK,MAAM,MAAM,kBAAkB,OAAO,KAAK,KAAK;MACzE,MAAM,gBAAgB,KAAK,MAAM,MAAM,sBAAsB,OAAO,KAAK,KAAK;MAC9E,MAAM,eAAe,KAAK,MAAM,MAAM,iBAAiB,OAAO,KAAK,KAAK;MACxE,MAAM,mBAAmB,MAAM,KAAK,MAAM,MAAM,8BAA8B,OAAO,KAAK,IAAI,GAAG,qBAAqB,OAAO,KAAK,KAAK;MACvI,MAAM,qBAAqB,MAAM,KAAK,MAAM,MAAM,0BAA0B,OAAO,KAAK,IAAI,GAAG,kBAAkB,OAAO,KAAK,KAAK;MAClI,MAAM,KAAK,MAAM,MAAM,0BAA0B,OAAO,KAAK,IAAI,GAAG,uBAAuB,MACzF,iBAAiB,OAAO,QAAQ,EAC9B,kBAAkB,MAAM,MAAM,sBAAsB,mBACtD;MAEF,MAAM,KAAK,MAAM,MAAM,8BAA8B,OAAO,KAAK,IAAI,GAAG,+BAA+B,MACrG,iBAAiB,OAAO,4BAA4B,KAAK,MAAM,MAAM,8BAA8B,OAAO,KAAK,IAAI,GAAG;MAExH,MAAM,KAAK,MAAM,MAAM,8BAA8B,OAAO,KAAK,IAAI,GAAG,+BAA+B,MACrG,iBAAiB,OAAO,4BAA4B,KAAK,MAAM,MAAM,8BAA8B,OAAO,KAAK,IAAI,GAAG;KAE1H;KACA,MAAM,SAAS,MAAM,QAAQ;KAC7B,KAAK,UAAU,OAAO,KAAK,IAAI,OAAO,kBAAkB,MACtD,eAAe,sBAAsB,OAAO,aAAa;KAE3D,MAAM,KAAK,UAAU,OAAO,KAAK,IAAI,OAAO,aAAa,OAAO,KAAK,IAAI,GAAG,YAAY,MACtF,iBAAiB,OAAO,WAAW,OAAO,SAAS;KAErD,KAAK,UAAU,OAAO,KAAK,IAAI,OAAO,UAAU,MAC9C;KAEF,MAAM,QAAQ,OAAO;KACrB,IAAI,MAAM,WAAW,MAAM;MACzB,IAAI,CAAC,cAAc;OACjB,WAAW,QAAQ;QAAE,MAAM;QAAc,IAAI;OAAI,CAAC;OAClD,eAAe;MACjB;MACA,WAAW,QAAQ;OACjB,MAAM;OACN,IAAI;OACJ,OAAO,MAAM;MACf,CAAC;KACH;KACA,IAAI,MAAM,cAAc,MACtB,KAAK,MAAM,iBAAiB,MAAM,YAAY;MAC5C,MAAM,QAAQ,cAAc;MAC5B,IAAI,UAAU,UAAU,MAAM;OAC5B,IAAI,cAAc,QAAQ,QAAQ,cAAc,SAAS,YACvD,MAAM,IAAI,yBAAyB;QACjC,MAAM;QACN,SAAS;OACX,CAAC;OAEH,IAAI,cAAc,MAAM,MACtB,MAAM,IAAI,yBAAyB;QACjC,MAAM;QACN,SAAS;OACX,CAAC;OAEH,MAAM,KAAK,cAAc,aAAa,OAAO,KAAK,IAAI,GAAG,SAAS,MAChE,MAAM,IAAI,yBAAyB;QACjC,MAAM;QACN,SAAS;OACX,CAAC;OAEH,WAAW,QAAQ;QACjB,MAAM;QACN,IAAI,cAAc;QAClB,UAAU,cAAc,SAAS;OACnC,CAAC;OACD,UAAU,SAAS;QACjB,IAAI,cAAc;QAClB,MAAM;QACN,UAAU;SACR,MAAM,cAAc,SAAS;SAC7B,YAAY,KAAK,cAAc,SAAS,cAAc,OAAO,KAAK;QACpE;QACA,aAAa;OACf;OACA,MAAM,YAAY,UAAU;OAC5B,MAAM,KAAK,UAAU,aAAa,OAAO,KAAK,IAAI,GAAG,SAAS,UAAU,KAAK,UAAU,aAAa,OAAO,KAAK,IAAI,GAAG,cAAc,MAAM;QACzI,IAAI,UAAU,SAAS,UAAU,SAAS,GACxC,WAAW,QAAQ;SACjB,MAAM;SACN,IAAI,UAAU;SACd,OAAO,UAAU,SAAS;QAC5B,CAAC;QAEH,IAAI,eAAe,UAAU,SAAS,SAAS,GAAG;SAChD,WAAW,QAAQ;UACjB,MAAM;UACN,IAAI,UAAU;SAChB,CAAC;SACD,WAAW,QAAQ;UACjB,MAAM;UACN,aAAa,KAAK,UAAU,OAAO,OAAO,KAAK,WAAW;UAC1D,UAAU,UAAU,SAAS;UAC7B,OAAO,UAAU,SAAS;SAC5B,CAAC;SACD,UAAU,cAAc;QAC1B;OACF;OACA;MACF;MACA,MAAM,WAAW,UAAU;MAC3B,IAAI,SAAS,aACX;MAEF,MAAM,KAAK,cAAc,aAAa,OAAO,KAAK,IAAI,GAAG,cAAc,MACrE,SAAS,SAAS,cAAc,MAAM,KAAK,cAAc,aAAa,OAAO,KAAK,IAAI,GAAG,cAAc,OAAO,KAAK;MAErH,WAAW,QAAQ;OACjB,MAAM;OACN,IAAI,SAAS;OACb,QAAQ,KAAK,cAAc,SAAS,cAAc,OAAO,KAAK;MAChE,CAAC;MACD,MAAM,KAAK,SAAS,aAAa,OAAO,KAAK,IAAI,GAAG,SAAS,UAAU,KAAK,SAAS,aAAa,OAAO,KAAK,IAAI,GAAG,cAAc,QAAQ,eAAe,SAAS,SAAS,SAAS,GAAG;OACtL,WAAW,QAAQ;QACjB,MAAM;QACN,IAAI,SAAS;OACf,CAAC;OACD,WAAW,QAAQ;QACjB,MAAM;QACN,aAAa,KAAK,SAAS,OAAO,OAAO,KAAK,WAAW;QACzD,UAAU,SAAS,SAAS;QAC5B,OAAO,SAAS,SAAS;OAC3B,CAAC;OACD,SAAS,cAAc;MACzB;KACF;KAEF,IAAI,MAAM,eAAe,MACvB,KAAK,MAAM,cAAc,MAAM,aAC7B,WAAW,QAAQ;MACjB,MAAM;MACN,YAAY;MACZ,IAAI,WAAW;MACf,KAAK,WAAW,aAAa;MAC7B,OAAO,WAAW,aAAa;KACjC,CAAC;IAGP;IACA,MAAM,YAAY;KAChB,IAAI,cACF,WAAW,QAAQ;MAAE,MAAM;MAAY,IAAI;KAAI,CAAC;KAElD,WAAW,QAAQ;MACjB,MAAM;MACN;MACA;MACA,GAAG,oBAAoB,OAAO,EAAE,iBAAiB,IAAI,CAAC;KACxD,CAAC;IACH;GACF,CAAC,CACH;GACA,SAAS,EAAE,KAAK;GAChB,UAAU,EAAE,SAAS,gBAAgB;EACvC;CACF;AACF;AAgBA,SAAS,gCAAgC,EACvC,QACA,OAAO,QACP,YAAY,eACX;CACD,IAAI,OAAO;CACX,IAAI,OAAO,EAAE,CAAC,SAAS,UAAU;EAC/B,QAAQ,GAAG,OAAO,EAAE,CAAC,QAAQ;;;EAG7B,SAAS,OAAO,MAAM,CAAC;CACzB;CACA,KAAK,MAAM,EAAE,MAAM,aAAa,QAC9B,QAAQ,MAAR;EACE,KAAK,UACH,MAAM,IAAI,mBAAmB;GAC3B,SAAS;GACT;EACF,CAAC;EAEH,KAAK,QAAQ;GACX,MAAM,cAAc,QAAQ,KAAK,SAAS;IACxC,QAAQ,KAAK,MAAb;KACE,KAAK,QACH,OAAO,KAAK;IAEhB;GACF,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,EAAE;GAC1B,QAAQ,GAAG,KAAK;EACtB,YAAY;;;GAGN;EACF;EACA,KAAK,aAAa;GAChB,MAAM,mBAAmB,QAAQ,KAAK,SAAS;IAC7C,QAAQ,KAAK,MAAb;KACE,KAAK,QACH,OAAO,KAAK;KAEd,KAAK,aACH,MAAM,IAAIM,8BAA+B,EACvC,eAAe,qBACjB,CAAC;IAEL;GACF,CAAC,CAAC,CAAC,KAAK,EAAE;GACV,QAAQ,GAAG,UAAU;EAC3B,iBAAiB;;;GAGX;EACF;EACA,KAAK,QACH,MAAM,IAAIA,8BAA+B,EACvC,eAAe,gBACjB,CAAC;EAEH,SAEE,MAAM,IAAI,MAAM,qBAAqBP,MAAkB;CAE3D;CAEF,QAAQ,GAAG,UAAU;;CAErB,OAAO;EACL,QAAQ;EACR,eAAe,CAAC;EAClB,KAAK,EAAE;CACP;AACF;AAGA,SAAS,qBAAqB,EAC5B,IACA,OACA,WACC;CACD,OAAO;EACL,IAAI,MAAM,OAAO,KAAK,KAAK;EAC3B,SAAS,SAAS,OAAO,QAAQ,KAAK;EACtC,WAAW,WAAW,uBAAO,IAAI,KAAK,UAAU,GAAG,IAAI,KAAK;CAC9D;AACF;AAGA,SAAS,uBAAuB,cAAc;CAC5C,QAAQ,cAAR;EACE,KAAK,QACH,OAAO;EACT,KAAK,UACH,OAAO;EACT,KAAK,kBACH,OAAO;EACT,KAAK;EACL,KAAK,cACH,OAAO;EACT,SACE,OAAO;CACX;AACF;AAQA,IAAI,iCAAiCQ,oBAC7BC,UACJC,OAAAA,EAAG,OAAO;CACR,IAAIA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;CACxB,SAASA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;CAC7B,OAAOA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;CAC3B,SAASA,OAAAA,EAAG,MACVA,OAAAA,EAAG,OAAO;EACR,MAAMA,OAAAA,EAAG,OAAO;EAChB,eAAeA,OAAAA,EAAG,OAAO;EACzB,UAAUA,OAAAA,EAAG,OAAO;GAClB,QAAQA,OAAAA,EAAG,MAAMA,OAAAA,EAAG,OAAO,CAAC;GAC5B,gBAAgBA,OAAAA,EAAG,MAAMA,OAAAA,EAAG,OAAO,CAAC;GACpC,cAAcA,OAAAA,EAAG,MAAMA,OAAAA,EAAG,OAAOA,OAAAA,EAAG,OAAO,GAAGA,OAAAA,EAAG,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ;EACtE,CAAC,CAAC,CAAC,QAAQ;CACb,CAAC,CACH;CACA,OAAOA,OAAAA,EAAG,OAAO;EACf,eAAeA,OAAAA,EAAG,OAAO;EACzB,mBAAmBA,OAAAA,EAAG,OAAO;EAC7B,cAAcA,OAAAA,EAAG,OAAO;CAC1B,CAAC,CAAC,CAAC,QAAQ;AACb,CAAC,CACH,CACF;AACA,IAAI,8BAA8BF,oBAC1BC,UACJC,OAAAA,EAAG,MAAM,CACPA,OAAAA,EAAG,OAAO;CACR,IAAIA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;CACxB,SAASA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;CAC7B,OAAOA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;CAC3B,SAASA,OAAAA,EAAG,MACVA,OAAAA,EAAG,OAAO;EACR,MAAMA,OAAAA,EAAG,OAAO;EAChB,eAAeA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;EACnC,OAAOA,OAAAA,EAAG,OAAO;EACjB,UAAUA,OAAAA,EAAG,OAAO;GAClB,QAAQA,OAAAA,EAAG,MAAMA,OAAAA,EAAG,OAAO,CAAC;GAC5B,gBAAgBA,OAAAA,EAAG,MAAMA,OAAAA,EAAG,OAAO,CAAC;GACpC,cAAcA,OAAAA,EAAG,MAAMA,OAAAA,EAAG,OAAOA,OAAAA,EAAG,OAAO,GAAGA,OAAAA,EAAG,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ;EACtE,CAAC,CAAC,CAAC,QAAQ;CACb,CAAC,CACH;CACA,OAAOA,OAAAA,EAAG,OAAO;EACf,eAAeA,OAAAA,EAAG,OAAO;EACzB,mBAAmBA,OAAAA,EAAG,OAAO;EAC7B,cAAcA,OAAAA,EAAG,OAAO;CAC1B,CAAC,CAAC,CAAC,QAAQ;AACb,CAAC,GACD,qBACF,CAAC,CACH,CACF;AAQA,IAAI,kCAAkCC,oBAC9BC,UACJC,OAAAA,EAAG,OAAO;;;;CAIR,MAAMA,OAAAA,EAAG,QAAQ,CAAC,CAAC,SAAS;;;;;;;;;;;;;;;CAe5B,WAAWA,OAAAA,EAAG,OAAOA,OAAAA,EAAG,OAAO,GAAGA,OAAAA,EAAG,OAAO,CAAC,CAAC,CAAC,SAAS;;;;CAIxD,QAAQA,OAAAA,EAAG,OAAO,CAAC,CAAC,SAAS;;;;;CAK7B,MAAMA,OAAAA,EAAG,OAAO,CAAC,CAAC,SAAS;;;;;;;;;;CAU3B,UAAUA,OAAAA,EAAG,MAAM,CAACA,OAAAA,EAAG,QAAQ,GAAGA,OAAAA,EAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;AAC3D,CAAC,CACH,CACF;AAGA,IAAI,gCAAgC,MAAM;CACxC,YAAY,SAAS,QAAQ;EAC3B,KAAK,uBAAuB;EAC5B,KAAK,gBAAgB,CAErB;EACA,KAAK,UAAU;EACf,KAAK,SAAS;CAChB;CACA,IAAI,sBAAsB;EACxB,OAAO,KAAK,OAAO,SAAS,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;CACjD;CACA,IAAI,WAAW;EACb,OAAO,KAAK,OAAO;CACrB;CACA,MAAM,QAAQ,EACZ,QACA,iBACA,aACA,MACA,MACA,kBACA,iBACA,eAAe,mBACf,gBACA,OACA,YACA,MACA,mBACC;EACD,MAAM,WAAW,CAAC;EAClB,MAAM,gBAAgB;GACpB,GAAG,MAAMC,qBAAsB;IAC7B,UAAU;IACV;IACA,QAAQ;GACV,CAAC;GACD,GAAG,MAAMA,qBAAsB;IAC7B,UAAU,KAAK;IACf;IACA,QAAQ;GACV,CAAC;EACH;EACA,IAAI,QAAQ,MACV,SAAS,KAAK;GAAE,MAAM;GAAuB,SAAS;EAAO,CAAC;EAEhE,IAAI,SAAS,OAAO,KAAK,IAAI,MAAM,QACjC,SAAS,KAAK;GAAE,MAAM;GAAuB,SAAS;EAAQ,CAAC;EAEjE,IAAI,cAAc,MAChB,SAAS,KAAK;GAAE,MAAM;GAAuB,SAAS;EAAa,CAAC;EAEtE,IAAI,kBAAkB,QAAQ,eAAe,SAAS,QACpD,SAAS,KAAK;GACZ,MAAM;GACN,SAAS;GACT,SAAS;EACX,CAAC;EAEH,MAAM,EAAE,QAAQ,kBAAkB,kBAAkB,gCAAgC,EAAE,OAAO,CAAC;EAC9F,MAAM,OAAO,CAAC,GAAG,iBAAiB,OAAO,gBAAgB,CAAC,GAAG,GAAG,qBAAqB,OAAO,oBAAoB,CAAC,CAAC;EAClH,OAAO;GACL,MAAM;IAEJ,OAAO,KAAK;IAEZ,MAAM,cAAc;IACpB,YAAY,cAAc;IAC1B,WAAW,iBAAiB,OAAO,KAAK,IAAI,cAAc,cAAc,OAAO,KAAK,iBAAiB,OAAO,KAAK,IAAI,cAAc,cAAc,QAAQ,KAAK,IAAI,iBAAiB,OAAO,KAAK,IAAI,cAAc;IACjN,QAAQ,cAAc;IACtB,MAAM,cAAc;IAEpB,YAAY;IACZ;IACA,OAAO;IACP,mBAAmB;IACnB,kBAAkB;IAClB;IAEA,QAAQ;IAER,MAAM,KAAK,SAAS,IAAI,OAAO,KAAK;GACtC;GACA;EACF;CACF;CACA,MAAM,WAAW,SAAS;EACxB,IAAI,IAAI,IAAI;EACZ,MAAM,EAAE,MAAM,aAAa,MAAM,KAAK,QAAQ,OAAO;EACrD,MAAM,EACJ,iBACA,OAAO,UACP,UAAU,gBACR,MAAMC,cAAe;GACvB,KAAK,KAAK,OAAO,IAAI;IACnB,MAAM;IACN,SAAS,KAAK;GAChB,CAAC;GACD,SAASC,eAAgB,KAAK,OAAO,QAAQ,GAAG,QAAQ,OAAO;GAC/D,MAAM;GACN,uBAAuB;GACvB,2BAA2BC,0BACzB,8BACF;GACA,aAAa,QAAQ;GACrB,OAAO,KAAK,OAAO;EACrB,CAAC;EACD,MAAM,SAAS,SAAS,QAAQ;EAChC,MAAM,mBAAmB,EAAE,QAAQ,CAAC,EAAE;EACtC,IAAI,OAAO,YAAY,MACrB,iBAAiB,OAAO,WAAW,OAAO;EAE5C,OAAO;GACL,SAAS,CAAC;IAAE,MAAM;IAAQ,MAAM,OAAO;GAAK,CAAC;GAC7C,OAAO;IACL,cAAc,KAAK,SAAS,UAAU,OAAO,KAAK,IAAI,GAAG;IACzD,eAAe,KAAK,SAAS,UAAU,OAAO,KAAK,IAAI,GAAG;IAC1D,cAAc,KAAK,SAAS,UAAU,OAAO,KAAK,IAAI,GAAG;GAC3D;GACA,cAAc,uBAAuB,OAAO,aAAa;GACzD,SAAS,EAAE,MAAM,KAAK;GACtB,UAAU;IACR,GAAG,qBAAqB,QAAQ;IAChC,SAAS;IACT,MAAM;GACR;GACA;GACA;EACF;CACF;CACA,MAAM,SAAS,SAAS;EACtB,MAAM,EAAE,MAAM,aAAa,MAAM,KAAK,QAAQ,OAAO;EACrD,MAAM,OAAO;GACX,GAAG;GACH,QAAQ;GACR,gBAAgB,EACd,eAAe,KACjB;EACF;EACA,MAAM,EAAE,iBAAiB,OAAO,aAAa,MAAMF,cAAe;GAChE,KAAK,KAAK,OAAO,IAAI;IACnB,MAAM;IACN,SAAS,KAAK;GAChB,CAAC;GACD,SAASC,eAAgB,KAAK,OAAO,QAAQ,GAAG,QAAQ,OAAO;GAC/D;GACA,uBAAuB;GACvB,2BAA2BE,iCACzB,2BACF;GACA,aAAa,QAAQ;GACrB,OAAO,KAAK,OAAO;EACrB,CAAC;EACD,IAAI,eAAe;EACnB,MAAM,mBAAmB,EAAE,QAAQ,CAAC,EAAE;EACtC,MAAM,QAAQ;GACZ,aAAa,KAAK;GAClB,cAAc,KAAK;GACnB,aAAa,KAAK;EACpB;EACA,IAAI,eAAe;EACnB,OAAO;GACL,QAAQ,SAAS,YACf,IAAI,gBAAgB;IAClB,MAAM,YAAY;KAChB,WAAW,QAAQ;MAAE,MAAM;MAAgB;KAAS,CAAC;IACvD;IACA,UAAU,OAAO,YAAY;KAC3B,IAAI,QAAQ,kBACV,WAAW,QAAQ;MAAE,MAAM;MAAO,UAAU,MAAM;KAAS,CAAC;KAE9D,IAAI,CAAC,MAAM,SAAS;MAClB,eAAe;MACf,WAAW,QAAQ;OAAE,MAAM;OAAS,OAAO,MAAM;MAAM,CAAC;MACxD;KACF;KACA,MAAM,QAAQ,MAAM;KACpB,IAAI,WAAW,OAAO;MACpB,eAAe;MACf,WAAW,QAAQ;OAAE,MAAM;OAAS,OAAO,MAAM;MAAM,CAAC;MACxD;KACF;KACA,IAAI,cAAc;MAChB,eAAe;MACf,WAAW,QAAQ;OACjB,MAAM;OACN,GAAG,qBAAqB,KAAK;MAC/B,CAAC;MACD,WAAW,QAAQ;OAAE,MAAM;OAAc,IAAI;MAAI,CAAC;KACpD;KACA,IAAI,MAAM,SAAS,MAAM;MACvB,MAAM,cAAc,MAAM,MAAM;MAChC,MAAM,eAAe,MAAM,MAAM;MACjC,MAAM,cAAc,MAAM,MAAM;KAClC;KACA,MAAM,SAAS,MAAM,QAAQ;KAC7B,KAAK,UAAU,OAAO,KAAK,IAAI,OAAO,kBAAkB,MACtD,eAAe,uBAAuB,OAAO,aAAa;KAE5D,KAAK,UAAU,OAAO,KAAK,IAAI,OAAO,aAAa,MACjD,iBAAiB,OAAO,WAAW,OAAO;KAE5C,KAAK,UAAU,OAAO,KAAK,IAAI,OAAO,SAAS,QAAQ,OAAO,KAAK,SAAS,GAC1E,WAAW,QAAQ;MACjB,MAAM;MACN,IAAI;MACJ,OAAO,OAAO;KAChB,CAAC;IAEL;IACA,MAAM,YAAY;KAChB,IAAI,CAAC,cACH,WAAW,QAAQ;MAAE,MAAM;MAAY,IAAI;KAAI,CAAC;KAElD,WAAW,QAAQ;MACjB,MAAM;MACN;MACA;MACA;KACF,CAAC;IACH;GACF,CAAC,CACH;GACA,SAAS,EAAE,KAAK;GAChB,UAAU,EAAE,SAAS,gBAAgB;EACvC;CACF;AACF;AAmBA,IAAI,iCAAiCC,oBAC7BC,UACJC,OAAAA,EAAG,OAAO;;;;;CAKR,YAAYA,OAAAA,EAAG,OAAO,CAAC,CAAC,SAAS;;;;;CAKjC,MAAMA,OAAAA,EAAG,OAAO,CAAC,CAAC,SAAS;AAC7B,CAAC,CACH,CACF;AAKA,IAAI,oCAAoCC,oBAChCC,UACJC,OAAAA,EAAG,OAAO;CACR,MAAMA,OAAAA,EAAG,MAAMA,OAAAA,EAAG,OAAO,EAAE,WAAWA,OAAAA,EAAG,MAAMA,OAAAA,EAAG,OAAO,CAAC,EAAE,CAAC,CAAC;CAC9D,OAAOA,OAAAA,EAAG,OAAO,EAAE,eAAeA,OAAAA,EAAG,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ;AAC3D,CAAC,CACH,CACF;AAGA,IAAI,uBAAuB,MAAM;CAC/B,YAAY,SAAS,QAAQ;EAC3B,KAAK,uBAAuB;EAC5B,KAAK,uBAAuB;EAC5B,KAAK,wBAAwB;EAC7B,KAAK,UAAU;EACf,KAAK,SAAS;CAChB;CACA,IAAI,WAAW;EACb,OAAO,KAAK,OAAO;CACrB;CACA,MAAM,QAAQ,EACZ,QACA,SACA,aACA,mBACC;EACD,IAAI;EACJ,IAAI,OAAO,SAAS,KAAK,sBACvB,MAAM,IAAI,mCAAmC;GAC3C,UAAU,KAAK;GACf,SAAS,KAAK;GACd,sBAAsB,KAAK;GAC3B;EACF,CAAC;EAEH,MAAM,iBAAiB,KAAK,MAAMC,qBAAsB;GACtD,UAAU;GACV;GACA,QAAQ;EACV,CAAC,MAAM,OAAO,KAAK,CAAC;EACpB,MAAM,EACJ,iBACA,OAAO,UACP,aACE,MAAMC,cAAe;GACvB,KAAK,KAAK,OAAO,IAAI;IACnB,MAAM;IACN,SAAS,KAAK;GAChB,CAAC;GACD,SAASC,eAAgB,KAAK,OAAO,QAAQ,GAAG,OAAO;GACvD,MAAM;IACJ,OAAO,KAAK;IACZ,OAAO;IACP,iBAAiB;IACjB,YAAY,cAAc;IAC1B,MAAM,cAAc;GACtB;GACA,uBAAuB;GACvB,2BAA2BC,0BACzB,iCACF;GACA;GACA,OAAO,KAAK,OAAO;EACrB,CAAC;EACD,OAAO;GACL,YAAY,SAAS,KAAK,KAAK,SAAS,KAAK,SAAS;GACtD,OAAO,SAAS,QAAQ,EAAE,QAAQ,SAAS,MAAM,cAAc,IAAI,KAAK;GACxE,UAAU;IAAE,SAAS;IAAiB,MAAM;GAAS;EACvD;CACF;AACF;AAaA,IAAI,4BAA4BC,oBACxBC,UACJC,OAAAA,EAAG,OAAO;CACR,SAASA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;CAC7B,MAAMA,OAAAA,EAAG,MACPA,OAAAA,EAAG,OAAO;EACR,UAAUA,OAAAA,EAAG,OAAO;EACpB,gBAAgBA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;CACtC,CAAC,CACH;CACA,YAAYA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;CAChC,eAAeA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;CACnC,MAAMA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;CAC1B,SAASA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;CAC7B,OAAOA,OAAAA,EAAG,OAAO;EACf,cAAcA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;EAClC,eAAeA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;EACnC,cAAcA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;EAClC,sBAAsBA,OAAAA,EAAG,OAAO;GAC9B,cAAcA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;GAClC,aAAaA,OAAAA,EAAG,OAAO,CAAC,CAAC,QAAQ;EACnC,CAAC,CAAC,CAAC,QAAQ;CACb,CAAC,CAAC,CAAC,QAAQ;AACb,CAAC,CACH,CACF;AAQA,IAAI,wBAAwB;CAC1B,YAAY;CACZ,YAAY;CACZ,eAAe;CACf,oBAAoB;CACpB,iBAAiB;CACjB,eAAe;AACjB;AACA,IAAI,gCAAgC,CAAC,YAAY;AACjD,SAAS,yBAAyB,SAAS;CACzC,OAAO,8BAA8B,MAClC,WAAW,QAAQ,WAAW,MAAM,CACvC;AACF;AACA,SAAS,oBAAoB,SAAS;CACpC,IAAI;CACJ,QAAQ,KAAK,sBAAsB,aAAa,OAAO,KAAK,QAAQ,WAAW,YAAY,IAAI,KAAK;AACtG;AACA,IAAI,8BAA8BC,OAAAA,EAAG,OAAO;;;;;;CAM1C,SAASA,OAAAA,EAAG,KAAK;EAAC;EAAY;EAAM;EAAO;EAAU;EAAQ;CAAM,CAAC,CAAC,CAAC,SAAS;;;;;;;CAO/E,YAAYA,OAAAA,EAAG,KAAK;EAAC;EAAe;EAAU;CAAM,CAAC,CAAC,CAAC,SAAS;;;;CAIhE,cAAcA,OAAAA,EAAG,KAAK;EAAC;EAAO;EAAQ;CAAM,CAAC,CAAC,CAAC,SAAS;;;;;CAKxD,mBAAmBA,OAAAA,EAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS;;;;;CAK9D,MAAMA,OAAAA,EAAG,OAAO,CAAC,CAAC,SAAS;AAC7B,CAAC;AAID,IAAI,oCAAoCC,oBAChCC,UACJ,4BAA4B,OAAO;;;;;;CAMjC,OAAOF,OAAAA,EAAG,KAAK,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,SAAS;;;;;CAK9C,YAAYA,OAAAA,EAAG,KAAK,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,SAAS;AAChD,CAAC,CACH,CACF;AAGA,IAAI,mBAAmB,MAAM;CAC3B,YAAY,SAAS,QAAQ;EAC3B,KAAK,UAAU;EACf,KAAK,SAAS;EACd,KAAK,uBAAuB;CAC9B;CACA,IAAI,mBAAmB;EACrB,OAAO,oBAAoB,KAAK,OAAO;CACzC;CACA,IAAI,WAAW;EACb,OAAO,KAAK,OAAO;CACrB;CACA,MAAM,WAAW,EACf,QACA,GACA,MACA,aACA,MACA,iBACA,SACA,eACC;EACD,IAAI,IAAI,IAAI,IAAI;EAChB,MAAM,WAAW,CAAC;EAClB,IAAI,eAAe,MACjB,SAAS,KAAK;GACZ,MAAM;GACN,SAAS;GACT,SAAS;EACX,CAAC;EAEH,IAAI,QAAQ,MACV,SAAS,KAAK;GAAE,MAAM;GAAuB,SAAS;EAAO,CAAC;EAEhE,MAAM,eAAe,MAAM,MAAM,KAAK,KAAK,OAAO,cAAc,OAAO,KAAK,IAAI,GAAG,gBAAgB,OAAO,KAAK,IAAI,GAAG,KAAK,EAAE,MAAM,OAAO,qBAAqB,IAAI,KAAK;EACxK,MAAM,iBAAiB,KAAK,MAAMG,qBAAsB;GACtD,UAAU;GACV;GACA,QAAQ;EACV,CAAC,MAAM,OAAO,KAAK,CAAC;EACpB,MAAM,EAAE,OAAO,UAAU,oBAAoB,MAAMC,cAAe;GAChE,KAAK,KAAK,OAAO,IAAI;IACnB,MAAM;IACN,SAAS,KAAK;GAChB,CAAC;GACD,SAASC,eAAgB,KAAK,OAAO,QAAQ,GAAG,OAAO;GACvD,MAAM;IACJ,OAAO,KAAK;IACZ;IACA;IACA;IACA,SAAS,cAAc;IACvB,OAAO,cAAc;IACrB,YAAY,cAAc;IAC1B,YAAY,cAAc;IAC1B,eAAe,cAAc;IAC7B,oBAAoB,cAAc;IAClC,MAAM,cAAc;IACpB,GAAG,CAAC,yBAAyB,KAAK,OAAO,IAAI,EAAE,iBAAiB,WAAW,IAAI,CAAC;GAClF;GACA,uBAAuB;GACvB,2BAA2BC,0BACzB,yBACF;GACA;GACA,OAAO,KAAK,OAAO;EACrB,CAAC;EACD,OAAO;GACL,QAAQ,SAAS,KAAK,KAAK,SAAS,KAAK,QAAQ;GACjD;GACA,UAAU;IACR,WAAW;IACX,SAAS,KAAK;IACd,SAAS;GACX;GACA,kBAAkB,EAChB,QAAQ,EACN,QAAQ,SAAS,KAAK,KAAK,MAAM,WAAW;IAC1C,GAAG,KAAK,iBAAiB,EAAE,eAAe,KAAK,eAAe,IAAI,CAAC;IACnE,GAAG,SAAS,WAAW,OAAO,EAAE,SAAS,SAAS,QAAQ,IAAI,CAAC;IAC/D,GAAG,SAAS,QAAQ,OAAO,EAAE,MAAM,SAAS,KAAK,IAAI,CAAC;IACtD,GAAG,SAAS,WAAW,OAAO,EAAE,SAAS,SAAS,QAAQ,IAAI,CAAC;IAC/D,GAAG,SAAS,cAAc,OAAO,EAAE,YAAY,SAAS,WAAW,IAAI,CAAC;IACxE,GAAG,SAAS,iBAAiB,OAAO,EAAE,cAAc,SAAS,cAAc,IAAI,CAAC;IAChF,GAAG,uBACD,SAAS,OACT,OACA,SAAS,KAAK,MAChB;GACF,EAAE,EACJ,EACF;EACF;CACF;AACF;AACA,SAAS,uBAAuB,OAAO,OAAO,OAAO;CACnD,IAAI,SAAS,MACX,OAAO,CAAC;CAEV,MAAM,SAAS,CAAC;CAChB,MAAM,UAAU,MAAM;CACtB,KAAK,WAAW,OAAO,KAAK,IAAI,QAAQ,iBAAiB,MAAM;EAC7D,MAAM,OAAO,KAAK,MAAM,QAAQ,eAAe,KAAK;EACpD,MAAM,YAAY,QAAQ,eAAe,QAAQ,QAAQ;EACzD,OAAO,cAAc,UAAU,QAAQ,IAAI,YAAY;CACzD;CACA,KAAK,WAAW,OAAO,KAAK,IAAI,QAAQ,gBAAgB,MAAM;EAC5D,MAAM,OAAO,KAAK,MAAM,QAAQ,cAAc,KAAK;EACnD,MAAM,YAAY,QAAQ,cAAc,QAAQ,QAAQ;EACxD,OAAO,aAAa,UAAU,QAAQ,IAAI,YAAY;CACxD;CACA,IAAI,MAAM,gBAAgB,MAAM;EAC9B,MAAM,OAAO,KAAK,MAAM,MAAM,eAAe,KAAK;EAClD,MAAM,YAAY,MAAM,eAAe,QAAQ,QAAQ;EACvD,OAAO,cAAc,UAAU,QAAQ,IAAI,YAAY;CACzD;CACA,IAAI,MAAM,iBAAiB,MAAM;EAC/B,MAAM,OAAO,KAAK,MAAM,MAAM,gBAAgB,KAAK;EACnD,MAAM,YAAY,MAAM,gBAAgB,QAAQ,QAAQ;EACxD,OAAO,eAAe,UAAU,QAAQ,IAAI,YAAY;CAC1D;CACA,OAAO;AACT;AAeA,IAAI,oCAAoCC,oBAChCC,UACJC,OAAAA,EAAI,OAAO;CACT,MAAMA,OAAAA,EAAI,OAAO;CACjB,UAAUA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;CAC/B,UAAUA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;CAC/B,OAAOA,OAAAA,EAAI,MACTA,OAAAA,EAAI,OAAO;EACT,MAAMA,OAAAA,EAAI,OAAO;EACjB,OAAOA,OAAAA,EAAI,OAAO;EAClB,KAAKA,OAAAA,EAAI,OAAO;CAClB,CAAC,CACH,CAAC,CAAC,QAAQ;CACV,UAAUA,OAAAA,EAAI,MACZA,OAAAA,EAAI,OAAO;EACT,IAAIA,OAAAA,EAAI,OAAO;EACf,MAAMA,OAAAA,EAAI,OAAO;EACjB,OAAOA,OAAAA,EAAI,OAAO;EAClB,KAAKA,OAAAA,EAAI,OAAO;EAChB,MAAMA,OAAAA,EAAI,OAAO;EACjB,QAAQA,OAAAA,EAAI,MAAMA,OAAAA,EAAI,OAAO,CAAC;EAC9B,aAAaA,OAAAA,EAAI,OAAO;EACxB,aAAaA,OAAAA,EAAI,OAAO;EACxB,mBAAmBA,OAAAA,EAAI,OAAO;EAC9B,gBAAgBA,OAAAA,EAAI,OAAO;CAC7B,CAAC,CACH,CAAC,CAAC,QAAQ;AACZ,CAAC,CACH,CACF;AAQA,IAAI,qCAAqCC,oBACjCC,UACJC,OAAAA,EAAI,OAAO;;;;CAIT,SAASA,OAAAA,EAAI,MAAMA,OAAAA,EAAI,OAAO,CAAC,CAAC,CAAC,SAAS;;;;CAI1C,UAAUA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;;;;CAIhC,QAAQA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;;;;;CAK9B,aAAaA,OAAAA,EAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;;;;;CAK5D,wBAAwBA,OAAAA,EAAI,MAAMA,OAAAA,EAAI,KAAK,CAAC,QAAQ,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;AACjG,CAAC,CACH,CACF;AAGA,IAAI,cAAc;CAChB,WAAW;CACX,QAAQ;CACR,UAAU;CACV,aAAa;CACb,YAAY;CACZ,SAAS;CACT,WAAW;CACX,SAAS;CACT,SAAS;CACT,UAAU;CACV,OAAO;CACP,QAAQ;CACR,OAAO;CACP,SAAS;CACT,UAAU;CACV,SAAS;CACT,QAAQ;CACR,UAAU;CACV,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,OAAO;CACP,WAAW;CACX,WAAW;CACX,YAAY;CACZ,SAAS;CACT,UAAU;CACV,SAAS;CACT,QAAQ;CACR,QAAQ;CACR,SAAS;CACT,YAAY;CACZ,YAAY;CACZ,OAAO;CACP,SAAS;CACT,OAAO;CACP,QAAQ;CACR,WAAW;CACX,SAAS;CACT,QAAQ;CACR,YAAY;CACZ,UAAU;CACV,SAAS;CACT,SAAS;CACT,QAAQ;CACR,WAAW;CACX,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,OAAO;CACP,MAAM;CACN,SAAS;CACT,WAAW;CACX,MAAM;CACN,YAAY;CACZ,OAAO;AACT;AACA,IAAI,2BAA2B,MAAM;CACnC,YAAY,SAAS,QAAQ;EAC3B,KAAK,UAAU;EACf,KAAK,SAAS;EACd,KAAK,uBAAuB;CAC9B;CACA,IAAI,WAAW;EACb,OAAO,KAAK,OAAO;CACrB;CACA,MAAM,QAAQ,EACZ,OACA,WACA,mBACC;EACD,MAAM,WAAW,CAAC;EAClB,MAAM,gBAAgB,MAAMC,qBAAsB;GAChD,UAAU;GACV;GACA,QAAQ;EACV,CAAC;EACD,MAAM,WAAW,IAAI,SAAS;EAC9B,MAAM,OAAO,iBAAiB,aAAa,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,CAAC;EAC1G,SAAS,OAAO,SAAS,KAAK,OAAO;EACrC,MAAM,gBAAgB,qBAAqB,SAAS;EACpD,SAAS,OACP,QACA,IAAI,KAAK,CAAC,IAAI,GAAG,SAAS,EAAE,MAAM,UAAU,CAAC,GAC7C,SAAS,eACX;EACA,IAAI,eAAe;GACjB,MAAM,4BAA4B;IAChC,SAAS,cAAc;IACvB,UAAU,cAAc;IACxB,QAAQ,cAAc;IAGtB,iBAAiB,CACf,qBACA,wBACF,CAAC,CAAC,SAAS,KAAK,OAAO,IAAI,SAAS;IACpC,aAAa,cAAc;IAC3B,yBAAyB,cAAc;GACzC;GACA,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,yBAAyB,GACjE,IAAI,SAAS,MACX,IAAI,MAAM,QAAQ,KAAK,GACrB,KAAK,MAAM,QAAQ,OACjB,SAAS,OAAO,GAAG,IAAI,KAAK,OAAO,IAAI,CAAC;QAG1C,SAAS,OAAO,KAAK,OAAO,KAAK,CAAC;EAI1C;EACA,OAAO;GACL;GACA;EACF;CACF;CACA,MAAM,WAAW,SAAS;EACxB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;EAChC,MAAM,eAAe,MAAM,MAAM,KAAK,KAAK,OAAO,cAAc,OAAO,KAAK,IAAI,GAAG,gBAAgB,OAAO,KAAK,IAAI,GAAG,KAAK,EAAE,MAAM,OAAO,qBAAqB,IAAI,KAAK;EACxK,MAAM,EAAE,UAAU,aAAa,MAAM,KAAK,QAAQ,OAAO;EACzD,MAAM,EACJ,OAAO,UACP,iBACA,UAAU,gBACR,MAAM,kBAAkB;GAC1B,KAAK,KAAK,OAAO,IAAI;IACnB,MAAM;IACN,SAAS,KAAK;GAChB,CAAC;GACD,SAASC,eAAgB,KAAK,OAAO,QAAQ,GAAG,QAAQ,OAAO;GAC/D;GACA,uBAAuB;GACvB,2BAA2BC,0BACzB,iCACF;GACA,aAAa,QAAQ;GACrB,OAAO,KAAK,OAAO;EACrB,CAAC;EACD,MAAM,WAAW,SAAS,YAAY,QAAQ,SAAS,YAAY,cAAc,YAAY,SAAS,YAAY,KAAK;EACvH,OAAO;GACL,MAAM,SAAS;GACf,WAAW,MAAM,MAAM,KAAK,SAAS,aAAa,OAAO,KAAK,IAAI,GAAG,KAAK,aAAa;IACrF,MAAM,QAAQ;IACd,aAAa,QAAQ;IACrB,WAAW,QAAQ;GACrB,EAAE,MAAM,OAAO,MAAM,KAAK,SAAS,UAAU,OAAO,KAAK,IAAI,GAAG,KAAK,UAAU;IAC7E,MAAM,KAAK;IACX,aAAa,KAAK;IAClB,WAAW,KAAK;GAClB,EAAE,MAAM,OAAO,KAAK,CAAC;GACrB;GACA,oBAAoB,KAAK,SAAS,aAAa,OAAO,KAAK,KAAK;GAChE;GACA,UAAU;IACR,WAAW;IACX,SAAS,KAAK;IACd,SAAS;IACT,MAAM;GACR;EACF;CACF;AACF;AAgBA,IAAI,oCAAoCC,oBAChCC,UACJC,OAAAA,EAAI,OAAO;CACT,cAAcA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;CACnC,OAAOA,OAAAA,EAAI,OAAO,CAAC,CAAC,IAAI,GAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;AAC1D,CAAC,CACH,CACF;AAGA,IAAI,oBAAoB,MAAM;CAC5B,YAAY,SAAS,QAAQ;EAC3B,KAAK,UAAU;EACf,KAAK,SAAS;EACd,KAAK,uBAAuB;CAC9B;CACA,IAAI,WAAW;EACb,OAAO,KAAK,OAAO;CACrB;CACA,MAAM,QAAQ,EACZ,MACA,QAAQ,SACR,eAAe,OACf,OACA,cACA,UACA,mBACC;EACD,MAAM,WAAW,CAAC;EAClB,MAAM,gBAAgB,MAAMC,qBAAsB;GAChD,UAAU;GACV;GACA,QAAQ;EACV,CAAC;EACD,MAAM,cAAc;GAClB,OAAO,KAAK;GACZ,OAAO;GACP;GACA,iBAAiB;GACjB;GACA;EACF;EACA,IAAI,cACF,IAAI;GAAC;GAAO;GAAQ;GAAO;GAAQ;GAAO;EAAK,CAAC,CAAC,SAAS,YAAY,GACpE,YAAY,kBAAkB;OAE9B,SAAS,KAAK;GACZ,MAAM;GACN,SAAS;GACT,SAAS,8BAA8B,aAAa;EACtD,CAAC;EAGL,IAAI,eAAe;GACjB,MAAM,qBAAqB,CAAC;GAC5B,KAAK,MAAM,OAAO,oBAAoB;IACpC,MAAM,QAAQ,mBAAmB;IACjC,IAAI,UAAU,KAAK,GACjB,YAAY,OAAO;GAEvB;EACF;EACA,IAAI,UACF,SAAS,KAAK;GACZ,MAAM;GACN,SAAS;GACT,SAAS,+EAA+E,SAAS;EACnG,CAAC;EAEH,OAAO;GACL;GACA;EACF;CACF;CACA,MAAM,WAAW,SAAS;EACxB,IAAI,IAAI,IAAI;EACZ,MAAM,eAAe,MAAM,MAAM,KAAK,KAAK,OAAO,cAAc,OAAO,KAAK,IAAI,GAAG,gBAAgB,OAAO,KAAK,IAAI,GAAG,KAAK,EAAE,MAAM,OAAO,qBAAqB,IAAI,KAAK;EACxK,MAAM,EAAE,aAAa,aAAa,MAAM,KAAK,QAAQ,OAAO;EAC5D,MAAM,EACJ,OAAO,OACP,iBACA,UAAU,gBACR,MAAMC,cAAe;GACvB,KAAK,KAAK,OAAO,IAAI;IACnB,MAAM;IACN,SAAS,KAAK;GAChB,CAAC;GACD,SAASC,eAAgB,KAAK,OAAO,QAAQ,GAAG,QAAQ,OAAO;GAC/D,MAAM;GACN,uBAAuB;GACvB,2BAA2B,4BAA4B;GACvD,aAAa,QAAQ;GACrB,OAAO,KAAK,OAAO;EACrB,CAAC;EACD,OAAO;GACL;GACA;GACA,SAAS,EACP,MAAM,KAAK,UAAU,WAAW,EAClC;GACA,UAAU;IACR,WAAW;IACX,SAAS,KAAK;IACd,SAAS;IACT,MAAM;GACR;EACF;CACF;AACF;AAiCA,IAAI,wBAAwB,iBACpBC,UACJC,OAAAA,EAAI,OAAO,EACT,QAAQA,OAAAA,EAAI,OAAO;CACjB,MAAMA,OAAAA,EAAI,QAAQ,MAAM;CACxB,SAASA,OAAAA,EAAI,MAAMA,OAAAA,EAAI,OAAO,CAAC;CAC/B,WAAWA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;CACjC,MAAMA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;CAC5B,kBAAkBA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;CACxC,KAAKA,OAAAA,EAAI,OAAOA,OAAAA,EAAI,OAAO,GAAGA,OAAAA,EAAI,OAAO,CAAC,CAAC,CAAC,SAAS;AACvD,CAAC,EACH,CAAC,CACH,CACF;AACA,IAAI,yBAAyB,iBACrBD,UAAYC,OAAAA,EAAI,OAAO,EAAE,QAAQA,OAAAA,EAAI,OAAO,EAAE,CAAC,CAAC,CACxD;AACiB,iDAAiD;CAChE,IAAI;CACJ,MAAM;CACN,aAAa;CACb,cAAc;AAChB,CAAC;AAGD,SAAS,0BAA0B,iBAAiB;CAClD,IAAI;CACJ,QAAQ,KAAK,mBAAmB,OAAO,KAAK,IAAI,gBAAgB,WAAW,OAAO,KAAK,IAAI,GAAG;AAChG;AACA,SAAS,SAAS,MAAM,UAAU;CAChC,IAAI,CAAC,UAAU,OAAO;CACtB,OAAO,SAAS,MAAM,WAAW,KAAK,WAAW,MAAM,CAAC;AAC1D;AACA,eAAe,8BAA8B,EAC3C,QACA,mBACA,gBACA,OACA,oBAAoB,SACnB;CACD,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;CACxB,IAAI,QAAQ,CAAC;CACb,MAAM,WAAW,CAAC;CAClB,KAAK,MAAM,EAAE,MAAM,SAAS,qBAAqB,QAC/C,QAAQ,MAAR;EACE,KAAK;GACH,QAAQ,mBAAR;IACE,KAAK,UAAU;KACb,MAAM,wBAAwB,0BAA0B,eAAe;KACvE,MAAM,KAAK;MACT,MAAM;MACN,SAAS,yBAAyB,OAAO,UAAU,CACjD;OACE,MAAM;OACN,MAAM;OACN,yBAAyB;MAC3B,CACF;KACF,CAAC;KACD;IACF;IACA,KAAK,aAAa;KAChB,MAAM,wBAAwB,0BAA0B,eAAe;KACvE,MAAM,KAAK;MACT,MAAM;MACN,SAAS,yBAAyB,OAAO,UAAU,CACjD;OACE,MAAM;OACN,MAAM;OACN,yBAAyB;MAC3B,CACF;KACF,CAAC;KACD;IACF;IACA,KAAK;KACH,SAAS,KAAK;MACZ,MAAM;MACN,SAAS;KACX,CAAC;KACD;IAEF,SAEE,MAAM,IAAI,MACR,oCAAoCvD,mBACtC;GAEJ;GACA;EAEF,KAAK;GACH,MAAM,KAAK;IACT,MAAM;IACN,SAAS,QAAQ,KAAK,MAAM,UAAU;KACpC,IAAI,KAAK,KAAK;KACd,QAAQ,KAAK,MAAb;MACE,KAAK,QAAQ;OACX,MAAM,wBAAwB,0BAC5B,KAAK,eACP;OACA,OAAO;QACL,MAAM;QACN,MAAM,KAAK;QACX,GAAG,yBAAyB,QAAQ,EAClC,yBAAyB,sBAC3B;OACF;MACF;MACA,KAAK,QAAQ;OACX,MAAM,wBAAwB,0BAC5B,KAAK,eACP;OACA,IAAI,KAAK,UAAU,WAAW,QAAQ,GAAG;QACvC,MAAM,YAAY,KAAK,cAAc,YAAY,eAAe,KAAK;QACrE,OAAO;SACL,MAAM;SACN,GAAG,KAAK,gBAAgB,MAAM,EAAE,WAAW,KAAK,KAAK,SAAS,EAAE,IAAI,OAAO,KAAK,SAAS,YAAY,SAAS,KAAK,MAAM,cAAc,IAAI,EAAE,SAAS,KAAK,KAAK,IAAI,EAClK,WAAW,QAAQ,UAAU,UAAUwD,gBAAiB,KAAK,IAAI,IACnE;SACA,SAAS,OAAO,MAAM,KAAK,oBAAoB,OAAO,KAAK,IAAI,IAAI,WAAW,OAAO,KAAK,IAAI,IAAI;SAClG,GAAG,yBAAyB,QAAQ,EAClC,yBAAyB,sBAC3B;QACF;OACF,OAAO,IAAI,KAAK,cAAc,mBAAmB;QAC/C,IAAI,KAAK,gBAAgB,KACvB,OAAO;SACL,MAAM;SACN,UAAU,KAAK,KAAK,SAAS;SAC7B,GAAG,yBAAyB,QAAQ,EAClC,yBAAyB,sBAC3B;QACF;QAEF,OAAO;SACL,MAAM;SACN,GAAG,OAAO,KAAK,SAAS,YAAY,SAAS,KAAK,MAAM,cAAc,IAAI,EAAE,SAAS,KAAK,KAAK,IAAI;UACjG,WAAW,MAAM,KAAK,aAAa,OAAO,MAAM,QAAQ,MAAM;UAC9D,WAAW,+BAA+BA,gBAAiB,KAAK,IAAI;SACtE;SACA,GAAG,yBAAyB,QAAQ,EAClC,yBAAyB,sBAC3B;QACF;OACF,OACE,MAAM,IAAIC,8BAA+B,EACvC,eAAe,wBAAwB,KAAK,YAC9C,CAAC;MAEL;KACF;IACF,CAAC;GACH,CAAC;GACD;EAEF,KAAK,aAAa;GAChB,MAAM,oBAAoB,CAAC;GAC3B,MAAM,gBAAgB,CAAC;GACvB,KAAK,MAAM,QAAQ,SACjB,QAAQ,KAAK,MAAb;IACE,KAAK,QAAQ;KACX,MAAM,MAAM,MAAM,KAAK,KAAK,oBAAoB,OAAO,KAAK,IAAI,GAAG,WAAW,OAAO,KAAK,IAAI,GAAG;KACjG,MAAM,SAAS,MAAM,KAAK,KAAK,oBAAoB,OAAO,KAAK,IAAI,GAAG,WAAW,OAAO,KAAK,IAAI,GAAG;KACpG,IAAI,SAAS,MAAM,MAAM;MACvB,MAAM,KAAK;OAAE,MAAM;OAAkB;MAAG,CAAC;MACzC;KACF;KACA,MAAM,KAAK;MACT,MAAM;MACN,SAAS,CAAC;OAAE,MAAM;OAAe,MAAM,KAAK;MAAK,CAAC;MAClD;MACA,GAAG,SAAS,QAAQ,EAAE,MAAM;KAC9B,CAAC;KACD;IACF;IACA,KAAK,aAAa;KAChB,cAAc,KAAK,cAAc;KACjC,IAAI,KAAK,kBACP;KAEF,MAAM,MAAM,MAAM,KAAK,KAAK,oBAAoB,OAAO,KAAK,IAAI,GAAG,WAAW,OAAO,KAAK,IAAI,GAAG;KACjG,IAAI,SAAS,MAAM,MAAM;MACvB,MAAM,KAAK;OAAE,MAAM;OAAkB;MAAG,CAAC;MACzC;KACF;KACA,IAAI,qBAAqB,KAAK,aAAa,eAAe;MACxD,MAAM,cAAc,MAAM,cAAc;OACtC,OAAO,KAAK;OACZ,QAAQ;MACV,CAAC;MACD,MAAM,KAAK;OACT,MAAM;OACN,SAAS,KAAK;OACd;OACA,QAAQ;QACN,MAAM;QACN,SAAS,YAAY,OAAO;QAC5B,YAAY,YAAY,OAAO;QAC/B,MAAM,YAAY,OAAO;QACzB,mBAAmB,YAAY,OAAO;QACtC,KAAK,YAAY,OAAO;OAC1B;MACF,CAAC;MACD;KACF;KACA,MAAM,KAAK;MACT,MAAM;MACN,SAAS,KAAK;MACd,MAAM,KAAK;MACX,WAAW,KAAK,UAAU,KAAK,KAAK;MACpC;KACF,CAAC;KACD;IACF;IAEA,KAAK;KACH,IAAI,OACF,MAAM,KAAK;MAAE,MAAM;MAAkB,IAAI,KAAK;KAAW,CAAC;UAE1D,SAAS,KAAK;MACZ,MAAM;MACN,SAAS,2BAA2B,KAAK,SAAS;KACpD,CAAC;KAEH;IAEF,KAAK,aAAa;KAChB,MAAM,mBAAmB,MAAMC,qBAAsB;MACnD,UAAU;MACV,iBAAiB,KAAK;MACtB,QAAQ;KACV,CAAC;KACD,MAAM,cAAc,oBAAoB,OAAO,KAAK,IAAI,iBAAiB;KACzE,IAAI,eAAe,MAAM;MACvB,MAAM,mBAAmB,kBAAkB;MAC3C,IAAI,OACE;WAAA,qBAAqB,KAAK,GAAG;QAC/B,MAAM,KAAK;SAAE,MAAM;SAAkB,IAAI;QAAY,CAAC;QACtD,kBAAkB,eAAe;SAC/B,MAAM;SACN,IAAI;SACJ,SAAS,CAAC;QACZ;OACF;aACK;OACL,MAAM,eAAe,CAAC;OACtB,IAAI,KAAK,KAAK,SAAS,GACrB,aAAa,KAAK;QAChB,MAAM;QACN,MAAM,KAAK;OACb,CAAC;YACI,IAAI,qBAAqB,KAAK,GACnC,SAAS,KAAK;QACZ,MAAM;QACN,SAAS,+FAA+F,KAAK,UAAU,IAAI,EAAE;OAC/H,CAAC;OAEH,IAAI,qBAAqB,KAAK,GAAG;QAC/B,kBAAkB,eAAe;SAC/B,MAAM;SACN,IAAI;SACJ,mBAAmB,oBAAoB,OAAO,KAAK,IAAI,iBAAiB;SACxE,SAAS;QACX;QACA,MAAM,KAAK,kBAAkB,YAAY;OAC3C,OAAO;QACL,iBAAiB,QAAQ,KAAK,GAAG,YAAY;QAC7C,KAAK,oBAAoB,OAAO,KAAK,IAAI,iBAAiB,8BAA8B,MACtF,iBAAiB,oBAAoB,iBAAiB;OAE1D;MACF;KACF,OACE,SAAS,KAAK;MACZ,MAAM;MACN,SAAS,0EAA0E,KAAK,UAAU,IAAI,EAAE;KAC1G,CAAC;KAEH;IACF;GACF;GAEF;EACF;EACA,KAAK;GACH,KAAK,MAAM,QAAQ,SAAS;IAC1B,MAAM,SAAS,KAAK;IACpB,MAAM,wBAAwB,0BAC5B,KAAK,eACP;IACA,IAAI,qBAAqB,KAAK,aAAa,iBAAiB,OAAO,SAAS,QAAQ;KAClF,MAAM,eAAe,MAAM,cAAc;MACvC,OAAO,OAAO;MACd,QAAQ;KACV,CAAC;KACD,MAAM,KAAK;MACT,MAAM;MACN,SAAS,KAAK;MACd,QAAQ,aAAa;KACvB,CAAC;KACD;IACF;IACA,IAAI;IACJ,QAAQ,OAAO,MAAf;KACE,KAAK;KACL,KAAK;MACH,eAAe,yBAAyB,OAAO,OAAO,QAAQ,CAC5D;OACE,MAAM;OACN,MAAM,OAAO;OACb,yBAAyB;MAC3B,CACF;MACA;KACF,KAAK;KACL,KAAK;MACH,eAAe,yBAAyB,OAAO,KAAK,UAAU,OAAO,KAAK,IAAI,CAC5E;OACE,MAAM;OACN,MAAM,KAAK,UAAU,OAAO,KAAK;OACjC,yBAAyB;MAC3B,CACF;MACA;KACF,KAAK;MACH,eAAe,OAAO,MAAM,KAAK,MAAM,UAAU;OAC/C,MAAM,eAAe,yBAAyB,QAAQ,UAAU,OAAO,MAAM,SAAS;OACtF,QAAQ,KAAK,MAAb;QACE,KAAK,QACH,OAAO;SACL,MAAM;SACN,MAAM,KAAK;SACX,GAAG,gBAAgB,EACjB,yBAAyB,sBAC3B;QACF;QAEF,KAAK,SACH,OAAO,KAAK,UAAU,WAAW,QAAQ,IAAI;SAC3C,MAAM;SACN,WAAW,QAAQ,KAAK,UAAU,UAAU,KAAK;SACjD,GAAG,gBAAgB,EACjB,yBAAyB,sBAC3B;QACF,IAAI;SACF,MAAM;SACN,UAAU;SACV,WAAW,QAAQ,KAAK,UAAU,UAAU,KAAK;SACjD,GAAG,gBAAgB,EACjB,yBAAyB,sBAC3B;QACF;OAEJ;MACF,CAAC;MACD;IACJ;IACA,MAAM,KAAK;KACT,MAAM;KACN,SAAS,KAAK;KACd,QAAQ;IACV,CAAC;GACH;GACA;EAEF,SAEE,MAAM,IAAI,MAAM,qBAAqB1D,MAAkB;CAE3D;CAEF,IAAI,CAAC,SAAS,MAAM,MACjB,SAAS,UAAU,QAAQ,KAAK,SAAS,eAAe,KAAK,qBAAqB,IACrF,GAAG;EACD,SAAS,KAAK;GACZ,MAAM;GACN,SAAS;EACX,CAAC;EACD,QAAQ,MAAM,QACX,SAAS,EAAE,UAAU,SAAS,KAAK,SAAS,eAAe,KAAK,qBAAqB,IACxF;CACF;CACA,OAAO;EAAE;EAAO;CAAS;AAC3B;AACA,IAAI,gDAAgD2D,OAAAA,EAAI,OAAO;CAC7D,QAAQA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;CAC7B,2BAA2BA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;AAClD,CAAC;AAGD,SAAS,8BAA8B,EACrC,cACA,mBACC;CACD,QAAQ,cAAR;EACE,KAAK,KAAK;EACV,KAAK,MACH,OAAO,kBAAkB,eAAe;EAC1C,KAAK,qBACH,OAAO;EACT,KAAK,kBACH,OAAO;EACT,SACE,OAAO,kBAAkB,eAAe;CAC5C;AACF;AAQA,IAAI,6BAA6BC,oBACzBC,UACJC,OAAAA,EAAI,MAAM;CACRA,OAAAA,EAAI,OAAO;EACT,MAAMA,OAAAA,EAAI,QAAQ,4BAA4B;EAC9C,SAASA,OAAAA,EAAI,OAAO;EACpB,OAAOA,OAAAA,EAAI,OAAO;EAClB,UAAUA,OAAAA,EAAI,MACZA,OAAAA,EAAI,OAAO;GACT,OAAOA,OAAAA,EAAI,OAAO;GAClB,SAASA,OAAAA,EAAI,OAAO;GACpB,cAAcA,OAAAA,EAAI,MAChBA,OAAAA,EAAI,OAAO;IACT,OAAOA,OAAAA,EAAI,OAAO;IAClB,SAASA,OAAAA,EAAI,OAAO;GACtB,CAAC,CACH;EACF,CAAC,CACH,CAAC,CAAC,QAAQ;CACZ,CAAC;CACDA,OAAAA,EAAI,OAAO;EACT,MAAMA,OAAAA,EAAI,KAAK,CAAC,sBAAsB,qBAAqB,CAAC;EAC5D,UAAUA,OAAAA,EAAI,OAAO;GACnB,oBAAoBA,OAAAA,EAAI,OAAO,EAAE,QAAQA,OAAAA,EAAI,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ;GACjE,OAAOA,OAAAA,EAAI,OAAO;IAChB,cAAcA,OAAAA,EAAI,OAAO;IACzB,sBAAsBA,OAAAA,EAAI,OAAO;KAC/B,eAAeA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;KACpC,oBAAoBA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;KACzC,4BAA4BA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;KACjD,mCAAmCA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;IAC1D,CAAC,CAAC,CAAC,QAAQ;IACX,eAAeA,OAAAA,EAAI,OAAO;IAC1B,uBAAuBA,OAAAA,EAAI,OAAO;KAChC,kBAAkBA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;KACvC,6BAA6BA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;IACpD,CAAC,CAAC,CAAC,QAAQ;GACb,CAAC;GACD,WAAWA,OAAAA,EAAI,OAAO,EACpB,SAASA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ,EAChC,CAAC,CAAC,CAAC,QAAQ;GACX,cAAcA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;EACrC,CAAC;CACH,CAAC;CACDA,OAAAA,EAAI,OAAO;EACT,MAAMA,OAAAA,EAAI,QAAQ,kBAAkB;EACpC,UAAUA,OAAAA,EAAI,OAAO;GACnB,IAAIA,OAAAA,EAAI,OAAO;GACf,YAAYA,OAAAA,EAAI,OAAO;GACvB,OAAOA,OAAAA,EAAI,OAAO;GAClB,cAAcA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;EACrC,CAAC;CACH,CAAC;CACDA,OAAAA,EAAI,OAAO;EACT,MAAMA,OAAAA,EAAI,QAAQ,4BAA4B;EAC9C,cAAcA,OAAAA,EAAI,OAAO;EACzB,MAAMA,OAAAA,EAAI,mBAAmB,QAAQ;GACnCA,OAAAA,EAAI,OAAO;IACT,MAAMA,OAAAA,EAAI,QAAQ,SAAS;IAC3B,IAAIA,OAAAA,EAAI,OAAO;IACf,OAAOA,OAAAA,EAAI,KAAK,CAAC,cAAc,cAAc,CAAC,CAAC,CAAC,QAAQ;GAC1D,CAAC;GACDA,OAAAA,EAAI,OAAO;IACT,MAAMA,OAAAA,EAAI,QAAQ,WAAW;IAC7B,IAAIA,OAAAA,EAAI,OAAO;IACf,mBAAmBA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;GAC1C,CAAC;GACDA,OAAAA,EAAI,OAAO;IACT,MAAMA,OAAAA,EAAI,QAAQ,eAAe;IACjC,IAAIA,OAAAA,EAAI,OAAO;IACf,SAASA,OAAAA,EAAI,OAAO;IACpB,MAAMA,OAAAA,EAAI,OAAO;IACjB,WAAWA,OAAAA,EAAI,OAAO;GACxB,CAAC;GACDA,OAAAA,EAAI,OAAO;IACT,MAAMA,OAAAA,EAAI,QAAQ,iBAAiB;IACnC,IAAIA,OAAAA,EAAI,OAAO;IACf,QAAQA,OAAAA,EAAI,OAAO;GACrB,CAAC;GACDA,OAAAA,EAAI,OAAO;IACT,MAAMA,OAAAA,EAAI,QAAQ,eAAe;IACjC,IAAIA,OAAAA,EAAI,OAAO;IACf,QAAQA,OAAAA,EAAI,OAAO;GACrB,CAAC;GACDA,OAAAA,EAAI,OAAO;IACT,MAAMA,OAAAA,EAAI,QAAQ,kBAAkB;IACpC,IAAIA,OAAAA,EAAI,OAAO;GACjB,CAAC;GACDA,OAAAA,EAAI,OAAO;IACT,MAAMA,OAAAA,EAAI,QAAQ,uBAAuB;IACzC,IAAIA,OAAAA,EAAI,OAAO;GACjB,CAAC;GACDA,OAAAA,EAAI,OAAO;IACT,MAAMA,OAAAA,EAAI,QAAQ,uBAAuB;IACzC,IAAIA,OAAAA,EAAI,OAAO;IACf,cAAcA,OAAAA,EAAI,OAAO;IACzB,MAAMA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;IAC5B,SAASA,OAAAA,EAAI,MACXA,OAAAA,EAAI,mBAAmB,QAAQ,CAC7BA,OAAAA,EAAI,OAAO;KAAE,MAAMA,OAAAA,EAAI,QAAQ,MAAM;KAAG,MAAMA,OAAAA,EAAI,OAAO;IAAE,CAAC,GAC5DA,OAAAA,EAAI,OAAO;KAAE,MAAMA,OAAAA,EAAI,QAAQ,OAAO;KAAG,KAAKA,OAAAA,EAAI,OAAO;IAAE,CAAC,CAC9D,CAAC,CACH,CAAC,CAAC,SAAS;IACX,QAAQA,OAAAA,EAAI,OAAO;GACrB,CAAC;EACH,CAAC;CACH,CAAC;CACDA,OAAAA,EAAI,OAAO;EACT,MAAMA,OAAAA,EAAI,QAAQ,2BAA2B;EAC7C,cAAcA,OAAAA,EAAI,OAAO;EACzB,MAAMA,OAAAA,EAAI,mBAAmB,QAAQ;GACnCA,OAAAA,EAAI,OAAO;IACT,MAAMA,OAAAA,EAAI,QAAQ,SAAS;IAC3B,IAAIA,OAAAA,EAAI,OAAO;IACf,OAAOA,OAAAA,EAAI,KAAK,CAAC,cAAc,cAAc,CAAC,CAAC,CAAC,QAAQ;GAC1D,CAAC;GACDA,OAAAA,EAAI,OAAO;IACT,MAAMA,OAAAA,EAAI,QAAQ,WAAW;IAC7B,IAAIA,OAAAA,EAAI,OAAO;IACf,mBAAmBA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;GAC1C,CAAC;GACDA,OAAAA,EAAI,OAAO;IACT,MAAMA,OAAAA,EAAI,QAAQ,eAAe;IACjC,IAAIA,OAAAA,EAAI,OAAO;IACf,SAASA,OAAAA,EAAI,OAAO;IACpB,MAAMA,OAAAA,EAAI,OAAO;IACjB,WAAWA,OAAAA,EAAI,OAAO;IACtB,QAAQA,OAAAA,EAAI,QAAQ,WAAW;GACjC,CAAC;GACDA,OAAAA,EAAI,OAAO;IACT,MAAMA,OAAAA,EAAI,QAAQ,uBAAuB;IACzC,IAAIA,OAAAA,EAAI,OAAO;IACf,MAAMA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;IAC5B,cAAcA,OAAAA,EAAI,OAAO;IACzB,SAASA,OAAAA,EAAI,MACXA,OAAAA,EAAI,mBAAmB,QAAQ,CAC7BA,OAAAA,EAAI,OAAO;KAAE,MAAMA,OAAAA,EAAI,QAAQ,MAAM;KAAG,MAAMA,OAAAA,EAAI,OAAO;IAAE,CAAC,GAC5DA,OAAAA,EAAI,OAAO;KAAE,MAAMA,OAAAA,EAAI,QAAQ,OAAO;KAAG,KAAKA,OAAAA,EAAI,OAAO;IAAE,CAAC,CAC9D,CAAC,CACH,CAAC,CAAC,SAAS;GACb,CAAC;GACDA,OAAAA,EAAI,OAAO;IACT,MAAMA,OAAAA,EAAI,QAAQ,uBAAuB;IACzC,IAAIA,OAAAA,EAAI,OAAO;IACf,QAAQA,OAAAA,EAAI,OAAO;GACrB,CAAC;GACDA,OAAAA,EAAI,OAAO;IACT,MAAMA,OAAAA,EAAI,QAAQ,iBAAiB;IACnC,IAAIA,OAAAA,EAAI,OAAO;IACf,QAAQA,OAAAA,EAAI,OAAO;IACnB,QAAQA,OAAAA,EAAI,mBAAmB,QAAQ;KACrCA,OAAAA,EAAI,OAAO;MACT,MAAMA,OAAAA,EAAI,QAAQ,QAAQ;MAC1B,OAAOA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;MAC5B,SAASA,OAAAA,EAAI,MACXA,OAAAA,EAAI,mBAAmB,QAAQ,CAC7BA,OAAAA,EAAI,OAAO;OAAE,MAAMA,OAAAA,EAAI,QAAQ,KAAK;OAAG,KAAKA,OAAAA,EAAI,OAAO;MAAE,CAAC,GAC1DA,OAAAA,EAAI,OAAO;OAAE,MAAMA,OAAAA,EAAI,QAAQ,KAAK;OAAG,MAAMA,OAAAA,EAAI,OAAO;MAAE,CAAC,CAC7D,CAAC,CACH,CAAC,CAAC,QAAQ;KACZ,CAAC;KACDA,OAAAA,EAAI,OAAO;MACT,MAAMA,OAAAA,EAAI,QAAQ,WAAW;MAC7B,KAAKA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;KAC5B,CAAC;KACDA,OAAAA,EAAI,OAAO;MACT,MAAMA,OAAAA,EAAI,QAAQ,cAAc;MAChC,KAAKA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;MAC1B,SAASA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;KAChC,CAAC;IACH,CAAC,CAAC,CAAC,QAAQ;GACb,CAAC;GACDA,OAAAA,EAAI,OAAO;IACT,MAAMA,OAAAA,EAAI,QAAQ,kBAAkB;IACpC,IAAIA,OAAAA,EAAI,OAAO;IACf,SAASA,OAAAA,EAAI,MAAMA,OAAAA,EAAI,OAAO,CAAC;IAC/B,SAASA,OAAAA,EAAI,MACXA,OAAAA,EAAI,OAAO;KACT,YAAYA,OAAAA,EAAI,OAAOA,OAAAA,EAAI,OAAO,GAAGA,OAAAA,EAAI,QAAQ,CAAC;KAClD,SAASA,OAAAA,EAAI,OAAO;KACpB,UAAUA,OAAAA,EAAI,OAAO;KACrB,OAAOA,OAAAA,EAAI,OAAO;KAClB,MAAMA,OAAAA,EAAI,OAAO;IACnB,CAAC,CACH,CAAC,CAAC,QAAQ;GACZ,CAAC;GACDA,OAAAA,EAAI,OAAO;IACT,MAAMA,OAAAA,EAAI,QAAQ,kBAAkB;IACpC,IAAIA,OAAAA,EAAI,OAAO;IACf,SAASA,OAAAA,EAAI,OAAO;IACpB,QAAQA,OAAAA,EAAI,OAAO;KACjB,MAAMA,OAAAA,EAAI,QAAQ,MAAM;KACxB,SAASA,OAAAA,EAAI,MAAMA,OAAAA,EAAI,OAAO,CAAC;KAC/B,YAAYA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;KAClC,MAAMA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;KAC5B,mBAAmBA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;KACzC,KAAKA,OAAAA,EAAI,OAAOA,OAAAA,EAAI,OAAO,GAAGA,OAAAA,EAAI,OAAO,CAAC,CAAC,CAAC,SAAS;IACvD,CAAC;GACH,CAAC;GACDA,OAAAA,EAAI,OAAO;IACT,MAAMA,OAAAA,EAAI,QAAQ,eAAe;IACjC,IAAIA,OAAAA,EAAI,OAAO;IACf,QAAQA,OAAAA,EAAI,QAAQ,WAAW;GACjC,CAAC;EACH,CAAC;CACH,CAAC;CACDA,OAAAA,EAAI,OAAO;EACT,MAAMA,OAAAA,EAAI,QAAQ,wCAAwC;EAC1D,SAASA,OAAAA,EAAI,OAAO;EACpB,cAAcA,OAAAA,EAAI,OAAO;EACzB,OAAOA,OAAAA,EAAI,OAAO;CACpB,CAAC;CACDA,OAAAA,EAAI,OAAO;EACT,MAAMA,OAAAA,EAAI,QAAQ,8CAA8C;EAChE,SAASA,OAAAA,EAAI,OAAO;EACpB,cAAcA,OAAAA,EAAI,OAAO;EACzB,mBAAmBA,OAAAA,EAAI,OAAO;CAChC,CAAC;CACDA,OAAAA,EAAI,OAAO;EACT,MAAMA,OAAAA,EAAI,QAAQ,2CAA2C;EAC7D,SAASA,OAAAA,EAAI,OAAO;EACpB,cAAcA,OAAAA,EAAI,OAAO;EACzB,OAAOA,OAAAA,EAAI,OAAO;CACpB,CAAC;CACDA,OAAAA,EAAI,OAAO;EACT,MAAMA,OAAAA,EAAI,QAAQ,0CAA0C;EAC5D,SAASA,OAAAA,EAAI,OAAO;EACpB,cAAcA,OAAAA,EAAI,OAAO;EACzB,MAAMA,OAAAA,EAAI,OAAO;CACnB,CAAC;CACDA,OAAAA,EAAI,OAAO;EACT,MAAMA,OAAAA,EAAI,QAAQ,uCAAuC;EACzD,YAAYA,OAAAA,EAAI,mBAAmB,QAAQ,CACzCA,OAAAA,EAAI,OAAO;GACT,MAAMA,OAAAA,EAAI,QAAQ,cAAc;GAChC,aAAaA,OAAAA,EAAI,OAAO;GACxB,WAAWA,OAAAA,EAAI,OAAO;GACtB,KAAKA,OAAAA,EAAI,OAAO;GAChB,OAAOA,OAAAA,EAAI,OAAO;EACpB,CAAC,GACDA,OAAAA,EAAI,OAAO;GACT,MAAMA,OAAAA,EAAI,QAAQ,eAAe;GACjC,SAASA,OAAAA,EAAI,OAAO;GACpB,UAAUA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;GAC/B,OAAOA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;GAC5B,aAAaA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;GAClC,WAAWA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;GAChC,OAAOA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;EAC9B,CAAC,CACH,CAAC;CACH,CAAC;CACDA,OAAAA,EAAI,OAAO;EACT,MAAMA,OAAAA,EAAI,QAAQ,uCAAuC;EACzD,SAASA,OAAAA,EAAI,OAAO;EACpB,eAAeA,OAAAA,EAAI,OAAO;CAC5B,CAAC;CACDA,OAAAA,EAAI,OAAO;EACT,MAAMA,OAAAA,EAAI,QAAQ,uCAAuC;EACzD,SAASA,OAAAA,EAAI,OAAO;EACpB,eAAeA,OAAAA,EAAI,OAAO;EAC1B,OAAOA,OAAAA,EAAI,OAAO;CACpB,CAAC;CACDA,OAAAA,EAAI,OAAO;EACT,MAAMA,OAAAA,EAAI,QAAQ,sCAAsC;EACxD,SAASA,OAAAA,EAAI,OAAO;EACpB,eAAeA,OAAAA,EAAI,OAAO;CAC5B,CAAC;CACDA,OAAAA,EAAI,OAAO;EACT,MAAMA,OAAAA,EAAI,QAAQ,OAAO;EACzB,iBAAiBA,OAAAA,EAAI,OAAO;EAC5B,OAAOA,OAAAA,EAAI,OAAO;GAChB,MAAMA,OAAAA,EAAI,OAAO;GACjB,MAAMA,OAAAA,EAAI,OAAO;GACjB,SAASA,OAAAA,EAAI,OAAO;GACpB,OAAOA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;EAC9B,CAAC;CACH,CAAC;CACDA,OAAAA,EAAI,OAAO,EAAE,MAAMA,OAAAA,EAAI,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,WAAW;EAC/D,MAAM;EACN,SAAS,MAAM;CACjB,EAAE;AAEJ,CAAC,CACH,CACF;AACA,IAAI,gCAAgCF,oBAC5BC,UACJC,OAAAA,EAAI,OAAO;CACT,IAAIA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;CAC1B,YAAYA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;CAClC,OAAOA,OAAAA,EAAI,OAAO;EAChB,SAASA,OAAAA,EAAI,OAAO;EACpB,MAAMA,OAAAA,EAAI,OAAO;EACjB,OAAOA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;EAC5B,MAAMA,OAAAA,EAAI,OAAO;CACnB,CAAC,CAAC,CAAC,QAAQ;CACX,OAAOA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;CAC7B,QAAQA,OAAAA,EAAI,MACVA,OAAAA,EAAI,mBAAmB,QAAQ;EAC7BA,OAAAA,EAAI,OAAO;GACT,MAAMA,OAAAA,EAAI,QAAQ,SAAS;GAC3B,MAAMA,OAAAA,EAAI,QAAQ,WAAW;GAC7B,IAAIA,OAAAA,EAAI,OAAO;GACf,OAAOA,OAAAA,EAAI,KAAK,CAAC,cAAc,cAAc,CAAC,CAAC,CAAC,QAAQ;GACxD,SAASA,OAAAA,EAAI,MACXA,OAAAA,EAAI,OAAO;IACT,MAAMA,OAAAA,EAAI,QAAQ,aAAa;IAC/B,MAAMA,OAAAA,EAAI,OAAO;IACjB,UAAUA,OAAAA,EAAI,MACZA,OAAAA,EAAI,OAAO;KACT,OAAOA,OAAAA,EAAI,OAAO;KAClB,SAASA,OAAAA,EAAI,OAAO;KACpB,cAAcA,OAAAA,EAAI,MAChBA,OAAAA,EAAI,OAAO;MACT,OAAOA,OAAAA,EAAI,OAAO;MAClB,SAASA,OAAAA,EAAI,OAAO;KACtB,CAAC,CACH;IACF,CAAC,CACH,CAAC,CAAC,QAAQ;IACV,aAAaA,OAAAA,EAAI,MACfA,OAAAA,EAAI,mBAAmB,QAAQ;KAC7BA,OAAAA,EAAI,OAAO;MACT,MAAMA,OAAAA,EAAI,QAAQ,cAAc;MAChC,aAAaA,OAAAA,EAAI,OAAO;MACxB,WAAWA,OAAAA,EAAI,OAAO;MACtB,KAAKA,OAAAA,EAAI,OAAO;MAChB,OAAOA,OAAAA,EAAI,OAAO;KACpB,CAAC;KACDA,OAAAA,EAAI,OAAO;MACT,MAAMA,OAAAA,EAAI,QAAQ,eAAe;MACjC,SAASA,OAAAA,EAAI,OAAO;MACpB,UAAUA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;MAC/B,OAAOA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;MAC5B,aAAaA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;MAClC,WAAWA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;MAChC,OAAOA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;KAC9B,CAAC;KACDA,OAAAA,EAAI,OAAO;MACT,MAAMA,OAAAA,EAAI,QAAQ,yBAAyB;MAC3C,cAAcA,OAAAA,EAAI,OAAO;MACzB,SAASA,OAAAA,EAAI,OAAO;MACpB,UAAUA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;MAC/B,aAAaA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;MAClC,WAAWA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;MAChC,OAAOA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;KAC9B,CAAC;KACDA,OAAAA,EAAI,OAAO;MACT,MAAMA,OAAAA,EAAI,QAAQ,WAAW;MAC7B,SAASA,OAAAA,EAAI,OAAO;MACpB,OAAOA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;KAC9B,CAAC;IACH,CAAC,CACH;GACF,CAAC,CACH;EACF,CAAC;EACDA,OAAAA,EAAI,OAAO;GACT,MAAMA,OAAAA,EAAI,QAAQ,iBAAiB;GACnC,IAAIA,OAAAA,EAAI,OAAO;GACf,QAAQA,OAAAA,EAAI,OAAO;GACnB,QAAQA,OAAAA,EAAI,mBAAmB,QAAQ;IACrCA,OAAAA,EAAI,OAAO;KACT,MAAMA,OAAAA,EAAI,QAAQ,QAAQ;KAC1B,OAAOA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;KAC5B,SAASA,OAAAA,EAAI,MACXA,OAAAA,EAAI,mBAAmB,QAAQ,CAC7BA,OAAAA,EAAI,OAAO;MAAE,MAAMA,OAAAA,EAAI,QAAQ,KAAK;MAAG,KAAKA,OAAAA,EAAI,OAAO;KAAE,CAAC,GAC1DA,OAAAA,EAAI,OAAO;MACT,MAAMA,OAAAA,EAAI,QAAQ,KAAK;MACvB,MAAMA,OAAAA,EAAI,OAAO;KACnB,CAAC,CACH,CAAC,CACH,CAAC,CAAC,QAAQ;IACZ,CAAC;IACDA,OAAAA,EAAI,OAAO;KACT,MAAMA,OAAAA,EAAI,QAAQ,WAAW;KAC7B,KAAKA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;IAC5B,CAAC;IACDA,OAAAA,EAAI,OAAO;KACT,MAAMA,OAAAA,EAAI,QAAQ,cAAc;KAChC,KAAKA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;KAC1B,SAASA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;IAChC,CAAC;GACH,CAAC,CAAC,CAAC,QAAQ;EACb,CAAC;EACDA,OAAAA,EAAI,OAAO;GACT,MAAMA,OAAAA,EAAI,QAAQ,kBAAkB;GACpC,IAAIA,OAAAA,EAAI,OAAO;GACf,SAASA,OAAAA,EAAI,MAAMA,OAAAA,EAAI,OAAO,CAAC;GAC/B,SAASA,OAAAA,EAAI,MACXA,OAAAA,EAAI,OAAO;IACT,YAAYA,OAAAA,EAAI,OACdA,OAAAA,EAAI,OAAO,GACXA,OAAAA,EAAI,MAAM;KAACA,OAAAA,EAAI,OAAO;KAAGA,OAAAA,EAAI,OAAO;KAAGA,OAAAA,EAAI,QAAQ;IAAC,CAAC,CACvD;IACA,SAASA,OAAAA,EAAI,OAAO;IACpB,UAAUA,OAAAA,EAAI,OAAO;IACrB,OAAOA,OAAAA,EAAI,OAAO;IAClB,MAAMA,OAAAA,EAAI,OAAO;GACnB,CAAC,CACH,CAAC,CAAC,QAAQ;EACZ,CAAC;EACDA,OAAAA,EAAI,OAAO;GACT,MAAMA,OAAAA,EAAI,QAAQ,uBAAuB;GACzC,IAAIA,OAAAA,EAAI,OAAO;GACf,MAAMA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;GAC5B,cAAcA,OAAAA,EAAI,OAAO;GACzB,SAASA,OAAAA,EAAI,MACXA,OAAAA,EAAI,mBAAmB,QAAQ,CAC7BA,OAAAA,EAAI,OAAO;IAAE,MAAMA,OAAAA,EAAI,QAAQ,MAAM;IAAG,MAAMA,OAAAA,EAAI,OAAO;GAAE,CAAC,GAC5DA,OAAAA,EAAI,OAAO;IAAE,MAAMA,OAAAA,EAAI,QAAQ,OAAO;IAAG,KAAKA,OAAAA,EAAI,OAAO;GAAE,CAAC,CAC9D,CAAC,CACH,CAAC,CAAC,SAAS;EACb,CAAC;EACDA,OAAAA,EAAI,OAAO;GACT,MAAMA,OAAAA,EAAI,QAAQ,uBAAuB;GACzC,IAAIA,OAAAA,EAAI,OAAO;GACf,QAAQA,OAAAA,EAAI,OAAO;EACrB,CAAC;EACDA,OAAAA,EAAI,OAAO;GACT,MAAMA,OAAAA,EAAI,QAAQ,kBAAkB;GACpC,IAAIA,OAAAA,EAAI,OAAO;GACf,SAASA,OAAAA,EAAI,OAAO;GACpB,QAAQA,OAAAA,EAAI,OAAO;IACjB,MAAMA,OAAAA,EAAI,QAAQ,MAAM;IACxB,SAASA,OAAAA,EAAI,MAAMA,OAAAA,EAAI,OAAO,CAAC;IAC/B,YAAYA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;IAClC,MAAMA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;IAC5B,mBAAmBA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;IACzC,KAAKA,OAAAA,EAAI,OAAOA,OAAAA,EAAI,OAAO,GAAGA,OAAAA,EAAI,OAAO,CAAC,CAAC,CAAC,SAAS;GACvD,CAAC;EACH,CAAC;EACDA,OAAAA,EAAI,OAAO;GACT,MAAMA,OAAAA,EAAI,QAAQ,eAAe;GACjC,SAASA,OAAAA,EAAI,OAAO;GACpB,MAAMA,OAAAA,EAAI,OAAO;GACjB,WAAWA,OAAAA,EAAI,OAAO;GACtB,IAAIA,OAAAA,EAAI,OAAO;EACjB,CAAC;EACDA,OAAAA,EAAI,OAAO;GACT,MAAMA,OAAAA,EAAI,QAAQ,eAAe;GACjC,IAAIA,OAAAA,EAAI,OAAO;GACf,QAAQA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;EAChC,CAAC;EACDA,OAAAA,EAAI,OAAO;GACT,MAAMA,OAAAA,EAAI,QAAQ,WAAW;GAC7B,IAAIA,OAAAA,EAAI,OAAO;GACf,mBAAmBA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;GACxC,SAASA,OAAAA,EAAI,MACXA,OAAAA,EAAI,OAAO;IACT,MAAMA,OAAAA,EAAI,QAAQ,cAAc;IAChC,MAAMA,OAAAA,EAAI,OAAO;GACnB,CAAC,CACH;EACF,CAAC;CACH,CAAC,CACH,CAAC,CAAC,SAAS;CACX,cAAcA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;CACnC,WAAWA,OAAAA,EAAI,OAAO,EACpB,SAASA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ,EAChC,CAAC,CAAC,CAAC,QAAQ;CACX,oBAAoBA,OAAAA,EAAI,OAAO,EAAE,QAAQA,OAAAA,EAAI,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ;CACjE,OAAOA,OAAAA,EAAI,OAAO;EAChB,cAAcA,OAAAA,EAAI,OAAO;EACzB,sBAAsBA,OAAAA,EAAI,OAAO;GAC/B,eAAeA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;GACpC,oBAAoBA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;GACzC,4BAA4BA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;GACjD,mCAAmCA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;EAC1D,CAAC,CAAC,CAAC,QAAQ;EACX,eAAeA,OAAAA,EAAI,OAAO;EAC1B,uBAAuBA,OAAAA,EAAI,OAAO;GAChC,kBAAkBA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;GACvC,6BAA6BA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;EACpD,CAAC,CAAC,CAAC,QAAQ;CACb,CAAC,CAAC,CAAC,SAAS;AACd,CAAC,CACH,CACF;AAQA,IAAI,mBAAmB;AAqFvB,IAAI,uCAAuCC,oBACnCC,UACJC,OAAAA,EAAI,OAAO;CACT,cAAcA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;CACnC,SAASA,OAAAA,EAAI,MACXA,OAAAA,EAAI,KAAK;EACP;EAEA;EACA;CACF,CAAC,CACH,CAAC,CAAC,QAAQ;CACV,cAAcA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;;;;;;;;;;;;;CAanC,UAAUA,OAAAA,EAAI,MAAM,CAACA,OAAAA,EAAI,QAAQ,GAAGA,OAAAA,EAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS;;;;;;CAMzF,cAAcA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;CACnC,UAAUA,OAAAA,EAAI,IAAI,CAAC,CAAC,QAAQ;CAC5B,mBAAmBA,OAAAA,EAAI,QAAQ,CAAC,CAAC,QAAQ;CACzC,oBAAoBA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;CACzC,gBAAgBA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;;;;;;CAMrC,oBAAoBA,OAAAA,EAAI,OAAO;EAC7B,MAAMA,OAAAA,EAAI,KAAK,CAAC,YAAY,UAAU,CAAC,CAAC,CAAC,SAAS;EAClD,KAAKA,OAAAA,EAAI,QAAQ,KAAK,CAAC,CAAC,SAAS;CACnC,CAAC,CAAC,CAAC,SAAS;;;;;;;;;;;CAWZ,sBAAsBA,OAAAA,EAAI,KAAK,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,QAAQ;;;;;;;CAO7D,iBAAiBA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;;;;;CAKtC,eAAeA,OAAAA,EAAI,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS;;;;;;CAMtD,kBAAkBA,OAAAA,EAAI,KAAK;EAAC;EAAQ;EAAgB;CAAW,CAAC,CAAC,CAAC,SAAS;CAC3E,kBAAkBA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;CACvC,kBAAkBA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;CACvC,aAAaA,OAAAA,EAAI,KAAK;EAAC;EAAQ;EAAQ;EAAY;CAAS,CAAC,CAAC,CAAC,QAAQ;CACvE,OAAOA,OAAAA,EAAI,QAAQ,CAAC,CAAC,QAAQ;CAC7B,kBAAkBA,OAAAA,EAAI,QAAQ,CAAC,CAAC,QAAQ;CACxC,eAAeA,OAAAA,EAAI,KAAK;EAAC;EAAO;EAAU;CAAM,CAAC,CAAC,CAAC,QAAQ;CAC3D,YAAYA,OAAAA,EAAI,KAAK,CAAC,QAAQ,UAAU,CAAC,CAAC,CAAC,QAAQ;CACnD,MAAMA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;AAC7B,CAAC,CACH,CACF;AAcA,IAAI,6BAA6BC,iBACzBC,UACJC,OAAAA,EAAI,OAAO;CACT,MAAMA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;CAC3B,aAAaA,OAAAA,EAAI,OAAO;AAC1B,CAAC,CACH,CACF;AACA,IAAI,8BAA8BF,iBAC1BC,UACJC,OAAAA,EAAI,OAAO,EACT,SAASA,OAAAA,EAAI,MACXA,OAAAA,EAAI,mBAAmB,QAAQ,CAC7BA,OAAAA,EAAI,OAAO;CAAE,MAAMA,OAAAA,EAAI,QAAQ,MAAM;CAAG,MAAMA,OAAAA,EAAI,OAAO;AAAE,CAAC,GAC5DA,OAAAA,EAAI,OAAO;CAAE,MAAMA,OAAAA,EAAI,QAAQ,OAAO;CAAG,KAAKA,OAAAA,EAAI,OAAO;AAAE,CAAC,CAC9D,CAAC,CACH,CAAC,CAAC,QAAQ,EACZ,CAAC,CACH,CACF;AACA,IAAI,4BAA4BF,iBACxBC,UACJC,OAAAA,EAAI,OAAO,EACT,WAAWA,OAAAA,EAAI,MAAM,CACnBA,OAAAA,EAAI,OAAO,GACXA,OAAAA,EAAI,OAAO,EACT,SAASA,OAAAA,EAAI,MAAMA,OAAAA,EAAI,OAAO,CAAC,CAAC,CAAC,SAAS,EAC5C,CAAC,CACH,CAAC,CAAC,CAAC,SAAS,EACd,CAAC,CACH,CACF;AACA,IAAI,6BAA6BC,iDAAkD;CACjF,IAAI;CACJ,MAAM;CACN,aAAa;CACb,cAAc;AAChB,CAAC;AACD,IAAI,mBAAmB,OAAO,CAAC,MAAM;CACnC,OAAO,2BAA2B,IAAI;AACxC;AASA,IAAI,yBAAyBC,OAAAA,EAAI,OAAO;CACtC,KAAKA,OAAAA,EAAI,OAAO;CAChB,MAAMA,OAAAA,EAAI,KAAK;EAAC;EAAM;EAAM;EAAM;EAAO;EAAM;EAAO;EAAM;CAAK,CAAC;CAClE,OAAOA,OAAAA,EAAI,MAAM;EAACA,OAAAA,EAAI,OAAO;EAAGA,OAAAA,EAAI,OAAO;EAAGA,OAAAA,EAAI,QAAQ;EAAGA,OAAAA,EAAI,MAAMA,OAAAA,EAAI,OAAO,CAAC;CAAC,CAAC;AACvF,CAAC;AACD,IAAI,uBAAuBA,OAAAA,EAAI,OAAO;CACpC,MAAMA,OAAAA,EAAI,KAAK,CAAC,OAAO,IAAI,CAAC;CAC5B,SAASA,OAAAA,EAAI,MACXA,OAAAA,EAAI,MAAM,CAAC,wBAAwBA,OAAAA,EAAI,WAAW,oBAAoB,CAAC,CAAC,CAC1E;AACF,CAAC;AACD,IAAI,uBAAuBC,iBACnBC,UACJF,OAAAA,EAAI,OAAO;CACT,gBAAgBA,OAAAA,EAAI,MAAMA,OAAAA,EAAI,OAAO,CAAC;CACtC,eAAeA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;CACrC,SAASA,OAAAA,EAAI,OAAO;EAClB,QAAQA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;EAC9B,gBAAgBA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;CACxC,CAAC,CAAC,CAAC,SAAS;CACZ,SAASA,OAAAA,EAAI,MAAM,CAAC,wBAAwB,oBAAoB,CAAC,CAAC,CAAC,SAAS;AAC9E,CAAC,CACH,CACF;AACA,IAAI,yBAAyBC,iBACrBC,UACJF,OAAAA,EAAI,OAAO;CACT,SAASA,OAAAA,EAAI,MAAMA,OAAAA,EAAI,OAAO,CAAC;CAC/B,SAASA,OAAAA,EAAI,MACXA,OAAAA,EAAI,OAAO;EACT,YAAYA,OAAAA,EAAI,OAAOA,OAAAA,EAAI,OAAO,GAAGA,OAAAA,EAAI,QAAQ,CAAC;EAClD,QAAQA,OAAAA,EAAI,OAAO;EACnB,UAAUA,OAAAA,EAAI,OAAO;EACrB,OAAOA,OAAAA,EAAI,OAAO;EAClB,MAAMA,OAAAA,EAAI,OAAO;CACnB,CAAC,CACH,CAAC,CAAC,SAAS;AACb,CAAC,CACH,CACF;AACA,IAAI,aAAaG,iDAAkD;CACjE,IAAI;CACJ,MAAM;CACN,aAAaH,OAAAA,EAAI,OAAO,CAAC,CAAC;CAC1B,cAAc;AAChB,CAAC;AASD,IAAI,sBAAsBI,iBAClBC,UACJC,OAAAA,EAAI,OAAO;CACT,mBAAmBA,OAAAA,EAAI,QAAQ,CAAC,CAAC,SAAS;CAC1C,SAASA,OAAAA,EAAI,OAAO;EAClB,gBAAgBA,OAAAA,EAAI,MAAMA,OAAAA,EAAI,OAAO,CAAC,CAAC,CAAC,SAAS;EACjD,gBAAgBA,OAAAA,EAAI,MAAMA,OAAAA,EAAI,OAAO,CAAC,CAAC,CAAC,SAAS;CACnD,CAAC,CAAC,CAAC,SAAS;CACZ,mBAAmBA,OAAAA,EAAI,KAAK;EAAC;EAAO;EAAU;CAAM,CAAC,CAAC,CAAC,SAAS;CAChE,cAAcA,OAAAA,EAAI,OAAO;EACvB,MAAMA,OAAAA,EAAI,QAAQ,aAAa;EAC/B,SAASA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;EAC/B,MAAMA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;EAC5B,QAAQA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;EAC9B,UAAUA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;CAClC,CAAC,CAAC,CAAC,SAAS;AACd,CAAC,CACH,CACF;AA6BA,IAAI,uBAAuBC,iDAAkD;CAC3E,IAAI;CACJ,MAAM;CACN,aA/ByBH,iBAAkBC,UAAYC,OAAAA,EAAI,OAAO,CAAC,CAAC,CAAC,CA+BxD;CACb,cA/B0BF,iBACpBC,UACJC,OAAAA,EAAI,OAAO;EACT,QAAQA,OAAAA,EAAI,mBAAmB,QAAQ;GACrCA,OAAAA,EAAI,OAAO;IACT,MAAMA,OAAAA,EAAI,QAAQ,QAAQ;IAC1B,OAAOA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;GAC/B,CAAC;GACDA,OAAAA,EAAI,OAAO;IACT,MAAMA,OAAAA,EAAI,QAAQ,UAAU;IAC5B,KAAKA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;GAC5B,CAAC;GACDA,OAAAA,EAAI,OAAO;IACT,MAAMA,OAAAA,EAAI,QAAQ,YAAY;IAC9B,KAAKA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;IAC1B,SAASA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;GAChC,CAAC;EACH,CAAC,CAAC,CAAC,SAAS;EACZ,SAASA,OAAAA,EAAI,MACXA,OAAAA,EAAI,mBAAmB,QAAQ,CAC7BA,OAAAA,EAAI,OAAO;GAAE,MAAMA,OAAAA,EAAI,QAAQ,KAAK;GAAG,KAAKA,OAAAA,EAAI,OAAO;EAAE,CAAC,GAC1DA,OAAAA,EAAI,OAAO;GAAE,MAAMA,OAAAA,EAAI,QAAQ,KAAK;GAAG,MAAMA,OAAAA,EAAI,OAAO;EAAE,CAAC,CAC7D,CAAC,CACH,CAAC,CAAC,SAAS;CACb,CAAC,CACH,CAMc;AAChB,CAAC;AACD,IAAI,aAAa,OAAO,CAAC,MAAM,qBAAqB,IAAI;AASxD,IAAI,6BAA6BE,iBACzBC,UACJC,OAAAA,EAAI,OAAO;CACT,mBAAmBA,OAAAA,EAAI,KAAK;EAAC;EAAO;EAAU;CAAM,CAAC,CAAC,CAAC,SAAS;CAChE,cAAcA,OAAAA,EAAI,OAAO;EACvB,MAAMA,OAAAA,EAAI,QAAQ,aAAa;EAC/B,SAASA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;EAC/B,MAAMA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;EAC5B,QAAQA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;EAC9B,UAAUA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;CAClC,CAAC,CAAC,CAAC,SAAS;AACd,CAAC,CACH,CACF;AAyBA,IAAI,mBAAmBC,iDAAkD;CACvE,IAAI;CACJ,MAAM;CACN,aA3BgCH,iBAC1BC,UAAYC,OAAAA,EAAI,OAAO,CAAC,CAAC,CAAC,CA0BnB;CACb,cAzBiCF,iBAC3BC,UACJC,OAAAA,EAAI,OAAO,EACT,QAAQA,OAAAA,EAAI,mBAAmB,QAAQ;EACrCA,OAAAA,EAAI,OAAO;GACT,MAAMA,OAAAA,EAAI,QAAQ,QAAQ;GAC1B,OAAOA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;EAC/B,CAAC;EACDA,OAAAA,EAAI,OAAO;GACT,MAAMA,OAAAA,EAAI,QAAQ,UAAU;GAC5B,KAAKA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;EAC5B,CAAC;EACDA,OAAAA,EAAI,OAAO;GACT,MAAMA,OAAAA,EAAI,QAAQ,YAAY;GAC9B,KAAKA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;GAC1B,SAASA,OAAAA,EAAI,OAAO,CAAC,CAAC,QAAQ;EAChC,CAAC;CACH,CAAC,CAAC,CAAC,SAAS,EACd,CAAC,CACH,CAMyC;AAC3C,CAAC;AASD,IAAI,4BAA4BE,iBACxBC,UACJC,OAAAA,EAAI,OAAO;CACT,YAAYA,OAAAA,EAAI,KAAK;EAAC;EAAQ;EAAU;CAAa,CAAC,CAAC,CAAC,SAAS;CACjE,eAAeA,OAAAA,EAAI,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,SAAS;CAClD,gBAAgBA,OAAAA,EAAI,OAAO;EACzB,QAAQA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;EAC9B,UAAUA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;CAClC,CAAC,CAAC,CAAC,SAAS;CACZ,OAAOA,OAAAA,EAAI,OAAO,CAAC,CAAC,SAAS;CAC7B,YAAYA,OAAAA,EAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;CACxC,mBAAmBA,OAAAA,EAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS;CAC/D,cAAcA,OAAAA,EAAI,KAAK;EAAC;EAAO;EAAQ;CAAM,CAAC,CAAC,CAAC,SAAS;CACzD,eAAeA,OAAAA,EAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;CACzD,SAASA,OAAAA,EAAI,KAAK;EAAC;EAAQ;EAAO;EAAU;CAAM,CAAC,CAAC,CAAC,SAAS;CAC9D,MAAMA,OAAAA,EAAI,KAAK;EAAC;EAAa;EAAa;EAAa;CAAM,CAAC,CAAC,CAAC,SAAS;AAC3E,CAAC,CAAC,CAAC,OAAO,CACZ,CACF;AAKA,IAAI,6BAA6BC,iDAAkD;CACjF,IAAI;CACJ,MAAM;CACN,aAP+BH,iBAAkBC,UAAYC,OAAAA,EAAI,OAAO,CAAC,CAAC,CAAC,CAO9D;CACb,cAPgCF,iBAC1BC,UAAYC,OAAAA,EAAI,OAAO,EAAE,QAAQA,OAAAA,EAAI,OAAO,EAAE,CAAC,CAAC,CAMxC;AAChB,CAAC;AACD,IAAI,mBAAmB,OAAO,CAAC,MAAM;CACnC,OAAO,2BAA2B,IAAI;AACxC;AAIA,eAAe,sBAAsB,EACnC,OACA,YACA,oBACC;CACD,SAAS,SAAS,OAAO,KAAK,IAAI,MAAM,UAAU,QAAQ,KAAK;CAC/D,MAAM,eAAe,CAAC;CACtB,IAAI,SAAS,MACX,OAAO;EAAE,OAAO,KAAK;EAAG,YAAY,KAAK;EAAG;CAAa;CAE3D,MAAM,cAAc,CAAC;CACrB,KAAK,MAAM,QAAQ,OACjB,QAAQ,KAAK,MAAb;EACE,KAAK;GACH,YAAY,KAAK;IACf,MAAM;IACN,MAAM,KAAK;IACX,aAAa,KAAK;IAClB,YAAY,KAAK;IACjB,QAAQ;GACV,CAAC;GACD;EACF,KAAK;GACH,QAAQ,KAAK,IAAb;IACE,KAAK,sBAAsB;KACzB,MAAM,OAAO,MAAME,cAAe;MAChC,OAAO,KAAK;MACZ,QAAQ;KACV,CAAC;KACD,YAAY,KAAK;MACf,MAAM;MACN,kBAAkB,KAAK;MACvB,iBAAiB,KAAK;MACtB,iBAAiB,KAAK,UAAU;OAC9B,QAAQ,KAAK,QAAQ;OACrB,iBAAiB,KAAK,QAAQ;MAChC,IAAI,KAAK;MACT,SAAS,KAAK;KAChB,CAAC;KACD;IACF;IACA,KAAK;KACH,YAAY,KAAK,EACf,MAAM,cACR,CAAC;KACD;IAEF,KAAK,6BAA6B;KAChC,MAAM,OAAO,MAAMA,cAAe;MAChC,OAAO,KAAK;MACZ,QAAQ;KACV,CAAC;KACD,YAAY,KAAK;MACf,MAAM;MACN,qBAAqB,KAAK;MAC1B,eAAe,KAAK;KACtB,CAAC;KACD;IACF;IACA,KAAK,qBAAqB;KACxB,MAAM,OAAO,MAAMA,cAAe;MAChC,OAAO,KAAK;MACZ,QAAQ;KACV,CAAC;KACD,YAAY,KAAK;MACf,MAAM;MACN,SAAS,KAAK,WAAW,OAAO;OAC9B,iBAAiB,KAAK,QAAQ;OAC9B,iBAAiB,KAAK,QAAQ;MAChC,IAAI,KAAK;MACT,qBAAqB,KAAK;MAC1B,qBAAqB,KAAK;MAC1B,eAAe,KAAK;KACtB,CAAC;KACD;IACF;IACA,KAAK,2BAA2B;KAC9B,MAAM,OAAO,MAAMA,cAAe;MAChC,OAAO,KAAK;MACZ,QAAQ;KACV,CAAC;KACD,YAAY,KAAK;MACf,MAAM;MACN,WAAW,KAAK,aAAa,OAAO;OAAE,MAAM;OAAQ,UAAU,KAAK;MAAE,IAAI,OAAO,KAAK,cAAc,WAAW,KAAK,YAAY;OAAE,MAAM;OAAQ,UAAU,KAAK,UAAU;MAAQ;KAClL,CAAC;KACD;IACF;IACA,KAAK,2BAA2B;KAC9B,MAAM,OAAO,MAAMA,cAAe;MAChC,OAAO,KAAK;MACZ,QAAQ;KACV,CAAC;KACD,YAAY,KAAK;MACf,MAAM;MACN,YAAY,KAAK;MACjB,gBAAgB,KAAK;MACrB,kBAAkB,KAAK,iBAAiB;OACtC,SAAS,KAAK,eAAe;OAC7B,WAAW,KAAK,eAAe;MACjC,IAAI,KAAK;MACT,OAAO,KAAK;MACZ,MAAM,KAAK;MACX,SAAS,KAAK;MACd,YAAY,KAAK;MACjB,eAAe,KAAK;MACpB,oBAAoB,KAAK;KAC3B,CAAC;KACD;IACF;GACF;GACA;EAEF;GACE,aAAa,KAAK;IAAE,MAAM;IAAoB;GAAK,CAAC;GACpD;CACJ;CAEF,IAAI,cAAc,MAChB,OAAO;EAAE,OAAO;EAAa,YAAY,KAAK;EAAG;CAAa;CAEhE,MAAM,OAAO,WAAW;CACxB,QAAQ,MAAR;EACE,KAAK;EACL,KAAK;EACL,KAAK,YACH,OAAO;GAAE,OAAO;GAAa,YAAY;GAAM;EAAa;EAC9D,KAAK,QACH,OAAO;GACL,OAAO;GACP,YAAY,WAAW,aAAa,sBAAsB,WAAW,aAAa,iBAAiB,WAAW,aAAa,sBAAsB,WAAW,aAAa,wBAAwB,WAAW,aAAa,eAAe,EAAE,MAAM,WAAW,SAAS,IAAI;IAAE,MAAM;IAAY,MAAM,WAAW;GAAS;GACtT;EACF;EACF,SAEE,MAAM,IAAIC,8BAA+B,EACvC,eAAe,qBAAqBvF,OACtC,CAAC;CAEL;AACF;AAGA,IAAI,+BAA+B,MAAM;CACvC,YAAY,SAAS,QAAQ;EAC3B,KAAK,uBAAuB;EAC5B,KAAK,gBAAgB;GACnB,WAAW,CAAC,iBAAiB;GAC7B,mBAAmB,CAAC,iBAAiB;EACvC;EACA,KAAK,UAAU;EACf,KAAK,SAAS;CAChB;CACA,IAAI,WAAW;EACb,OAAO,KAAK,OAAO;CACrB;CACA,MAAM,QAAQ,EACZ,iBACA,aACA,eACA,MACA,MACA,iBACA,kBACA,MACA,QACA,iBACA,OACA,YACA,kBACC;EACD,IAAI,IAAI,IAAI,IAAI;EAChB,MAAM,WAAW,CAAC;EAClB,MAAM,oBAAoB,mCAAmC,KAAK,OAAO;EACzE,IAAI,QAAQ,MACV,SAAS,KAAK;GAAE,MAAM;GAAuB,SAAS;EAAO,CAAC;EAEhE,IAAI,QAAQ,MACV,SAAS,KAAK;GAAE,MAAM;GAAuB,SAAS;EAAO,CAAC;EAEhE,IAAI,mBAAmB,MACrB,SAAS,KAAK;GACZ,MAAM;GACN,SAAS;EACX,CAAC;EAEH,IAAI,oBAAoB,MACtB,SAAS,KAAK;GACZ,MAAM;GACN,SAAS;EACX,CAAC;EAEH,IAAI,iBAAiB,MACnB,SAAS,KAAK;GAAE,MAAM;GAAuB,SAAS;EAAgB,CAAC;EAEzE,MAAM,gBAAgB,MAAMwF,qBAAsB;GAChD,UAAU;GACV;GACA,QAAQ;EACV,CAAC;EACD,KAAK,iBAAiB,OAAO,KAAK,IAAI,cAAc,kBAAkB,iBAAiB,OAAO,KAAK,IAAI,cAAc,qBACnH,SAAS,KAAK;GACZ,MAAM;GACN,SAAS;GACT,SAAS;EACX,CAAC;EAEH,MAAM,EAAE,OAAO,UAAU,kBAAkB,MAAM,8BAA8B;GAC7E;GACA,mBAAmB,kBAAkB;GACrC,gBAAgB,KAAK,OAAO;GAC5B,QAAQ,KAAK,iBAAiB,OAAO,KAAK,IAAI,cAAc,UAAU,OAAO,KAAK;GAClF,mBAAmB,cAAc,oBAAoB;EACvD,CAAC;EACD,SAAS,KAAK,GAAG,aAAa;EAC9B,MAAM,oBAAoB,KAAK,iBAAiB,OAAO,KAAK,IAAI,cAAc,qBAAqB,OAAO,KAAK;EAC/G,IAAI,UAAU,iBAAiB,OAAO,KAAK,IAAI,cAAc;EAC7D,SAAS,WAAW,KAAK;GACvB,IAAI,WAAW,MACb,UAAU,CAAC,GAAG;QACT,IAAI,CAAC,QAAQ,SAAS,GAAG,GAC9B,UAAU,CAAC,GAAG,SAAS,GAAG;EAE9B;EACA,SAAS,cAAc,IAAI;GACzB,QAAQ,SAAS,OAAO,KAAK,IAAI,MAAM,MACpC,SAAS,KAAK,SAAS,sBAAsB,KAAK,OAAO,EAC5D,MAAM;EACR;EACA,MAAM,cAAc,QAAQ,iBAAiB,OAAO,KAAK,IAAI,cAAc,cAAc,WAAW,iBAAiB,OAAO,KAAK,IAAI,cAAc,YAAY,iBAAiB,OAAO,KAAK,IAAI,cAAc,cAAc,OAAO,mBAAmB,KAAK;EAC3P,IAAI,aACF,WAAW,8BAA8B;EAE3C,MAAM,qBAAqB,KAAK,SAAS,OAAO,KAAK,IAAI,MAAM,MAC5D,SAAS,KAAK,SAAS,uBAAuB,KAAK,OAAO,uBAAuB,KAAK,OAAO,4BAChG,MAAM,OAAO,KAAK,IAAI,GAAG;EACzB,IAAI,mBACF,WAAW,gCAAgC;EAE7C,IAAI,cAAc,yBAAyB,GACzC,WAAW,+BAA+B;EAE5C,MAAM,QAAQ,iBAAiB,OAAO,KAAK,IAAI,cAAc;EAC7D,IAAI,UAAU,SAAS,kBAAkB,kBACvC,WAAW,6BAA6B;EAE1C,MAAM,WAAW;GACf,OAAO,KAAK;GACZ;GACA;GACA,OAAO;GACP,mBAAmB;GACnB,KAAK,kBAAkB,OAAO,KAAK,IAAI,eAAe,UAAU,WAAW,iBAAiB,OAAO,KAAK,IAAI,cAAc,mBAAmB,EAC3I,MAAM;IACJ,IAAI,kBAAkB,OAAO,KAAK,IAAI,eAAe,UAAU,UAAU,EACvE,QAAQ,eAAe,UAAU,OAAO;KACtC,MAAM;KACN,QAAQ;KACR,OAAO,KAAK,eAAe,SAAS,OAAO,KAAK;KAChD,aAAa,eAAe;KAC5B,QAAQ,eAAe;IACzB,IAAI,EAAE,MAAM,cAAc,EAC5B;IACA,IAAI,iBAAiB,OAAO,KAAK,IAAI,cAAc,kBAAkB,EACnE,WAAW,cAAc,cAC3B;GACF,EACF;GAEA,cAAc,iBAAiB,OAAO,KAAK,IAAI,cAAc;GAC7D,gBAAgB,iBAAiB,OAAO,KAAK,IAAI,cAAc;GAC/D,UAAU,iBAAiB,OAAO,KAAK,IAAI,cAAc;GACzD,qBAAqB,iBAAiB,OAAO,KAAK,IAAI,cAAc;GACpE,sBAAsB,iBAAiB,OAAO,KAAK,IAAI,cAAc;GACrE;GACA,MAAM,iBAAiB,OAAO,KAAK,IAAI,cAAc;GACrD,cAAc,iBAAiB,OAAO,KAAK,IAAI,cAAc;GAC7D,cAAc,iBAAiB,OAAO,KAAK,IAAI,cAAc;GAC7D;GACA,kBAAkB,iBAAiB,OAAO,KAAK,IAAI,cAAc;GACjE,sBAAsB,iBAAiB,OAAO,KAAK,IAAI,cAAc;GACrE,wBAAwB,iBAAiB,OAAO,KAAK,IAAI,cAAc;GACvE,mBAAmB,iBAAiB,OAAO,KAAK,IAAI,cAAc;GAClE,cAAc;GACd,YAAY,iBAAiB,OAAO,KAAK,IAAI,cAAc;GAE3D,GAAG,kBAAkB,sBAAsB,iBAAiB,OAAO,KAAK,IAAI,cAAc,oBAAoB,SAAS,iBAAiB,OAAO,KAAK,IAAI,cAAc,qBAAqB,SAAS,iBAAiB,OAAO,KAAK,IAAI,cAAc,kBAAkB,SAAS,iBAAiB,OAAO,KAAK,IAAI,cAAc,qBAAqB,SAAS,EACzV,WAAW;IACT,IAAI,iBAAiB,OAAO,KAAK,IAAI,cAAc,oBAAoB,QAAQ,EAC7E,QAAQ,cAAc,gBACxB;IACA,IAAI,iBAAiB,OAAO,KAAK,IAAI,cAAc,qBAAqB,QAAQ,EAC9E,SAAS,cAAc,iBACzB;IACA,IAAI,iBAAiB,OAAO,KAAK,IAAI,cAAc,kBAAkB,QAAQ,EAC3E,MAAM,cAAc,cACtB;IACA,IAAI,iBAAiB,OAAO,KAAK,IAAI,cAAc,qBAAqB,QAAQ,EAC9E,SAAS,cAAc,iBACzB;GACF,EACF;EACF;EACA,IAAI,kBAAkB,kBAChB;OAAA,GAAG,iBAAiB,OAAO,KAAK,IAAI,cAAc,qBAAqB,UAAU,kBAAkB,iCAAiC;IACtI,IAAI,SAAS,eAAe,MAAM;KAChC,SAAS,cAAc,KAAK;KAC5B,SAAS,KAAK;MACZ,MAAM;MACN,SAAS;MACT,SAAS;KACX,CAAC;IACH;IACA,IAAI,SAAS,SAAS,MAAM;KAC1B,SAAS,QAAQ,KAAK;KACtB,SAAS,KAAK;MACZ,MAAM;MACN,SAAS;MACT,SAAS;KACX,CAAC;IACH;GACF;SACK;GACL,KAAK,iBAAiB,OAAO,KAAK,IAAI,cAAc,oBAAoB,MACtE,SAAS,KAAK;IACZ,MAAM;IACN,SAAS;IACT,SAAS;GACX,CAAC;GAEH,KAAK,iBAAiB,OAAO,KAAK,IAAI,cAAc,qBAAqB,MACvE,SAAS,KAAK;IACZ,MAAM;IACN,SAAS;IACT,SAAS;GACX,CAAC;GAEH,KAAK,iBAAiB,OAAO,KAAK,IAAI,cAAc,kBAAkB,MACpE,SAAS,KAAK;IACZ,MAAM;IACN,SAAS;IACT,SAAS;GACX,CAAC;GAEH,KAAK,iBAAiB,OAAO,KAAK,IAAI,cAAc,qBAAqB,MACvE,SAAS,KAAK;IACZ,MAAM;IACN,SAAS;IACT,SAAS;GACX,CAAC;EAEL;EACA,KAAK,iBAAiB,OAAO,KAAK,IAAI,cAAc,iBAAiB,UAAU,CAAC,kBAAkB,wBAAwB;GACxH,SAAS,KAAK;IACZ,MAAM;IACN,SAAS;IACT,SAAS;GACX,CAAC;GACD,OAAO,SAAS;EAClB;EACA,KAAK,iBAAiB,OAAO,KAAK,IAAI,cAAc,iBAAiB,cAAc,CAAC,kBAAkB,4BAA4B;GAChI,SAAS,KAAK;IACZ,MAAM;IACN,SAAS;IACT,SAAS;GACX,CAAC;GACD,OAAO,SAAS;EAClB;EACA,MAAM,EACJ,OAAO,aACP,YAAY,kBACZ,iBACE,MAAM,sBAAsB;GAC9B;GACA;GACA;EACF,CAAC;EACD,OAAO;GACL;GACA,MAAM;IACJ,GAAG;IACH,OAAO;IACP,aAAa;GACf;GACA,UAAU,CAAC,GAAG,UAAU,GAAG,YAAY;GACvC;EACF;CACF;CACA,MAAM,WAAW,SAAS;EACxB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;EACpH,MAAM,EACJ,MAAM,MACN,UACA,sBACE,MAAM,KAAK,QAAQ,OAAO;EAC9B,MAAM,MAAM,KAAK,OAAO,IAAI;GAC1B,MAAM;GACN,SAAS,KAAK;EAChB,CAAC;EACD,MAAM,cAAc,KAAK,OAAO,SAAS,QAAQ,cAAc,EAAE;EACjE,MAAM,EACJ,iBACA,OAAO,UACP,UAAU,gBACR,MAAMC,cAAe;GACvB;GACA,SAASC,eAAgB,KAAK,OAAO,QAAQ,GAAG,QAAQ,OAAO;GAC/D;GACA,uBAAuB;GACvB,2BAA2BC,0BACzB,6BACF;GACA,aAAa,QAAQ;GACrB,OAAO,KAAK,OAAO;EACrB,CAAC;EACD,IAAI,SAAS,OACX,MAAM,IAAI,aAAa;GACrB,SAAS,SAAS,MAAM;GACxB;GACA,mBAAmB;GACnB,YAAY;GACZ;GACA,cAAc;GACd,aAAa;EACf,CAAC;EAEH,MAAM,UAAU,CAAC;EACjB,MAAM,WAAW,CAAC;EAClB,IAAI,kBAAkB;EACtB,KAAK,MAAM,QAAQ,SAAS,QAC1B,QAAQ,KAAK,MAAb;GACE,KAAK;IACH,IAAI,KAAK,QAAQ,WAAW,GAC1B,KAAK,QAAQ,KAAK;KAAE,MAAM;KAAgB,MAAM;IAAG,CAAC;IAEtD,KAAK,MAAM,WAAW,KAAK,SACzB,QAAQ,KAAK;KACX,MAAM;KACN,MAAM,QAAQ;KACd,kBAAkB,GACf,cAAc;MACb,QAAQ,KAAK;MACb,4BAA4B,KAAK,KAAK,sBAAsB,OAAO,KAAK;KAC1E,EACF;IACF,CAAC;IAEH;GAEF,KAAK;IACH,QAAQ,KAAK;KACX,MAAM;KACN,YAAY,KAAK;KACjB,UAAU;KACV,OAAO;KACP,kBAAkB;IACpB,CAAC;IACD,QAAQ,KAAK;KACX,MAAM;KACN,YAAY,KAAK;KACjB,UAAU;KACV,QAAQ,EACN,QAAQ,KAAK,OACf;KACA,kBAAkB;IACpB,CAAC;IACD;GAEF,KAAK;IACH,QAAQ,KAAK;KACX,MAAM;KACN,YAAY,KAAK;KACjB,UAAU;KACV,OAAO,KAAK,UAAU,EACpB,QAAQ,KAAK,OACf,CAAC;KACD,kBAAkB,GACf,cAAc,EACb,QAAQ,KAAK,GACf,EACF;IACF,CAAC;IACD;GAEF,KAAK;IACH,KAAK,MAAM,eAAe,KAAK,SAAS;KACtC,MAAM,MAAM,KAAK,QAAQ,oBAAoB,OAAO,KAAK,IAAI,GAAG,WAAW,OAAO,KAAK,IAAI,GAAG,aAAa,YAAY,UACrH,SAAS,KAAK,YAAY,QAAQ;KAEpC,QAAQ,KAAK;MACX,MAAM;MACN,MAAM,YAAY;MAClB,kBAAkB,GACf,cAAc;OACb,QAAQ,KAAK;OACb,GAAG,KAAK,SAAS,QAAQ,EAAE,OAAO,KAAK,MAAM;MAC/C,EACF;KACF,CAAC;KACD,KAAK,MAAM,cAAc,YAAY,aACnC,IAAI,WAAW,SAAS,gBACtB,QAAQ,KAAK;MACX,MAAM;MACN,YAAY;MACZ,KAAK,MAAM,MAAM,KAAK,KAAK,OAAA,CAAQ,eAAe,OAAO,KAAK,IAAI,GAAG,KAAK,EAAE,MAAM,OAAO,KAAKC,WAAY;MAC1G,KAAK,WAAW;MAChB,OAAO,WAAW;KACpB,CAAC;UACI,IAAI,WAAW,SAAS,iBAC7B,QAAQ,KAAK;MACX,MAAM;MACN,YAAY;MACZ,KAAK,MAAM,MAAM,KAAK,KAAK,OAAA,CAAQ,eAAe,OAAO,KAAK,IAAI,GAAG,KAAK,EAAE,MAAM,OAAO,KAAKA,WAAY;MAC1G,WAAW;MACX,QAAQ,MAAM,KAAK,WAAW,UAAU,OAAO,KAAK,WAAW,aAAa,OAAO,KAAK;MACxF,WAAW,KAAK,WAAW,aAAa,OAAO,KAAK,WAAW;MAC/D,GAAG,WAAW,UAAU,EACtB,kBAAkB,GACf,cAAc,EACb,QAAQ,WAAW,QACrB,EACF,EACF,IAAI,CAAC;KACP,CAAC;UACI,IAAI,WAAW,SAAS,2BAC7B,QAAQ,KAAK;MACX,MAAM;MACN,YAAY;MACZ,KAAK,MAAM,MAAM,KAAK,KAAK,OAAA,CAAQ,eAAe,OAAO,KAAK,IAAI,GAAG,KAAK,EAAE,MAAM,OAAO,KAAKA,WAAY;MAC1G,WAAW;MACX,QAAQ,MAAM,KAAK,WAAW,aAAa,OAAO,KAAK,WAAW,YAAY,OAAO,KAAK;MAC1F,WAAW,KAAK,WAAW,aAAa,OAAO,KAAK,WAAW;MAC/D,kBAAkB,GACf,cAAc;OACb,QAAQ,WAAW;OACnB,aAAa,WAAW;OACxB,GAAG,WAAW,SAAS,OAAO,EAAE,OAAO,WAAW,MAAM,IAAI,CAAC;MAC/D,EACF;KACF,CAAC;UACI,IAAI,WAAW,SAAS,aAC7B,QAAQ,KAAK;MACX,MAAM;MACN,YAAY;MACZ,KAAK,MAAM,MAAM,KAAK,KAAK,OAAA,CAAQ,eAAe,OAAO,KAAK,IAAI,GAAG,KAAK,EAAE,MAAM,OAAO,KAAKA,WAAY;MAC1G,WAAW;MACX,OAAO,WAAW;MAClB,UAAU,WAAW;MACrB,kBAAkB,GACf,cAAc;OACb,QAAQ,WAAW;OACnB,GAAG,WAAW,SAAS,OAAO,EAAE,OAAO,WAAW,MAAM,IAAI,CAAC;MAC/D,EACF;KACF,CAAC;IAGP;IACA;GAEF,KAAK;IACH,kBAAkB;IAClB,QAAQ,KAAK;KACX,MAAM;KACN,YAAY,KAAK;KACjB,UAAU,KAAK;KACf,OAAO,KAAK;KACZ,kBAAkB,GACf,cAAc,EACb,QAAQ,KAAK,GACf,EACF;IACF,CAAC;IACD;GAEF,KAAK;IACH,QAAQ,KAAK;KACX,MAAM;KACN,YAAY,KAAK;KACjB,UAAU,qBAAqB,OAAO,oBAAoB;KAC1D,OAAO,KAAK,UAAU,CAAC,CAAC;KACxB,kBAAkB;IACpB,CAAC;IACD,QAAQ,KAAK;KACX,MAAM;KACN,YAAY,KAAK;KACjB,UAAU,qBAAqB,OAAO,oBAAoB;KAC1D,QAAQ,mBAAmB,KAAK,MAAM;KACtC,kBAAkB;IACpB,CAAC;IACD;GAEF,KAAK;IACH,QAAQ,KAAK;KACX,MAAM;KACN,YAAY,KAAK;KACjB,UAAU;KACV,OAAO;KACP,kBAAkB;IACpB,CAAC;IACD,QAAQ,KAAK;KACX,MAAM;KACN,YAAY,KAAK;KACjB,UAAU;KACV,QAAQ;MACN,MAAM;MACN,QAAQ,KAAK,UAAU;KACzB;KACA,kBAAkB;IACpB,CAAC;IACD;GAEF,KAAK;IACH,QAAQ,KAAK;KACX,MAAM;KACN,YAAY,KAAK;KACjB,UAAU;KACV,OAAO;KACP,kBAAkB;IACpB,CAAC;IACD,QAAQ,KAAK;KACX,MAAM;KACN,YAAY,KAAK;KACjB,UAAU;KACV,QAAQ;MACN,SAAS,KAAK;MACd,UAAU,MAAM,KAAK,KAAK,YAAY,OAAO,KAAK,IAAI,GAAG,KAAK,YAAY;OACxE,YAAY,OAAO;OACnB,QAAQ,OAAO;OACf,UAAU,OAAO;OACjB,OAAO,OAAO;OACd,MAAM,OAAO;MACf,EAAE,MAAM,OAAO,KAAK;KACtB;KACA,kBAAkB;IACpB,CAAC;IACD;GAEF,KAAK;IACH,QAAQ,KAAK;KACX,MAAM;KACN,YAAY,KAAK;KACjB,UAAU;KACV,OAAO,KAAK,UAAU;MACpB,MAAM,KAAK;MACX,aAAa,KAAK;KACpB,CAAC;KACD,kBAAkB;IACpB,CAAC;IACD,QAAQ,KAAK;KACX,MAAM;KACN,YAAY,KAAK;KACjB,UAAU;KACV,QAAQ,EACN,SAAS,KAAK,QAChB;KACA,kBAAkB;IACpB,CAAC;IACD;EAEJ;EAEF,MAAM,mBAAmB,GACtB,cAAc,EACb,GAAG,SAAS,MAAM,OAAO,EAAE,YAAY,SAAS,GAAG,IAAI,CAAC,EAC1D,EACF;EACA,IAAI,SAAS,SAAS,GACpB,iBAAiB,YAAY,CAAC,WAAW;EAE3C,IAAI,OAAO,SAAS,iBAAiB,UACnC,iBAAiB,YAAY,CAAC,cAAc,SAAS;EAEvD,MAAM,KAAK,SAAS,cAAc,OAAO,KAAK,IAAI,GAAG,YAAY,MAC/D,iBAAiB,YAAY,CAAC,mBAAmB,SAAS,UAAU;EAEtE,MAAM,QAAQ,SAAS;EACvB,MAAM,iBAAiB,0BAA0B,KAAK;EACtD,IAAI,kBAAkB,MACpB,iBAAiB,YAAY,CAAC,QAAQ;EAExC,OAAO;GACL;GACA,cAAc,8BAA8B;IAC1C,eAAe,KAAK,SAAS,uBAAuB,OAAO,KAAK,IAAI,GAAG;IACvE;GACF,CAAC;GACD,OAAO;IACL,aAAa,MAAM;IACnB,cAAc,MAAM;IACpB,aAAa,MAAM,eAAe,MAAM;IACxC,kBAAkB,MAAM,KAAK,MAAM,0BAA0B,OAAO,KAAK,IAAI,GAAG,qBAAqB,OAAO,KAAK,KAAK;IACtH,oBAAoB,MAAM,KAAK,MAAM,yBAAyB,OAAO,KAAK,IAAI,GAAG,kBAAkB,OAAO,KAAK,KAAK;GACtH;GACA,SAAS,EAAE,KAAK;GAChB,UAAU;IACR,IAAI,SAAS;IACb,2BAAW,IAAI,KAAK,SAAS,aAAa,GAAG;IAC7C,SAAS,SAAS;IAClB,SAAS;IACT,MAAM;GACR;GACA;GACA;EACF;CACF;CACA,MAAM,SAAS,SAAS;EACtB,MAAM,EACJ,MAAM,MACN,UACA,mBACA,UACE,MAAM,KAAK,QAAQ,OAAO;EAC9B,MAAM,EAAE,iBAAiB,OAAO,aAAa,MAAMH,cAAe;GAChE,KAAK,KAAK,OAAO,IAAI;IACnB,MAAM;IACN,SAAS,KAAK;GAChB,CAAC;GACD,SAASC,eAAgB,KAAK,OAAO,QAAQ,GAAG,QAAQ,OAAO;GAC/D,MAAM;IACJ,GAAG;IACH,QAAQ;GACV;GACA,uBAAuB;GACvB,2BAA2BG,iCACzB,0BACF;GACA,aAAa,QAAQ;GACrB,OAAO,KAAK,OAAO;EACrB,CAAC;EACD,MAAM,OAAO;EACb,MAAM,cAAc,KAAK,OAAO,SAAS,QAAQ,cAAc,EAAE;EACjE,IAAI,eAAe;EACnB,MAAM,QAAQ;GACZ,aAAa,KAAK;GAClB,cAAc,KAAK;GACnB,aAAa,KAAK;EACpB;EACA,MAAM,WAAW,CAAC;EAClB,IAAI,aAAa;EACjB,MAAM,mBAAmB,CAAC;EAC1B,MAAM,qBAAqB,CAAC;EAC5B,IAAI;EACJ,IAAI,kBAAkB;EACtB,MAAM,kBAAkB,CAAC;EACzB,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,OAAO;GACL,QAAQ,SAAS,YACf,IAAI,gBAAgB;IAClB,MAAM,YAAY;KAChB,WAAW,QAAQ;MAAE,MAAM;MAAgB;KAAS,CAAC;IACvD;IACA,UAAU,OAAO,YAAY;KAC3B,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;KACpG,IAAI,QAAQ,kBACV,WAAW,QAAQ;MAAE,MAAM;MAAO,UAAU,MAAM;KAAS,CAAC;KAE9D,IAAI,CAAC,MAAM,SAAS;MAClB,eAAe;MACf,WAAW,QAAQ;OAAE,MAAM;OAAS,OAAO,MAAM;MAAM,CAAC;MACxD;KACF;KACA,MAAM,QAAQ,MAAM;KACpB,IAAI,+BAA+B,KAAK,GAClC;UAAA,MAAM,KAAK,SAAS,iBAAiB;OACvC,iBAAiB,MAAM,gBAAgB;QACrC,UAAU,MAAM,KAAK;QACrB,YAAY,MAAM,KAAK;OACzB;OACA,WAAW,QAAQ;QACjB,MAAM;QACN,IAAI,MAAM,KAAK;QACf,UAAU,MAAM,KAAK;OACvB,CAAC;MACH,OAAO,IAAI,MAAM,KAAK,SAAS,mBAAmB;OAChD,iBAAiB,MAAM,gBAAgB;QACrC,UAAU,qBAAqB,OAAO,oBAAoB;QAC1D,YAAY,MAAM,KAAK;OACzB;OACA,WAAW,QAAQ;QACjB,MAAM;QACN,IAAI,MAAM,KAAK;QACf,UAAU,qBAAqB,OAAO,oBAAoB;QAC1D,kBAAkB;OACpB,CAAC;OACD,WAAW,QAAQ;QACjB,MAAM;QACN,IAAI,MAAM,KAAK;OACjB,CAAC;OACD,WAAW,QAAQ;QACjB,MAAM;QACN,YAAY,MAAM,KAAK;QACvB,UAAU,qBAAqB,OAAO,oBAAoB;QAC1D,OAAO,KAAK,UAAU,CAAC,CAAC;QACxB,kBAAkB;OACpB,CAAC;MACH,OAAO,IAAI,MAAM,KAAK,SAAS,iBAAiB;OAC9C,iBAAiB,MAAM,gBAAgB;QACrC,UAAU;QACV,YAAY,MAAM,KAAK;OACzB;OACA,WAAW,QAAQ;QACjB,MAAM;QACN,IAAI,MAAM,KAAK;QACf,UAAU;QACV,kBAAkB;OACpB,CAAC;MACH,OAAO,IAAI,MAAM,KAAK,SAAS,yBAAyB;OACtD,iBAAiB,MAAM,gBAAgB;QACrC,UAAU;QACV,YAAY,MAAM,KAAK;QACvB,iBAAiB,EACf,aAAa,MAAM,KAAK,aAC1B;OACF;OACA,WAAW,QAAQ;QACjB,MAAM;QACN,IAAI,MAAM,KAAK;QACf,UAAU;QACV,kBAAkB;OACpB,CAAC;OACD,WAAW,QAAQ;QACjB,MAAM;QACN,IAAI,MAAM,KAAK;QACf,OAAO,mBAAmB,MAAM,KAAK,aAAa;OACpD,CAAC;MACH,OAAO,IAAI,MAAM,KAAK,SAAS,oBAC7B,WAAW,QAAQ;OACjB,MAAM;OACN,YAAY,MAAM,KAAK;OACvB,UAAU;OACV,OAAO;OACP,kBAAkB;MACpB,CAAC;WACI,IAAI,MAAM,KAAK,SAAS,yBAC7B,WAAW,QAAQ;OACjB,MAAM;OACN,YAAY,MAAM,KAAK;OACvB,UAAU;OACV,OAAO;OACP,kBAAkB;MACpB,CAAC;WACI,IAAI,MAAM,KAAK,SAAS,WAAW;OACxC,mBAAmB,OAAO,GAAG,mBAAmB,MAAM;OACtD,sBAAsB,KAAK,MAAM,KAAK,UAAU,OAAO,KAAK,KAAK;OACjE,WAAW,QAAQ;QACjB,MAAM;QACN,IAAI,MAAM,KAAK;QACf,kBAAkB,GACf,cAAc;SACb,QAAQ,MAAM,KAAK;SACnB,GAAG,MAAM,KAAK,SAAS,QAAQ,EAC7B,OAAO,MAAM,KAAK,MACpB;QACF,EACF;OACF,CAAC;MACH,OAAO,IAAI,+BAA+B,KAAK,KAAK,MAAM,KAAK,SAAS,aAAa;OACnF,gBAAgB,MAAM,KAAK,MAAM;QAC/B,kBAAkB,MAAM,KAAK;QAC7B,cAAc,EAAE,GAAG,SAAS;OAC9B;OACA,WAAW,QAAQ;QACjB,MAAM;QACN,IAAI,GAAG,MAAM,KAAK,GAAG;QACrB,kBAAkB,GACf,cAAc;SACb,QAAQ,MAAM,KAAK;SACnB,4BAA4B,KAAK,MAAM,KAAK,sBAAsB,OAAO,KAAK;QAChF,EACF;OACF,CAAC;MACH;YACK,IAAI,8BAA8B,KAAK,GACxC;UAAA,MAAM,KAAK,SAAS,WAAW;OACjC,MAAM,SAAS,KAAK,MAAM,KAAK,UAAU,OAAO,KAAK;OACrD,qBAAqB,KAAK;OAC1B,WAAW,QAAQ;QACjB,MAAM;QACN,IAAI,MAAM,KAAK;QACf,kBAAkB,GACf,cAAc;SACb,QAAQ,MAAM,KAAK;SACnB,GAAG,SAAS,QAAQ,EAAE,MAAM;SAC5B,GAAG,mBAAmB,SAAS,KAAK,EAClC,aAAa,mBACf;QACF,EACF;OACF,CAAC;MACH,OAAO,IAAI,MAAM,KAAK,SAAS,iBAAiB;OAC9C,iBAAiB,MAAM,gBAAgB,KAAK;OAC5C,kBAAkB;OAClB,WAAW,QAAQ;QACjB,MAAM;QACN,IAAI,MAAM,KAAK;OACjB,CAAC;OACD,WAAW,QAAQ;QACjB,MAAM;QACN,YAAY,MAAM,KAAK;QACvB,UAAU,MAAM,KAAK;QACrB,OAAO,MAAM,KAAK;QAClB,kBAAkB,GACf,cAAc,EACb,QAAQ,MAAM,KAAK,GACrB,EACF;OACF,CAAC;MACH,OAAO,IAAI,MAAM,KAAK,SAAS,mBAAmB;OAChD,iBAAiB,MAAM,gBAAgB,KAAK;OAC5C,WAAW,QAAQ;QACjB,MAAM;QACN,YAAY,MAAM,KAAK;QACvB,UAAU,qBAAqB,OAAO,oBAAoB;QAC1D,QAAQ,mBAAmB,MAAM,KAAK,MAAM;QAC5C,kBAAkB;OACpB,CAAC;MACH,OAAO,IAAI,MAAM,KAAK,SAAS,iBAAiB;OAC9C,iBAAiB,MAAM,gBAAgB,KAAK;OAC5C,WAAW,QAAQ;QACjB,MAAM;QACN,IAAI,MAAM,KAAK;OACjB,CAAC;OACD,WAAW,QAAQ;QACjB,MAAM;QACN,YAAY,MAAM,KAAK;QACvB,UAAU;QACV,OAAO;QACP,kBAAkB;OACpB,CAAC;OACD,WAAW,QAAQ;QACjB,MAAM;QACN,YAAY,MAAM,KAAK;QACvB,UAAU;QACV,QAAQ;SACN,MAAM;SACN,QAAQ,MAAM,KAAK,UAAU;QAC/B;QACA,kBAAkB;OACpB,CAAC;MACH,OAAO,IAAI,MAAM,KAAK,SAAS,oBAAoB;OACjD,iBAAiB,MAAM,gBAAgB,KAAK;OAC5C,WAAW,QAAQ;QACjB,MAAM;QACN,YAAY,MAAM,KAAK;QACvB,UAAU;QACV,QAAQ;SACN,SAAS,MAAM,KAAK;SACpB,UAAU,MAAM,KAAK,MAAM,KAAK,YAAY,OAAO,KAAK,IAAI,GAAG,KAAK,YAAY;UAC9E,YAAY,OAAO;UACnB,QAAQ,OAAO;UACf,UAAU,OAAO;UACjB,OAAO,OAAO;UACd,MAAM,OAAO;SACf,EAAE,MAAM,OAAO,KAAK;QACtB;QACA,kBAAkB;OACpB,CAAC;MACH,OAAO,IAAI,MAAM,KAAK,SAAS,yBAAyB;OACtD,iBAAiB,MAAM,gBAAgB,KAAK;OAC5C,WAAW,QAAQ;QACjB,MAAM;QACN,YAAY,MAAM,KAAK;QACvB,UAAU;QACV,QAAQ,EACN,SAAS,MAAM,KAAK,QACtB;QACA,kBAAkB;OACpB,CAAC;MACH,OAAO,IAAI,MAAM,KAAK,SAAS,yBAC7B,WAAW,QAAQ;OACjB,MAAM;OACN,YAAY,MAAM,KAAK;OACvB,UAAU;OACV,QAAQ,EACN,QAAQ,MAAM,KAAK,OACrB;OACA,kBAAkB;MACpB,CAAC;WACI,IAAI,MAAM,KAAK,SAAS,oBAAoB;OACjD,iBAAiB,MAAM,gBAAgB,KAAK;OAC5C,WAAW,QAAQ;QACjB,MAAM;QACN,YAAY,MAAM,KAAK;QACvB,UAAU;QACV,OAAO,KAAK,UAAU,EACpB,QAAQ;SACN,MAAM;SACN,SAAS,MAAM,KAAK,OAAO;SAC3B,WAAW,MAAM,KAAK,OAAO;SAC7B,MAAM,MAAM,KAAK,OAAO;SACxB,kBAAkB,MAAM,KAAK,OAAO;SACpC,KAAK,MAAM,KAAK,OAAO;QACzB,EACF,CAAC;QACD,kBAAkB,GACf,cAAc,EAAE,QAAQ,MAAM,KAAK,GAAG,EACzC;OACF,CAAC;MACH,OAAO,IAAI,MAAM,KAAK,SAAS,aAAa;OAC1C,MAAM,sBAAsB,gBAAgB,MAAM,KAAK;OACvD,MAAM,qBAAqB,OAAO,QAChC,oBAAoB,YACtB,CAAC,CAAC,QACC,CAAC,GAAG,YAAY,WAAW,YAAY,WAAW,cACrD,CAAC,CAAC,KAAK,CAAC,kBAAkB,YAAY;OACtC,KAAK,MAAM,gBAAgB,oBACzB,WAAW,QAAQ;QACjB,MAAM;QACN,IAAI,GAAG,MAAM,KAAK,GAAG,GAAG;QACxB,kBAAkB,GACf,cAAc;SACb,QAAQ,MAAM,KAAK;SACnB,4BAA4B,KAAK,MAAM,KAAK,sBAAsB,OAAO,KAAK;QAChF,EACF;OACF,CAAC;OAEH,OAAO,gBAAgB,MAAM,KAAK;MACpC;YACK,IAAI,0CAA0C,KAAK,GAAG;MAC3D,MAAM,WAAW,iBAAiB,MAAM;MACxC,IAAI,YAAY,MACd,WAAW,QAAQ;OACjB,MAAM;OACN,IAAI,SAAS;OACb,OAAO,MAAM;MACf,CAAC;KAEL,OAAO,IAAI,4CAA4C,KAAK,GAAG;MAC7D,MAAM,WAAW,iBAAiB,MAAM;MACxC,IAAI,YAAY,MACd,WAAW,QAAQ;OACjB,MAAM;OACN,IAAI,SAAS;OAGb,OAAO,KAAK,UAAU,MAAM,KAAK,CAAC,CAAC,MAAM,GAAG,EAAE;MAChD,CAAC;KAEL,OAAO,IAAI,2CAA2C,KAAK,GAAG;MAC5D,MAAM,WAAW,iBAAiB,MAAM;MACxC,IAAI,YAAY,MAAM;OACpB,WAAW,QAAQ;QACjB,MAAM;QACN,IAAI,SAAS;QACb,OAAO;OACT,CAAC;OACD,WAAW,QAAQ;QACjB,MAAM;QACN,IAAI,SAAS;OACf,CAAC;OACD,WAAW,QAAQ;QACjB,MAAM;QACN,YAAY,SAAS;QACrB,UAAU;QACV,OAAO,KAAK,UAAU;SACpB,MAAM,MAAM;SACZ,aAAa,SAAS,gBAAgB;QACxC,CAAC;QACD,kBAAkB;OACpB,CAAC;MACH;KACF,OAAO,IAAI,uBAAuB,KAAK,GAAG;MACxC,aAAa,MAAM,SAAS;MAC5B,WAAW,QAAQ;OACjB,MAAM;OACN,IAAI,MAAM,SAAS;OACnB,2BAAW,IAAI,KAAK,MAAM,SAAS,aAAa,GAAG;OACnD,SAAS,MAAM,SAAS;MAC1B,CAAC;KACH,OAAO,IAAI,iBAAiB,KAAK,GAAG;MAClC,WAAW,QAAQ;OACjB,MAAM;OACN,IAAI,MAAM;OACV,OAAO,MAAM;MACf,CAAC;MACD,MAAM,MAAM,KAAK,QAAQ,oBAAoB,OAAO,KAAK,IAAI,GAAG,WAAW,OAAO,KAAK,IAAI,GAAG,aAAa,MAAM,UAC/G,SAAS,KAAK,MAAM,QAAQ;KAEhC,OAAO,IAAI,MAAM,SAAS,yCACpB;UAAA,MAAM,gBAAgB,GAAG;OAC3B,MAAM,sBAAsB,gBAAgB,MAAM;OAClD,oBAAoB,aAAa,MAAM,iBAAiB;OACxD,KAAK,MAAM,gBAAgB,OAAO,KAChC,oBAAoB,YACtB,GACE,IAAI,oBAAoB,aAAa,kBAAkB,gBAAgB;QACrE,WAAW,QAAQ;SACjB,MAAM;SACN,IAAI,GAAG,MAAM,QAAQ,GAAG;SACxB,kBAAkB,GACf,cAAc,EAAE,QAAQ,MAAM,QAAQ,EACzC;QACF,CAAC;QACD,oBAAoB,aAAa,gBAAgB;OACnD;OAEF,WAAW,QAAQ;QACjB,MAAM;QACN,IAAI,GAAG,MAAM,QAAQ,GAAG,MAAM;QAC9B,kBAAkB,GACf,cAAc;SACb,QAAQ,MAAM;SACd,4BAA4B,MAAM,KAAK,gBAAgB,MAAM,aAAa,OAAO,KAAK,IAAI,GAAG,qBAAqB,OAAO,KAAK;QAChI,EACF;OACF,CAAC;MACH;YACK,IAAI,MAAM,SAAS,yCACxB,WAAW,QAAQ;MACjB,MAAM;MACN,IAAI,GAAG,MAAM,QAAQ,GAAG,MAAM;MAC9B,OAAO,MAAM;MACb,kBAAkB,GACf,cAAc,EACb,QAAQ,MAAM,QAChB,EACF;KACF,CAAC;UACI,IAAI,MAAM,SAAS,wCACxB,IAAI,OAAO;MACT,WAAW,QAAQ;OACjB,MAAM;OACN,IAAI,GAAG,MAAM,QAAQ,GAAG,MAAM;OAC9B,kBAAkB,GACf,cAAc,EAAE,QAAQ,MAAM,QAAQ,EACzC;MACF,CAAC;MACD,gBAAgB,MAAM,QAAQ,CAAC,aAAa,MAAM,iBAAiB;KACrE,OACE,gBAAgB,MAAM,QAAQ,CAAC,aAAa,MAAM,iBAAiB;UAEhE,IAAI,wBAAwB,KAAK,GAAG;MACzC,eAAe,8BAA8B;OAC3C,eAAe,KAAK,MAAM,SAAS,uBAAuB,OAAO,KAAK,IAAI,GAAG;OAC7E;MACF,CAAC;MACD,MAAM,cAAc,MAAM,SAAS,MAAM;MACzC,MAAM,eAAe,MAAM,SAAS,MAAM;MAC1C,MAAM,cAAc,MAAM,SAAS,MAAM,eAAe,MAAM,SAAS,MAAM;MAC7E,MAAM,mBAAmB,MAAM,KAAK,MAAM,SAAS,MAAM,0BAA0B,OAAO,KAAK,IAAI,GAAG,qBAAqB,OAAO,KAAK,KAAK;MAC5I,MAAM,qBAAqB,MAAM,KAAK,MAAM,SAAS,MAAM,yBAAyB,OAAO,KAAK,IAAI,GAAG,kBAAkB,OAAO,KAAK,KAAK;MAC1I,IAAI,OAAO,MAAM,SAAS,iBAAiB,UACzC,cAAc,MAAM,SAAS;MAE/B,MAAM,KAAK,MAAM,SAAS,cAAc,OAAO,KAAK,IAAI,GAAG,YAAY,MACrE,mBAAmB,MAAM,SAAS,UAAU;MAE9C,iBAAiB,0BAA0B,MAAM,SAAS,KAAK;KACjE,OAAO,IAAI,+BAA+B,KAAK,GAAG;MAChD,mBAAmB,KAAK,MAAM,UAAU;MACxC,IAAI,MAAM,WAAW,SAAS,gBAC5B,WAAW,QAAQ;OACjB,MAAM;OACN,YAAY;OACZ,KAAK,MAAM,MAAM,KAAK,KAAK,OAAA,CAAQ,eAAe,OAAO,KAAK,IAAI,GAAG,KAAK,EAAE,MAAM,OAAO,KAAKD,WAAY;OAC1G,KAAK,MAAM,WAAW;OACtB,OAAO,MAAM,WAAW;MAC1B,CAAC;WACI,IAAI,MAAM,WAAW,SAAS,iBACnC,WAAW,QAAQ;OACjB,MAAM;OACN,YAAY;OACZ,KAAK,MAAM,MAAM,KAAK,KAAK,OAAA,CAAQ,eAAe,OAAO,KAAK,IAAI,GAAG,KAAK,EAAE,MAAM,OAAO,KAAKA,WAAY;OAC1G,WAAW;OACX,QAAQ,MAAM,KAAK,MAAM,WAAW,UAAU,OAAO,KAAK,MAAM,WAAW,aAAa,OAAO,KAAK;OACpG,WAAW,KAAK,MAAM,WAAW,aAAa,OAAO,KAAK,MAAM,WAAW;OAC3E,GAAG,MAAM,WAAW,UAAU,EAC5B,kBAAkB,GACf,cAAc,EACb,QAAQ,MAAM,WAAW,QAC3B,EACF,EACF,IAAI,CAAC;MACP,CAAC;KAEL,OAAO,IAAI,aAAa,KAAK,GAC3B,WAAW,QAAQ;MAAE,MAAM;MAAS,OAAO;KAAM,CAAC;IAEtD;IACA,MAAM,YAAY;KAChB,MAAM,mBAAmB,GACtB,cAAc,EACb,WACF,EACF;KACA,IAAI,SAAS,SAAS,GACpB,iBAAiB,YAAY,CAAC,WAAW;KAE3C,IAAI,gBAAgB,KAAK,GACvB,iBAAiB,YAAY,CAAC,cAAc;KAE9C,IAAI,qBAAqB,KAAK,GAC5B,iBAAiB,YAAY,CAAC,mBAAmB;KAEnD,IAAI,kBAAkB,MACpB,iBAAiB,YAAY,CAAC,QAAQ;KAExC,WAAW,QAAQ;MACjB,MAAM;MACN;MACA;MACA;KACF,CAAC;IACH;GACF,CAAC,CACH;GACA,SAAS,EAAE,KAAK;GAChB,UAAU,EAAE,SAAS,gBAAgB;EACvC;CACF;AACF;AACA,SAAS,iBAAiB,OAAO;CAC/B,OAAO,MAAM,SAAS;AACxB;AACA,SAAS,8BAA8B,OAAO;CAC5C,OAAO,MAAM,SAAS;AACxB;AACA,SAAS,wBAAwB,OAAO;CACtC,OAAO,MAAM,SAAS,wBAAwB,MAAM,SAAS;AAC/D;AACA,SAAS,uBAAuB,OAAO;CACrC,OAAO,MAAM,SAAS;AACxB;AACA,SAAS,0CAA0C,OAAO;CACxD,OAAO,MAAM,SAAS;AACxB;AACA,SAAS,4CAA4C,OAAO;CAC1D,OAAO,MAAM,SAAS;AACxB;AACA,SAAS,2CAA2C,OAAO;CACzD,OAAO,MAAM,SAAS;AACxB;AACA,SAAS,+BAA+B,OAAO;CAC7C,OAAO,MAAM,SAAS;AACxB;AACA,SAAS,+BAA+B,OAAO;CAC7C,OAAO,MAAM,SAAS;AACxB;AACA,SAAS,aAAa,OAAO;CAC3B,OAAO,MAAM,SAAS;AACxB;AACA,SAAS,mBAAmB,QAAQ;CAClC,IAAI;CACJ,IAAI,UAAU,MACZ,OAAO,CAAC;CAEV,QAAQ,OAAO,MAAf;EACE,KAAK,UACH,OAAO;GACL,QAAQ;IAAE,MAAM;IAAU,QAAQ,KAAK,OAAO,UAAU,OAAO,KAAK,KAAK;GAAE;GAE3E,GAAG,OAAO,WAAW,QAAQ,EAAE,SAAS,OAAO,QAAQ;EACzD;EACF,KAAK,aACH,OAAO,EAAE,QAAQ;GAAE,MAAM;GAAY,KAAK,OAAO;EAAI,EAAE;EACzD,KAAK,gBACH,OAAO,EACL,QAAQ;GACN,MAAM;GACN,KAAK,OAAO;GACZ,SAAS,OAAO;EAClB,EACF;CACJ;AACF;AACA,SAAS,0BAA0B,OAAO;CACxC,IAAI,IAAI,IAAI,IAAI;CAChB,MAAM,oBAAoB,KAAK,SAAS,OAAO,KAAK,IAAI,MAAM,yBAAyB,OAAO,KAAK,IAAI,GAAG;CAC1G,MAAM,4BAA4B,KAAK,SAAS,OAAO,KAAK,IAAI,MAAM,yBAAyB,OAAO,KAAK,IAAI,GAAG;CAClH,MAAM,kCAAkC,KAAK,SAAS,OAAO,KAAK,IAAI,MAAM,yBAAyB,OAAO,KAAK,IAAI,GAAG;CACxH,MAAM,6BAA6B,KAAK,SAAS,OAAO,KAAK,IAAI,MAAM,0BAA0B,OAAO,KAAK,IAAI,GAAG;CACpH,IAAI,oBAAoB,QAAQ,4BAA4B,QAAQ,kCAAkC,QAAQ,6BAA6B,MACzI;CAEF,OAAO;EACL,GAAG,oBAAoB,QAAQ,EAAE,iBAAiB;EAClD,GAAG,4BAA4B,QAAQ,EAAE,yBAAyB;EAClE,GAAG,kCAAkC,QAAQ,EAC3C,+BACF;EACA,GAAG,6BAA6B,QAAQ,EAAE,0BAA0B;CACtE;AACF;;;AC34JA,SAAS,8BAA8B,EACrC,QACA,gBACA,SACA,4BAA4B,SAC3B;CACD,MAAM,eAAe,QAAQ,SAAS,aAAa;CACnD,MAAM,WAAW,CAAC;CAClB,MAAM,WAAW,CAAC;CAClB,KAAK,kBAAkB,OAAO,KAAK,IAAI,eAAe,UAAU,QAC1D;MAAA,eAAe,UAAU,MAC3B,SAAS,KAAK;GACZ,MAAM;GACN,SAAS;EACX,CAAC;OACI,IAAI,CAAC,2BACV,SAAS,KAAK;GACZ,MAAM;GACN,SAAS,wDAAwD,KAAK,UAAU,eAAe,MAAM;EACvG,CAAC;CAAA;CAGL,IAAI,uBAAuB;CAC3B,KAAK,IAAI,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,KACtC,IAAI,OAAO,EAAE,CAAC,SAAS,QAAQ;EAC7B,uBAAuB;EACvB;CACF;CAEF,IAAI,QAAQ;CACZ,KAAK,MAAM,EAAE,MAAM,aAAa,QAAQ;EACtC;EACA,QAAQ,MAAR;GACE,KAAK;IACH,SAAS,KAAK;KAAE,MAAM;KAAU;IAAQ,CAAC;IACzC;GAEF,KAAK,QAAQ;IACX,IAAI,cAAc;IAClB,KAAK,MAAM,QAAQ,SACjB,IAAI,KAAK,SAAS,QAChB,eAAe,KAAK;SAEpB,SAAS,KAAK;KACZ,MAAM;KACN,SAAS,uCAAuC,KAAK;IACvD,CAAC;IAGL,SAAS,KAAK;KACZ,MAAM;KACN,SAAS;IACX,CAAC;IACD;GACF;GACA,KAAK,aAAa;IAChB,IAAI,OAAO;IACX,IAAI;IACJ,MAAM,YAAY,CAAC;IACnB,KAAK,MAAM,QAAQ,SACjB,QAAQ,KAAK,MAAb;KACE,KAAK;MACH,QAAQ,KAAK;MACb;KAEF,KAAK;MACH,IAAI,SAAS,wBAAwB,CAAC,cACpC;MAEF,IAAI,aAAa,MACf,YAAY,KAAK;WAEjB,aAAa,KAAK;MAEpB;KAEF,KAAK;MACH,UAAU,KAAK;OACb,IAAI,KAAK;OACT,MAAM;OACN,UAAU;QACR,MAAM,KAAK;QACX,WAAW,KAAK,UAAU,KAAK,KAAK;OACtC;MACF,CAAC;MACD;IAEJ;IAEF,SAAS,KAAK;KACZ,MAAM;KACN,SAAS;KACT,mBAAmB,aAAa,OAAO,YAAY,eAAe,KAAK,KAAK;KAC5E,YAAY,UAAU,SAAS,IAAI,YAAY,KAAK;IACtD,CAAC;IACD;GACF;GACA,KAAK;IACH,KAAK,MAAM,gBAAgB,SAAS;KAClC,MAAM,SAAS,aAAa;KAC5B,IAAI;KACJ,QAAQ,OAAO,MAAf;MACE,KAAK;MACL,KAAK;OACH,eAAe,OAAO;OACtB;MACF,KAAK;MACL,KAAK;MACL,KAAK;OACH,eAAe,KAAK,UAAU,OAAO,KAAK;OAC1C;KACJ;KACA,SAAS,KAAK;MACZ,MAAM;MACN,cAAc,aAAa;MAC3B,SAAS;KACX,CAAC;IACH;IACA;GAEF;IACE,SAAS,KAAK;KACZ,MAAM;KACN,SAAS,6BAA6B;IACxC,CAAC;IACD;EAEJ;CACF;CACA,OAAO;EAAE;EAAU;CAAS;AAC9B;AAKA,IAAI,mBAAmBE,OAAAA,EAAE,OAAO;CAC9B,eAAeA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ;CAClC,mBAAmBA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ;CACtC,yBAAyBA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ;CAC5C,0BAA0BA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ;CAC7C,cAAcA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ;CACjC,2BAA2BA,OAAAA,EAAE,OAAO,EAClC,kBAAkBA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ,EACvC,CAAC,CAAC,CAAC,QAAQ;AACb,CAAC,CAAC,CAAC,QAAQ;AACX,IAAI,sBAAsBA,OAAAA,EAAE,OAAO,EACjC,OAAOA,OAAAA,EAAE,OAAO;CACd,SAASA,OAAAA,EAAE,OAAO;CAClB,MAAMA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ;CACzB,OAAOA,OAAAA,EAAE,IAAI,CAAC,CAAC,QAAQ;CACvB,MAAMA,OAAAA,EAAE,MAAM,CAACA,OAAAA,EAAE,OAAO,GAAGA,OAAAA,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ;AAClD,CAAC,EACH,CAAC;AACD,IAAI,6BAA6BA,OAAAA,EAAE,OAAO;CACxC,IAAIA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ;CACvB,SAASA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ;CAC5B,OAAOA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ;CAC1B,SAASA,OAAAA,EAAE,MACTA,OAAAA,EAAE,OAAO;EACP,SAASA,OAAAA,EAAE,OAAO;GAChB,MAAMA,OAAAA,EAAE,QAAQ,WAAW,CAAC,CAAC,QAAQ;GACrC,SAASA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ;GAC5B,mBAAmBA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ;GACtC,YAAYA,OAAAA,EAAE,MACZA,OAAAA,EAAE,OAAO;IACP,IAAIA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ;IACvB,UAAUA,OAAAA,EAAE,OAAO;KACjB,MAAMA,OAAAA,EAAE,OAAO;KACf,WAAWA,OAAAA,EAAE,OAAO;IACtB,CAAC;GACH,CAAC,CACH,CAAC,CAAC,QAAQ;EACZ,CAAC;EACD,eAAeA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ;CACpC,CAAC,CACH;CACA,OAAO;AACT,CAAC;AACD,IAAI,0BAA0B,iBACtB,UACJA,OAAAA,EAAE,MAAM,CACNA,OAAAA,EAAE,OAAO;CACP,IAAIA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ;CACvB,SAASA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ;CAC5B,OAAOA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ;CAC1B,SAASA,OAAAA,EAAE,MACTA,OAAAA,EAAE,OAAO;EACP,OAAOA,OAAAA,EAAE,OAAO;GACd,MAAMA,OAAAA,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;GACpC,SAASA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ;GAC5B,mBAAmBA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ;GACtC,YAAYA,OAAAA,EAAE,MACZA,OAAAA,EAAE,OAAO;IACP,OAAOA,OAAAA,EAAE,OAAO;IAChB,IAAIA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ;IACvB,UAAUA,OAAAA,EAAE,OAAO;KACjB,MAAMA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ;KACzB,WAAWA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ;IAChC,CAAC;GACH,CAAC,CACH,CAAC,CAAC,QAAQ;EACZ,CAAC,CAAC,CAAC,QAAQ;EACX,eAAeA,OAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ;CACpC,CAAC,CACH;CACA,OAAO;AACT,CAAC,GACD,mBACF,CAAC,CACH,CACF;AAIA,IAAI,sBAAsBC,OAAAA,EAAG,OAAO;;;;;;;CAOlC,UAAUA,OAAAA,EAAG,OAAO,EAClB,MAAMA,OAAAA,EAAG,KAAK;EAAC;EAAY;EAAW;CAAU,CAAC,CAAC,CAAC,SAAS,EAC9D,CAAC,CAAC,CAAC,SAAS;;;;;;;;CAQZ,iBAAiBA,OAAAA,EAAG,KAAK;EAAC;EAAO;EAAU;EAAQ;EAAS;CAAK,CAAC,CAAC,CAAC,SAAS;;;;;;CAM7E,kBAAkBA,OAAAA,EAAG,QAAQ,CAAC,CAAC,SAAS;AAC1C,CAAC;AAMD,SAAS,aAAa,EACpB,OACA,cACC;CACD,SAAS,SAAS,OAAO,KAAK,IAAI,MAAM,UAAU,QAAQ,KAAK;CAC/D,MAAM,eAAe,CAAC;CACtB,IAAI,SAAS,MACX,OAAO;EAAE,OAAO,KAAK;EAAG,YAAY,KAAK;EAAG;CAAa;CAE3D,MAAM,gBAAgB,CAAC;CACvB,KAAK,MAAM,QAAQ,OACjB,IAAI,KAAK,SAAS,oBAChB,aAAa,KAAK;EAChB,MAAM;EACN;CACF,CAAC;MAED,cAAc,KAAK;EACjB,MAAM;EACN,UAAU;GACR,MAAM,KAAK;GACX,aAAa,KAAK;GAClB,YAAY,KAAK;EACnB;CACF,CAAC;CAGL,IAAI,cAAc,MAChB,OAAO;EAAE,OAAO;EAAe,YAAY,KAAK;EAAG;CAAa;CAElE,MAAM,OAAO,WAAW;CACxB,QAAQ,MAAR;EACE,KAAK;EACL,KAAK;EACL,KAAK,YACH,OAAO;GAAE,OAAO;GAAe,YAAY;GAAM;EAAa;EAChE,KAAK,QACH,OAAO;GACL,OAAO;GACP,YAAY;IACV,MAAM;IACN,UAAU,EAAE,MAAM,WAAW,SAAS;GACxC;GACA;EACF;EACF,SAEE,MAAM,IAAI,8BAA8B,EACtC,eAAe,qBAAqBC,OACtC,CAAC;CAEL;AACF;AAGA,SAAS,oBAAoB,EAC3B,IACA,OACA,WACC;CACD,OAAO;EACL,IAAI,MAAM,OAAO,KAAK,KAAK;EAC3B,SAAS,SAAS,OAAO,QAAQ,KAAK;EACtC,WAAW,WAAW,uBAAO,IAAI,KAAK,UAAU,GAAG,IAAI,KAAK;CAC9D;AACF;AAGA,SAAS,wBAAwB,cAAc;CAC7C,QAAQ,cAAR;EACE,KAAK,QACH,OAAO;EACT,KAAK,UACH,OAAO;EACT,KAAK,kBACH,OAAO;EACT,KAAK,cACH,OAAO;EACT,KAAK,gCACH,OAAO;EACT,SACE,OAAO;CACX;AACF;AAGA,IAAI,4BAA4B,MAAM;CACpC,YAAY,SAAS,QAAQ;EAC3B,KAAK,uBAAuB;EAC5B,KAAK,gBAAgB,CAAC;EACtB,KAAK,UAAU;EACf,KAAK,SAAS;EACd,KAAK,wBAAwB,+BAA+B;GAC1D,aAAa;GACb,iBAAiB,UAAU,MAAM,MAAM;EACzC,CAAC;CACH;CACA,IAAI,WAAW;EACb,OAAO,KAAK,OAAO;CACrB;CACA,IAAI,sBAAsB;EACxB,OAAO,KAAK,OAAO,SAAS,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;CACjD;CACA,MAAM,QAAQ,EACZ,QACA,iBACA,aACA,MACA,MACA,kBACA,iBACA,iBACA,eACA,gBACA,OACA,YACA,QACC;EACD,IAAI,IAAI,IAAI,IAAI;EAChB,MAAM,mBAAmB,KAAK,MAAM,qBAAqB;GACvD,UAAU,KAAK;GACf;GACA,QAAQ;EACV,CAAC,MAAM,OAAO,KAAK,CAAC;EACpB,MAAM,4BAA4B,KAAK,OAAO,8BAA8B;EAC5E,MAAM,EAAE,UAAU,aAAa,8BAA8B;GAC3D;GACA;GACA,SAAS,KAAK;GACd;EACF,CAAC;EACD,IAAI,QAAQ,MACV,SAAS,KAAK;GAAE,MAAM;GAAuB,SAAS;EAAO,CAAC;EAEhE,IAAI,QAAQ,MACV,SAAS,KAAK;GAAE,MAAM;GAAuB,SAAS;EAAO,CAAC;EAEhE,MAAM,EACJ,OAAO,eACP,YAAY,qBACZ,iBACE,aAAa;GACf;GACA;EACF,CAAC;EACD,MAAM,WAAW,KAAK,OAAO,qBAAqB,QAAQ,KAAK,MAAM,KAAK,gBAAgB,aAAa,OAAO,KAAK,IAAI,GAAG,SAAS,OAAO,EAAE,MAAM,gBAAgB,SAAS,KAAK,IAAI,KAAK;EACzL,OAAO;GACL,MAAM;IACJ,OAAO,KAAK;IACZ,YAAY;IACZ;IACA,OAAO;IACP,mBAAmB;IACnB,kBAAkB;IAClB,kBAAkB,kBAAkB,OAAO,KAAK,IAAI,eAAe,UAAU,SAAS,6BAA6B,eAAe,UAAU,OAAO;KACjJ,MAAM;KACN,aAAa;MACX,QAAQ,eAAe;MACvB,SAAS,KAAK,gBAAgB,qBAAqB,OAAO,KAAK;MAC/D,OAAO,KAAK,eAAe,SAAS,OAAO,KAAK;MAChD,aAAa,eAAe;KAC9B;IACF,IAAI,EAAE,MAAM,cAAc,IAAI,KAAK;IACnC,MAAM;IACN;IACA,OAAO;IACP,aAAa;IACb;IACA,IAAI,YAAY,OAAO,KAAK,IAAI,SAAS,UAAU,cAAc,gBAAgB,mBAAmB,QAAQ,EAC1G,kBAAkB,gBAAgB,gBACpC;GACF;GACA,UAAU,CAAC,GAAG,UAAU,GAAG,YAAY;EACzC;CACF;CACA,MAAM,WAAW,SAAS;EACxB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;EAChE,MAAM,EAAE,MAAM,aAAa,MAAM,KAAK,QAAQ,EAAE,GAAG,QAAQ,CAAC;EAC5D,MAAM,EACJ,iBACA,OAAO,cACP,UAAU,gBACR,MAAM,cAAc;GACtB,KAAK,KAAK,OAAO,IAAI;IACnB,MAAM;IACN,SAAS,KAAK;GAChB,CAAC;GACD,SAAS,eAAe,KAAK,OAAO,QAAQ,GAAG,QAAQ,OAAO;GAC9D,MAAM;GACN,uBAAuB,KAAK;GAC5B,2BAA2B,0BACzB,0BACF;GACA,aAAa,QAAQ;GACrB,OAAO,KAAK,OAAO;EACrB,CAAC;EACD,MAAM,SAAS,aAAa,QAAQ;EACpC,MAAM,UAAU,CAAC;EACjB,MAAM,YAAY,OAAO,QAAQ;EACjC,IAAI,aAAa,QAAQ,UAAU,SAAS,GAC1C,QAAQ,KAAK;GACX,MAAM;GACN,MAAM;EACR,CAAC;EAEH,IAAI,OAAO,QAAQ,cAAc,MAC/B,KAAK,MAAM,YAAY,OAAO,QAAQ,YACpC,QAAQ,KAAK;GACX,MAAM;GACN,aAAa,KAAK,SAAS,OAAO,OAAO,KAAK,WAAW;GACzD,UAAU,SAAS,SAAS;GAC5B,OAAO,SAAS,SAAS;EAC3B,CAAC;EAGL,MAAM,OAAO,OAAO,QAAQ;EAC5B,IAAI,QAAQ,QAAQ,KAAK,SAAS,GAChC,QAAQ,KAAK;GAAE,MAAM;GAAQ;EAAK,CAAC;EAErC,OAAO;GACL;GACA,cAAc,wBAAwB,OAAO,aAAa;GAC1D,OAAO;IACL,cAAc,MAAM,KAAK,aAAa,UAAU,OAAO,KAAK,IAAI,GAAG,kBAAkB,OAAO,KAAK,KAAK;IACtG,eAAe,MAAM,KAAK,aAAa,UAAU,OAAO,KAAK,IAAI,GAAG,sBAAsB,OAAO,KAAK,KAAK;IAC3G,cAAc,MAAM,KAAK,aAAa,UAAU,OAAO,KAAK,IAAI,GAAG,iBAAiB,OAAO,KAAK,KAAK;IACrG,kBAAkB,MAAM,MAAM,KAAK,aAAa,UAAU,OAAO,KAAK,IAAI,GAAG,8BAA8B,OAAO,KAAK,IAAI,GAAG,qBAAqB,OAAO,KAAK,KAAK;IACpK,oBAAoB,MAAM,KAAK,aAAa,UAAU,OAAO,KAAK,IAAI,GAAG,4BAA4B,OAAO,KAAK,KAAK;GACxH;GACA,kBAAkB,GACf,KAAK,sBAAsB;IAC1B,uBAAuB,MAAM,KAAK,aAAa,UAAU,OAAO,KAAK,IAAI,GAAG,4BAA4B,OAAO,KAAK;IACpH,wBAAwB,MAAM,KAAK,aAAa,UAAU,OAAO,KAAK,IAAI,GAAG,6BAA6B,OAAO,KAAK;GACxH,EACF;GACA,SAAS,EAAE,MAAM,KAAK;GACtB,UAAU;IACR,GAAG,oBAAoB,YAAY;IACnC,SAAS;IACT,MAAM;GACR;GACA;EACF;CACF;CACA,MAAM,SAAS,SAAS;EACtB,MAAM,EAAE,MAAM,aAAa,MAAM,KAAK,QAAQ,EAAE,GAAG,QAAQ,CAAC;EAC5D,MAAM,OAAO;GACX,GAAG;GACH,QAAQ;GACR,gBAAgB,EAAE,eAAe,KAAK;EACxC;EACA,MAAM,EAAE,iBAAiB,OAAO,aAAa,MAAM,cAAc;GAC/D,KAAK,KAAK,OAAO,IAAI;IACnB,MAAM;IACN,SAAS,KAAK;GAChB,CAAC;GACD,SAAS,eAAe,KAAK,OAAO,QAAQ,GAAG,QAAQ,OAAO;GAC9D;GACA,uBAAuB,KAAK;GAC5B,2BAA2B,iCACzB,uBACF;GACA,aAAa,QAAQ;GACrB,OAAO,KAAK,OAAO;EACrB,CAAC;EACD,MAAM,YAAY,CAAC;EACnB,IAAI,eAAe;EACnB,IAAI,QAAQ,KAAK;EACjB,IAAI,eAAe;EACnB,MAAM,sBAAsB,KAAK;EACjC,IAAI,oBAAoB;EACxB,IAAI,eAAe;EACnB,OAAO;GACL,QAAQ,SAAS,YACf,IAAI,gBAAgB;IAClB,MAAM,YAAY;KAChB,WAAW,QAAQ;MAAE,MAAM;MAAgB;KAAS,CAAC;IACvD;IACA,UAAU,OAAO,YAAY;KAC3B,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;KAChD,IAAI,QAAQ,kBACV,WAAW,QAAQ;MAAE,MAAM;MAAO,UAAU,MAAM;KAAS,CAAC;KAE9D,IAAI,CAAC,MAAM,SAAS;MAClB,eAAe;MACf,WAAW,QAAQ;OAAE,MAAM;OAAS,OAAO,MAAM;MAAM,CAAC;MACxD;KACF;KACA,MAAM,QAAQ,MAAM;KACpB,IAAI,WAAW,OAAO;MACpB,eAAe;MACf,WAAW,QAAQ;OAAE,MAAM;OAAS,OAAO,MAAM,MAAM;MAAQ,CAAC;MAChE;KACF;KACA,IAAI,cAAc;MAChB,eAAe;MACf,WAAW,QAAQ;OACjB,MAAM;OACN,GAAG,oBAAoB,KAAK;MAC9B,CAAC;KACH;KACA,IAAI,MAAM,SAAS,MACjB,QAAQ,MAAM;KAEhB,MAAM,SAAS,MAAM,QAAQ;KAC7B,KAAK,UAAU,OAAO,KAAK,IAAI,OAAO,kBAAkB,MACtD,eAAe,wBAAwB,OAAO,aAAa;KAE7D,KAAK,UAAU,OAAO,KAAK,IAAI,OAAO,UAAU,MAC9C;KAEF,MAAM,QAAQ,OAAO;KACrB,MAAM,mBAAmB,MAAM;KAC/B,IAAI,kBAAkB;MACpB,IAAI,CAAC,mBAAmB;OACtB,WAAW,QAAQ;QACjB,MAAM;QACN,IAAI;OACN,CAAC;OACD,oBAAoB;MACtB;MACA,WAAW,QAAQ;OACjB,MAAM;OACN,IAAI;OACJ,OAAO;MACT,CAAC;KACH;KACA,IAAI,MAAM,SAAS;MACjB,IAAI,CAAC,cAAc;OACjB,WAAW,QAAQ;QAAE,MAAM;QAAc,IAAI;OAAQ,CAAC;OACtD,eAAe;MACjB;MACA,IAAI,mBAAmB;OACrB,WAAW,QAAQ;QACjB,MAAM;QACN,IAAI;OACN,CAAC;OACD,oBAAoB;MACtB;MACA,WAAW,QAAQ;OACjB,MAAM;OACN,IAAI;OACJ,OAAO,MAAM;MACf,CAAC;KACH;KACA,IAAI,MAAM,cAAc,MAAM;MAC5B,IAAI,mBAAmB;OACrB,WAAW,QAAQ;QACjB,MAAM;QACN,IAAI;OACN,CAAC;OACD,oBAAoB;MACtB;MACA,KAAK,MAAM,iBAAiB,MAAM,YAAY;OAC5C,MAAM,QAAQ,cAAc;OAC5B,IAAI,UAAU,UAAU,MAAM;QAC5B,IAAI,cAAc,MAAM,MACtB,MAAM,IAAI,yBAAyB;SACjC,MAAM;SACN,SAAS;QACX,CAAC;QAEH,MAAM,KAAK,cAAc,aAAa,OAAO,KAAK,IAAI,GAAG,SAAS,MAChE,MAAM,IAAI,yBAAyB;SACjC,MAAM;SACN,SAAS;QACX,CAAC;QAEH,WAAW,QAAQ;SACjB,MAAM;SACN,IAAI,cAAc;SAClB,UAAU,cAAc,SAAS;QACnC,CAAC;QACD,UAAU,SAAS;SACjB,IAAI,cAAc;SAClB,MAAM;SACN,UAAU;UACR,MAAM,cAAc,SAAS;UAC7B,YAAY,KAAK,cAAc,SAAS,cAAc,OAAO,KAAK;SACpE;SACA,aAAa;QACf;QACA,MAAM,YAAY,UAAU;QAC5B,MAAM,KAAK,UAAU,aAAa,OAAO,KAAK,IAAI,GAAG,SAAS,UAAU,KAAK,UAAU,aAAa,OAAO,KAAK,IAAI,GAAG,cAAc,MAAM;SACzI,IAAI,UAAU,SAAS,UAAU,SAAS,GACxC,WAAW,QAAQ;UACjB,MAAM;UACN,IAAI,UAAU;UACd,OAAO,UAAU,SAAS;SAC5B,CAAC;SAEH,IAAI,eAAe,UAAU,SAAS,SAAS,GAAG;UAChD,WAAW,QAAQ;WACjB,MAAM;WACN,IAAI,UAAU;UAChB,CAAC;UACD,WAAW,QAAQ;WACjB,MAAM;WACN,aAAa,KAAK,UAAU,OAAO,OAAO,KAAK,WAAW;WAC1D,UAAU,UAAU,SAAS;WAC7B,OAAO,UAAU,SAAS;UAC5B,CAAC;UACD,UAAU,cAAc;SAC1B;QACF;QACA;OACF;OACA,MAAM,WAAW,UAAU;OAC3B,IAAI,SAAS,aACX;OAEF,MAAM,KAAK,cAAc,aAAa,OAAO,KAAK,IAAI,GAAG,cAAc,MACrE,SAAS,SAAS,cAAc,MAAM,KAAK,cAAc,aAAa,OAAO,KAAK,IAAI,GAAG,cAAc,OAAO,KAAK;OAErH,WAAW,QAAQ;QACjB,MAAM;QACN,IAAI,SAAS;QACb,QAAQ,KAAK,cAAc,SAAS,cAAc,OAAO,KAAK;OAChE,CAAC;OACD,MAAM,KAAK,SAAS,aAAa,OAAO,KAAK,IAAI,GAAG,SAAS,UAAU,KAAK,SAAS,aAAa,OAAO,KAAK,IAAI,GAAG,cAAc,QAAQ,eAAe,SAAS,SAAS,SAAS,GAAG;QACtL,WAAW,QAAQ;SACjB,MAAM;SACN,IAAI,SAAS;QACf,CAAC;QACD,WAAW,QAAQ;SACjB,MAAM;SACN,aAAa,KAAK,SAAS,OAAO,OAAO,KAAK,WAAW;SACzD,UAAU,SAAS,SAAS;SAC5B,OAAO,SAAS,SAAS;QAC3B,CAAC;QACD,SAAS,cAAc;OACzB;MACF;KACF;IACF;IACA,MAAM,YAAY;KAChB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;KACpC,IAAI,mBACF,WAAW,QAAQ;MAAE,MAAM;MAAiB,IAAI;KAAc,CAAC;KAEjE,IAAI,cACF,WAAW,QAAQ;MAAE,MAAM;MAAY,IAAI;KAAQ,CAAC;KAEtD,KAAK,MAAM,YAAY,UAAU,QAC9B,cAAc,CAAC,UAAU,WAC5B,GAAG;MACD,WAAW,QAAQ;OACjB,MAAM;OACN,IAAI,SAAS;MACf,CAAC;MACD,WAAW,QAAQ;OACjB,MAAM;OACN,aAAa,KAAK,SAAS,OAAO,OAAO,KAAK,WAAW;OACzD,UAAU,SAAS,SAAS;OAC5B,OAAO,SAAS,SAAS;MAC3B,CAAC;KACH;KACA,WAAW,QAAQ;MACjB,MAAM;MACN;MACA,OAAO;OACL,cAAc,KAAK,SAAS,OAAO,KAAK,IAAI,MAAM,kBAAkB,OAAO,KAAK,KAAK;OACrF,eAAe,KAAK,SAAS,OAAO,KAAK,IAAI,MAAM,sBAAsB,OAAO,KAAK,KAAK;OAC1F,cAAc,KAAK,SAAS,OAAO,KAAK,IAAI,MAAM,iBAAiB,OAAO,KAAK,KAAK;OACpF,kBAAkB,MAAM,KAAK,SAAS,OAAO,KAAK,IAAI,MAAM,8BAA8B,OAAO,KAAK,IAAI,GAAG,qBAAqB,OAAO,KAAK,KAAK;OACnJ,oBAAoB,KAAK,SAAS,OAAO,KAAK,IAAI,MAAM,4BAA4B,OAAO,KAAK,KAAK;MACvG;MACA,kBAAkB,GACf,sBAAsB;OACrB,uBAAuB,KAAK,SAAS,OAAO,KAAK,IAAI,MAAM,4BAA4B,OAAO,KAAK;OACnG,wBAAwB,KAAK,SAAS,OAAO,KAAK,IAAI,MAAM,6BAA6B,OAAO,KAAK;MACvG,EACF;KACF,CAAC;IACH;GACF,CAAC,CACH;GACA,SAAS,EAAE,KAAK;GAChB,UAAU,EAAE,SAAS,gBAAgB;EACvC;CACF;AACF;;;ACxsBA,IAAI,mBAAmB;CACrB;CACA;CACA;CACA;CACA;AACF;AAGA,IAAI,UAAiB;AAGrB,SAAS,YAAY,UAAU,CAAC,GAAG;CACjC,IAAI;CACJ,MAAM,gBAAgB,QAAQ;CAC9B,IAAI,QAAQ,UAAU,eACpB,MAAM,IAAI,qBAAqB;EAC7B,UAAU;EACV,SAAS;CACX,CAAC;CAEH,MAAM,mBAAmB;EAQvB,OAAO,oBACL;GACE,GATgB,gBAAgB,CAAC,IAAI,EACvC,WAAW,WAAW;IACpB,QAAQ,QAAQ;IAChB,yBAAyB;IACzB,aAAa;GACf,CAAC,EACH;GAII,GAAG,QAAQ;EACb,GACA,gBAAgB,SAClB;CACF;CACA,MAAM,QAAQ,gBAAgB,OAAO,OAAO,SAAS;EACnD,IAAI;EACJ,MAAM,UAAUC,mBAAiB,QAAQ,OAAO,KAAK,IAAI,KAAK,OAAO;EACrE,IAAI,QAAQ,iBAAiB,MAC3B,QAAQ,gBAAgB,UAAU,MAAM,cAAc;EAExD,SAAS,MAAM,QAAQ,UAAU,OAAO,MAAM,WAAW,MAAA,CAAO,OAAO;GACrE,GAAG;GACH;EACF,CAAC;CACH,IAAI,QAAQ;CACZ,MAAM,wBAAwB,YAAY;EACxC,cAAc,QAAQ;EACtB,aAAa;EACb,yBAAyB;EACzB,aAAa;CACf,CAAC;CACD,MAAM,cAAc,KAAK,QAAQ,eAAe,OAAO,KAAK;CAC5D,MAAM,OAAO,EAAE,MAAM,cAAc;EACjC,IAAI;EACJ,MAAM,iBAAiB,MAAM,QAAQ,YAAY,OAAO,MAAM,WAAW,gBAAgB,EAAE;EAC3F,IAAI;EACJ,IAAI,QAAQ,wBACV,UAAU,IAAI,IAAI,GAAG,cAAc,eAAe,UAAU,MAAM;OAElE,UAAU,IAAI,IAAI,GAAG,cAAc,KAAK,MAAM;EAEhD,QAAQ,aAAa,IAAI,eAAe,UAAU;EAClD,OAAO,QAAQ,SAAS;CAC1B;CACA,MAAM,mBAAmB,mBAAmB,IAAI,wBAAwB,gBAAgB;EACtF,UAAU;EACV;EACA,SAAS;EACT;CACF,CAAC;CACD,MAAM,yBAAyB,YAAY,IAAI,8BAA8B,SAAS;EACpF,UAAU;EACV;EACA,SAAS;EACT;CACF,CAAC;CACD,MAAM,wBAAwB,YAAY,IAAI,qBAAqB,SAAS;EAC1E,UAAU;EACV,SAAS;EACT;EACA;CACF,CAAC;CACD,MAAM,wBAAwB,YAAY,IAAI,6BAA6B,SAAS;EAClF,UAAU;EACV;EACA,SAAS;EACT;EACA,gBAAgB,CAAC,YAAY;CAC/B,CAAC;CACD,MAAM,uBAAuB,mBAAmB,IAAI,0BAA0B,gBAAgB;EAC5F,UAAU;EACV;EACA,SAAS;EACT;EACA,kBAAkB;EAElB,2BAA2B;CAC7B,CAAC;CACD,MAAM,oBAAoB,YAAY,IAAI,iBAAiB,SAAS;EAClE,UAAU;EACV;EACA,SAAS;EACT;CACF,CAAC;CACD,MAAM,4BAA4B,YAAY,IAAI,yBAAyB,SAAS;EAClF,UAAU;EACV;EACA,SAAS;EACT;CACF,CAAC;CACD,MAAM,qBAAqB,YAAY,IAAI,kBAAkB,SAAS;EACpE,UAAU;EACV;EACA,SAAS;EACT;CACF,CAAC;CACD,MAAM,WAAW,SAAS,cAAc;EACtC,IAAI,IAAI,QACN,MAAM,IAAI,MACR,wEACF;EAEF,OAAO,gBAAgB,YAAY;CACrC;CACA,SAAS,gBAAgB;CACzB,SAAS,OAAO;CAChB,SAAS,WAAW;CACpB,SAAS,aAAa;CACtB,SAAS,YAAY;CACrB,SAAS,QAAQ;CACjB,SAAS,aAAa;CACtB,SAAS,gBAAgB;CACzB,SAAS,qBAAqB;CAC9B,SAAS,YAAY;CACrB,SAAS,gBAAgB;CACzB,SAAS,SAAS;CAClB,SAAS,QAAQ;CACjB,OAAO;AACT;AACY,YAAY;;;ACxIxB,MAAM,2CAA2B,IAAI,IAAI;CAAC;CAAsB;CAAmB;CAAuB;AAAO,CAAC;;;;;AAMlH,SAAgB,2BAA2B,SAAmE;CAC5G,MAAM,QAAQ,SAAS,OAAO;CAC9B,MAAM,aAAa,SAAS,eAAe,KAAA,IAAY,oCAAoC,QAAQ;CACnG,MAAM,mBAAmB,SAAS,oBAAoB;CAEtD,IAAIC,OAAuB;CAC3B,IAAI,aAAwC;CAC5C,IAAI,gBAA+B;CACnC,IAAI,wBAAwB;CAC5B,MAAM,qCAAqB,IAAI,IAAoB;CACnD,IAAI,OAAO;CAEX,SAAS,0BAA0B,OAAwB;EACzD,IAAI,CAAC,OAAO,OAAO;EAEnB,MAAM,WAAW,mBAAmB,IAAI,KAAK;EAC7C,IAAI,UAAU,OAAO;EAErB,MAAM,KAAK,OAAO,EAAE,qBAAqB;EACzC,mBAAmB,IAAI,OAAO,EAAE;EAChC,OAAO;CACT;CAEA,SAAS,cACP,eACA,SACA,QACoB;EACpB,IAAI,QAAQ,SACV,OAAO,QAAQ,OAAO,cAAc,MAAM,CAAC;EAG7C,MAAM,oBAAoB;GAAE,GAAG,iBAAiB,SAAS,OAAO;GAAG,GAAG;EAAQ;EAC9E,MAAM,SAAS,kBAAkB;EACjC,OAAO,kBAAkB;EACzB,OAAO,kBAAkB;EACzB,IAAI,SAAS,kBAAkB,kBAC7B,OAAO,kBAAkB;EAG3B,MAAM,oBAAoB,mBAAmB,eAAe,mBADpC,mBAAmB,GAAG,iBAAiB,GAAG,0BAA0B,MAAM,MAAM,EACV;EAE9F,IAAIA,MAAI,eAAeC,GAAAA,QAAU,QAAQ,kBAAkB,mBACzD,OAAO,QAAQ,QAAQD,IAAE;EAG3B,IAAIA,MAAI,eAAeC,GAAAA,QAAU,QAAQ,kBAAkB,mBAAmB;GAC5E,KAAG,MAAM;GACT,OAAK;GACL,gBAAgB;EAClB;EAEA,IAAI,cAAc,kBAAkB,mBAAmB,OAAO;EAE9D,gBAAgB;EAEhB,aAAa,IAAI,SAAoB,SAAS,WAAW;GACvD,IAAI,UAAU;GACd,MAAM,SAAS,IAAIA,GAAAA,QAAU,gBAAgB,OAAO,kBAAkB,MAAM,GAAG,EAC7E,SAAS;IACP,GAAG;IACH,GAAI,gBAAgB,EAAE,eAAe,cAAc,IAAI,CAAC;IACxD,GAAI,aAAa,EAAE,eAAe,WAAW,IAAI,CAAC;GACpD,EACF,CAAC;GAED,SAAS,uBAAuB;IAC9B,QAAQ,oBAAoB,SAAS,OAAO;GAC9C;GAEA,SAAS,iBAAiB,KAAc,cAAc,MAAM;IAC1D,IAAI,SAAS;IACb,UAAU;IACV,aAAa;IACb,gBAAgB;IAChB,qBAAqB;IACrB,IAAI,aAAa,OAAO,MAAM;IAC9B,OAAO,GAAG;GACZ;GAEA,SAAS,UAAU;IACjB,iBAAiB,cAAc,MAAM,CAAC;GACxC;GAEA,QAAQ,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;GAEzD,OAAO,GAAG,cAAc;IACtB,IAAI,QAAQ,SAAS;KACnB,iBAAiB,cAAc,MAAM,CAAC;KACtC;IACF;IACA,UAAU;IACV,OAAK;IACL,aAAa;IACb,qBAAqB;IACrB,QAAQ,MAAM;GAChB,CAAC;GAED,OAAO,GAAG,UAAS,QAAO;IACxB,iBAAiB,KAAK,KAAK;GAC7B,CAAC;GAED,OAAO,GAAG,eAAe;IACvB,IAAI,SAAS;IACb,iCAAiB,IAAI,MAAM,+CAA+C,GAAG,KAAK;GACpF,CAAC;GAED,OAAO,GAAG,eAAe;IACvB,IAAID,SAAO,QAAQ,OAAK;IACxB,IAAIA,SAAO,MAAM,gBAAgB;GACnC,CAAC;EACH,CAAC;EAED,OAAO;CACT;CAEA,eAAe,eAAe,OAA0B,MAAuC;EAC7F,MAAM,MAAM,iBAAiB,MAAM,MAAM,SAAS,IAAI,OAAO,UAAU,WAAW,QAAQ,MAAM;EAEhG,IAAI,MAAM,WAAW,UAAU,CAAC,eAAe,GAAG,GAChD,OAAO,WAAW,MAAM,OAAO,IAAI;EAGrC,IAAI;EACJ,IAAI;GACF,OAAO,KAAK,MAAM,OAAO,KAAK,SAAS,WAAW,KAAK,OAAO,EAAE;EAClE,QAAQ;GACN,OAAO,WAAW,MAAM,OAAO,IAAI;EACrC;EAEA,IAAI,CAAC,KAAK,QACR,OAAO,WAAW,MAAM,OAAO,IAAI;EAMrC,IAAI,MAAM;GACR,IAAI,KAAK,sBACP,MAAM,IAAI,MACR,yIACF;GAEF,OAAO,WAAW,MAAM,OAAO,IAAI;EACrC;EAEA,MAAM,UAAU,iBAAiB,KAAK,OAAO;EAC7C,MAAM,gBACJ,QAAQ,qBAAqB,SAAS,kBAAkB,QAAQ,aAAa,UAAU,QAAQ,eAAe;EAGhH,OAAO;EACP,IAAI;EACJ,IAAI;GACF,aAAa,MAAM,cAAc,eAAe,SAAS,MAAM,MAAM;EACvE,SAAS,KAAK;GACZ,OAAO;GACP,MAAM;EACR;EAEA,MAAM,EAAE,QAAQ,SAAS,YAAY,aAAa,GAAG,gBAAgB;EACrE,MAAM,UAAU,IAAI,YAAY;EAEhC,IAAI;EACJ,MAAM,iBAAiB,IAAI,eAA2B;GACpD,MAAM,YAAY;IAChB,IAAI,YAAY;IAChB,IAAI;IAEJ,SAAS,QAAQ,EAAE,cAAc,UAAqC,CAAC,GAAG;KACxE,IAAI,WAAW;KACf,YAAY;KACZ,WAAW,IAAI,WAAW,SAAS;KACnC,WAAW,IAAI,SAAS,OAAO;KAC/B,WAAW,IAAI,SAAS,OAAO;KAC/B,IAAI,cAAc;MAChB,MAAM,QAAQ,oBAAoB,SAAS,YAAY;MACvD,eAAe,KAAA;KACjB;KAEA,IAAI,eAAeA,SAAO,YAAY;MACpC,WAAW,MAAM;MACjB,OAAK;MACL,gBAAgB;KAClB;KAEA,OAAO;KACP,sBAAsB,KAAA;IACxB;IAEA,sBAAsB;IAEtB,SAAS,UAAU,MAAyB;KAC1C,MAAM,OAAO,KAAK,SAAS;KAC3B,WAAW,QAAQ,QAAQ,OAAO,cAAc,IAAI,CAAC,CAAC;KAEtD,IAAI;MACF,MAAM,QAAQ,KAAK,MAAM,IAAI;MAC7B,IAAI,yBAAyB,KAAK,GAAG;OACnC,WAAW,QAAQ,QAAQ,OAAO,kBAAkB,CAAC;OACrD,QAAQ,EAAE,aAAa,0BAA0B,KAAK,EAAE,CAAC;OACzD,WAAW,MAAM;MACnB;KACF,QAAQ,CAER;IACF;IAEA,SAAS,QAAQ,KAAY;KAC3B,QAAQ;KACR,WAAW,MAAM,GAAG;IACtB;IAEA,SAAS,UAAU;KACjB,QAAQ;KACR,IAAI;MACF,WAAW,MAAM;KACnB,QAAQ,CAER;IACF;IAEA,WAAW,GAAG,WAAW,SAAS;IAClC,WAAW,GAAG,SAAS,OAAO;IAC9B,WAAW,GAAG,SAAS,OAAO;IAE9B,MAAM,SAAS,MAAM;IACrB,IAAI,QAAQ;KACV,IAAI,OAAO,SAAS;MAClB,QAAQ,EAAE,aAAa,KAAK,CAAC;MAC7B,WAAW,MAAM,OAAO,UAAU,IAAI,aAAa,WAAW,YAAY,CAAC;MAC3E;KACF;KACA,qBAAqB;MACnB,QAAQ,EAAE,aAAa,KAAK,CAAC;MAC7B,IAAI;OACF,WAAW,MAAM,OAAO,UAAU,IAAI,aAAa,WAAW,YAAY,CAAC;MAC7E,QAAQ,CAER;KACF;KACA,OAAO,iBAAiB,SAAS,cAAc,EAAE,MAAM,KAAK,CAAC;IAC/D;IAEA,WAAW,KAAK,KAAK,UAAU;KAAE,MAAM;KAAmB,GAAG;IAAY,CAAC,CAAC;GAC7E;GACA,SAAS;IACP,sBAAsB,EAAE,aAAa,KAAK,CAAC;GAC7C;EACF,CAAC;EAED,OAAO,IAAI,SAAS,gBAAgB;GAClC,QAAQ;GACR,SAAS,EAAE,gBAAgB,oBAAoB;EACjD,CAAC;CACH;CAEA,OAAO,OAAO,OAAO,gBAAgB;;AAEnC,QAAQ;EACN,IAAIA,MAAI;GACN,KAAG,MAAM;GACT,OAAK;EACP;EACA,gBAAgB;EAChB,aAAa;CACf,EACF,CAAC;AACH;AAEA,SAAS,eAAe,KAAsB;CAC5C,IAAI;EACF,OAAO,IAAI,IAAI,GAAG,CAAC,CAAC,SAAS,SAAS,YAAY;CACpD,QAAQ;EACN,OAAO,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,SAAS,YAAY,KAAK;CACtD;AACF;AAEA,SAAS,gBAAgB,KAAa,kBAAkC,QAAyB;CAC/F,IAAI,CAAC,oBAAoB,CAAC,QAAQ,OAAO;CAEzC,MAAM,YAAY,IAAI,IAAI,GAAG;CAC7B,UAAU,aAAa,IAAI,kBAAkB,MAAM;CACnD,OAAO,UAAU,SAAS;AAC5B;AAEA,SAAS,cAAc,MAAsB;CAC3C,OAAO,GAAG,KACP,MAAM,OAAO,CAAC,CACd,KAAI,SAAQ,SAAS,MAAM,CAAC,CAC5B,KAAK,IAAI,EAAE;AAChB;AAEA,SAAS,mBAAmB,eAAuB,SAAiC,kBAAkB,IAAY;CAChH,OAAO,KAAK,UAAU;EACpB;EACA;EACA,SAAS,OAAO,QAAQ,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;CACxE,CAAC;AACH;AAEA,SAAS,yBAAyB,OAA2C;CAC3E,OACE,OAAO,UAAU,YACjB,UAAU,QACV,UAAU,SACV,OAAO,MAAM,SAAS,YACtB,yBAAyB,IAAI,MAAM,IAAI;AAE3C;AAEA,SAAS,0BAA0B,OAAyB;CAC1D,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,EAAE,WAAW,QAAQ,OAAO;CAC/E,MAAM,QAAQ,MAAM;CACpB,OACE,OAAO,UAAU,YACjB,UAAU,QACV,UAAU,SACV,MAAM,SAAS;AAEnB;AAEA,SAAS,cAAc,QAAsC;CAC3D,OAAO,QAAQ,UAAU,IAAI,aAAa,WAAW,YAAY;AACnE;AAEA,SAAS,iBAAiB,SAA0D;CAClF,MAAM,SAAiC,CAAC;CACxC,IAAI,CAAC,SAAS,OAAO;CAErB,IAAI,mBAAmB,SACrB,QAAQ,SAAS,OAAO,QAAQ;EAC9B,OAAO,IAAI,YAAY,KAAK;CAC9B,CAAC;MACI,IAAI,MAAM,QAAQ,OAAO,GAC9B,KAAK,MAAM,CAAC,KAAK,UAAU,SACzB,OAAO,IAAI,YAAY,KAAK;MAG9B,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,OAAO,GAC/C,IAAI,SAAS,MAAM,OAAO,IAAI,YAAY,KAAK;CAInD,OAAO;AACT;;;AC5TA,SAAS,SAAS,OAAkD;CAClE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAEA,SAAS,oCAAuC,iBAAuB;CACrE,IAAI,CAAC,SAAS,eAAe,KAAK,CAAC,SAAS,gBAAgB,KAAK,GAC/D,OAAO;CAGT,MAAM,SAAS,SAAS,gBAAgB,MAAM,IAAI,gBAAgB,SAAS,CAAC;CAE5E,OAAO;EACL,GAAG;EACH,QAAQ;GACN,GAAG;GACH,GAAG,gBAAgB;EACrB;CACF;AACF;AAEA,SAAS,mCACP,QACyC;CACzC,IAAI,iBAAiB;CAErB,MAAM,iBAAiB,OAAO,KAAI,YAAW;EAC3C,MAAM,6BAA6B;EACnC,MAAM,kBAAkB,oCAAoC,2BAA2B,eAAe;EACtG,MAAM,0BAA0B,oBAAoB,2BAA2B;EAE/E,IAAI,CAAC,MAAM,QAAQ,QAAQ,OAAO,GAAG;GACnC,IAAI,yBAAyB;IAC3B,iBAAiB;IACjB,OAAO;KAAE,GAAG;KAAS;IAAgB;GACvC;GAEA,OAAO;EACT;EAEA,IAAI,kBAAkB;EACtB,MAAM,UAAU,QAAQ,QAAQ,KAAI,SAAQ;GAC1C,IAAI,EAAE,qBAAqB,OACzB,OAAO;GAGT,MAAM,kBAAkB,oCAAoC,KAAK,eAAe;GAChF,IAAI,oBAAoB,KAAK,iBAC3B,OAAO;GAGT,kBAAkB;GAClB,OAAO;IAAE,GAAG;IAAM;GAAgB;EACpC,CAAC;EAED,IAAI,CAAC,iBAAiB;GACpB,IAAI,yBAAyB;IAC3B,iBAAiB;IACjB,OAAO;KAAE,GAAG;KAAS;IAAgB;GACvC;GAEA,OAAO;EACT;EAEA,iBAAiB;EACjB,OAAO;GAAE,GAAG;GAAS,GAAI,0BAA0B,EAAE,gBAAgB,IAAI,CAAC;GAAI;EAAQ;CACxF,CAAC;CAED,OAAQ,iBAAiB,iBAAiB;AAC5C;AAEA,SAAS,qCAAqC,OAAyC;CACrF,OAAO,IAAI,MAAM,OAAO,EACtB,IAAI,QAAQ,UAAU,UAAU;EAE9B,IAAI,aAAa,cACf,QAAQ,YACN,OAAO,WAAW;GAChB,GAAG;GACH,iBAAiB,oCAAoC,QAAQ,eAAe;GAC5E,QAAQ,mCAAmC,QAAQ,MAAM;EAC3D,CAAC;EAGL,IAAI,aAAa,YACf,QAAQ,YACN,OAAO,SAAS;GACd,GAAG;GACH,iBAAiB,oCAAoC,QAAQ,eAAe;GAC5E,QAAQ,mCAAmC,QAAQ,MAAM;EAC3D,CAAC;EAGL,OAAO,QAAQ,IAAI,QAAQ,UAAU,QAAQ;CAC/C,EACF,CAAC;AACH;AAEA,IAAa,qBAAb,cAAwCE,aAAAA,mBAAmB;CAMrC;CALpB,KAAc;CACd,OAAgB;CAChB,aAAqB,IAAIC,iBAAAA,oBAAoB;CAC7C,uCAA+B,IAAI,IAAkC;CAErE,YAAY,QAA0C;EACpD,MAAM;EADY,KAAA,SAAA;EAElB,KAAK,eAAe;CACtB;CAEA,iBAA+B;EAC7B,IAAI,CAAC,KAAK,OAAO,cACf,MAAM,IAAIC,cAAAA,YAAY;GACpB,IAAI;GACJ,QAAQ;GACR,UAAU;GACV,MAAM;EACR,CAAC;EAGH,IAAI,CAAC,KAAK,OAAO,UAAU,KAAK,OAAO,gBAAgB,SAAS,WAC9D,MAAM,IAAIA,cAAAA,YAAY;GACpB,IAAI;GACJ,QAAQ;GACR,UAAU;GACV,MAAM;EACR,CAAC;EAGH,IAAI,KAAK,OAAO,gBAAgB,SAAS,aAAa,CAAC,KAAK,OAAO,eAAe,YAChF,MAAM,IAAIA,cAAAA,YAAY;GACpB,IAAI;GACJ,QAAQ;GACR,UAAU;GACV,MAAM;EACR,CAAC;EAGH,IAAI,KAAK,OAAO,UAAU,KAAK,OAAO,gBAAgB,SAAS,WAC7D,QAAQ,KACN,2HACF;EAGF,IAAI,KAAK,OAAO,mBAAmB,KAAK,OAAO,2BAA2B,MACxE,MAAM,IAAIA,cAAAA,YAAY;GACpB,IAAI;GACJ,QAAQ;GACR,UAAU;GACV,MAAM;EACR,CAAC;EAGH,IAAI,KAAK,OAAO,mBAAmB,KAAK,OAAO,cAAc,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,SAAS,KAAK,OAAO,UAAU,GAC7G,MAAM,IAAIA,cAAAA,YAAY;GACpB,IAAI;GACJ,QAAQ;GACR,UAAU;GACV,MAAM;EACR,CAAC;EAGH,IACE,KAAK,OAAO,2BAA2B,SACvC,KAAK,OAAO,cACZ,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,SAAS,KAAK,OAAO,UAAU,GAElD,MAAM,IAAIA,cAAAA,YAAY;GACpB,IAAI;GACJ,QAAQ;GACR,UAAU;GACV,MAAM;EACR,CAAC;EAGH,MAAM,iBAAiB,KAAK,OAAO,eAAe,KAAK,OAAO,YAAY,SAAS;EACnF,MAAM,gBAAgB,KAAK,OAAO,eAAe,KAAA;EAEjD,IAAI,kBAAkB,eACpB,QAAQ,KACN,uIACF;EAGF,IAAI,eACF,KAAK,yBAAyB,KAAK,OAAO,UAAW;CAEzD;CAEA,MAAM,iBAA0D;EAC9D,IAAI,KAAK,OAAO,eAAe,KAAK,OAAO,YAAY,SAAS,GAC9D,OAAO,EACL,gBAAgB;GACd,cAAc,CAAC;GACf,cAAc;GACd,MAAM;GACN,QAAQ,KAAK,OAAO;GACpB,QAAQ;GACR,SAAS;EACX,EACF;EAGF,IAAI,CAAC,KAAK,OAAO,YACf,OAAO,EACL,gBAAgB;GACd,cAAc,CAAC;GACf,cAAc;GACd,MAAM;GACN,QAAQ,CAAC;GACT,QAAQ;GACR,SAAS;EACX,EACF;EAGF,IAAI;GACF,MAAM,cAAc,KAAK,yBAAyB,KAAK,OAAO,UAAU;GAExE,MAAM,QAAQ,MAAM,KAAK,gBAAgB;IACvC,UAAU,YAAY;IACtB,UAAU,YAAY;IACtB,cAAc,YAAY;GAC5B,CAAC;GAQD,OAAO,EACL,gBAAgB;IACd,cAAc,CAAC;IACf,cAAc;IACd,MAAM;IACN,SAAQ,MAXc,KAAK,iBAAiB,OAAO;KACrD,gBAAgB,YAAY;KAC5B,eAAe,YAAY;KAC3B,cAAc,KAAK,OAAO;IAC5B,CAAC,EAAA,CAOuB,KAAI,MAAK,EAAE,IAAI;IACnC,QAAQ;IACR,SAAS;GACX,EACF;EACF,SAAS,OAAO;GACd,MAAM,WAAW,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;GACtE,QAAQ,KACN,qDAAqD,YACrD,6GACF;GAEA,OAAO,EACL,gBAAgB;IACd,cAAc,CAAC;IACf,cAAc;IACd,MAAM;IACN,QAAQ,CAAC;IACT,QAAQ;IACR,SAAS;GACX,EACF;EACF;CACF;CAEA,yBAAiC,YAAiE;EAChG,MAAM,EAAE,UAAU,UAAU,cAAc,gBAAgB,kBAAkB;EAE5E,MAAM,UAAU,CAAC;EACjB,IAAI,CAAC,UAAU,QAAQ,KAAK,UAAU;EACtC,IAAI,CAAC,UAAU,QAAQ,KAAK,UAAU;EACtC,IAAI,CAAC,cAAc,QAAQ,KAAK,cAAc;EAC9C,IAAI,CAAC,gBAAgB,QAAQ,KAAK,gBAAgB;EAClD,IAAI,CAAC,eAAe,QAAQ,KAAK,eAAe;EAEhD,IAAI,QAAQ,SAAS,GACnB,MAAM,IAAIA,cAAAA,YAAY;GACpB,IAAI;GACJ,QAAQ;GACR,UAAU;GACV,MAAM,+CAA+C,QAAQ,KAAK,IAAI,EAAE;EAC1E,CAAC;EAGH,OAAO;GACL;GACA;GACA;GACA;GACA;EACF;CACF;CAEA,MAAc,gBAAgB,aAIV;EAClB,MAAM,EAAE,UAAU,UAAU,iBAAiB;EAE7C,MAAM,WAAW,oBAAoB,SAAS,GAAG;EAEjD,MAAM,SAAU,MAAM,KAAK,WAAW,IAAI,QAAQ;EAClD,IAAI,UAAU,OAAO,YAAY,KAAK,IAAI,IAAI,MAAO,IACnD,OAAO,OAAO;EAGhB,MAAM,gBAAgB,qCAAqC,SAAS;EAEpE,MAAM,OAAO,IAAI,gBAAgB;GAC/B,YAAY;GACZ,WAAW;GACX,eAAe;GACf,OAAO;EACT,CAAC;EAED,MAAM,WAAW,MAAM,MAAM,eAAe;GAC1C,QAAQ;GACR,SAAS,EACP,gBAAgB,oCAClB;GACA,MAAM,KAAK,SAAS;EACtB,CAAC;EAED,IAAI,CAAC,SAAS,IAAI;GAChB,MAAM,QAAQ,MAAM,SAAS,KAAK;GAClC,MAAM,IAAIA,cAAAA,YAAY;IACpB,IAAI;IACJ,QAAQ;IACR,UAAU;IACV,MAAM,iCAAiC,SAAS,OAAO,GAAG;GAC5D,CAAC;EACH;EAEA,MAAM,gBAAiB,MAAM,SAAS,KAAK;EAE3C,MAAM,YAAY,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,IAAI,cAAc;EAEhE,MAAM,KAAK,WAAW,IAAI,UAAU;GAClC,OAAO,cAAc;GACrB;EACF,CAAC;EAED,OAAO,cAAc;CACvB;CAEA,MAAc,iBACZ,OACA,aAK4B;EAC5B,MAAM,EAAE,gBAAgB,eAAe,iBAAiB;EAExD,IAAI,MACF,8CAA8C,eAAe,kBAAkB,cAAc,kDAAkD,aAAa;EAE9J,MAAM,iBAAoC,CAAC;EAE3C,OAAO,KAAK;GACV,MAAM,WAAW,MAAM,MAAM,KAAK,EAChC,SAAS;IACP,eAAe,UAAU;IACzB,gBAAgB;GAClB,EACF,CAAC;GAED,IAAI,CAAC,SAAS,IAAI;IAChB,MAAM,QAAQ,MAAM,SAAS,KAAK;IAClC,MAAM,IAAIA,cAAAA,YAAY;KACpB,IAAI;KACJ,QAAQ;KACR,UAAU;KACV,MAAM,sCAAsC,SAAS,OAAO,GAAG;IACjE,CAAC;GACH;GAEA,MAAM,OAAQ,MAAM,SAAS,KAAK;GAElC,eAAe,KAAK,GAAG,KAAK,KAAK;GAEjC,MAAM,KAAK;EACb;EAIA,OAF8B,eAAe,QAAO,MAAK,EAAE,WAAW,sBAAsB,WAEjE;CAC7B;CAEA,SAAS,WAAmB,UAA0C,CAEtE;CAEA,MAAM,UAAU,UAAmC;EACjD,OAAO,KAAK,OAAO,gBAAgB,SAAS,YAAY,KAAM,KAAK,OAAO,UAAU;CACtF;CAEA,MAAc,kBAAmC;EAC/C,IAAI,KAAK,OAAO,gBAAgB,SAAS,WACvC,MAAM,IAAIA,cAAAA,YAAY;GACpB,IAAI;GACJ,QAAQ;GACR,UAAU;GACV,MAAM;EACR,CAAC;EAGH,MAAM,QAAQ,KAAK,OAAO,eAAe,SAAS;EAClD,MAAM,WAAW,sBAAsB;EACvC,MAAM,SAAU,MAAM,KAAK,WAAW,IAAI,QAAQ;EAClD,IAAI,UAAU,OAAO,YAAY,KAAK,IAAI,IAAI,MAAO,IACnD,OAAO,OAAO;EAGhB,IAAI,eAAe,KAAK,qBAAqB,IAAI,QAAQ;EAEzD,IAAI,CAAC,cAAc;GACjB,eAAe,KAAK,kBAAkB,OAAO,QAAQ;GACrD,KAAK,qBAAqB,IAAI,UAAU,YAAY;EACtD;EAEA,IAAI;GAEF,QAAO,MADa,aAAA,CACP;EACf,UAAU;GACR,KAAK,qBAAqB,OAAO,QAAQ;EAC3C;CACF;CAEA,MAAc,kBAAkB,OAAe,UAAwC;EACrF,IAAI,KAAK,OAAO,gBAAgB,SAAS,WACvC,MAAM,IAAIA,cAAAA,YAAY;GACpB,IAAI;GACJ,QAAQ;GACR,UAAU;GACV,MAAM;EACR,CAAC;EAGH,MAAM,cAAc,MAAM,KAAK,OAAO,eAAe,WAAW,SAAS,KAAK;EAC9E,IAAI,CAAC,aAAa,OAChB,MAAM,IAAIA,cAAAA,YAAY;GACpB,IAAI;GACJ,QAAQ;GACR,UAAU;GACV,MAAM;EACR,CAAC;EAGH,MAAM,QAAQ;GACZ,OAAO,YAAY;GACnB,WAAW,YAAY,qBACnB,KAAK,MAAM,YAAY,qBAAqB,GAAI,IAChD,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,IAAI;EACtC;EAEA,MAAM,KAAK,WAAW,IAAI,UAAU,KAAK;EAEzC,OAAO;CACT;CAEA,mBAA2B,aAAsC,OAAgC;EAC/F,OAAO,OAAO,OAAO,SAAS;GAC5B,MAAM,QAAQ,MAAM,KAAK,gBAAgB;GACzC,MAAM,UAAU,IAAI,QAAQ,MAAM,OAAO;GACzC,QAAQ,OAAO,SAAS;GACxB,QAAQ,IAAI,iBAAiB,UAAU,OAAO;GAE9C,OAAO,WAAW,OAAO;IACvB,GAAG;IACH;GACF,CAAC;EACH;CACF;CAEA,mCAA2C,EACzC,YACA,sBAI8C;EAC9C,MAAM,iBAAiB,2BAA2B;GAChD,KAAK,oBAAoB,OAAO,SAAS,KAAK,OAAO,aAAa;GAClE,SAAS,oBAAoB;GAC7B,kBAAkB,aAAa,QAAQ;GACvC,YAAY;EACd,CAAC;EAED,OAAO,aACH,OAAO,OAAO,KAAK,mBAAmB,cAAc,GAAG,EAAE,OAAO,eAAe,MAAM,CAAC,IACtF;CACN;CAEA,MAAM,qBAAqB,EACzB,SACA,QACA,SACA,WACA,sBAQ2B;EAC3B,MAAM,kBAAkB,KAAK,OAAO,mBAAmB;EACvD,MAAM,aACJ,KAAK,OAAO,eACX,mBAAmB,KAAK,OAAO,2BAA2B,QAAQ,OAAO;EAC5E,MAAM,yBAAyB,KAAK,OAAO,2BAA2B,kBAAkB,QAAQ;EAChG,MAAM,aAAa,KAAK,OAAO,gBAAgB,SAAS;EAExD,MAAM,iBADe,mBAAmB,cAAc,cAElD,KAAK,mCAAmC;GACtC;GACA;EACF,CAAC,IACD,KAAA;EACJ,MAAM,cAAc;GAClB,cAAc,KAAK,OAAO;GAC1B,QAAQ,aAAa,KAAK;GAC1B;GAIA;GACA,SAAS;IAAE,cAAcC,aAAAA;IAAmB,GAAG;GAAQ;GACvD,GAAI,kBAAkB,CAAC,aAAa,EAAE,OAAO,eAAe,IAAI,CAAC;EACnE;EAEA,MAAM,gBAAgB,YACpB,aACI;GACE,GAAG;GACH,OAAO,kBAAkB,KAAK,mBAAmB;EACnD,IACA,WACN;EAEA,IAAI,iBAAiB;GACnB,MAAM,QAAQ,qCAAqC,cAAc,UAAU,OAAO,CAAC;GACnF,IAAI,gBACF,OAAO,eAAe,OAAOC,aAAAA,iCAAiC;IAC5D,cAAc;IACd,OAAO;KACL,MAAM;KACN,OAAO,eAAe;IACxB;GACF,CAAC;GAGH,OAAO;EACT;EAEA,OAAO,cAAc,OAAO;CAC9B;AACF;;;;;;;;ACvmBA,MAAM,yCAAyB,IAAI,IAAY;CAC7C;CACA;CACA;CACA;CACA;AACF,CAAC;;;;;;;;AASD,SAAS,2BAA2B,OAAyB;CAC3D,IAAI,iBAAiBC,cAAAA,aACnB,OAAO,uBAAuB,IAAI,MAAM,EAAE;CAE5C,IAAI,iBAAiB,OAAO;EAC1B,MAAM,MAAM,MAAM;EAClB,OACE,sCAAsC,KAAK,GAAG,KAC9C,0BAA0B,KAAK,GAAG,KAClC,cAAc,KAAK,GAAG,KACtB,sCAAsC,KAAK,GAAG,KAC9C,+BAA+B,KAAK,GAAG;CAE3C;CACA,OAAO;AACT;;;;;;;;;;;AA4BA,IAAa,iBAAb,MAAa,eAAe;CAC1B;CAEA,YAAY,WAA0C,CAAC,GAAG;EAIxD,MAAM,uBAAO,IAAI,IAAY;EAC7B,KAAK,WAAW,SAAS,QAAO,YAAW;GACzC,IAAI,CAACC,wBAAAA,oBAAoB,OAAO,GAAG,OAAO;GAC1C,MAAM,KAAKC,wBAAAA,aAAa,OAAO;GAC/B,IAAI,KAAK,IAAI,EAAE,GAAG,OAAO;GACzB,KAAK,IAAI,EAAE;GACX,OAAO;EACT,CAAC;CACH;;;;;CAMA,OAAO,UAAU,WAAuC;EACtD,OAAO,cAAc,eAAe,KAAA,IAAY;CAClD;;;;;;;CAQA,OAAe,eAAe,WAAmB,UAAsC;EACrF,MAAM,SAAS,eAAe,UAAU,SAAS;EACjD,IAAI,UAAU,CAAC,SAAS,WAAW,GAAG,OAAO,EAAE,GAC7C;EAEF,OAAO;CACT;;CAGA,oBAAoB,UAA+C;EACjE,OAAOC,wBAAAA,oBAAoB,UAAU,KAAK,QAAQ;CACpD;;;;;;;CAQA,eAAe,UAKb;EACA,MAAM,UAAU,KAAK,oBAAoB,QAAQ;EACjD,MAAM,YAAYD,wBAAAA,aAAa,OAAO;EACtC,MAAM,EAAE,YAAY,YAAYE,mBAAAA,mBAAmB,UAAU,eAAe,eAAe,WAAW,QAAQ,CAAC;EAC/G,OAAO;GAAE;GAAS;GAAW;GAAY;EAAQ;CACnD;;CAGA,aAAa,UAA8E;EACzF,MAAM,EAAE,WAAW,YAAY,YAAY,KAAK,eAAe,QAAQ;EACvE,OAAO;GAAE;GAAY;GAAS;EAAU;CAC1C;;;;;;;;;;CAWA,MAAM,YAAY,UAA8C;EAC9D,MAAM,EAAE,SAAS,WAAW,YAAY,YAAY,KAAK,eAAe,QAAQ;EAChF,MAAM,UAA8B;GAAE;GAAW;GAAY;GAAS;EAAS;EAE/E,MAAM,iBAAiB,MAAM,QAAQ,cAAc,OAAO;EAC1D,MAAM,cAAc,gBAAgB,cAChC;GACE,GAAG;GACH,SAAS;IAAE,GAAG,eAAe;IAAS,eAAe,UAAU,eAAe;GAAc;EAC9F,IACA;EAEJ,IAAI,aAAa,UAAU,aAAa,WAAW,aAAa,aAC9D,OAAO;GACL,GAAG;GACH,QAAQ,YAAY,UAAU;EAChC;EAGF,OAAO;GACL,QAAQ,MAAM,QAAQ,UAAU,QAAQ;GACxC,QAAQ;EACV;CACF;;;;;;;;CASA,MAAM,QAAQ,UAAoC;EAChD,IAAI;GACF,MAAM,OAAO,MAAM,KAAK,YAAY,QAAQ;GAC5C,OAAO,QAAQ,KAAK,UAAU,KAAK,eAAe,KAAK,OAAO;EAChE,SAAS,OAAO;GACd,IAAI,2BAA2B,KAAK,GAClC,OAAO;GAET,MAAM;EACR;CACF;;;;;;CAOA,MAAM,gBAA+E;EACnF,MAAM,WAAiE,CAAC;EAExE,KAAK,MAAM,WAAW,KAAK,UACzB,IAAI;GACF,MAAM,mBAAmB,MAAM,QAAQ,eAAe;GACtD,KAAK,MAAM,CAAC,YAAY,WAAW,OAAO,QAAQ,gBAAgB,GAAG;IACnE,MAAM,MAAM,KAAK,eAAe,SAAS,UAAU;IACnD,IAAI,OAAO,UAAU;IACrB,SAAS,OAAO;KAAE,GAAG;KAAQ,SAASF,wBAAAA,aAAa,OAAO;IAAE;GAC9D;EACF,SAAS,OAAO;GACd,QAAQ,KAAK,yCAAyCA,wBAAAA,aAAa,OAAO,EAAE,IAAI,KAAK;EACvF;EAGF,OAAO;CACT;;;;;CAMA,MAAM,sBAA+C;EACnD,MAAM,WAAW,MAAM,KAAK,cAAc;EAC1C,MAAM,SAAyB,CAAC;EAEhC,KAAK,MAAM,CAAC,UAAU,mBAAmB,OAAO,QAAQ,QAAQ,GAAG;GACjE,MAAM,eAAe,MAAM,QAAQ,eAAe,YAAY,IAC1D,eAAe,aAAa,KAC5B,eAAe;GACnB,MAAM,aAAa,eAAe;GAClC,IAAI,CAAC,MAAM,QAAQ,UAAU,GAAG;GAIhC,MAAM,YAAY,WAAW,KAAK,MAAM,KAAK,QAAQ,GAAG,SAAS,GAAG,WAAW,IAAI,IAAI;GAEvF,KAAK,MAAM,aAAa,YACtB,OAAO,KAAK;IACV,IAAI,GAAG,SAAS,GAAG;IACnB;IACA;IACA;IACA,cAAc,gBAAgB,KAAA;GAChC,CAAC;EAEL;EAEA,OAAO;CACT;;CAGA,eAAuB,SAAsC,YAA4B;EACvF,MAAM,YAAYA,wBAAAA,aAAa,OAAO;EACtC,IAAI,cAAc,cAAc,OAAO;EACvC,OAAO,eAAe,YAAY,YAAY,GAAG,UAAU,GAAG;CAChE;AACF;;;;;;AC1NA,SAAS,kBAAkB,OAAuD;CAChF,OAAO,MAAM,yBAAyB;AACxC;;;;AAKA,SAAS,kBAAkB,OAAuD;CAChF,OAAO,MAAM,yBAAyB;AACxC;AAEA,MAAM,sCAAsB,IAAI,IAAI,CAAC,QAAQ,CAAC;AAC9C,MAAM,kBAAkB;AAQxB,SAAS,0BAA6C;CACpD,OAAO;EACL,gCAAgB,IAAI,IAAI;EACxB,kCAAkB,IAAI,IAAI;EAC1B,yCAAyB,IAAI,IAAI;CACnC;AACF;AAEA,SAAS,mBACP,iBACA,YAIA;CACA,MAAM,mBAAoB,eAAe,iBAAiB,iBAAiB,QAAQ,iBAAiB;CAOpG,OAAO;EACL,WAAW,kBAAkB,aAAa;EAC1C,WAAW,kBAAkB;CAC/B;AACF;AAEA,SAAS,gBAAgB,SAA2B;CAClD,IAAI,CAAC,SAAS,OAAO;CACrB,IAAI;EAEF,OADiB,IAAI,IAAI,OAAO,CAAC,CAAC,aACd;CACtB,QAAQ;EACN,OAAO;CACT;AACF;AAEA,SAAS,gBAAgB,SAA0C;CACjE,IAAI,CAAC,SAAS,OAAO;CACrB,MAAM,UAAU,OAAO,QAAQ,OAAO;CACtC,IAAI,QAAQ,WAAW,GAAG,OAAO;CACjC,OAAO,KAAK,UAAU,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;AACtE;AAEA,SAAS,aACP,aACA,aACoC;CACpC,IAAI,CAAC,eAAe,CAAC,aAAa,OAAO,KAAA;CACzC,OAAO;EAAE,GAAG;EAAa,GAAG;CAAY;AAC1C;AAIA,IAAa,2BAAb,MAAa,yBAA0D;CACrE,uBAAgC;CAChC,8BAAuC;CACvC,4BAAqC;CACrC,oBAA6B;;;;;;;;CAS7B;CAEA;CACA;CACA;CAEA;CACA;CACA,wBAA0E;CAC1E,uBAAwC,wBAAwB;CAChE;CACA;CAEA,YAAY,QAAqD,gBAAgD;EAE/G,IAAI;EAOJ,IAAI,OAAO,WAAW,UACpB,mBAAmB,EAAE,IAAI,OAAgC;OACpD,IAAI,gBAAgB,UAAU,aAAa,QAEhD,mBAAmB;GACjB,IAAI,GAAG,OAAO,WAAW,GAAG,OAAO;GACnC,KAAK,OAAO;GACZ,QAAQ,OAAO;GACf,SAAS,OAAO;EAClB;OAGA,mBAAmB;GACjB,IAAI,OAAO;GACX,KAAK,OAAO;GACZ,QAAQ,OAAO;GACf,SAAS,OAAO;EAClB;EAGF,MAAM,eAMF;GACF,GAAG;GACH,UAAU,iBAAiB;EAC7B;EAKA,KAAKG,WAAW,IAAI,eAAe,CAAC,GAAI,kBAAkB,CAAC,GAAI,GAAG,eAAe,CAAC;EAClF,MAAM,WAAW,KAAKA,SAAS,eAAe,iBAAiB,EAAE;EACjE,KAAK,UAAU,SAAS;EACxB,KAAK,YAAY,SAAS;EAC1B,KAAK,WAAW,SAAS,cAAc;EAEvC,IAAI,SAAS,cAAc,SAAS,YAAY,iBAAiB,IAC/D,aAAa,KAAK,SAAS;EAG7B,KAAK,UAAU,aAAa;EAC5B,KAAK,SAAS;EAKd,MAAM,OAAO;EACb,KAAK,gBAAgB,EACnB,KACE,aACA,YACkC;GAClC,OAAO,KAAK,sBAAsB,CAAC,CAAC,KAAK,aAAa,UAAU;EAClE,EACF;CACF;;;;;;CAOA,MAAc,wBAA2D;EACvE,IAAI,KAAK,uBACP,OAAO,KAAK;EAGd,KAAK,wBAAwB,KAAK,oBAAoB;EACtD,OAAO,KAAK;CACd;;;;;CAMA,MAAc,sBAAyD;EACrE,IAAI;EACJ,IAAI;GACF,MAAM,WAAW,KAAKA,SAAS,eAAe,KAAK,OAAO,QAAQ;GAClE,MAAM,OAAO,MAAM,KAAK,YAAY,SAAS,YAAY,SAAS,OAAO;GACzE,SAAS,KAAK,UAAU;GASxB,MAAM,sBAAqB,MARP,KAAK,qBAAqB;IAC5C;IACA;IACA,SAAS,aAAa,KAAK,OAAO,SAAS,KAAK,OAAO;IACvD,GAAG;GACL,CAAC,EAAA,CAGgC;GACjC,IAAI,CAAC,oBACH,OAAO,CAAC;GAIV,IAAI,OAAQ,mBAA4C,SAAS,YAE/D,OAAO,MADiB,sBACL,CAAC;GAGtB,OAAQ,sBAAmD,CAAC;EAC9D,QAAQ;GAEN,OAAO,CAAC;EACV;CACF;;CAGA,sBAAmD;EACjD,OAAO,KAAKC;CACd;;;;;;;CAQA,mBAKE;EACA,OAAO;GACL,sBAAsB,KAAK;GAC3B,SAAS,KAAK;GACd,UAAU,KAAK;GACf,WAAW,KAAK;EAClB;CACF;CAEA,kBAA6C;EAC3C,IAAI,QAAQ,yBAAyB,cAAc,IAAI,KAAK,OAAO;EAEnE,IAAI,CAAC,OAAO;GACV,QAAQ,wBAAwB;GAChC,yBAAyB,cAAc,IAAI,KAAK,SAAS,KAAK;EAChE;EAEA,OAAO;CACT;CAEA,8BAAsC,MAAkC;EACtE,OAAO,KAAK,OAAO,WAAW,KAAA,KAAa,KAAK,WAAW,cAAc,KAAK,WAAW;CAC3F;CAEA,yBAAiC,EAC/B,mBACA,WACA,sBAKC;EACD,IAAI,sBAAsB,aAAa;GACrC,KAAKA,uBAAuB,KAAA;GAC5B;EACF;EAEA,IAAI,CAAC,WAAW;GACd,KAAKA,uBAAuB,KAAA;GAC5B;EACF;EAEA,KAAKA,uBAAuB;GAC1B,MAAM,UAAU;GAChB,OAAO,UAAU;GACjB,eAAe,oBAAoB,iBAAiB;EACtD;CACF;CAEA,MAAc,YAAY,aAAqB,UAA8C;EAC3F,IAAI,KAAK,OAAO,KACd,OAAO;GAAE,QAAQ,KAAK,OAAO,UAAU;GAAI,SAAS,KAAK,OAAO;GAAS,QAAQ;EAAW;EAG9F,MAAM,kBAAkB,KAAK,OAAO;EAGpC,IAAI,KAAK,OAAO,QACd,OAAO;GAAE,QAAQ,KAAK,OAAO;GAAQ,SAAS;GAAiB,QAAQ;EAAW;EAIpF,MAAM,cAAc,MAAM,KAAKD,SAAS,YAAY,KAAK,OAAO,QAAQ;EAGxE,OAAO,kBAAkB;GAAE,GAAG;GAAa,SAAS;IAAE,GAAG;IAAiB,GAAG,YAAY;GAAQ;EAAE,IAAI;CACzG;CAEA,4BAAoC,EAClC,OACA,mBACA,KACA,sBAMC;EACD,MAAM,UAAU,MAAM,iBAAiB,IAAI,GAAG;EAC9C,MAAM,mBAAmB,MAAM,wBAAwB,IAAI,GAAG;EAC9D,MAAM,YAAY,UAAU;GAAE,MAAM;GAA6B,aAAa,QAAQ,MAAM;EAAE,IAAI;EAElG,KAAK,yBAAyB;GAAE;GAAmB;GAAW;EAAmB,CAAC;CACpF;CAEA,+BAAuC,SAAiE;EAEtG,IADiBE,0BAAAA,yBAAyB,KAAK,OAAO,QAC3C,MAAM,OAAO,OAAO;EAE/B,MAAM,EAAE,aAAa,MAAM,MAAM,GAAG,SAAS;EAC7C,IAAI,gBAAgB,KAAA,KAAa,SAAS,KAAA,KAAa,SAAS,KAAA,GAAW,OAAO;EAClF,OAAO;CACT;CAEA,MAAM,WAAW,SAA4D;EAC3E,MAAM,WAAW,KAAKF,SAAS,eAAe,KAAK,OAAO,QAAQ;EAClE,IAAI;EACJ,IAAI;GAGF,OAAO,MAAM,KAAK,YAAY,SAAS,YAAY,SAAS,OAAO;EACrE,SAAS,OAAO;GAEd,OAAO,EACL,QAAQ,IAAI,eAAe,EACzB,MAAM,YAAY;IAChB,WAAW,QAAQ;KACjB,MAAM;KACC;IACT,CAA8B;IAC9B,WAAW,MAAM;GACnB,EACF,CAAC,EACH;EACF;EAEA,MAAM,mBAAmB,KAAK,+BAA+B,OAAO;EAEpE,MAAM,QAAQ,MAAM,KAAK,qBAAqB;GAC5C,QAAQ,KAAK,UAAU;GACvB;GACA,SAAS,aAAa,KAAK,OAAO,SAAS,KAAK,OAAO;GACvD,GAAG;EACL,CAAC;EAGD,IAAI,kBAAkB,KAAK,GAEzB,OAAO,IADkB,qBAAqB,KAC5B,CAAC,CAAC,WAAW,gBAAuB;EAExD,IAAI,kBAAkB,KAAK,GAEzB,OAAO,IADkB,qBAAqB,KAC5B,CAAC,CAAC,WAAW,gBAAuB;EAGxD,OAAO,IADkBG,cAAAA,qBAAqB,KAC5B,CAAC,CAAC,WAAW,gBAAgB;CACjD;CAEA,MAAM,SAAS,SAA4D;EAEzE,MAAM,WAAW,KAAKH,SAAS,eAAe,KAAK,OAAO,QAAQ;EAClE,IAAI;EACJ,IAAI;GAGF,OAAO,MAAM,KAAK,YAAY,SAAS,YAAY,SAAS,OAAO;EACrE,SAAS,OAAO;GAEd,OAAO,EACL,QAAQ,IAAI,eAAe,EACzB,MAAM,YAAY;IAChB,WAAW,QAAQ;KACjB,MAAM;KACC;IACT,CAA8B;IAC9B,WAAW,MAAM;GACnB,EACF,CAAC,EACH;EACF;EAEA,MAAM,mBAAmB,KAAK,+BAA+B,OAAO;EAEpE,MAAM,EAAE,WAAW,cAAc,mBAC/B,iBAAiB,iBACjB,SAAS,UACX;EAOA,MAAM,qBANsC,cAAc,SAAS,cAAc,eAExD,eACvB,CAAC,KAAK,OAAO,QACX,KAAK,cAAc,gBAAgB,oBAAoB,IAAI,KAAK,QAAQ,KACxE,KAAK,cAAc,kBACqC,cAAc;EAE1E,MAAM,QAAQ,MAAM,KAAK,qBAAqB;GAC5C,QAAQ,KAAK,UAAU;GACvB;GACA,SAAS,aAAa,KAAK,OAAO,SAAS,KAAK,OAAO;GACvD,WAAW;GACX,oBAAoB;GACpB,GAAG;EACL,CAAC;EAGD,MAAM,kBAAkB,KAAKC;EAC7B,IAAI,kBAAkB,KAAK,GAAG;GAG5B,MAAM,eAAgB,MAAM,IAFH,qBAAqB,KAEP,CAAC,CAAC,SAAS,gBAAuB;GACzE,2BAA2B,cAAc,eAAe;GACxD,OAAO;EACT;EACA,IAAI,kBAAkB,KAAK,GAAG;GAG5B,MAAM,eAAgB,MAAM,IAFH,qBAAqB,KAEP,CAAC,CAAC,SAAS,gBAAuB;GACzE,2BAA2B,cAAc,eAAe;GACxD,OAAO;EACT;EAEA,MAAM,eAAe,MAAM,IADFE,cAAAA,qBAAqB,KACR,CAAC,CAAC,SAAS,gBAAgB;EACjE,2BAA2B,cAAc,eAAe;EACxD,OAAO;CACT;CAEA,MAAc,qBAAqB,EACjC,SACA,YACA,QACA,MACA,SACA,WACA,sBASgC;EAChC,MAAM,oBAAqC,aAAa;EACxD,MAAM,eACJ,sBAAsB,cAClB,GAAG,oBAAoB,OAAO,GAAG,GAAG,gBAAgB,oBAAoB,OAAO,MAC/E;EACN,MAAM,mBAAmB,KAAK,8BAA8B,IAAI;EAChE,MAAM,QAAQ,mBAAmB,KAAK,uBAAuB,KAAK,gBAAgB;EAClF,MAAM,eAAe,mBAAmB,GAAG,KAAK,UAAU,OAAO;EACjE,MAAM,OAAA,GAAA,OAAA,WAAA,CAAiB,QAAQ,CAAC,CAC7B,OACC,KAAK,UAAU;GACb,KAAK;GACL;GACA;GACA,KAAK,OAAO,OAAO;GACnB,gBAAgB,OAAO;GACvB;GACA;GACA;EACF,CAAC,CACH,CAAC,CACA,OAAO,KAAK;EACf,IAAI,MAAM,eAAe,IAAI,GAAG,GAAG;GACjC,KAAK,4BAA4B;IAAE;IAAO;IAAmB;IAAK;GAAmB,CAAC;GACtF,OAAO,MAAM,eAAe,IAAI,GAAG;EACrC;EAGA,IAAI,KAAK,OAAO,KAAK;GACnB,MAAM,gBAAgBC,aAAAA,uBAAuB;IAC3C,MAAM;IACN;IACA,SAAS,KAAK,OAAO;IACrB;IACA,2BAA2B;GAC7B,CAAC,CAAC,CAAC,UAAU,OAAO;GACpB,MAAM,eAAe,IAAI,KAAK,aAAa;GAC3C,KAAK,yBAAyB;IAAE;IAAmB;GAAmB,CAAC;GACvE,OAAO;EACT;EAEA,IAAI,sBAAsB,eAAe,eAAe,YAAY,KAAK,cAAc,cAAc;GACnG,MAAM,UAAU,MAAM,KAAK,QAAQ,SAAS,KAAK,OAAO,UAAU,QAAQ,GAA6B;GAEvG,IAAI,gBAAgB,OAAO,GAAG;IAC5B,MAAM,EAAE,eAAe,YAAY,KAAK,4BAA4B;KAClE;KACA;KACA;KACA;KACA;IACF,CAAC;IACD,MAAM,eAAe,IAAI,KAAK,aAAa;IAC3C,MAAM,iBAAiB,IAAI,KAAK,OAAO;IACvC,KAAK,4BAA4B;KAAE;KAAO;KAAmB;KAAK;IAAmB,CAAC;IACtF,OAAO;GACT;EACF;EAEA,MAAM,gBAAgB,MAAM,KAAK,QAAQ,qBAAqB;GAC5D;GACA;GACA;GACA;GACA,WAAW;GACX;EACF,CAAC;EACD,MAAM,mBAAmB,2BAA2B,aAAa;EACjE,MAAM,eAAe,IAAI,KAAK,aAAa;EAC3C,IAAI,kBACF,MAAM,wBAAwB,IAAI,KAAK,gBAAgB;EAEzD,KAAK,yBAAyB;GAAE;GAAmB,WAAW;GAAkB;EAAmB,CAAC;EACpG,OAAO;CACT;CAEA,4BAAoC,EAClC,SACA,QACA,SACA,SACA,sBAOyE;EACzE,MAAM,UAAU,2BAA2B;GACzC,KAAK,oBAAoB;GACzB,SAAS,oBAAoB;EAC/B,CAAC;EAQD,OAAO;GAAE,eANaC,aAAAA,aAAa;IACjC;IACA;IACA;IACA,OAAO;GACT,CAAC,CAAC,CAAC,UAAU,OACQ;GAAG;EAAQ;CAClC;CACA,OAAe,uBAAuB;EACpC,yBAAyB,gCAAgB,IAAI,QAAQ;CACvD;CAEA,OAAe,gCAAgB,IAAI,QAAwD;AAC7F;AAEA,SAAS,2BAA2B,OAAuE;CACzG,OAAQ,MAAkDC,aAAAA;AAC5D;;;;;;;;;;;;;;ACllBA,IAAa,6BAAb,MAAmE;CACjE,uBAAsC;CACtC;CACA;CACA;CACA;CACA;CAEA;CAEA,YAAY,QAAyB;EACnC,KAAKC,SAAS;EACd,KAAK,WAAW,OAAO;EACvB,KAAK,UAAU,OAAO;EACtB,KAAK,8BAA8B,OAAO;EAC1C,KAAK,oBAAoB,OAAO;EAChC,KAAK,4BAA4B,OAAO;CAC1C;CAEA,YAAY,KAAmB;EAC7B,OAAO,KAAKA,OAAO,cAAc,GAAG,KAAK;CAC3C;CAEA,WAAW,SAAqC;EAC9C,OAAO,KAAKA,OAAO,WAAW,OAAO;CACvC;CAEA,SAAS,SAAqC;EAC5C,OAAO,KAAKA,OAAO,SAAS,OAAO;CACrC;;;;;;;CAQA,mBAAsF;EACpF,OAAO;GACL,sBAAsB,KAAK;GAC3B,SAAS,KAAK;GACd,UAAU,KAAK;EACjB;CACF;AACF;;;;;;;ACnCA,SAAgB,+BACd,aASuC;CACvC,IAAI,OAAO,gBAAgB,YAAY,0BAA0B,aAAa,OAAO;CAIrF,IAAI,OAAO,gBAAgB,YAAY,EAAE,WAAW,cAAc;EAChE,IAAI,QAAQ,aAAa,OAAO;EAChC,IAAI,gBAAgB,eAAe,aAAa,aAAa,OAAO;CACtE;CACA,OAAO;AACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,eAAsB,mBACpB,aASA,iBAAiC,IAAIC,wBAAAA,eAAe,GACpD,QAC0D;CAE1D,IAAI,OAAO,gBAAgB,YACzB,cAAc,MAAM,YAAY;EAAE;EAAgB;CAAO,CAAC;CAK5D,IACE,uBAAuB,4BACvB,uBAAuB,8BACvB,uBAAuBC,cAAAA,wBACvB,uBAAuB,wBACvB,uBAAuB,sBAEvB,OAAO;CAIT,IAAI,OAAO,gBAAgB,YAAY,0BAA0B,aAAa;EAC5E,IAAI,YAAY,yBAAyB,MACvC,OAAO,IAAIA,cAAAA,qBAAqB,WAA8B;EAEhE,IAAI,YAAY,yBAAyB,MACvC,OAAO,IAAI,qBAAqB,WAA8B;EAEhE,IAAI,YAAY,yBAAyB,MACvC,OAAO,IAAI,qBAAqB,WAA8B;EAEhE,IAAI,YAAY,yBAAyB,MAGvC,OAAO,IAAI,2BAA2B,WAA8B;EAKtE,IAAI,OAAQ,YAAoB,aAAa,cAAc,OAAQ,YAAoB,eAAe,YACpG,OAAO,IAAIA,cAAAA,qBAAqB,WAAyC;EAE3E,OAAO;CACT;CAEA,MAAM,gBAAgB,QAAQ,aAAa;CAC3C,MAAM,iBAAiB,gBAAgB,OAAO,OAAO,aAAa,IAAI,KAAA;CAGtE,IAAI,OAAO,gBAAgB,YAAY,+BAA+B,WAAW,GAC/E,OAAO,IAAI,yBAAyB,aAAa,cAAc;CAGjE,MAAM,IAAI,MAAM,sCAAsC;AACxD;;;AClIA,SAAS,iBAAiB,MAAoE;CAC5F,IAAI,CAAC,MAAM,aAAa,OAAO;CAC/B,OAAO;EACL,GAAG;EACH,SAAS;GACP,GAAG,KAAK;GACR,eAAe,UAAU,KAAK;EAChC;CACF;AACF;AAEA,SAAS,gBAAgB,UAAmF;CAC1G,OAAO,QACL,UAAU,UAAU,UAAU,eAAgB,UAAU,WAAW,OAAO,KAAK,SAAS,OAAO,CAAC,CAAC,SAAS,CAC5G;AACF;;;;;;AAOA,eAAsB,iBAAiB,EACrC,SACA,SACA,YACmD;CACnD,IAAI,gBAAgB,QAAQ,GAC1B,OAAO,iBAAiB;EAAE,GAAG;EAAU,QAAQ;CAAW,CAAC,KAAK,EAAE,QAAQ,WAAW;CAGvF,MAAM,cAAc,iBAAiB,MAAM,QAAQ,cAAc,OAAO,CAAC;CACzE,IAAI,aAAa,UAAU,aAAa,WAAW,aAAa,aAC9D,OAAO;EAAE,GAAG;EAAa,QAAQ,YAAY,UAAU;CAAU;CAGnE,OAAO;EACL,QAAQ,MAAM,QAAQ,UAAU,QAAQ,QAAQ;EAChD,QAAQ;CACV;AACF;;;ACpCA,MAAM,oBAAoB;AAE1B,SAAS,oBAAoB,OAAuB;CAClD,IAAI,MAAM,MAAM;CAChB,OAAO,MAAM,KAAK,MAAM,WAAW,MAAM,CAAC,MAAM,IAC9C,OAAO;CAET,OAAO,MAAM,MAAM,GAAG,GAAG;AAC3B;AAEA,SAAS,wBAAwB,MAAM,QAAQ,IAAI,uBAA+B;CAEhF,MAAM,yBAAyB,oBADf,KAAK,KAAK,KAAK,+BAC2B;CAK1D,OAAO,GAJgB,uBAAuB,SAAS,KAAK,IACxD,uBAAuB,MAAM,GAAG,EAAa,IAC7C,uBAEqB;AAC3B;;;;;AAiBA,MAAa,mBAAyC;CAEpD;EACE,IAAI;EACJ,UAAU;EACV,YAAY;EACZ,gBAAgB;EAChB,aAAa;CACf;CACA;EACE,IAAI;EACJ,UAAU;EACV,YAAY;EACZ,gBAAgB;EAChB,aAAa;CACf;CACA;EACE,IAAI;EACJ,UAAU;EACV,YAAY;EACZ,gBAAgB;EAChB,aAAa;CACf;CAEA;EACE,IAAI;EACJ,UAAU;EACV,YAAY;EACZ,gBAAgB;EAChB,aAAa;CACf;AACF;;;;;;;;;;;AAmCA,IAAa,4BAAb,MAAyG;CACvG,uBAAgC;CAChC;CACA;CACA,uBAAiE;CACjE,wBAAwD;CAIxD;CAEA,YAAY,QAAyC;EAEnD,IAAI;EAQJ,IAAI,OAAO,WAAW,UAAU;GAE9B,MAAM,QAAQ,OAAO,MAAM,GAAG;GAC9B,IAAI,MAAM,OAAO,mBAAmB;IAClC,IAAI,MAAM,SAAS,GACjB,MAAM,IAAI,MAAM,iCAAiC,OAAO,4CAA4C;IAEtG,mBAAmB;KAAE,YAAY;KAAmB,SAAS,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;IAAE;GACxF,OAAO;IACL,IAAI,MAAM,WAAW,GACnB,MAAM,IAAI,MAAM,iCAAiC,OAAO,qCAAqC;IAE/F,MAAM,CAAC,YAAY,WAAW;IAC9B,mBAAmB;KAAE;KAAY;IAAQ;GAC3C;EACF,OAAO,IAAI,gBAAgB,UAAU,aAAa,QAChD,mBAAmB;GACjB,YAAY,OAAO;GACnB,SAAS,OAAO;GAChB,KAAK,OAAO;GACZ,QAAQ,OAAO;GACf,SAAS,OAAO;EAClB;OACK;GAEL,MAAM,QAAQ,OAAO,GAAG,MAAM,GAAG;GACjC,IAAI,MAAM,OAAO,mBAAmB;IAClC,IAAI,MAAM,SAAS,GACjB,MAAM,IAAI,MAAM,iCAAiC,OAAO,GAAG,4CAA4C;IAEzG,mBAAmB;KACjB,YAAY;KACZ,SAAS,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;KAChC,KAAK,OAAO;KACZ,QAAQ,OAAO;KACf,SAAS,OAAO;IAClB;GACF,OAAO;IACL,IAAI,MAAM,WAAW,GACnB,MAAM,IAAI,MAAM,iCAAiC,OAAO,GAAG,qCAAqC;IAElG,MAAM,CAAC,YAAY,WAAW;IAC9B,mBAAmB;KACjB;KACA;KACA,KAAK,OAAO;KACZ,QAAQ,OAAO;KACf,SAAS,OAAO;IAClB;GACF;EACF;EAEA,KAAK,WAAW,iBAAiB;EACjC,KAAK,UAAU,iBAAiB;EAEhC,IAAI,iBAAiB,eAAe,mBAAmB;GACrD,MAAM,SAAS,iBAAiB,UAAU,QAAQ,IAAI;GACtD,IAAI,CAAC,QACH,MAAM,IAAI,MAAM,mEAAmE;GAGrF,KAAK,gBAAgBC,aAAAA,uBAAuB;IAC1C,MAAM;IACN;IACA,SAAS,wBAAwB,iBAAiB,GAAG;IACrD,SAAS;KACP,cAAcC,aAAAA;KACd,GAAG,iBAAiB;IACtB;GACF,CAAC,CAAC,CAAC,eAAe,iBAAiB,OAAO;EAC5C,OAAO,IAAI,iBAAiB,KAAK;GAG/B,MAAM,SAAS,iBAAiB,UAAU;GAC1C,KAAK,gBAAgBD,aAAAA,uBAAuB;IAC1C,MAAM,iBAAiB;IACvB;IACA,SAAS,iBAAiB;IAC1B,SAAS,iBAAiB;GAC5B,CAAC,CAAC,CAAC,eAAe,iBAAiB,OAAO;EAC5C,OAAO;GAGL,MAAM,iBADWE,0BAAAA,gBAAgB,YACH,CAAC,CAAC,kBAAkB,iBAAiB,UAAU;GAE7E,IAAI,CAAC,gBACH,MAAM,IAAI,MAAM,qBAAqB,iBAAiB,YAAY;GAIpE,IAAI,SAAS,iBAAiB;GAC9B,IAAI,CAAC,QAAQ;IACX,MAAM,eAAe,eAAe;IACpC,IAAI,MAAM,QAAQ,YAAY,GAE5B,KAAK,MAAM,UAAU,cAAc;KACjC,SAAS,QAAQ,IAAI;KACrB,IAAI,QAAQ;IACd;SAEA,SAAS,QAAQ,IAAI;GAEzB;GAEA,IAAI,CAAC,QAAQ;IACX,MAAM,gBAAgB,MAAM,QAAQ,eAAe,YAAY,IAC3D,eAAe,aAAa,KAAK,MAAM,IACvC,eAAe;IACnB,MAAM,IAAI,MAAM,kCAAkC,iBAAiB,WAAW,QAAQ,eAAe;GACvG;GAGA,IAAI,iBAAiB,eAAe,UAClC,KAAK,gBAAgBC,aAAAA,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,iBAAiB,OAAO;QAChF,IAAI,iBAAiB,eAAe,UACzC,KAAK,gBAAgBC,aAAAA,yBAAyB,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,iBAAiB,OAAO;QAC5F;IAEL,IAAI,CAAC,eAAe,KAClB,MAAM,IAAI,MAAM,YAAY,iBAAiB,WAAW,gCAAgC;IAE1F,KAAK,gBAAgBJ,aAAAA,uBAAuB;KAC1C,MAAM,iBAAiB;KACvB;KACA,SAAS,eAAe;IAC1B,CAAC,CAAC,CAAC,eAAe,iBAAiB,OAAO;GAC5C;EACF;EAGA,IAAI,KAAK,cAAc,yBAAyB,KAAA,GAC9C,KAAK,uBAAuB,KAAK,cAAc;EAEjD,IAAI,KAAK,cAAc,0BAA0B,KAAA,GAC/C,KAAK,wBAAwB,KAAK,cAAc;CAEpD;CAEA,MAAM,QACJ,MACkE;EAElE,IAAI;EACJ,IAAI,KAAK,SACP,UAAU,OAAO,YACf,OAAO,QAAQ,KAAK,OAAO,CAAC,CAAC,QAAQ,UAAqC,MAAM,OAAO,KAAA,CAAS,CAClG;EAEF,MAAM,SAAS,MAAM,KAAK,cAAc,QAAQ;GAAE,GAAG;GAAM;EAAQ,CAAC;EAGpE,MAAM,WAAY,OAAoC,YAAY,CAAC;EACnE,OAAO;GAAE,GAAG;GAAQ;EAAS;CAC/B;AACF"}