{"version":3,"sources":["../src/errors.ts","../src/container/ca.ts","../src/container/index.ts","../src/agents/index.ts","../src/approvals/index.ts","../src/provisions/index.ts","../src/client.ts"],"sourcesContent":["export class OneCLIError extends Error {\n  constructor(message: string) {\n    super(message);\n    this.name = \"OneCLIError\";\n  }\n}\n\nexport class OneCLIRequestError extends Error {\n  public readonly url: string;\n  public readonly statusCode: number;\n\n  constructor(\n    message: string,\n    requestData: { url: string; statusCode: number },\n  ) {\n    super(\n      `[URL=${requestData.url}] [StatusCode=${requestData.statusCode}] ${message}`,\n    );\n    this.name = \"OneCLIRequestError\";\n    this.url = requestData.url;\n    this.statusCode = requestData.statusCode;\n  }\n}\n\nexport function toOneCLIError(error: unknown): OneCLIError | OneCLIRequestError {\n  if (error instanceof OneCLIError || error instanceof OneCLIRequestError) {\n    return error;\n  }\n\n  if (error instanceof Error) {\n    return new OneCLIError(error.message);\n  }\n\n  return new OneCLIError(String(error));\n}\n","import { readFileSync, writeFileSync } from \"fs\";\nimport { tmpdir } from \"os\";\nimport { join } from \"path\";\n\n/** Host-side system CA bundle locations (in priority order). */\nconst SYSTEM_CA_PATHS = [\n  \"/etc/ssl/cert.pem\", // macOS\n  \"/etc/ssl/certs/ca-certificates.crt\", // Debian / Ubuntu\n  \"/etc/pki/tls/certs/ca-bundle.crt\", // RHEL / CentOS / Fedora\n];\n\n/**\n * Write the proxy CA certificate PEM to a temp file on the host.\n * Returns the path to the written file.\n */\nexport function writeCaCertificate(caCertificate: string): string {\n  const outPath = join(tmpdir(), \"onecli-proxy-ca.pem\");\n  writeFileSync(outPath, caCertificate);\n  return outPath;\n}\n\n/**\n * Build a combined CA bundle (system CAs + OneCLI proxy CA) on the host.\n * Returns the path to the combined file, or `null` on failure.\n */\nexport function buildCombinedCaBundle(caCertificate: string): string | null {\n  for (const sysPath of SYSTEM_CA_PATHS) {\n    try {\n      const sysCa = readFileSync(sysPath, \"utf8\");\n      const combined = sysCa.trimEnd() + \"\\n\" + caCertificate.trimEnd() + \"\\n\";\n      const outPath = join(tmpdir(), \"onecli-combined-ca.pem\");\n      writeFileSync(outPath, combined);\n      return outPath;\n    } catch {\n      continue;\n    }\n  }\n\n  return null;\n}\n","import { OneCLIError, OneCLIRequestError, toOneCLIError } from \"../errors.js\";\nimport { writeCaCertificate, buildCombinedCaBundle } from \"./ca.js\";\nimport type { ApplyContainerConfigOptions, ContainerConfig } from \"./types.js\";\n\nexport class ContainerClient {\n  private baseUrl: string;\n  private apiKey: string;\n  private timeout: number;\n\n  constructor(baseUrl: string, apiKey: string, timeout: number) {\n    this.baseUrl = baseUrl.replace(/\\/+$/, \"\");\n    this.apiKey = apiKey;\n    this.timeout = timeout;\n  }\n\n  /**\n   * Fetch the gateway skill markdown from OneCLI.\n   */\n  getGatewaySkill = async (): Promise<string> => {\n    const url = `${this.baseUrl}/api/skill/gateway`;\n    try {\n      const headers: Record<string, string> = {};\n      if (this.apiKey) {\n        headers[\"Authorization\"] = `Bearer ${this.apiKey}`;\n      }\n\n      const res = await fetch(url, {\n        headers,\n        signal: AbortSignal.timeout(this.timeout),\n      });\n\n      if (!res.ok) {\n        throw new OneCLIRequestError(\n          `OneCLI returned ${res.status} ${res.statusText}`,\n          { url, statusCode: res.status },\n        );\n      }\n\n      return await res.text();\n    } catch (error) {\n      if (\n        error instanceof OneCLIError ||\n        error instanceof OneCLIRequestError\n      ) {\n        throw error;\n      }\n      throw toOneCLIError(error);\n    }\n  };\n\n  /**\n   * Fetch the raw container configuration from OneCLI.\n   */\n  getContainerConfig = async (agent?: string): Promise<ContainerConfig> => {\n    const url = agent\n      ? `${this.baseUrl}/api/container-config?agent=${encodeURIComponent(agent)}`\n      : `${this.baseUrl}/api/container-config`;\n\n    try {\n      const headers: Record<string, string> = {};\n      if (this.apiKey) {\n        headers[\"Authorization\"] = `Bearer ${this.apiKey}`;\n      }\n\n      const res = await fetch(url, {\n        headers,\n        signal: AbortSignal.timeout(this.timeout),\n      });\n\n      if (!res.ok) {\n        throw new OneCLIRequestError(\n          `OneCLI returned ${res.status} ${res.statusText}`,\n          { url, statusCode: res.status },\n        );\n      }\n\n      return (await res.json()) as ContainerConfig;\n    } catch (error) {\n      if (\n        error instanceof OneCLIError ||\n        error instanceof OneCLIRequestError\n      ) {\n        throw error;\n      }\n      throw toOneCLIError(error);\n    }\n  };\n\n  /**\n   * Fetch the container config from OneCLI and push the corresponding\n   * `-e` and `-v` flags onto the Docker `run` argument array.\n   *\n   * Returns `true` if OneCLI was reachable and config was applied,\n   * `false` otherwise (graceful degradation).\n   */\n  applyContainerConfig = async (\n    args: string[],\n    options?: ApplyContainerConfigOptions,\n  ): Promise<boolean> => {\n    const { combineCaBundle = true, addHostMapping = true, agent } =\n      options ?? {};\n\n    let config: ContainerConfig;\n    try {\n      config = await this.getContainerConfig(agent);\n    } catch {\n      return false;\n    }\n\n    // Inject server-controlled environment variables\n    for (const [key, value] of Object.entries(config.env)) {\n      args.push(\"-e\", `${key}=${value}`);\n    }\n\n    // Write CA certificate to host temp file and mount into container\n    const hostCaPath = writeCaCertificate(config.caCertificate);\n    args.push(\n      \"-v\",\n      `${hostCaPath}:${config.caCertificateContainerPath}:ro`,\n    );\n\n    // Build combined CA bundle for system-wide trust (curl, Python, Go, etc.)\n    if (combineCaBundle) {\n      const combinedPath = buildCombinedCaBundle(config.caCertificate);\n      if (combinedPath) {\n        args.push(\"-e\", \"SSL_CERT_FILE=/tmp/onecli-combined-ca.pem\");\n        // DENO_CERT: Deno does not respect SSL_CERT_FILE, it has its own env var\n        args.push(\"-e\", \"DENO_CERT=/tmp/onecli-combined-ca.pem\");\n        args.push(\"-v\", `${combinedPath}:/tmp/onecli-combined-ca.pem:ro`);\n      }\n    }\n\n    // On Linux, host.docker.internal needs explicit mapping.\n    if (addHostMapping && process.platform === \"linux\") {\n      args.push(\"--add-host\", \"host.docker.internal:host-gateway\");\n    }\n\n    return true;\n  };\n}\n","import {\n  OneCLIError,\n  OneCLIRequestError,\n  toOneCLIError,\n} from \"../errors.js\";\nimport type {\n  CreateAgentInput,\n  CreateAgentResponse,\n  EnsureAgentResponse,\n} from \"./types.js\";\n\nexport class AgentsClient {\n  private baseUrl: string;\n  private apiKey: string;\n  private timeout: number;\n\n  constructor(baseUrl: string, apiKey: string, timeout: number) {\n    this.baseUrl = baseUrl.replace(/\\/+$/, \"\");\n    this.apiKey = apiKey;\n    this.timeout = timeout;\n  }\n\n  /**\n   * Create a new agent.\n   */\n  createAgent = async (\n    input: CreateAgentInput,\n  ): Promise<CreateAgentResponse> => {\n    const url = `${this.baseUrl}/api/agents`;\n\n    const headers: Record<string, string> = {\n      \"Content-Type\": \"application/json\",\n    };\n    if (this.apiKey) {\n      headers[\"Authorization\"] = `Bearer ${this.apiKey}`;\n    }\n\n    try {\n      const res = await fetch(url, {\n        method: \"POST\",\n        headers,\n        body: JSON.stringify(input),\n        signal: AbortSignal.timeout(this.timeout),\n      });\n\n      if (!res.ok) {\n        throw new OneCLIRequestError(\n          `OneCLI returned ${res.status} ${res.statusText}`,\n          { url, statusCode: res.status },\n        );\n      }\n\n      return (await res.json()) as CreateAgentResponse;\n    } catch (error) {\n      if (\n        error instanceof OneCLIError ||\n        error instanceof OneCLIRequestError\n      ) {\n        throw error;\n      }\n      throw toOneCLIError(error);\n    }\n  };\n\n  /**\n   * Ensure an agent exists. Creates it if missing, returns normally if it already exists.\n   * Unlike `createAgent`, this method treats a 409 conflict as success.\n   */\n  ensureAgent = async (\n    input: CreateAgentInput,\n  ): Promise<EnsureAgentResponse> => {\n    try {\n      await this.createAgent(input);\n      return { name: input.name, identifier: input.identifier, created: true };\n    } catch (error) {\n      if (error instanceof OneCLIRequestError && error.statusCode === 409) {\n        return {\n          name: input.name,\n          identifier: input.identifier,\n          created: false,\n        };\n      }\n      throw error;\n    }\n  };\n}\n","import { OneCLIRequestError } from \"../errors.js\";\nimport type { ApprovalRequest, ManualApprovalCallback } from \"./types.js\";\n\n/** Internal response shape from the gateway long-poll endpoint. */\ninterface PollResponse {\n  requests: ApprovalRequest[];\n  timeoutSeconds: number;\n}\n\nexport class ApprovalClient {\n  private baseUrl: string;\n  private apiKey: string;\n  private gatewayUrl: string | null;\n  private running = false;\n  private abortController: AbortController | null = null;\n\n  /**\n   * Tracks approval IDs currently being processed by a callback.\n   * Prevents duplicate callback invocations for the same request\n   * when the poll returns it again before the decision is submitted.\n   */\n  private inFlight = new Set<string>();\n\n  constructor(baseUrl: string, apiKey: string, gatewayUrl: string | null) {\n    this.baseUrl = baseUrl.replace(/\\/+$/, \"\");\n    this.apiKey = apiKey;\n    this.gatewayUrl = gatewayUrl;\n  }\n\n  /**\n   * Resolve the gateway URL from the web app.\n   * Called once on first poll, then cached.\n   */\n  private async resolveGatewayUrl(): Promise<string> {\n    if (this.gatewayUrl) return this.gatewayUrl;\n\n    const url = `${this.baseUrl}/api/gateway-url`;\n    const res = await fetch(url, {\n      headers: { Authorization: `Bearer ${this.apiKey}` },\n      signal: AbortSignal.timeout(5000),\n    });\n\n    if (!res.ok) {\n      throw new OneCLIRequestError(\"Failed to resolve gateway URL\", {\n        url,\n        statusCode: res.status,\n      });\n    }\n\n    const data = (await res.json()) as { url: string };\n    this.gatewayUrl = data.url.replace(/\\/+$/, \"\");\n    return this.gatewayUrl;\n  }\n\n  /**\n   * Start the long-polling loop. Runs until stop() is called.\n   *\n   * Dispatches callbacks concurrently — multiple approvals are handled\n   * in parallel without blocking each other or the polling loop.\n   * Each approval ID is tracked in `inFlight` to prevent duplicate\n   * callback invocations. On failure (callback throws or decision\n   * submission fails), the ID is removed from `inFlight` and the\n   * approval will be retried on the next poll cycle.\n   */\n  async start(callback: ManualApprovalCallback): Promise<void> {\n    this.running = true;\n    const gatewayUrl = await this.resolveGatewayUrl();\n\n    while (this.running) {\n      try {\n        const poll = await this.poll(gatewayUrl);\n\n        for (const request of poll.requests) {\n          this.inFlight.add(request.id);\n          request.timeoutSeconds = poll.timeoutSeconds;\n\n          this.handleRequest(gatewayUrl, request, callback);\n        }\n      } catch {\n        if (!this.running) return;\n        await this.sleep(5000);\n      }\n    }\n  }\n\n  /**\n   * Process a single approval: call the callback, submit the decision.\n   * Runs independently — multiple calls execute concurrently.\n   * On any failure, removes from inFlight so the next poll retries.\n   */\n  private handleRequest(\n    gatewayUrl: string,\n    request: ApprovalRequest,\n    callback: ManualApprovalCallback,\n  ): void {\n    (async () => {\n      try {\n        const decision = await callback(request);\n        await this.submitDecision(gatewayUrl, request.id, decision);\n      } finally {\n        this.inFlight.delete(request.id);\n      }\n    })().catch(() => {\n      this.inFlight.delete(request.id);\n    });\n  }\n\n  /** Stop the polling loop and abort any in-flight poll request. */\n  stop(): void {\n    this.running = false;\n    this.abortController?.abort();\n  }\n\n  /**\n   * Long-poll the gateway for pending approvals.\n   * Server holds up to 30s; we set a 35s client timeout.\n   */\n  private async poll(gatewayUrl: string): Promise<PollResponse> {\n    this.abortController = new AbortController();\n\n    let url = `${gatewayUrl}/api/approvals/pending`;\n    if (this.inFlight.size > 0) {\n      const exclude = [...this.inFlight].join(\",\");\n      url += `?exclude=${encodeURIComponent(exclude)}`;\n    }\n    const res = await fetch(url, {\n      headers: { Authorization: `Bearer ${this.apiKey}` },\n      signal: AbortSignal.any([\n        this.abortController.signal,\n        AbortSignal.timeout(35_000),\n      ]),\n    });\n\n    if (!res.ok) {\n      throw new OneCLIRequestError(\"Approval poll failed\", {\n        url,\n        statusCode: res.status,\n      });\n    }\n\n    return (await res.json()) as PollResponse;\n  }\n\n  /** Submit a decision for a single approval request. */\n  private async submitDecision(\n    gatewayUrl: string,\n    id: string,\n    decision: string,\n  ): Promise<void> {\n    const url = `${gatewayUrl}/api/approvals/${encodeURIComponent(id)}/decision`;\n\n    const res = await fetch(url, {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: `Bearer ${this.apiKey}`,\n      },\n      body: JSON.stringify({ decision }),\n      signal: AbortSignal.timeout(5000),\n    });\n\n    if (!res.ok && res.status !== 410) {\n      throw new OneCLIRequestError(\"Decision submission failed\", {\n        url,\n        statusCode: res.status,\n      });\n    }\n  }\n\n  private sleep(ms: number): Promise<void> {\n    return new Promise((resolve) => setTimeout(resolve, ms));\n  }\n}\n","import {\n  OneCLIError,\n  OneCLIRequestError,\n  toOneCLIError,\n} from \"../errors.js\";\nimport type { ProvisionUserInput, ProvisionUserResponse } from \"./types.js\";\n\nexport class ProvisionClient {\n  private baseUrl: string;\n  private apiKey: string;\n  private timeout: number;\n\n  constructor(baseUrl: string, apiKey: string, timeout: number) {\n    this.baseUrl = baseUrl.replace(/\\/+$/, \"\");\n    this.apiKey = apiKey;\n    this.timeout = timeout;\n  }\n\n  /**\n   * Provision a new user in your organization.\n   * Pre-creates a user account, project, and API key.\n   * Returns a claim URL and API key. Requires admin/owner role.\n   */\n  provisionUser = async (\n    input?: ProvisionUserInput,\n  ): Promise<ProvisionUserResponse> => {\n    const url = `${this.baseUrl}/api/team/provisions`;\n\n    const headers: Record<string, string> = {\n      \"Content-Type\": \"application/json\",\n    };\n    if (this.apiKey) {\n      headers[\"Authorization\"] = `Bearer ${this.apiKey}`;\n    }\n\n    try {\n      const res = await fetch(url, {\n        method: \"POST\",\n        headers,\n        body: JSON.stringify(input ?? {}),\n        signal: AbortSignal.timeout(this.timeout),\n      });\n\n      if (!res.ok) {\n        if (res.status === 404) {\n          throw new OneCLIError(\n            \"User provisioning requires OneCLI Cloud. See https://onecli.sh for details.\",\n          );\n        }\n        throw new OneCLIRequestError(\n          `OneCLI returned ${res.status} ${res.statusText}`,\n          { url, statusCode: res.status },\n        );\n      }\n\n      return (await res.json()) as ProvisionUserResponse;\n    } catch (error) {\n      if (\n        error instanceof OneCLIError ||\n        error instanceof OneCLIRequestError\n      ) {\n        throw error;\n      }\n      throw toOneCLIError(error);\n    }\n  };\n}\n","import { ContainerClient } from \"./container/index.js\";\nimport { AgentsClient } from \"./agents/index.js\";\nimport { ApprovalClient } from \"./approvals/index.js\";\nimport { ProvisionClient } from \"./provisions/index.js\";\nimport type { OneCLIOptions } from \"./types.js\";\nimport type {\n  ApplyContainerConfigOptions,\n  ContainerConfig,\n} from \"./container/types.js\";\nimport type {\n  CreateAgentInput,\n  CreateAgentResponse,\n  EnsureAgentResponse,\n} from \"./agents/types.js\";\nimport type {\n  ManualApprovalCallback,\n  ManualApprovalHandle,\n} from \"./approvals/types.js\";\nimport type {\n  ProvisionUserInput,\n  ProvisionUserResponse,\n} from \"./provisions/types.js\";\n\nconst DEFAULT_URL = \"https://app.onecli.sh\";\nconst DEFAULT_TIMEOUT = 5000;\n\nexport class OneCLI {\n  private containerClient: ContainerClient;\n  private agentsClient: AgentsClient;\n  private approvalClient: ApprovalClient;\n  private provisionClient: ProvisionClient;\n\n  constructor(options: OneCLIOptions = {}) {\n    const apiKey = options.apiKey ?? process.env.ONECLI_API_KEY ?? \"\";\n    const url = options.url ?? process.env.ONECLI_URL ?? DEFAULT_URL;\n    const timeout = options.timeout ?? DEFAULT_TIMEOUT;\n    const gatewayUrl =\n      options.gatewayUrl ?? process.env.ONECLI_GATEWAY_URL ?? null;\n\n    this.containerClient = new ContainerClient(url, apiKey, timeout);\n    this.agentsClient = new AgentsClient(url, apiKey, timeout);\n    this.approvalClient = new ApprovalClient(url, apiKey, gatewayUrl);\n    this.provisionClient = new ProvisionClient(url, apiKey, timeout);\n  }\n\n  /**\n   * Fetch the gateway skill markdown from OneCLI.\n   */\n  getGatewaySkill = (): Promise<string> => {\n    return this.containerClient.getGatewaySkill();\n  };\n\n  /**\n   * Fetch the raw container configuration from OneCLI.\n   */\n  getContainerConfig = (agent?: string): Promise<ContainerConfig> => {\n    return this.containerClient.getContainerConfig(agent);\n  };\n\n  /**\n   * Fetch config and apply `-e` / `-v` flags to a Docker `run` argument array.\n   * Returns `true` on success, `false` on failure (graceful degradation).\n   */\n  applyContainerConfig = (\n    args: string[],\n    options?: ApplyContainerConfigOptions,\n  ): Promise<boolean> => {\n    return this.containerClient.applyContainerConfig(args, options);\n  };\n\n  /**\n   * Create a new agent.\n   */\n  createAgent = (input: CreateAgentInput): Promise<CreateAgentResponse> => {\n    return this.agentsClient.createAgent(input);\n  };\n\n  /**\n   * Ensure an agent exists. Creates it if missing, returns normally if it already exists.\n   */\n  ensureAgent = (input: CreateAgentInput): Promise<EnsureAgentResponse> => {\n    return this.agentsClient.ensureAgent(input);\n  };\n\n  /**\n   * Provision a new user in your organization.\n   * Pre-creates a user account, project, and API key.\n   * Returns a claim URL and API key. Requires admin/owner role.\n   */\n  provisionUser = (\n    input?: ProvisionUserInput,\n  ): Promise<ProvisionUserResponse> => {\n    return this.provisionClient.provisionUser(input);\n  };\n\n  /**\n   * Register a callback for manual approval requests.\n   * Starts background long-polling to the gateway. The callback is called\n   * once per pending approval request, concurrently for multiple requests.\n   * Returns a handle to stop polling when shutting down.\n   */\n  configureManualApproval = (\n    callback: ManualApprovalCallback,\n  ): ManualApprovalHandle => {\n    this.approvalClient.start(callback).catch(() => {\n      // Errors handled internally with backoff\n    });\n    return { stop: () => this.approvalClient.stop() };\n  };\n}\n"],"mappings":";AAAO,IAAM,cAAN,cAA0B,MAAM;AAAA,EACrC,YAAY,SAAiB;AAC3B,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,qBAAN,cAAiC,MAAM;AAAA,EAC5B;AAAA,EACA;AAAA,EAEhB,YACE,SACA,aACA;AACA;AAAA,MACE,QAAQ,YAAY,GAAG,iBAAiB,YAAY,UAAU,KAAK,OAAO;AAAA,IAC5E;AACA,SAAK,OAAO;AACZ,SAAK,MAAM,YAAY;AACvB,SAAK,aAAa,YAAY;AAAA,EAChC;AACF;AAEO,SAAS,cAAc,OAAkD;AAC9E,MAAI,iBAAiB,eAAe,iBAAiB,oBAAoB;AACvE,WAAO;AAAA,EACT;AAEA,MAAI,iBAAiB,OAAO;AAC1B,WAAO,IAAI,YAAY,MAAM,OAAO;AAAA,EACtC;AAEA,SAAO,IAAI,YAAY,OAAO,KAAK,CAAC;AACtC;;;AClCA,SAAS,cAAc,qBAAqB;AAC5C,SAAS,cAAc;AACvB,SAAS,YAAY;AAGrB,IAAM,kBAAkB;AAAA,EACtB;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AACF;AAMO,SAAS,mBAAmB,eAA+B;AAChE,QAAM,UAAU,KAAK,OAAO,GAAG,qBAAqB;AACpD,gBAAc,SAAS,aAAa;AACpC,SAAO;AACT;AAMO,SAAS,sBAAsB,eAAsC;AAC1E,aAAW,WAAW,iBAAiB;AACrC,QAAI;AACF,YAAM,QAAQ,aAAa,SAAS,MAAM;AAC1C,YAAM,WAAW,MAAM,QAAQ,IAAI,OAAO,cAAc,QAAQ,IAAI;AACpE,YAAM,UAAU,KAAK,OAAO,GAAG,wBAAwB;AACvD,oBAAc,SAAS,QAAQ;AAC/B,aAAO;AAAA,IACT,QAAQ;AACN;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;;;ACnCO,IAAM,kBAAN,MAAsB;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EAER,YAAY,SAAiB,QAAgB,SAAiB;AAC5D,SAAK,UAAU,QAAQ,QAAQ,QAAQ,EAAE;AACzC,SAAK,SAAS;AACd,SAAK,UAAU;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAkB,YAA6B;AAC7C,UAAM,MAAM,GAAG,KAAK,OAAO;AAC3B,QAAI;AACF,YAAM,UAAkC,CAAC;AACzC,UAAI,KAAK,QAAQ;AACf,gBAAQ,eAAe,IAAI,UAAU,KAAK,MAAM;AAAA,MAClD;AAEA,YAAM,MAAM,MAAM,MAAM,KAAK;AAAA,QAC3B;AAAA,QACA,QAAQ,YAAY,QAAQ,KAAK,OAAO;AAAA,MAC1C,CAAC;AAED,UAAI,CAAC,IAAI,IAAI;AACX,cAAM,IAAI;AAAA,UACR,mBAAmB,IAAI,MAAM,IAAI,IAAI,UAAU;AAAA,UAC/C,EAAE,KAAK,YAAY,IAAI,OAAO;AAAA,QAChC;AAAA,MACF;AAEA,aAAO,MAAM,IAAI,KAAK;AAAA,IACxB,SAAS,OAAO;AACd,UACE,iBAAiB,eACjB,iBAAiB,oBACjB;AACA,cAAM;AAAA,MACR;AACA,YAAM,cAAc,KAAK;AAAA,IAC3B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,qBAAqB,OAAO,UAA6C;AACvE,UAAM,MAAM,QACR,GAAG,KAAK,OAAO,+BAA+B,mBAAmB,KAAK,CAAC,KACvE,GAAG,KAAK,OAAO;AAEnB,QAAI;AACF,YAAM,UAAkC,CAAC;AACzC,UAAI,KAAK,QAAQ;AACf,gBAAQ,eAAe,IAAI,UAAU,KAAK,MAAM;AAAA,MAClD;AAEA,YAAM,MAAM,MAAM,MAAM,KAAK;AAAA,QAC3B;AAAA,QACA,QAAQ,YAAY,QAAQ,KAAK,OAAO;AAAA,MAC1C,CAAC;AAED,UAAI,CAAC,IAAI,IAAI;AACX,cAAM,IAAI;AAAA,UACR,mBAAmB,IAAI,MAAM,IAAI,IAAI,UAAU;AAAA,UAC/C,EAAE,KAAK,YAAY,IAAI,OAAO;AAAA,QAChC;AAAA,MACF;AAEA,aAAQ,MAAM,IAAI,KAAK;AAAA,IACzB,SAAS,OAAO;AACd,UACE,iBAAiB,eACjB,iBAAiB,oBACjB;AACA,cAAM;AAAA,MACR;AACA,YAAM,cAAc,KAAK;AAAA,IAC3B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,uBAAuB,OACrB,MACA,YACqB;AACrB,UAAM,EAAE,kBAAkB,MAAM,iBAAiB,MAAM,MAAM,IAC3D,WAAW,CAAC;AAEd,QAAI;AACJ,QAAI;AACF,eAAS,MAAM,KAAK,mBAAmB,KAAK;AAAA,IAC9C,QAAQ;AACN,aAAO;AAAA,IACT;AAGA,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,OAAO,GAAG,GAAG;AACrD,WAAK,KAAK,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE;AAAA,IACnC;AAGA,UAAM,aAAa,mBAAmB,OAAO,aAAa;AAC1D,SAAK;AAAA,MACH;AAAA,MACA,GAAG,UAAU,IAAI,OAAO,0BAA0B;AAAA,IACpD;AAGA,QAAI,iBAAiB;AACnB,YAAM,eAAe,sBAAsB,OAAO,aAAa;AAC/D,UAAI,cAAc;AAChB,aAAK,KAAK,MAAM,2CAA2C;AAE3D,aAAK,KAAK,MAAM,uCAAuC;AACvD,aAAK,KAAK,MAAM,GAAG,YAAY,iCAAiC;AAAA,MAClE;AAAA,IACF;AAGA,QAAI,kBAAkB,QAAQ,aAAa,SAAS;AAClD,WAAK,KAAK,cAAc,mCAAmC;AAAA,IAC7D;AAEA,WAAO;AAAA,EACT;AACF;;;AChIO,IAAM,eAAN,MAAmB;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EAER,YAAY,SAAiB,QAAgB,SAAiB;AAC5D,SAAK,UAAU,QAAQ,QAAQ,QAAQ,EAAE;AACzC,SAAK,SAAS;AACd,SAAK,UAAU;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA,EAKA,cAAc,OACZ,UACiC;AACjC,UAAM,MAAM,GAAG,KAAK,OAAO;AAE3B,UAAM,UAAkC;AAAA,MACtC,gBAAgB;AAAA,IAClB;AACA,QAAI,KAAK,QAAQ;AACf,cAAQ,eAAe,IAAI,UAAU,KAAK,MAAM;AAAA,IAClD;AAEA,QAAI;AACF,YAAM,MAAM,MAAM,MAAM,KAAK;AAAA,QAC3B,QAAQ;AAAA,QACR;AAAA,QACA,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,QAAQ,YAAY,QAAQ,KAAK,OAAO;AAAA,MAC1C,CAAC;AAED,UAAI,CAAC,IAAI,IAAI;AACX,cAAM,IAAI;AAAA,UACR,mBAAmB,IAAI,MAAM,IAAI,IAAI,UAAU;AAAA,UAC/C,EAAE,KAAK,YAAY,IAAI,OAAO;AAAA,QAChC;AAAA,MACF;AAEA,aAAQ,MAAM,IAAI,KAAK;AAAA,IACzB,SAAS,OAAO;AACd,UACE,iBAAiB,eACjB,iBAAiB,oBACjB;AACA,cAAM;AAAA,MACR;AACA,YAAM,cAAc,KAAK;AAAA,IAC3B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,cAAc,OACZ,UACiC;AACjC,QAAI;AACF,YAAM,KAAK,YAAY,KAAK;AAC5B,aAAO,EAAE,MAAM,MAAM,MAAM,YAAY,MAAM,YAAY,SAAS,KAAK;AAAA,IACzE,SAAS,OAAO;AACd,UAAI,iBAAiB,sBAAsB,MAAM,eAAe,KAAK;AACnE,eAAO;AAAA,UACL,MAAM,MAAM;AAAA,UACZ,YAAY,MAAM;AAAA,UAClB,SAAS;AAAA,QACX;AAAA,MACF;AACA,YAAM;AAAA,IACR;AAAA,EACF;AACF;;;AC5EO,IAAM,iBAAN,MAAqB;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,kBAA0C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO1C,WAAW,oBAAI,IAAY;AAAA,EAEnC,YAAY,SAAiB,QAAgB,YAA2B;AACtE,SAAK,UAAU,QAAQ,QAAQ,QAAQ,EAAE;AACzC,SAAK,SAAS;AACd,SAAK,aAAa;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAc,oBAAqC;AACjD,QAAI,KAAK,WAAY,QAAO,KAAK;AAEjC,UAAM,MAAM,GAAG,KAAK,OAAO;AAC3B,UAAM,MAAM,MAAM,MAAM,KAAK;AAAA,MAC3B,SAAS,EAAE,eAAe,UAAU,KAAK,MAAM,GAAG;AAAA,MAClD,QAAQ,YAAY,QAAQ,GAAI;AAAA,IAClC,CAAC;AAED,QAAI,CAAC,IAAI,IAAI;AACX,YAAM,IAAI,mBAAmB,iCAAiC;AAAA,QAC5D;AAAA,QACA,YAAY,IAAI;AAAA,MAClB,CAAC;AAAA,IACH;AAEA,UAAM,OAAQ,MAAM,IAAI,KAAK;AAC7B,SAAK,aAAa,KAAK,IAAI,QAAQ,QAAQ,EAAE;AAC7C,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,MAAM,UAAiD;AAC3D,SAAK,UAAU;AACf,UAAM,aAAa,MAAM,KAAK,kBAAkB;AAEhD,WAAO,KAAK,SAAS;AACnB,UAAI;AACF,cAAM,OAAO,MAAM,KAAK,KAAK,UAAU;AAEvC,mBAAW,WAAW,KAAK,UAAU;AACnC,eAAK,SAAS,IAAI,QAAQ,EAAE;AAC5B,kBAAQ,iBAAiB,KAAK;AAE9B,eAAK,cAAc,YAAY,SAAS,QAAQ;AAAA,QAClD;AAAA,MACF,QAAQ;AACN,YAAI,CAAC,KAAK,QAAS;AACnB,cAAM,KAAK,MAAM,GAAI;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,cACN,YACA,SACA,UACM;AACN,KAAC,YAAY;AACX,UAAI;AACF,cAAM,WAAW,MAAM,SAAS,OAAO;AACvC,cAAM,KAAK,eAAe,YAAY,QAAQ,IAAI,QAAQ;AAAA,MAC5D,UAAE;AACA,aAAK,SAAS,OAAO,QAAQ,EAAE;AAAA,MACjC;AAAA,IACF,GAAG,EAAE,MAAM,MAAM;AACf,WAAK,SAAS,OAAO,QAAQ,EAAE;AAAA,IACjC,CAAC;AAAA,EACH;AAAA;AAAA,EAGA,OAAa;AACX,SAAK,UAAU;AACf,SAAK,iBAAiB,MAAM;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAc,KAAK,YAA2C;AAC5D,SAAK,kBAAkB,IAAI,gBAAgB;AAE3C,QAAI,MAAM,GAAG,UAAU;AACvB,QAAI,KAAK,SAAS,OAAO,GAAG;AAC1B,YAAM,UAAU,CAAC,GAAG,KAAK,QAAQ,EAAE,KAAK,GAAG;AAC3C,aAAO,YAAY,mBAAmB,OAAO,CAAC;AAAA,IAChD;AACA,UAAM,MAAM,MAAM,MAAM,KAAK;AAAA,MAC3B,SAAS,EAAE,eAAe,UAAU,KAAK,MAAM,GAAG;AAAA,MAClD,QAAQ,YAAY,IAAI;AAAA,QACtB,KAAK,gBAAgB;AAAA,QACrB,YAAY,QAAQ,IAAM;AAAA,MAC5B,CAAC;AAAA,IACH,CAAC;AAED,QAAI,CAAC,IAAI,IAAI;AACX,YAAM,IAAI,mBAAmB,wBAAwB;AAAA,QACnD;AAAA,QACA,YAAY,IAAI;AAAA,MAClB,CAAC;AAAA,IACH;AAEA,WAAQ,MAAM,IAAI,KAAK;AAAA,EACzB;AAAA;AAAA,EAGA,MAAc,eACZ,YACA,IACA,UACe;AACf,UAAM,MAAM,GAAG,UAAU,kBAAkB,mBAAmB,EAAE,CAAC;AAEjE,UAAM,MAAM,MAAM,MAAM,KAAK;AAAA,MAC3B,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,eAAe,UAAU,KAAK,MAAM;AAAA,MACtC;AAAA,MACA,MAAM,KAAK,UAAU,EAAE,SAAS,CAAC;AAAA,MACjC,QAAQ,YAAY,QAAQ,GAAI;AAAA,IAClC,CAAC;AAED,QAAI,CAAC,IAAI,MAAM,IAAI,WAAW,KAAK;AACjC,YAAM,IAAI,mBAAmB,8BAA8B;AAAA,QACzD;AAAA,QACA,YAAY,IAAI;AAAA,MAClB,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEQ,MAAM,IAA2B;AACvC,WAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AAAA,EACzD;AACF;;;ACrKO,IAAM,kBAAN,MAAsB;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EAER,YAAY,SAAiB,QAAgB,SAAiB;AAC5D,SAAK,UAAU,QAAQ,QAAQ,QAAQ,EAAE;AACzC,SAAK,SAAS;AACd,SAAK,UAAU;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,gBAAgB,OACd,UACmC;AACnC,UAAM,MAAM,GAAG,KAAK,OAAO;AAE3B,UAAM,UAAkC;AAAA,MACtC,gBAAgB;AAAA,IAClB;AACA,QAAI,KAAK,QAAQ;AACf,cAAQ,eAAe,IAAI,UAAU,KAAK,MAAM;AAAA,IAClD;AAEA,QAAI;AACF,YAAM,MAAM,MAAM,MAAM,KAAK;AAAA,QAC3B,QAAQ;AAAA,QACR;AAAA,QACA,MAAM,KAAK,UAAU,SAAS,CAAC,CAAC;AAAA,QAChC,QAAQ,YAAY,QAAQ,KAAK,OAAO;AAAA,MAC1C,CAAC;AAED,UAAI,CAAC,IAAI,IAAI;AACX,YAAI,IAAI,WAAW,KAAK;AACtB,gBAAM,IAAI;AAAA,YACR;AAAA,UACF;AAAA,QACF;AACA,cAAM,IAAI;AAAA,UACR,mBAAmB,IAAI,MAAM,IAAI,IAAI,UAAU;AAAA,UAC/C,EAAE,KAAK,YAAY,IAAI,OAAO;AAAA,QAChC;AAAA,MACF;AAEA,aAAQ,MAAM,IAAI,KAAK;AAAA,IACzB,SAAS,OAAO;AACd,UACE,iBAAiB,eACjB,iBAAiB,oBACjB;AACA,cAAM;AAAA,MACR;AACA,YAAM,cAAc,KAAK;AAAA,IAC3B;AAAA,EACF;AACF;;;AC3CA,IAAM,cAAc;AACpB,IAAM,kBAAkB;AAEjB,IAAM,SAAN,MAAa;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAER,YAAY,UAAyB,CAAC,GAAG;AACvC,UAAM,SAAS,QAAQ,UAAU,QAAQ,IAAI,kBAAkB;AAC/D,UAAM,MAAM,QAAQ,OAAO,QAAQ,IAAI,cAAc;AACrD,UAAM,UAAU,QAAQ,WAAW;AACnC,UAAM,aACJ,QAAQ,cAAc,QAAQ,IAAI,sBAAsB;AAE1D,SAAK,kBAAkB,IAAI,gBAAgB,KAAK,QAAQ,OAAO;AAC/D,SAAK,eAAe,IAAI,aAAa,KAAK,QAAQ,OAAO;AACzD,SAAK,iBAAiB,IAAI,eAAe,KAAK,QAAQ,UAAU;AAChE,SAAK,kBAAkB,IAAI,gBAAgB,KAAK,QAAQ,OAAO;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAkB,MAAuB;AACvC,WAAO,KAAK,gBAAgB,gBAAgB;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA,EAKA,qBAAqB,CAAC,UAA6C;AACjE,WAAO,KAAK,gBAAgB,mBAAmB,KAAK;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,uBAAuB,CACrB,MACA,YACqB;AACrB,WAAO,KAAK,gBAAgB,qBAAqB,MAAM,OAAO;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA,EAKA,cAAc,CAAC,UAA0D;AACvE,WAAO,KAAK,aAAa,YAAY,KAAK;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA,EAKA,cAAc,CAAC,UAA0D;AACvE,WAAO,KAAK,aAAa,YAAY,KAAK;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,gBAAgB,CACd,UACmC;AACnC,WAAO,KAAK,gBAAgB,cAAc,KAAK;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,0BAA0B,CACxB,aACyB;AACzB,SAAK,eAAe,MAAM,QAAQ,EAAE,MAAM,MAAM;AAAA,IAEhD,CAAC;AACD,WAAO,EAAE,MAAM,MAAM,KAAK,eAAe,KAAK,EAAE;AAAA,EAClD;AACF;","names":[]}