{
  "version": 3,
  "sources": ["../../../node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.js", "../../codemirror-lsp/src/index.mts", "../../../node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.mjs", "../../codemirror-lsp/src/jsonRpc/index.mts", "../../codemirror-lsp/src/lsp/conversion.mts"],
  "sourcesContent": ["'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('The listener must be a function');\n  }\n\n  var listener = new EE(fn, context || emitter, once)\n    , evt = prefix ? prefix + event : event;\n\n  if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n  else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n  else emitter._events[evt] = [emitter._events[evt], listener];\n\n  return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n  if (--emitter._eventsCount === 0) emitter._events = new Events();\n  else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n  var evt = prefix ? prefix + event : event\n    , handlers = this._events[evt];\n\n  if (!handlers) return [];\n  if (handlers.fn) return [handlers.fn];\n\n  for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n    ee[i] = handlers[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n  var evt = prefix ? prefix + event : event\n    , listeners = this._events[evt];\n\n  if (!listeners) return 0;\n  if (listeners.fn) return 1;\n  return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    clearEvent(this, evt);\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n      listeners.fn === fn &&\n      (!once || listeners.once) &&\n      (!context || listeners.context === context)\n    ) {\n      clearEvent(this, evt);\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n        listeners[i].fn !== fn ||\n        (once && !listeners[i].once) ||\n        (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else clearEvent(this, evt);\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) clearEvent(this, evt);\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n", "import { linter, type Diagnostic, setDiagnostics } from \"@codemirror/lint\";\nimport { type Extension } from \"@codemirror/state\";\nimport { type EditorView, ViewPlugin, type ViewUpdate } from \"@codemirror/view\";\nimport { EventEmitter } from \"eventemitter3\";\n\n// import { generateLspAutocomplete } from \"./autocompletion.mts\";\nimport { JsonRpc } from \"./jsonRpc/index.mts\";\nimport {\n  type TextDocumentPublishDiagnosticsRequest,\n  getCharacterFromPosition,\n  getDiagnosticSeverity,\n} from \"./lsp/conversion.mts\";\n\n// Export\nexport * from \"./lsp/conversion.mts\";\n\nexport type ServerResponseCallback = (jsonRpc: string) => void;\n\nexport interface LspConfigData {\n  emitServerCommand: ServerResponseCallback;\n}\nexport interface LspConfig {\n  autocompletion?: boolean;\n  onClientCommand: (jsonRpc: string) => void;\n  getData: (data: LspConfigData) => void;\n}\n\nexport function createLsp(config: LspConfig): Extension {\n  const lspBus = new EventEmitter();\n\n  let lspView: EditorView | null = null;\n  let nextVersionId = 0;\n  const { autocompletion = true, onClientCommand, getData } = config;\n  const jsonRpcClient = new JsonRpc();\n\n  class LspPlugin {\n    view: EditorView;\n\n    constructor(view: EditorView) {\n      this.view = view;\n    }\n\n    update(update: ViewUpdate): void {}\n  }\n  ViewPlugin.fromClass(LspPlugin);\n\n  const lspLinter = linter(async (view) => {\n    lspView = view;\n    lspBus.emit(\"view\", view);\n\n    const diagnostics: Diagnostic[] = [];\n    const localVersion = nextVersionId;\n    nextVersionId += 1;\n\n    jsonRpcClient.notify({\n      method: \"textDocument/didChange\",\n      params: {\n        textDocument: {\n          uri: \"file:///whatever\",\n          version: localVersion,\n        },\n        contentChanges: [\n          {\n            text: view.state.doc.toString(),\n          },\n        ],\n      },\n    });\n\n    return diagnostics;\n  }, {});\n\n  jsonRpcClient.on(\"request\", (request) => {\n    onClientCommand(request);\n  });\n\n  const onNotification = (notification: any): void => {\n    switch (notification.method) {\n      case \"textDocument/publishDiagnostics\":\n        onPublishDiagnostics(notification);\n        break;\n    }\n  };\n\n  jsonRpcClient.on(\"notification\", onNotification);\n\n  const onPublishDiagnostics = (\n    notification: TextDocumentPublishDiagnosticsRequest\n  ): void => {\n    console.log(\"onPublishDiagnostics\", notification, lspView);\n    if (lspView == null) {\n      return;\n    }\n\n    const diagnostics: Diagnostic[] = notification.params.diagnostics.map(\n      (diagnostic) => {\n        return {\n          from: getCharacterFromPosition(\n            lspView?.state.doc.toString() ?? \"\",\n            diagnostic.range.start\n          ),\n          to: getCharacterFromPosition(\n            lspView?.state.doc.toString() ?? \"\",\n            diagnostic.range.end\n          ),\n          severity: getDiagnosticSeverity(diagnostic.severity),\n          source: diagnostic.source,\n          message: diagnostic.message,\n        };\n      }\n    );\n\n    console.log(\"diagnostics\", diagnostics);\n    const transitionSpec = setDiagnostics(lspView.state, diagnostics);\n    const transaction = lspView.state.update(transitionSpec);\n    lspView.dispatch(transaction);\n  };\n\n  const emitServerCommand = (jsonRpc: string): void => {\n    const json = JSON.parse(jsonRpc);\n    if (typeof json === \"string\") {\n      throw new Error(\"JSON is string\");\n    }\n\n    if (Array.isArray(json)) {\n      const elements = [];\n      for (const el of json) {\n        if (\"method\" in el) {\n          jsonRpcClient.emit(\"notification\", el);\n        } else {\n          elements.push(el);\n        }\n      }\n\n      jsonRpcClient.emit(\"batch\", elements);\n      return;\n    }\n    if (\"error\" in json) {\n      jsonRpcClient.emit(\"error\", json);\n      return;\n    }\n    if (\"result\" in json) {\n      jsonRpcClient.emit(\"response\", json);\n      return;\n    }\n    if (\"method\" in json) {\n      jsonRpcClient.emit(\"notification\", json);\n      return;\n    }\n\n    throw new Error(\"unknown error\");\n  };\n\n  getData({ emitServerCommand });\n\n  return [\n    lspLinter,\n    ...(autocompletion\n      ? [\n          // generateLspAutocomplete({\n          //   client: jsonRpcClient,\n          //   bus: lspBus,\n          // }),\n        ]\n      : []),\n  ];\n}\n", "import EventEmitter from './index.js'\n\nexport { EventEmitter }\nexport default EventEmitter\n", "import EventEmitter from \"eventemitter3\";\n\nimport { type ServerErrors } from \"./serverErrors.mts\";\n\nconst ResponseErrors = {\n  PARSE_ERROR: -32700,\n  INVALID_REQUEST: -32600,\n  METHOD_NOT_FOUND: -32601,\n  INVALID_PARAMS: -32602,\n  INTERNAL_ERROR: -32603,\n} as const;\ntype ResponseErrorKeys = keyof typeof ResponseErrors;\ntype ResponseErrorValues =\n  | (typeof ResponseErrors)[ResponseErrorKeys]\n  | ServerErrors;\n\nexport interface Request {\n  jsonrpc: \"2.0\";\n  method: string;\n  params: any;\n  id?: string | number | null;\n}\n\ninterface Response {\n  jsonrpc: \"2.0\";\n  id?: string | number | null;\n}\n\nexport interface ResponseSuccess extends Response {\n  result: any;\n}\n\nexport interface ResponseError extends Response {\n  error: {\n    code: ResponseErrorValues;\n    message: string;\n    data?: any;\n  };\n}\n\nexport type Responses = ResponseSuccess | ResponseError;\n\ntype PartialRequest = Omit<Request, \"jsonrpc\" | \"\">;\n\nexport class JsonRpcError extends Error {\n  code: number | string = 0;\n  response: ResponseError | null = null;\n\n  constructor(\n    message?: string,\n    options?: ErrorOptions & { code: number | string; response: ResponseError }\n  ) {\n    const { cause, code, response } = options ?? {};\n\n    super(message, { cause });\n\n    if (code != null) {\n      this.code = code;\n    }\n\n    if (response != null) {\n      this.response = response;\n    }\n  }\n}\n\nexport class JsonRpc extends EventEmitter {\n  _requests = new Map<number, Request>();\n  _lastId = 0;\n\n  send(request: PartialRequest): Promise<ResponseSuccess>;\n  send(request: PartialRequest[]): Promise<Responses[]>;\n  async send(\n    request: PartialRequest | PartialRequest[]\n  ): Promise<ResponseSuccess | Responses[]> {\n    return await new Promise<ResponseSuccess | Responses[]>(\n      (resolve, reject) => {\n        if (Array.isArray(request)) {\n          this._processBatch(request, resolve);\n        } else {\n          this._process(request, resolve, reject);\n        }\n      }\n    );\n  }\n\n  notify(request: PartialRequest): void;\n  notify(request: PartialRequest[]): void;\n  notify(request: PartialRequest | PartialRequest[]): void {\n    if (Array.isArray(request)) {\n      new Promise((resolve) => {\n        this._processBatch(request, resolve);\n      }).catch((err) => {\n        console.error(\"Error while processing batch:\", err);\n      });\n      return;\n    }\n    new Promise((resolve, reject) => {\n      this._process(request, resolve, reject);\n    }).catch((err) => {\n      console.error(\"Error while running process:\", err);\n    });\n  }\n\n  _process(\n    request: PartialRequest,\n    resolve: Parameters<\n      ConstructorParameters<typeof Promise<ResponseSuccess>>[0]\n    >[0],\n    reject: Parameters<\n      ConstructorParameters<typeof Promise<ResponseError>>[0]\n    >[1]\n  ): void {\n    const id = this._lastId;\n    this._lastId += 1;\n\n    const formattedRequest = {\n      jsonrpc: \"2.0\" as const,\n      id,\n      ...request,\n    };\n\n    const removeListeners = (): void => {\n      this.off(\"response\", onResponse);\n      this.off(\"error\", onError);\n    };\n\n    const onResponse = (response: ResponseSuccess): void => {\n      if (response.id === id) {\n        resolve(response);\n        removeListeners();\n      }\n    };\n\n    const onError = (response: ResponseError): void => {\n      if (response.id === id) {\n        const error = new JsonRpcError(response.error.message, {\n          code: response.error.code,\n          response,\n        });\n        reject(error);\n        removeListeners();\n      }\n    };\n\n    this.on(\"response\", onResponse);\n    this.on(\"error\", onError);\n\n    this.emit(\"request\", JSON.stringify(formattedRequest));\n  }\n\n  _processBatch(\n    request: PartialRequest[],\n    resolve: Parameters<\n      ConstructorParameters<typeof Promise<Responses[]>>[0]\n    >[0]\n  ): void {\n    const requests: Request[] = request.map((request) => {\n      const formattedRequest = {\n        jsonrpc: \"2.0\" as const,\n        id: this._lastId,\n        ...request,\n      };\n      this._lastId += 1;\n      return formattedRequest;\n    });\n\n    const onBatch = (responses: Responses[]): void => {\n      const receivedResponses = [];\n\n      for (const response of responses) {\n        for (const request of requests) {\n          if (request.id === response.id) {\n            receivedResponses.push(response);\n          }\n        }\n      }\n\n      if (receivedResponses.length > 0) {\n        resolve(receivedResponses);\n        this.off(\"batch\", onBatch);\n      }\n    };\n\n    this.on(\"batch\", onBatch);\n\n    this.emit(\"request\", requests);\n  }\n}\n", "import { type Request } from \"../jsonRpc/index.mts\";\n\nexport interface Position {\n  character: number;\n  line: number;\n}\n\nexport interface Range {\n  start: Position;\n  end: Position;\n}\n\nexport interface TextDocumentPublishDiagnosticsDiagnostic {\n  code: number;\n  message: string;\n  range: Range;\n  severity: number;\n  source: string;\n}\n\nexport interface TextDocumentPublishDiagnosticsRequest extends Request {\n  method: \"textDocument/publishDiagnostics\";\n  params: {\n    diagnostics: TextDocumentPublishDiagnosticsDiagnostic[];\n  };\n}\n\nexport function getCharacterFromPosition(\n  text: string,\n  position: Position\n): number {\n  let currentLine = 0;\n  let currentColumn = 0;\n\n  for (let ci = 0; ci < text.length; ci++) {\n    const char = text[ci];\n    if (char === \"\\n\") {\n      currentLine += 1;\n      currentColumn = 0;\n    } else {\n      currentColumn += 1;\n    }\n\n    if (position.line < currentLine) {\n      return 0;\n    }\n\n    if (currentLine === position.line && currentColumn === position.character) {\n      return ci + 1;\n    }\n  }\n\n  return text.length;\n}\n\nexport function getPositionFromCharacter(\n  text: string,\n  character: number\n): Position {\n  let currentLine = 0;\n  let currentColumn = 0;\n\n  for (let i = 1; i < text.length; i++) {\n    const char = text[i - 1];\n    if (char === \"\\n\") {\n      currentLine += 1;\n      currentColumn = 0;\n    } else {\n      currentColumn += 1;\n    }\n\n    if (i === character) {\n      return {\n        line: currentLine,\n        character: currentColumn,\n      };\n    }\n  }\n\n  return {\n    line: currentLine,\n    character: currentColumn,\n  };\n}\n\nexport function getDiagnosticSeverity(\n  severity: number\n): \"error\" | \"warning\" | \"info\" {\n  switch (severity) {\n    case 1:\n      return \"error\";\n    case 2:\n      return \"warning\";\n    case 3:\n    case 4:\n    default:\n      return \"info\";\n  }\n}\n"],
  "mappings": ";ACAA,SAAS,QAAyB,sBAAsB;AAExD,SAA0B,kBAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;ADF7D,IAAA,wBAAA,WAAA;EAAA,mFAAA,SAAA,QAAA;AAAA;AAEA,QAAI,MAAM,OAAO,UAAU;AAA3B,QACI,SAAS;AASb,aAAS,SAAS;IAAC;AASnB,QAAI,OAAO,QAAQ;AACjB,aAAO,YAAY,uBAAO,OAAO,IAAI;AAMrC,UAAI,CAAC,IAAI,OAAO,EAAE;AAAW,iBAAS;IACxC;AAWA,aAAS,GAAG,IAAI,SAAS,MAAM;AAC7B,WAAK,KAAK;AACV,WAAK,UAAU;AACf,WAAK,OAAO,QAAQ;IACtB;AAaA,aAAS,YAAY,SAAS,OAAO,IAAI,SAAS,MAAM;AACtD,UAAI,OAAO,OAAO,YAAY;AAC5B,cAAM,IAAI,UAAU,iCAAiC;MACvD;AAEA,UAAI,WAAW,IAAI,GAAG,IAAI,WAAW,SAAS,IAAI,GAC9C,MAAM,SAAS,SAAS,QAAQ;AAEpC,UAAI,CAAC,QAAQ,QAAQ,GAAG;AAAG,gBAAQ,QAAQ,GAAG,IAAI,UAAU,QAAQ;eAC3D,CAAC,QAAQ,QAAQ,GAAG,EAAE;AAAI,gBAAQ,QAAQ,GAAG,EAAE,KAAK,QAAQ;;AAChE,gBAAQ,QAAQ,GAAG,IAAI,CAAC,QAAQ,QAAQ,GAAG,GAAG,QAAQ;AAE3D,aAAO;IACT;AASA,aAAS,WAAW,SAAS,KAAK;AAChC,UAAI,EAAE,QAAQ,iBAAiB;AAAG,gBAAQ,UAAU,IAAI,OAAO;;AAC1D,eAAO,QAAQ,QAAQ,GAAG;IACjC;AASA,aAASA,gBAAe;AACtB,WAAK,UAAU,IAAI,OAAO;AAC1B,WAAK,eAAe;IACtB;AASAA,kBAAa,UAAU,aAAa,SAAS,aAAa;AACxD,UAAI,QAAQ,CAAC,GACT,QACA;AAEJ,UAAI,KAAK,iBAAiB;AAAG,eAAO;AAEpC,WAAK,QAAS,SAAS,KAAK,SAAU;AACpC,YAAI,IAAI,KAAK,QAAQ,IAAI;AAAG,gBAAM,KAAK,SAAS,KAAK,MAAM,CAAC,IAAI,IAAI;MACtE;AAEA,UAAI,OAAO,uBAAuB;AAChC,eAAO,MAAM,OAAO,OAAO,sBAAsB,MAAM,CAAC;MAC1D;AAEA,aAAO;IACT;AASAA,kBAAa,UAAU,YAAY,SAAS,UAAU,OAAO;AAC3D,UAAI,MAAM,SAAS,SAAS,QAAQ,OAChC,WAAW,KAAK,QAAQ,GAAG;AAE/B,UAAI,CAAC;AAAU,eAAO,CAAC;AACvB,UAAI,SAAS;AAAI,eAAO,CAAC,SAAS,EAAE;AAEpC,eAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK;AAClE,WAAG,CAAC,IAAI,SAAS,CAAC,EAAE;MACtB;AAEA,aAAO;IACT;AASAA,kBAAa,UAAU,gBAAgB,SAAS,cAAc,OAAO;AACnE,UAAI,MAAM,SAAS,SAAS,QAAQ,OAChC,YAAY,KAAK,QAAQ,GAAG;AAEhC,UAAI,CAAC;AAAW,eAAO;AACvB,UAAI,UAAU;AAAI,eAAO;AACzB,aAAO,UAAU;IACnB;AASAA,kBAAa,UAAU,OAAO,SAAS,KAAK,OAAO,IAAI,IAAI,IAAI,IAAI,IAAI;AACrE,UAAI,MAAM,SAAS,SAAS,QAAQ;AAEpC,UAAI,CAAC,KAAK,QAAQ,GAAG;AAAG,eAAO;AAE/B,UAAI,YAAY,KAAK,QAAQ,GAAG,GAC5B,MAAM,UAAU,QAChB,MACA;AAEJ,UAAI,UAAU,IAAI;AAChB,YAAI,UAAU;AAAM,eAAK,eAAe,OAAO,UAAU,IAAI,QAAW,IAAI;AAE5E,gBAAQ,KAAK;UACX,KAAK;AAAG,mBAAO,UAAU,GAAG,KAAK,UAAU,OAAO,GAAG;UACrD,KAAK;AAAG,mBAAO,UAAU,GAAG,KAAK,UAAU,SAAS,EAAE,GAAG;UACzD,KAAK;AAAG,mBAAO,UAAU,GAAG,KAAK,UAAU,SAAS,IAAI,EAAE,GAAG;UAC7D,KAAK;AAAG,mBAAO,UAAU,GAAG,KAAK,UAAU,SAAS,IAAI,IAAI,EAAE,GAAG;UACjE,KAAK;AAAG,mBAAO,UAAU,GAAG,KAAK,UAAU,SAAS,IAAI,IAAI,IAAI,EAAE,GAAG;UACrE,KAAK;AAAG,mBAAO,UAAU,GAAG,KAAK,UAAU,SAAS,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG;QAC3E;AAEA,aAAK,IAAI,GAAG,OAAO,IAAI,MAAM,MAAK,CAAC,GAAG,IAAI,KAAK,KAAK;AAClD,eAAK,IAAI,CAAC,IAAI,UAAU,CAAC;QAC3B;AAEA,kBAAU,GAAG,MAAM,UAAU,SAAS,IAAI;MAC5C,OAAO;AACL,YAAI,SAAS,UAAU,QACnB;AAEJ,aAAK,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC3B,cAAI,UAAU,CAAC,EAAE;AAAM,iBAAK,eAAe,OAAO,UAAU,CAAC,EAAE,IAAI,QAAW,IAAI;AAElF,kBAAQ,KAAK;YACX,KAAK;AAAG,wBAAU,CAAC,EAAE,GAAG,KAAK,UAAU,CAAC,EAAE,OAAO;AAAG;YACpD,KAAK;AAAG,wBAAU,CAAC,EAAE,GAAG,KAAK,UAAU,CAAC,EAAE,SAAS,EAAE;AAAG;YACxD,KAAK;AAAG,wBAAU,CAAC,EAAE,GAAG,KAAK,UAAU,CAAC,EAAE,SAAS,IAAI,EAAE;AAAG;YAC5D,KAAK;AAAG,wBAAU,CAAC,EAAE,GAAG,KAAK,UAAU,CAAC,EAAE,SAAS,IAAI,IAAI,EAAE;AAAG;YAChE;AACE,kBAAI,CAAC;AAAM,qBAAK,IAAI,GAAG,OAAO,IAAI,MAAM,MAAK,CAAC,GAAG,IAAI,KAAK,KAAK;AAC7D,uBAAK,IAAI,CAAC,IAAI,UAAU,CAAC;gBAC3B;AAEA,wBAAU,CAAC,EAAE,GAAG,MAAM,UAAU,CAAC,EAAE,SAAS,IAAI;UACpD;QACF;MACF;AAEA,aAAO;IACT;AAWAA,kBAAa,UAAU,KAAK,SAAS,GAAG,OAAO,IAAI,SAAS;AAC1D,aAAO,YAAY,MAAM,OAAO,IAAI,SAAS,KAAK;IACpD;AAWAA,kBAAa,UAAU,OAAO,SAAS,KAAK,OAAO,IAAI,SAAS;AAC9D,aAAO,YAAY,MAAM,OAAO,IAAI,SAAS,IAAI;IACnD;AAYAA,kBAAa,UAAU,iBAAiB,SAAS,eAAe,OAAO,IAAI,SAAS,MAAM;AACxF,UAAI,MAAM,SAAS,SAAS,QAAQ;AAEpC,UAAI,CAAC,KAAK,QAAQ,GAAG;AAAG,eAAO;AAC/B,UAAI,CAAC,IAAI;AACP,mBAAW,MAAM,GAAG;AACpB,eAAO;MACT;AAEA,UAAI,YAAY,KAAK,QAAQ,GAAG;AAEhC,UAAI,UAAU,IAAI;AAChB,YACE,UAAU,OAAO,OAChB,CAAC,QAAQ,UAAU,UACnB,CAAC,WAAW,UAAU,YAAY,UACnC;AACA,qBAAW,MAAM,GAAG;QACtB;MACF,OAAO;AACL,iBAAS,IAAI,GAAG,SAAS,CAAC,GAAG,SAAS,UAAU,QAAQ,IAAI,QAAQ,KAAK;AACvE,cACE,UAAU,CAAC,EAAE,OAAO,MACnB,QAAQ,CAAC,UAAU,CAAC,EAAE,QACtB,WAAW,UAAU,CAAC,EAAE,YAAY,SACrC;AACA,mBAAO,KAAK,UAAU,CAAC,CAAC;UAC1B;QACF;AAKA,YAAI,OAAO;AAAQ,eAAK,QAAQ,GAAG,IAAI,OAAO,WAAW,IAAI,OAAO,CAAC,IAAI;;AACpE,qBAAW,MAAM,GAAG;MAC3B;AAEA,aAAO;IACT;AASAA,kBAAa,UAAU,qBAAqB,SAAS,mBAAmB,OAAO;AAC7E,UAAI;AAEJ,UAAI,OAAO;AACT,cAAM,SAAS,SAAS,QAAQ;AAChC,YAAI,KAAK,QAAQ,GAAG;AAAG,qBAAW,MAAM,GAAG;MAC7C,OAAO;AACL,aAAK,UAAU,IAAI,OAAO;AAC1B,aAAK,eAAe;MACtB;AAEA,aAAO;IACT;AAKAA,kBAAa,UAAU,MAAMA,cAAa,UAAU;AACpDA,kBAAa,UAAU,cAAcA,cAAa,UAAU;AAK5DA,kBAAa,WAAW;AAKxBA,kBAAa,eAAeA;AAK5B,QAAI,gBAAgB,OAAO,QAAQ;AACjC,aAAO,UAAUA;IACnB;EAAA;AAAA,CAAA;AE/UA,IAAA,eAAyB,QAAA,sBAAA,GAAA,CAAA;AAGzB,IAAO,wBAAQ,aAAAA;ACyCR,IAAM,eAAN,cAA2B,MAAM;EAItC,YACE,SACA,SACA;AACA,UAAM,EAAE,OAAO,MAAM,SAAS,IAAI,WAAW,CAAC;AAE9C,UAAM,SAAS,EAAE,MAAM,CAAC;AAT1B,SAAA,OAAwB;AACxB,SAAA,WAAiC;AAU/B,QAAI,QAAQ,MAAM;AAChB,WAAK,OAAO;IACd;AAEA,QAAI,YAAY,MAAM;AACpB,WAAK,WAAW;IAClB;EACF;AACF;AAEO,IAAM,UAAN,cAAsB,sBAAa;EAAnC,cAAA;AAAA,UAAA,GAAA,SAAA;AACL,SAAA,YAAY,oBAAI,IAAqB;AACrC,SAAA,UAAU;EAAA;EAIV,MAAM,KACJ,SACwC;AACxC,WAAO,MAAM,IAAI;MACf,CAAC,SAAS,WAAW;AACnB,YAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,eAAK,cAAc,SAAS,OAAO;QACrC,OAAO;AACL,eAAK,SAAS,SAAS,SAAS,MAAM;QACxC;MACF;IACF;EACF;EAIA,OAAO,SAAkD;AACvD,QAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,UAAI,QAAQ,CAAC,YAAY;AACvB,aAAK,cAAc,SAAS,OAAO;MACrC,CAAC,EAAE,MAAM,CAAC,QAAQ;AAChB,gBAAQ,MAAM,iCAAiC,GAAG;MACpD,CAAC;AACD;IACF;AACA,QAAI,QAAQ,CAAC,SAAS,WAAW;AAC/B,WAAK,SAAS,SAAS,SAAS,MAAM;IACxC,CAAC,EAAE,MAAM,CAAC,QAAQ;AAChB,cAAQ,MAAM,gCAAgC,GAAG;IACnD,CAAC;EACH;EAEA,SACE,SACA,SAGA,QAGM;AACN,UAAM,KAAK,KAAK;AAChB,SAAK,WAAW;AAEhB,UAAM,mBAAmB;MACvB,SAAS;MACT;MACA,GAAG;IACL;AAEA,UAAM,kBAAkB,MAAY;AAClC,WAAK,IAAI,YAAY,UAAU;AAC/B,WAAK,IAAI,SAAS,OAAO;IAC3B;AAEA,UAAM,aAAa,CAAC,aAAoC;AACtD,UAAI,SAAS,OAAO,IAAI;AACtB,gBAAQ,QAAQ;AAChB,wBAAgB;MAClB;IACF;AAEA,UAAM,UAAU,CAAC,aAAkC;AACjD,UAAI,SAAS,OAAO,IAAI;AACtB,cAAM,QAAQ,IAAI,aAAa,SAAS,MAAM,SAAS;UACrD,MAAM,SAAS,MAAM;UACrB;QACF,CAAC;AACD,eAAO,KAAK;AACZ,wBAAgB;MAClB;IACF;AAEA,SAAK,GAAG,YAAY,UAAU;AAC9B,SAAK,GAAG,SAAS,OAAO;AAExB,SAAK,KAAK,WAAW,KAAK,UAAU,gBAAgB,CAAC;EACvD;EAEA,cACE,SACA,SAGM;AACN,UAAM,WAAsB,QAAQ,IAAI,CAACC,aAAY;AACnD,YAAM,mBAAmB;QACvB,SAAS;QACT,IAAI,KAAK;QACT,GAAGA;MACL;AACA,WAAK,WAAW;AAChB,aAAO;IACT,CAAC;AAED,UAAM,UAAU,CAAC,cAAiC;AAChD,YAAM,oBAAoB,CAAC;AAE3B,iBAAW,YAAY,WAAW;AAChC,mBAAWA,YAAW,UAAU;AAC9B,cAAIA,SAAQ,OAAO,SAAS,IAAI;AAC9B,8BAAkB,KAAK,QAAQ;UACjC;QACF;MACF;AAEA,UAAI,kBAAkB,SAAS,GAAG;AAChC,gBAAQ,iBAAiB;AACzB,aAAK,IAAI,SAAS,OAAO;MAC3B;IACF;AAEA,SAAK,GAAG,SAAS,OAAO;AAExB,SAAK,KAAK,WAAW,QAAQ;EAC/B;AACF;ACjKO,SAAS,yBACd,MACA,UACQ;AACR,MAAI,cAAc;AAClB,MAAI,gBAAgB;AAEpB,WAAS,KAAK,GAAG,KAAK,KAAK,QAAQ,MAAM;AACvC,UAAM,OAAO,KAAK,EAAE;AACpB,QAAI,SAAS,MAAM;AACjB,qBAAe;AACf,sBAAgB;IAClB,OAAO;AACL,uBAAiB;IACnB;AAEA,QAAI,SAAS,OAAO,aAAa;AAC/B,aAAO;IACT;AAEA,QAAI,gBAAgB,SAAS,QAAQ,kBAAkB,SAAS,WAAW;AACzE,aAAO,KAAK;IACd;EACF;AAEA,SAAO,KAAK;AACd;AAEO,SAAS,yBACd,MACA,WACU;AACV,MAAI,cAAc;AAClB,MAAI,gBAAgB;AAEpB,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,UAAM,OAAO,KAAK,IAAI,CAAC;AACvB,QAAI,SAAS,MAAM;AACjB,qBAAe;AACf,sBAAgB;IAClB,OAAO;AACL,uBAAiB;IACnB;AAEA,QAAI,MAAM,WAAW;AACnB,aAAO;QACL,MAAM;QACN,WAAW;MACb;IACF;EACF;AAEA,SAAO;IACL,MAAM;IACN,WAAW;EACb;AACF;AAEO,SAAS,sBACd,UAC8B;AAC9B,UAAQ,UAAU;IAChB,KAAK;AACH,aAAO;IACT,KAAK;AACH,aAAO;IACT,KAAK;IACL,KAAK;IACL;AACE,aAAO;EACX;AACF;AHvEO,SAAS,UAAU,QAA8B;AACtD,QAAM,SAAS,IAAI,aAAAD,QAAa;AAEhC,MAAI,UAA6B;AACjC,MAAI,gBAAgB;AACpB,QAAM,EAAE,iBAAiB,MAAM,iBAAiB,QAAQ,IAAI;AAC5D,QAAM,gBAAgB,IAAI,QAAQ;EAElC,MAAM,UAAU;IAGd,YAAY,MAAkB;AAC5B,WAAK,OAAO;IACd;IAEA,OAAO,QAA0B;IAAC;EACpC;AACA,aAAW,UAAU,SAAS;AAE9B,QAAM,YAAY,OAAO,OAAO,SAAS;AACvC,cAAU;AACV,WAAO,KAAK,QAAQ,IAAI;AAExB,UAAM,cAA4B,CAAC;AACnC,UAAM,eAAe;AACrB,qBAAiB;AAEjB,kBAAc,OAAO;MACnB,QAAQ;MACR,QAAQ;QACN,cAAc;UACZ,KAAK;UACL,SAAS;QACX;QACA,gBAAgB;UACd;YACE,MAAM,KAAK,MAAM,IAAI,SAAS;UAChC;QACF;MACF;IACF,CAAC;AAED,WAAO;EACT,GAAG,CAAC,CAAC;AAEL,gBAAc,GAAG,WAAW,CAAC,YAAY;AACvC,oBAAgB,OAAO;EACzB,CAAC;AAED,QAAM,iBAAiB,CAAC,iBAA4B;AAClD,YAAQ,aAAa,QAAQ;MAC3B,KAAK;AACH,6BAAqB,YAAY;AACjC;IACJ;EACF;AAEA,gBAAc,GAAG,gBAAgB,cAAc;AAE/C,QAAM,uBAAuB,CAC3B,iBACS;AACT,YAAQ,IAAI,wBAAwB,cAAc,OAAO;AACzD,QAAI,WAAW,MAAM;AACnB;IACF;AAEA,UAAM,cAA4B,aAAa,OAAO,YAAY;MAChE,CAAC,eAAe;AACd,eAAO;UACL,MAAM;YACJ,SAAS,MAAM,IAAI,SAAS,KAAK;YACjC,WAAW,MAAM;UACnB;UACA,IAAI;YACF,SAAS,MAAM,IAAI,SAAS,KAAK;YACjC,WAAW,MAAM;UACnB;UACA,UAAU,sBAAsB,WAAW,QAAQ;UACnD,QAAQ,WAAW;UACnB,SAAS,WAAW;QACtB;MACF;IACF;AAEA,YAAQ,IAAI,eAAe,WAAW;AACtC,UAAM,iBAAiB,eAAe,QAAQ,OAAO,WAAW;AAChE,UAAM,cAAc,QAAQ,MAAM,OAAO,cAAc;AACvD,YAAQ,SAAS,WAAW;EAC9B;AAEA,QAAM,oBAAoB,CAAC,YAA0B;AACnD,UAAM,OAAO,KAAK,MAAM,OAAO;AAC/B,QAAI,OAAO,SAAS,UAAU;AAC5B,YAAM,IAAI,MAAM,gBAAgB;IAClC;AAEA,QAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,YAAM,WAAW,CAAC;AAClB,iBAAW,MAAM,MAAM;AACrB,YAAI,YAAY,IAAI;AAClB,wBAAc,KAAK,gBAAgB,EAAE;QACvC,OAAO;AACL,mBAAS,KAAK,EAAE;QAClB;MACF;AAEA,oBAAc,KAAK,SAAS,QAAQ;AACpC;IACF;AACA,QAAI,WAAW,MAAM;AACnB,oBAAc,KAAK,SAAS,IAAI;AAChC;IACF;AACA,QAAI,YAAY,MAAM;AACpB,oBAAc,KAAK,YAAY,IAAI;AACnC;IACF;AACA,QAAI,YAAY,MAAM;AACpB,oBAAc,KAAK,gBAAgB,IAAI;AACvC;IACF;AAEA,UAAM,IAAI,MAAM,eAAe;EACjC;AAEA,UAAQ,EAAE,kBAAkB,CAAC;AAE7B,SAAO;IACL;IACA,GAAI,iBACA;;;;;IAKA,IACA,CAAC;EACP;AACF;",
  "names": ["EventEmitter", "request"]
}
