{"ast":null,"code":"\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.parse = parse;\nexports.serialize = serialize;\n/**\n * RegExp to match cookie-name in RFC 6265 sec 4.1.1\n * This refers out to the obsoleted definition of token in RFC 2616 sec 2.2\n * which has been replaced by the token definition in RFC 7230 appendix B.\n *\n * cookie-name       = token\n * token             = 1*tchar\n * tchar             = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" /\n *                     \"*\" / \"+\" / \"-\" / \".\" / \"^\" / \"_\" /\n *                     \"`\" / \"|\" / \"~\" / DIGIT / ALPHA\n *\n * Note: Allowing more characters - https://github.com/jshttp/cookie/issues/191\n * Allow same range as cookie value, except `=`, which delimits end of name.\n */\nconst cookieNameRegExp = /^[\\u0021-\\u003A\\u003C\\u003E-\\u007E]+$/;\n/**\n * RegExp to match cookie-value in RFC 6265 sec 4.1.1\n *\n * cookie-value      = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )\n * cookie-octet      = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\n *                     ; US-ASCII characters excluding CTLs,\n *                     ; whitespace DQUOTE, comma, semicolon,\n *                     ; and backslash\n *\n * Allowing more characters: https://github.com/jshttp/cookie/issues/191\n * Comma, backslash, and DQUOTE are not part of the parsing algorithm.\n */\nconst cookieValueRegExp = /^[\\u0021-\\u003A\\u003C-\\u007E]*$/;\n/**\n * RegExp to match domain-value in RFC 6265 sec 4.1.1\n *\n * domain-value      = <subdomain>\n *                     ; defined in [RFC1034], Section 3.5, as\n *                     ; enhanced by [RFC1123], Section 2.1\n * <subdomain>       = <label> | <subdomain> \".\" <label>\n * <label>           = <let-dig> [ [ <ldh-str> ] <let-dig> ]\n *                     Labels must be 63 characters or less.\n *                     'let-dig' not 'letter' in the first char, per RFC1123\n * <ldh-str>         = <let-dig-hyp> | <let-dig-hyp> <ldh-str>\n * <let-dig-hyp>     = <let-dig> | \"-\"\n * <let-dig>         = <letter> | <digit>\n * <letter>          = any one of the 52 alphabetic characters A through Z in\n *                     upper case and a through z in lower case\n * <digit>           = any one of the ten digits 0 through 9\n *\n * Keep support for leading dot: https://github.com/jshttp/cookie/issues/173\n *\n * > (Note that a leading %x2E (\".\"), if present, is ignored even though that\n * character is not permitted, but a trailing %x2E (\".\"), if present, will\n * cause the user agent to ignore the attribute.)\n */\nconst domainValueRegExp = /^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i;\n/**\n * RegExp to match path-value in RFC 6265 sec 4.1.1\n *\n * path-value        = <any CHAR except CTLs or \";\">\n * CHAR              = %x01-7F\n *                     ; defined in RFC 5234 appendix B.1\n */\nconst pathValueRegExp = /^[\\u0020-\\u003A\\u003D-\\u007E]*$/;\nconst __toString = Object.prototype.toString;\nconst NullObject = /* @__PURE__ */(() => {\n  const C = function () {};\n  C.prototype = Object.create(null);\n  return C;\n})();\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n */\nfunction parse(str, options) {\n  const obj = new NullObject();\n  const len = str.length;\n  // RFC 6265 sec 4.1.1, RFC 2616 2.2 defines a cookie name consists of one char minimum, plus '='.\n  if (len < 2) return obj;\n  const dec = options?.decode || decode;\n  let index = 0;\n  do {\n    const eqIdx = str.indexOf(\"=\", index);\n    if (eqIdx === -1) break; // No more cookie pairs.\n    const colonIdx = str.indexOf(\";\", index);\n    const endIdx = colonIdx === -1 ? len : colonIdx;\n    if (eqIdx > endIdx) {\n      // backtrack on prior semicolon\n      index = str.lastIndexOf(\";\", eqIdx - 1) + 1;\n      continue;\n    }\n    const keyStartIdx = startIndex(str, index, eqIdx);\n    const keyEndIdx = endIndex(str, eqIdx, keyStartIdx);\n    const key = str.slice(keyStartIdx, keyEndIdx);\n    // only assign once\n    if (obj[key] === undefined) {\n      let valStartIdx = startIndex(str, eqIdx + 1, endIdx);\n      let valEndIdx = endIndex(str, endIdx, valStartIdx);\n      const value = dec(str.slice(valStartIdx, valEndIdx));\n      obj[key] = value;\n    }\n    index = endIdx + 1;\n  } while (index < len);\n  return obj;\n}\nfunction startIndex(str, index, max) {\n  do {\n    const code = str.charCodeAt(index);\n    if (code !== 0x20 /*   */ && code !== 0x09 /* \\t */) return index;\n  } while (++index < max);\n  return max;\n}\nfunction endIndex(str, index, min) {\n  while (index > min) {\n    const code = str.charCodeAt(--index);\n    if (code !== 0x20 /*   */ && code !== 0x09 /* \\t */) return index + 1;\n  }\n  return min;\n}\n/**\n * Serialize data into a cookie header.\n *\n * Serialize a name value pair into a cookie string suitable for\n * http headers. An optional options object specifies cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n *   => \"foo=bar; httpOnly\"\n */\nfunction serialize(name, val, options) {\n  const enc = options?.encode || encodeURIComponent;\n  if (!cookieNameRegExp.test(name)) {\n    throw new TypeError(`argument name is invalid: ${name}`);\n  }\n  const value = enc(val);\n  if (!cookieValueRegExp.test(value)) {\n    throw new TypeError(`argument val is invalid: ${val}`);\n  }\n  let str = name + \"=\" + value;\n  if (!options) return str;\n  if (options.maxAge !== undefined) {\n    if (!Number.isInteger(options.maxAge)) {\n      throw new TypeError(`option maxAge is invalid: ${options.maxAge}`);\n    }\n    str += \"; Max-Age=\" + options.maxAge;\n  }\n  if (options.domain) {\n    if (!domainValueRegExp.test(options.domain)) {\n      throw new TypeError(`option domain is invalid: ${options.domain}`);\n    }\n    str += \"; Domain=\" + options.domain;\n  }\n  if (options.path) {\n    if (!pathValueRegExp.test(options.path)) {\n      throw new TypeError(`option path is invalid: ${options.path}`);\n    }\n    str += \"; Path=\" + options.path;\n  }\n  if (options.expires) {\n    if (!isDate(options.expires) || !Number.isFinite(options.expires.valueOf())) {\n      throw new TypeError(`option expires is invalid: ${options.expires}`);\n    }\n    str += \"; Expires=\" + options.expires.toUTCString();\n  }\n  if (options.httpOnly) {\n    str += \"; HttpOnly\";\n  }\n  if (options.secure) {\n    str += \"; Secure\";\n  }\n  if (options.partitioned) {\n    str += \"; Partitioned\";\n  }\n  if (options.priority) {\n    const priority = typeof options.priority === \"string\" ? options.priority.toLowerCase() : undefined;\n    switch (priority) {\n      case \"low\":\n        str += \"; Priority=Low\";\n        break;\n      case \"medium\":\n        str += \"; Priority=Medium\";\n        break;\n      case \"high\":\n        str += \"; Priority=High\";\n        break;\n      default:\n        throw new TypeError(`option priority is invalid: ${options.priority}`);\n    }\n  }\n  if (options.sameSite) {\n    const sameSite = typeof options.sameSite === \"string\" ? options.sameSite.toLowerCase() : options.sameSite;\n    switch (sameSite) {\n      case true:\n      case \"strict\":\n        str += \"; SameSite=Strict\";\n        break;\n      case \"lax\":\n        str += \"; SameSite=Lax\";\n        break;\n      case \"none\":\n        str += \"; SameSite=None\";\n        break;\n      default:\n        throw new TypeError(`option sameSite is invalid: ${options.sameSite}`);\n    }\n  }\n  return str;\n}\n/**\n * URL-decode string value. Optimized to skip native call when no %.\n */\nfunction decode(str) {\n  if (str.indexOf(\"%\") === -1) return str;\n  try {\n    return decodeURIComponent(str);\n  } catch (e) {\n    return str;\n  }\n}\n/**\n * Determine if value is a Date.\n */\nfunction isDate(val) {\n  return __toString.call(val) === \"[object Date]\";\n}","map":{"version":3,"names":["exports","parse","serialize","cookieNameRegExp","cookieValueRegExp","domainValueRegExp","pathValueRegExp","__toString","Object","prototype","toString","NullObject","C","create","str","options","obj","len","length","dec","decode","index","eqIdx","indexOf","colonIdx","endIdx","lastIndexOf","keyStartIdx","startIndex","keyEndIdx","endIndex","key","slice","undefined","valStartIdx","valEndIdx","value","max","code","charCodeAt","min","name","val","enc","encode","encodeURIComponent","test","TypeError","maxAge","Number","isInteger","domain","path","expires","isDate","isFinite","valueOf","toUTCString","httpOnly","secure","partitioned","priority","toLowerCase","sameSite","decodeURIComponent","e","call"],"sources":["D:\\LDT\\000 Project\\LDT\\Client\\node_modules\\react-router\\node_modules\\cookie\\src\\index.ts"],"sourcesContent":["/**\n * RegExp to match cookie-name in RFC 6265 sec 4.1.1\n * This refers out to the obsoleted definition of token in RFC 2616 sec 2.2\n * which has been replaced by the token definition in RFC 7230 appendix B.\n *\n * cookie-name       = token\n * token             = 1*tchar\n * tchar             = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" /\n *                     \"*\" / \"+\" / \"-\" / \".\" / \"^\" / \"_\" /\n *                     \"`\" / \"|\" / \"~\" / DIGIT / ALPHA\n *\n * Note: Allowing more characters - https://github.com/jshttp/cookie/issues/191\n * Allow same range as cookie value, except `=`, which delimits end of name.\n */\nconst cookieNameRegExp = /^[\\u0021-\\u003A\\u003C\\u003E-\\u007E]+$/;\n\n/**\n * RegExp to match cookie-value in RFC 6265 sec 4.1.1\n *\n * cookie-value      = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )\n * cookie-octet      = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\n *                     ; US-ASCII characters excluding CTLs,\n *                     ; whitespace DQUOTE, comma, semicolon,\n *                     ; and backslash\n *\n * Allowing more characters: https://github.com/jshttp/cookie/issues/191\n * Comma, backslash, and DQUOTE are not part of the parsing algorithm.\n */\nconst cookieValueRegExp = /^[\\u0021-\\u003A\\u003C-\\u007E]*$/;\n\n/**\n * RegExp to match domain-value in RFC 6265 sec 4.1.1\n *\n * domain-value      = <subdomain>\n *                     ; defined in [RFC1034], Section 3.5, as\n *                     ; enhanced by [RFC1123], Section 2.1\n * <subdomain>       = <label> | <subdomain> \".\" <label>\n * <label>           = <let-dig> [ [ <ldh-str> ] <let-dig> ]\n *                     Labels must be 63 characters or less.\n *                     'let-dig' not 'letter' in the first char, per RFC1123\n * <ldh-str>         = <let-dig-hyp> | <let-dig-hyp> <ldh-str>\n * <let-dig-hyp>     = <let-dig> | \"-\"\n * <let-dig>         = <letter> | <digit>\n * <letter>          = any one of the 52 alphabetic characters A through Z in\n *                     upper case and a through z in lower case\n * <digit>           = any one of the ten digits 0 through 9\n *\n * Keep support for leading dot: https://github.com/jshttp/cookie/issues/173\n *\n * > (Note that a leading %x2E (\".\"), if present, is ignored even though that\n * character is not permitted, but a trailing %x2E (\".\"), if present, will\n * cause the user agent to ignore the attribute.)\n */\nconst domainValueRegExp =\n  /^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i;\n\n/**\n * RegExp to match path-value in RFC 6265 sec 4.1.1\n *\n * path-value        = <any CHAR except CTLs or \";\">\n * CHAR              = %x01-7F\n *                     ; defined in RFC 5234 appendix B.1\n */\nconst pathValueRegExp = /^[\\u0020-\\u003A\\u003D-\\u007E]*$/;\n\nconst __toString = Object.prototype.toString;\n\nconst NullObject = /* @__PURE__ */ (() => {\n  const C = function () {};\n  C.prototype = Object.create(null);\n  return C;\n})() as unknown as { new (): any };\n\n/**\n * Parse options.\n */\nexport interface ParseOptions {\n  /**\n   * Specifies a function that will be used to decode a [cookie-value](https://datatracker.ietf.org/doc/html/rfc6265#section-4.1.1).\n   * Since the value of a cookie has a limited character set (and must be a simple string), this function can be used to decode\n   * a previously-encoded cookie value into a JavaScript string.\n   *\n   * The default function is the global `decodeURIComponent`, wrapped in a `try..catch`. If an error\n   * is thrown it will return the cookie's original value. If you provide your own encode/decode\n   * scheme you must ensure errors are appropriately handled.\n   *\n   * @default decode\n   */\n  decode?: (str: string) => string | undefined;\n}\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n */\nexport function parse(\n  str: string,\n  options?: ParseOptions,\n): Record<string, string | undefined> {\n  const obj: Record<string, string | undefined> = new NullObject();\n  const len = str.length;\n  // RFC 6265 sec 4.1.1, RFC 2616 2.2 defines a cookie name consists of one char minimum, plus '='.\n  if (len < 2) return obj;\n\n  const dec = options?.decode || decode;\n  let index = 0;\n\n  do {\n    const eqIdx = str.indexOf(\"=\", index);\n    if (eqIdx === -1) break; // No more cookie pairs.\n\n    const colonIdx = str.indexOf(\";\", index);\n    const endIdx = colonIdx === -1 ? len : colonIdx;\n\n    if (eqIdx > endIdx) {\n      // backtrack on prior semicolon\n      index = str.lastIndexOf(\";\", eqIdx - 1) + 1;\n      continue;\n    }\n\n    const keyStartIdx = startIndex(str, index, eqIdx);\n    const keyEndIdx = endIndex(str, eqIdx, keyStartIdx);\n    const key = str.slice(keyStartIdx, keyEndIdx);\n\n    // only assign once\n    if (obj[key] === undefined) {\n      let valStartIdx = startIndex(str, eqIdx + 1, endIdx);\n      let valEndIdx = endIndex(str, endIdx, valStartIdx);\n\n      const value = dec(str.slice(valStartIdx, valEndIdx));\n      obj[key] = value;\n    }\n\n    index = endIdx + 1;\n  } while (index < len);\n\n  return obj;\n}\n\nfunction startIndex(str: string, index: number, max: number) {\n  do {\n    const code = str.charCodeAt(index);\n    if (code !== 0x20 /*   */ && code !== 0x09 /* \\t */) return index;\n  } while (++index < max);\n  return max;\n}\n\nfunction endIndex(str: string, index: number, min: number) {\n  while (index > min) {\n    const code = str.charCodeAt(--index);\n    if (code !== 0x20 /*   */ && code !== 0x09 /* \\t */) return index + 1;\n  }\n  return min;\n}\n\n/**\n * Serialize options.\n */\nexport interface SerializeOptions {\n  /**\n   * Specifies a function that will be used to encode a [cookie-value](https://datatracker.ietf.org/doc/html/rfc6265#section-4.1.1).\n   * Since value of a cookie has a limited character set (and must be a simple string), this function can be used to encode\n   * a value into a string suited for a cookie's value, and should mirror `decode` when parsing.\n   *\n   * @default encodeURIComponent\n   */\n  encode?: (str: string) => string;\n  /**\n   * Specifies the `number` (in seconds) to be the value for the [`Max-Age` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.2).\n   *\n   * The [cookie storage model specification](https://tools.ietf.org/html/rfc6265#section-5.3) states that if both `expires` and\n   * `maxAge` are set, then `maxAge` takes precedence, but it is possible not all clients by obey this,\n   * so if both are set, they should point to the same date and time.\n   */\n  maxAge?: number;\n  /**\n   * Specifies the `Date` object to be the value for the [`Expires` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.1).\n   * When no expiration is set clients consider this a \"non-persistent cookie\" and delete it the current session is over.\n   *\n   * The [cookie storage model specification](https://tools.ietf.org/html/rfc6265#section-5.3) states that if both `expires` and\n   * `maxAge` are set, then `maxAge` takes precedence, but it is possible not all clients by obey this,\n   * so if both are set, they should point to the same date and time.\n   */\n  expires?: Date;\n  /**\n   * Specifies the value for the [`Domain` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.3).\n   * When no domain is set clients consider the cookie to apply to the current domain only.\n   */\n  domain?: string;\n  /**\n   * Specifies the value for the [`Path` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.4).\n   * When no path is set, the path is considered the [\"default path\"](https://tools.ietf.org/html/rfc6265#section-5.1.4).\n   */\n  path?: string;\n  /**\n   * Enables the [`HttpOnly` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.6).\n   * When enabled, clients will not allow client-side JavaScript to see the cookie in `document.cookie`.\n   */\n  httpOnly?: boolean;\n  /**\n   * Enables the [`Secure` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.5).\n   * When enabled, clients will only send the cookie back if the browser has a HTTPS connection.\n   */\n  secure?: boolean;\n  /**\n   * Enables the [`Partitioned` `Set-Cookie` attribute](https://tools.ietf.org/html/draft-cutler-httpbis-partitioned-cookies/).\n   * When enabled, clients will only send the cookie back when the current domain _and_ top-level domain matches.\n   *\n   * This is an attribute that has not yet been fully standardized, and may change in the future.\n   * This also means clients may ignore this attribute until they understand it. More information\n   * about can be found in [the proposal](https://github.com/privacycg/CHIPS).\n   */\n  partitioned?: boolean;\n  /**\n   * Specifies the value for the [`Priority` `Set-Cookie` attribute](https://tools.ietf.org/html/draft-west-cookie-priority-00#section-4.1).\n   *\n   * - `'low'` will set the `Priority` attribute to `Low`.\n   * - `'medium'` will set the `Priority` attribute to `Medium`, the default priority when not set.\n   * - `'high'` will set the `Priority` attribute to `High`.\n   *\n   * More information about priority levels can be found in [the specification](https://tools.ietf.org/html/draft-west-cookie-priority-00#section-4.1).\n   */\n  priority?: \"low\" | \"medium\" | \"high\";\n  /**\n   * Specifies the value for the [`SameSite` `Set-Cookie` attribute](https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-09#section-5.4.7).\n   *\n   * - `true` will set the `SameSite` attribute to `Strict` for strict same site enforcement.\n   * - `'lax'` will set the `SameSite` attribute to `Lax` for lax same site enforcement.\n   * - `'none'` will set the `SameSite` attribute to `None` for an explicit cross-site cookie.\n   * - `'strict'` will set the `SameSite` attribute to `Strict` for strict same site enforcement.\n   *\n   * More information about enforcement levels can be found in [the specification](https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-09#section-5.4.7).\n   */\n  sameSite?: boolean | \"lax\" | \"strict\" | \"none\";\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize a name value pair into a cookie string suitable for\n * http headers. An optional options object specifies cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n *   => \"foo=bar; httpOnly\"\n */\nexport function serialize(\n  name: string,\n  val: string,\n  options?: SerializeOptions,\n): string {\n  const enc = options?.encode || encodeURIComponent;\n\n  if (!cookieNameRegExp.test(name)) {\n    throw new TypeError(`argument name is invalid: ${name}`);\n  }\n\n  const value = enc(val);\n\n  if (!cookieValueRegExp.test(value)) {\n    throw new TypeError(`argument val is invalid: ${val}`);\n  }\n\n  let str = name + \"=\" + value;\n  if (!options) return str;\n\n  if (options.maxAge !== undefined) {\n    if (!Number.isInteger(options.maxAge)) {\n      throw new TypeError(`option maxAge is invalid: ${options.maxAge}`);\n    }\n\n    str += \"; Max-Age=\" + options.maxAge;\n  }\n\n  if (options.domain) {\n    if (!domainValueRegExp.test(options.domain)) {\n      throw new TypeError(`option domain is invalid: ${options.domain}`);\n    }\n\n    str += \"; Domain=\" + options.domain;\n  }\n\n  if (options.path) {\n    if (!pathValueRegExp.test(options.path)) {\n      throw new TypeError(`option path is invalid: ${options.path}`);\n    }\n\n    str += \"; Path=\" + options.path;\n  }\n\n  if (options.expires) {\n    if (\n      !isDate(options.expires) ||\n      !Number.isFinite(options.expires.valueOf())\n    ) {\n      throw new TypeError(`option expires is invalid: ${options.expires}`);\n    }\n\n    str += \"; Expires=\" + options.expires.toUTCString();\n  }\n\n  if (options.httpOnly) {\n    str += \"; HttpOnly\";\n  }\n\n  if (options.secure) {\n    str += \"; Secure\";\n  }\n\n  if (options.partitioned) {\n    str += \"; Partitioned\";\n  }\n\n  if (options.priority) {\n    const priority =\n      typeof options.priority === \"string\"\n        ? options.priority.toLowerCase()\n        : undefined;\n    switch (priority) {\n      case \"low\":\n        str += \"; Priority=Low\";\n        break;\n      case \"medium\":\n        str += \"; Priority=Medium\";\n        break;\n      case \"high\":\n        str += \"; Priority=High\";\n        break;\n      default:\n        throw new TypeError(`option priority is invalid: ${options.priority}`);\n    }\n  }\n\n  if (options.sameSite) {\n    const sameSite =\n      typeof options.sameSite === \"string\"\n        ? options.sameSite.toLowerCase()\n        : options.sameSite;\n    switch (sameSite) {\n      case true:\n      case \"strict\":\n        str += \"; SameSite=Strict\";\n        break;\n      case \"lax\":\n        str += \"; SameSite=Lax\";\n        break;\n      case \"none\":\n        str += \"; SameSite=None\";\n        break;\n      default:\n        throw new TypeError(`option sameSite is invalid: ${options.sameSite}`);\n    }\n  }\n\n  return str;\n}\n\n/**\n * URL-decode string value. Optimized to skip native call when no %.\n */\nfunction decode(str: string): string {\n  if (str.indexOf(\"%\") === -1) return str;\n\n  try {\n    return decodeURIComponent(str);\n  } catch (e) {\n    return str;\n  }\n}\n\n/**\n * Determine if value is a Date.\n */\nfunction isDate(val: any): val is Date {\n  return __toString.call(val) === \"[object Date]\";\n}\n"],"mappings":";;;;;AAiGAA,OAAA,CAAAC,KAAA,GAAAA,KAAA;AAsJAD,OAAA,CAAAE,SAAA,GAAAA,SAAA;AAvPA;;;;;;;;;;;;;;AAcA,MAAMC,gBAAgB,GAAG,uCAAuC;AAEhE;;;;;;;;;;;;AAYA,MAAMC,iBAAiB,GAAG,iCAAiC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;AAuBA,MAAMC,iBAAiB,GACrB,qFAAqF;AAEvF;;;;;;;AAOA,MAAMC,eAAe,GAAG,iCAAiC;AAEzD,MAAMC,UAAU,GAAGC,MAAM,CAACC,SAAS,CAACC,QAAQ;AAE5C,MAAMC,UAAU,GAAG,eAAgB,CAAC,MAAK;EACvC,MAAMC,CAAC,GAAG,SAAAA,CAAA,GAAa,CAAC;EACxBA,CAAC,CAACH,SAAS,GAAGD,MAAM,CAACK,MAAM,CAAC,IAAI,CAAC;EACjC,OAAOD,CAAC;AACV,CAAC,EAAC,CAAgC;AAoBlC;;;;;;AAMA,SAAgBX,KAAKA,CACnBa,GAAW,EACXC,OAAsB;EAEtB,MAAMC,GAAG,GAAuC,IAAIL,UAAU,EAAE;EAChE,MAAMM,GAAG,GAAGH,GAAG,CAACI,MAAM;EACtB;EACA,IAAID,GAAG,GAAG,CAAC,EAAE,OAAOD,GAAG;EAEvB,MAAMG,GAAG,GAAGJ,OAAO,EAAEK,MAAM,IAAIA,MAAM;EACrC,IAAIC,KAAK,GAAG,CAAC;EAEb,GAAG;IACD,MAAMC,KAAK,GAAGR,GAAG,CAACS,OAAO,CAAC,GAAG,EAAEF,KAAK,CAAC;IACrC,IAAIC,KAAK,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC;IAEzB,MAAME,QAAQ,GAAGV,GAAG,CAACS,OAAO,CAAC,GAAG,EAAEF,KAAK,CAAC;IACxC,MAAMI,MAAM,GAAGD,QAAQ,KAAK,CAAC,CAAC,GAAGP,GAAG,GAAGO,QAAQ;IAE/C,IAAIF,KAAK,GAAGG,MAAM,EAAE;MAClB;MACAJ,KAAK,GAAGP,GAAG,CAACY,WAAW,CAAC,GAAG,EAAEJ,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;MAC3C;IACF;IAEA,MAAMK,WAAW,GAAGC,UAAU,CAACd,GAAG,EAAEO,KAAK,EAAEC,KAAK,CAAC;IACjD,MAAMO,SAAS,GAAGC,QAAQ,CAAChB,GAAG,EAAEQ,KAAK,EAAEK,WAAW,CAAC;IACnD,MAAMI,GAAG,GAAGjB,GAAG,CAACkB,KAAK,CAACL,WAAW,EAAEE,SAAS,CAAC;IAE7C;IACA,IAAIb,GAAG,CAACe,GAAG,CAAC,KAAKE,SAAS,EAAE;MAC1B,IAAIC,WAAW,GAAGN,UAAU,CAACd,GAAG,EAAEQ,KAAK,GAAG,CAAC,EAAEG,MAAM,CAAC;MACpD,IAAIU,SAAS,GAAGL,QAAQ,CAAChB,GAAG,EAAEW,MAAM,EAAES,WAAW,CAAC;MAElD,MAAME,KAAK,GAAGjB,GAAG,CAACL,GAAG,CAACkB,KAAK,CAACE,WAAW,EAAEC,SAAS,CAAC,CAAC;MACpDnB,GAAG,CAACe,GAAG,CAAC,GAAGK,KAAK;IAClB;IAEAf,KAAK,GAAGI,MAAM,GAAG,CAAC;EACpB,CAAC,QAAQJ,KAAK,GAAGJ,GAAG;EAEpB,OAAOD,GAAG;AACZ;AAEA,SAASY,UAAUA,CAACd,GAAW,EAAEO,KAAa,EAAEgB,GAAW;EACzD,GAAG;IACD,MAAMC,IAAI,GAAGxB,GAAG,CAACyB,UAAU,CAAClB,KAAK,CAAC;IAClC,IAAIiB,IAAI,KAAK,IAAI,CAAC,WAAWA,IAAI,KAAK,IAAI,CAAC,UAAU,OAAOjB,KAAK;EACnE,CAAC,QAAQ,EAAEA,KAAK,GAAGgB,GAAG;EACtB,OAAOA,GAAG;AACZ;AAEA,SAASP,QAAQA,CAAChB,GAAW,EAAEO,KAAa,EAAEmB,GAAW;EACvD,OAAOnB,KAAK,GAAGmB,GAAG,EAAE;IAClB,MAAMF,IAAI,GAAGxB,GAAG,CAACyB,UAAU,CAAC,EAAElB,KAAK,CAAC;IACpC,IAAIiB,IAAI,KAAK,IAAI,CAAC,WAAWA,IAAI,KAAK,IAAI,CAAC,UAAU,OAAOjB,KAAK,GAAG,CAAC;EACvE;EACA,OAAOmB,GAAG;AACZ;AAmFA;;;;;;;;;AASA,SAAgBtC,SAASA,CACvBuC,IAAY,EACZC,GAAW,EACX3B,OAA0B;EAE1B,MAAM4B,GAAG,GAAG5B,OAAO,EAAE6B,MAAM,IAAIC,kBAAkB;EAEjD,IAAI,CAAC1C,gBAAgB,CAAC2C,IAAI,CAACL,IAAI,CAAC,EAAE;IAChC,MAAM,IAAIM,SAAS,CAAC,6BAA6BN,IAAI,EAAE,CAAC;EAC1D;EAEA,MAAML,KAAK,GAAGO,GAAG,CAACD,GAAG,CAAC;EAEtB,IAAI,CAACtC,iBAAiB,CAAC0C,IAAI,CAACV,KAAK,CAAC,EAAE;IAClC,MAAM,IAAIW,SAAS,CAAC,4BAA4BL,GAAG,EAAE,CAAC;EACxD;EAEA,IAAI5B,GAAG,GAAG2B,IAAI,GAAG,GAAG,GAAGL,KAAK;EAC5B,IAAI,CAACrB,OAAO,EAAE,OAAOD,GAAG;EAExB,IAAIC,OAAO,CAACiC,MAAM,KAAKf,SAAS,EAAE;IAChC,IAAI,CAACgB,MAAM,CAACC,SAAS,CAACnC,OAAO,CAACiC,MAAM,CAAC,EAAE;MACrC,MAAM,IAAID,SAAS,CAAC,6BAA6BhC,OAAO,CAACiC,MAAM,EAAE,CAAC;IACpE;IAEAlC,GAAG,IAAI,YAAY,GAAGC,OAAO,CAACiC,MAAM;EACtC;EAEA,IAAIjC,OAAO,CAACoC,MAAM,EAAE;IAClB,IAAI,CAAC9C,iBAAiB,CAACyC,IAAI,CAAC/B,OAAO,CAACoC,MAAM,CAAC,EAAE;MAC3C,MAAM,IAAIJ,SAAS,CAAC,6BAA6BhC,OAAO,CAACoC,MAAM,EAAE,CAAC;IACpE;IAEArC,GAAG,IAAI,WAAW,GAAGC,OAAO,CAACoC,MAAM;EACrC;EAEA,IAAIpC,OAAO,CAACqC,IAAI,EAAE;IAChB,IAAI,CAAC9C,eAAe,CAACwC,IAAI,CAAC/B,OAAO,CAACqC,IAAI,CAAC,EAAE;MACvC,MAAM,IAAIL,SAAS,CAAC,2BAA2BhC,OAAO,CAACqC,IAAI,EAAE,CAAC;IAChE;IAEAtC,GAAG,IAAI,SAAS,GAAGC,OAAO,CAACqC,IAAI;EACjC;EAEA,IAAIrC,OAAO,CAACsC,OAAO,EAAE;IACnB,IACE,CAACC,MAAM,CAACvC,OAAO,CAACsC,OAAO,CAAC,IACxB,CAACJ,MAAM,CAACM,QAAQ,CAACxC,OAAO,CAACsC,OAAO,CAACG,OAAO,EAAE,CAAC,EAC3C;MACA,MAAM,IAAIT,SAAS,CAAC,8BAA8BhC,OAAO,CAACsC,OAAO,EAAE,CAAC;IACtE;IAEAvC,GAAG,IAAI,YAAY,GAAGC,OAAO,CAACsC,OAAO,CAACI,WAAW,EAAE;EACrD;EAEA,IAAI1C,OAAO,CAAC2C,QAAQ,EAAE;IACpB5C,GAAG,IAAI,YAAY;EACrB;EAEA,IAAIC,OAAO,CAAC4C,MAAM,EAAE;IAClB7C,GAAG,IAAI,UAAU;EACnB;EAEA,IAAIC,OAAO,CAAC6C,WAAW,EAAE;IACvB9C,GAAG,IAAI,eAAe;EACxB;EAEA,IAAIC,OAAO,CAAC8C,QAAQ,EAAE;IACpB,MAAMA,QAAQ,GACZ,OAAO9C,OAAO,CAAC8C,QAAQ,KAAK,QAAQ,GAChC9C,OAAO,CAAC8C,QAAQ,CAACC,WAAW,EAAE,GAC9B7B,SAAS;IACf,QAAQ4B,QAAQ;MACd,KAAK,KAAK;QACR/C,GAAG,IAAI,gBAAgB;QACvB;MACF,KAAK,QAAQ;QACXA,GAAG,IAAI,mBAAmB;QAC1B;MACF,KAAK,MAAM;QACTA,GAAG,IAAI,iBAAiB;QACxB;MACF;QACE,MAAM,IAAIiC,SAAS,CAAC,+BAA+BhC,OAAO,CAAC8C,QAAQ,EAAE,CAAC;IAC1E;EACF;EAEA,IAAI9C,OAAO,CAACgD,QAAQ,EAAE;IACpB,MAAMA,QAAQ,GACZ,OAAOhD,OAAO,CAACgD,QAAQ,KAAK,QAAQ,GAChChD,OAAO,CAACgD,QAAQ,CAACD,WAAW,EAAE,GAC9B/C,OAAO,CAACgD,QAAQ;IACtB,QAAQA,QAAQ;MACd,KAAK,IAAI;MACT,KAAK,QAAQ;QACXjD,GAAG,IAAI,mBAAmB;QAC1B;MACF,KAAK,KAAK;QACRA,GAAG,IAAI,gBAAgB;QACvB;MACF,KAAK,MAAM;QACTA,GAAG,IAAI,iBAAiB;QACxB;MACF;QACE,MAAM,IAAIiC,SAAS,CAAC,+BAA+BhC,OAAO,CAACgD,QAAQ,EAAE,CAAC;IAC1E;EACF;EAEA,OAAOjD,GAAG;AACZ;AAEA;;;AAGA,SAASM,MAAMA,CAACN,GAAW;EACzB,IAAIA,GAAG,CAACS,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAOT,GAAG;EAEvC,IAAI;IACF,OAAOkD,kBAAkB,CAAClD,GAAG,CAAC;EAChC,CAAC,CAAC,OAAOmD,CAAC,EAAE;IACV,OAAOnD,GAAG;EACZ;AACF;AAEA;;;AAGA,SAASwC,MAAMA,CAACZ,GAAQ;EACtB,OAAOnC,UAAU,CAAC2D,IAAI,CAACxB,GAAG,CAAC,KAAK,eAAe;AACjD","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]}