{"version":3,"file":"index.mjs","sources":["../src/ansi-x923.ts","../src/iso10126.ts","../src/iso97971.ts","../src/none.ts","../src/pkcs-shared.ts","../src/pkcs5.ts","../src/pkcs7.ts","../src/zero.ts","../src/preset.ts"],"sourcesContent":["import {\n  assertBlockSize as assertCoreBlockSize,\n  assertPaddedInput as assertCorePaddedInput,\n  getBlockPaddingLength,\n  type PaddingComponent,\n  type PresetComponent,\n} from '@jscrypto/core';\n\nexport const ansiX923: PaddingComponent<'AnsiX923'> = {\n  kind: 'padding',\n  name: 'AnsiX923',\n\n  pad(input, blockSize) {\n    assertBlockSize(blockSize);\n    const paddingLength = getPaddingLength(input.length, blockSize);\n    const output = new Uint8Array(input.length + paddingLength);\n    output.set(input);\n    output[output.length - 1] = paddingLength;\n    return output;\n  },\n\n  unpad(input, blockSize) {\n    assertPaddedInput(input, blockSize);\n    const paddingLength = input[input.length - 1];\n    if (paddingLength === 0 || paddingLength > blockSize || paddingLength > input.length) {\n      throw new Error('Invalid ANSI X9.23 padding.');\n    }\n\n    for (let i = input.length - paddingLength; i < input.length - 1; i++) {\n      if (input[i] !== 0) {\n        throw new Error('Invalid ANSI X9.23 padding.');\n      }\n    }\n\n    return input.slice(0, input.length - paddingLength);\n  },\n};\n\nexport const ansiX923Preset: PresetComponent<'ansi-x923'> = {\n  kind: 'preset',\n  name: 'ansi-x923',\n  components() {\n    return [ansiX923];\n  },\n};\n\nfunction assertBlockSize(blockSize: number): void {\n  assertCoreBlockSize(blockSize, { max: 255 });\n}\n\nfunction assertPaddedInput(input: Uint8Array, blockSize: number): void {\n  assertCorePaddedInput(input, blockSize, 'ANSI X9.23', { max: 255 });\n}\n\nfunction getPaddingLength(inputLength: number, blockSize: number): number {\n  return getBlockPaddingLength(inputLength, blockSize);\n}\n","import {\n  assertBlockSize as assertCoreBlockSize,\n  assertPaddedInput as assertCorePaddedInput,\n  getBlockPaddingLength,\n  type PaddingComponent,\n  type PresetComponent,\n} from '@jscrypto/core';\n\nexport const iso10126: PaddingComponent<'Iso10126'> = {\n  kind: 'padding',\n  name: 'Iso10126',\n\n  pad(input, blockSize) {\n    assertBlockSize(blockSize);\n    const paddingLength = getPaddingLength(input.length, blockSize);\n    const output = new Uint8Array(input.length + paddingLength);\n    output.set(input);\n    fillRandom(output.subarray(input.length, output.length - 1));\n    output[output.length - 1] = paddingLength;\n    return output;\n  },\n\n  unpad(input, blockSize) {\n    assertPaddedInput(input, blockSize);\n    const paddingLength = input[input.length - 1];\n    if (paddingLength === 0 || paddingLength > blockSize || paddingLength > input.length) {\n      throw new Error('Invalid ISO 10126 padding.');\n    }\n    return input.slice(0, input.length - paddingLength);\n  },\n};\n\nexport const iso10126Preset: PresetComponent<'iso10126'> = {\n  kind: 'preset',\n  name: 'iso10126',\n  components() {\n    return [iso10126];\n  },\n};\n\nfunction assertBlockSize(blockSize: number): void {\n  assertCoreBlockSize(blockSize, { max: 255 });\n}\n\nfunction assertPaddedInput(input: Uint8Array, blockSize: number): void {\n  assertCorePaddedInput(input, blockSize, 'ISO 10126', { max: 255 });\n}\n\nfunction getPaddingLength(inputLength: number, blockSize: number): number {\n  return getBlockPaddingLength(inputLength, blockSize);\n}\n\nfunction fillRandom(bytes: Uint8Array): void {\n  if (bytes.length === 0) {\n    return;\n  }\n\n  const crypto = globalThis as typeof globalThis & {\n    crypto?: {\n      getRandomValues<T extends Uint8Array>(array: T): T;\n    };\n  };\n  crypto.crypto?.getRandomValues(bytes);\n  if (bytes.some((byte) => byte !== 0)) {\n    return;\n  }\n\n  for (let i = 0; i < bytes.length; i++) {\n    bytes[i] = Math.floor(Math.random() * 256);\n  }\n}\n","import {\n  assertBlockSize as assertCoreBlockSize,\n  assertPaddedInput as assertCorePaddedInput,\n  type PaddingComponent,\n  type PresetComponent,\n} from '@jscrypto/core';\n\nexport const iso97971: PaddingComponent<'Iso97971'> = {\n  kind: 'padding',\n  name: 'Iso97971',\n\n  pad(input, blockSize) {\n    assertBlockSize(blockSize);\n    const paddingLength = getPaddingLength(input.length, blockSize);\n    const output = new Uint8Array(input.length + paddingLength);\n    output.set(input);\n    output[input.length] = 0x80;\n    return output;\n  },\n\n  unpad(input, blockSize) {\n    assertPaddedInput(input, blockSize);\n\n    let index = input.length - 1;\n    while (index >= 0 && input[index] === 0) {\n      index--;\n    }\n\n    if (index < 0 || input[index] !== 0x80) {\n      throw new Error('Invalid ISO/IEC 9797-1 padding.');\n    }\n\n    return input.slice(0, index);\n  },\n};\n\nexport const iso97971Preset: PresetComponent<'iso97971'> = {\n  kind: 'preset',\n  name: 'iso97971',\n  components() {\n    return [iso97971];\n  },\n};\n\nfunction assertBlockSize(blockSize: number): void {\n  assertCoreBlockSize(blockSize);\n}\n\nfunction assertPaddedInput(input: Uint8Array, blockSize: number): void {\n  assertCorePaddedInput(input, blockSize, 'ISO/IEC 9797-1');\n}\n\nfunction getPaddingLength(inputLength: number, blockSize: number): number {\n  const remainder = (inputLength + 1) % blockSize;\n  return 1 + (remainder === 0 ? 0 : blockSize - remainder);\n}\n","import { assertBlockMultiple, type PaddingComponent, type PresetComponent } from '@jscrypto/core';\n\nexport const noPadding: PaddingComponent<'NoPadding'> = {\n  kind: 'padding',\n  name: 'NoPadding',\n\n  pad(input, blockSize) {\n    assertMultiple(input, blockSize);\n    return input.slice();\n  },\n\n  unpad(input, blockSize) {\n    assertMultiple(input, blockSize);\n    return input.slice();\n  },\n};\n\nexport const noPaddingPreset: PresetComponent<'none'> = {\n  kind: 'preset',\n  name: 'none',\n  components() {\n    return [noPadding];\n  },\n};\n\nfunction assertMultiple(input: Uint8Array, blockSize: number): void {\n  assertBlockMultiple(input, blockSize, 'NoPadding');\n}\n","import { assertBlockSize, assertPaddedInput, getBlockPaddingLength } from '@jscrypto/core';\n\nexport function padPkcs(input: Uint8Array, blockSize: number): Uint8Array {\n  assertBlockSize(blockSize, { max: 255 });\n  const paddingLength = getBlockPaddingLength(input.length, blockSize);\n  const output = new Uint8Array(input.length + paddingLength);\n  output.set(input);\n  output.fill(paddingLength, input.length);\n  return output;\n}\n\nexport function unpadPkcs(input: Uint8Array, blockSize: number): Uint8Array {\n  assertPaddedInput(input, blockSize, 'PKCS#7', { max: 255 });\n\n  const paddingLength = input[input.length - 1];\n  if (paddingLength === 0 || paddingLength > blockSize || paddingLength > input.length) {\n    throw new Error('Invalid PKCS#7 padding.');\n  }\n\n  for (let i = input.length - paddingLength; i < input.length; i++) {\n    if (input[i] !== paddingLength) {\n      throw new Error('Invalid PKCS#7 padding.');\n    }\n  }\n\n  return input.slice(0, input.length - paddingLength);\n}\n","import type { PaddingComponent, PresetComponent } from '@jscrypto/core';\nimport { padPkcs, unpadPkcs } from './pkcs-shared.js';\n\nexport const pkcs5: PaddingComponent<'Pkcs5'> = {\n  kind: 'padding',\n  name: 'Pkcs5',\n  pad: padPkcs,\n  unpad: unpadPkcs,\n};\n\nexport const pkcs5Preset: PresetComponent<'pkcs5'> = {\n  kind: 'preset',\n  name: 'pkcs5',\n  components() {\n    return [pkcs5];\n  },\n};\n","import type { PaddingComponent, PresetComponent } from '@jscrypto/core';\nimport { padPkcs, unpadPkcs } from './pkcs-shared.js';\n\nexport const pkcs7: PaddingComponent<'Pkcs7'> = {\n  kind: 'padding',\n  name: 'Pkcs7',\n\n  pad: padPkcs,\n\n  unpad: unpadPkcs,\n};\n\nexport const pkcs7Preset: PresetComponent<'pkcs7'> = {\n  kind: 'preset',\n  name: 'pkcs7',\n  components() {\n    return [pkcs7];\n  },\n};\n","import type { PaddingComponent, PresetComponent } from '@jscrypto/core';\n\nexport const zeroPadding: PaddingComponent<'ZeroPadding'> = {\n  kind: 'padding',\n  name: 'ZeroPadding',\n\n  pad(input, blockSize) {\n    if (!Number.isInteger(blockSize) || blockSize <= 0) {\n      throw new RangeError('blockSize must be a positive integer.');\n    }\n\n    const remainder = input.length % blockSize;\n    if (remainder === 0) {\n      return input.slice();\n    }\n\n    const output = new Uint8Array(input.length + blockSize - remainder);\n    output.set(input);\n    return output;\n  },\n\n  unpad(input) {\n    let end = input.length;\n    while (end > 0 && input[end - 1] === 0) {\n      end--;\n    }\n    return input.slice(0, end);\n  },\n};\n\nexport const zeroPaddingPreset: PresetComponent<'zero'> = {\n  kind: 'preset',\n  name: 'zero',\n  components() {\n    return [zeroPadding];\n  },\n};\n","import type { PresetComponent } from '@jscrypto/core';\nimport { ansiX923Preset } from './ansi-x923.js';\nimport { iso10126Preset } from './iso10126.js';\nimport { iso97971Preset } from './iso97971.js';\nimport { noPaddingPreset } from './none.js';\nimport { pkcs5Preset } from './pkcs5.js';\nimport { pkcs7Preset } from './pkcs7.js';\nimport { zeroPaddingPreset } from './zero.js';\n\nexport function paddingsPreset(): PresetComponent<'paddings'> {\n  return {\n    kind: 'preset',\n    name: 'paddings',\n    components() {\n      return [pkcs7Preset, pkcs5Preset, noPaddingPreset, ansiX923Preset, iso10126Preset, iso97971Preset, zeroPaddingPreset];\n    },\n  };\n}\n"],"names":["assertBlockSize","getPaddingLength","assertPaddedInput","assertCoreBlockSize","assertCorePaddedInput"],"mappings":";;;;;;;AAQO,MAAM,QAAQ,GAAiC;AACpD,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAE,UAAU;IAEhB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAA;QAClBA,iBAAe,CAAC,SAAS,CAAC;QAC1B,MAAM,aAAa,GAAGC,kBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC;QAC/D,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;AAC3D,QAAA,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACjB,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,aAAa;AACzC,QAAA,OAAO,MAAM;IACf,CAAC;IAED,KAAK,CAAC,KAAK,EAAE,SAAS,EAAA;AACpB,QAAAC,mBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC;QACnC,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7C,QAAA,IAAI,aAAa,KAAK,CAAC,IAAI,aAAa,GAAG,SAAS,IAAI,aAAa,GAAG,KAAK,CAAC,MAAM,EAAE;AACpF,YAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;QAChD;QAEA,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACpE,YAAA,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAClB,gBAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;YAChD;QACF;AAEA,QAAA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;IACrD,CAAC;;AAGI,MAAM,cAAc,GAAiC;AAC1D,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,IAAI,EAAE,WAAW;IACjB,UAAU,GAAA;QACR,OAAO,CAAC,QAAQ,CAAC;IACnB,CAAC;;AAGH,SAASF,iBAAe,CAAC,SAAiB,EAAA;IACxCG,iBAAmB,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC9C;AAEA,SAASD,mBAAiB,CAAC,KAAiB,EAAE,SAAiB,EAAA;AAC7D,IAAAE,mBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACrE;AAEA,SAASH,kBAAgB,CAAC,WAAmB,EAAE,SAAiB,EAAA;AAC9D,IAAA,OAAO,qBAAqB,CAAC,WAAW,EAAE,SAAS,CAAC;AACtD;;AChDO,MAAM,QAAQ,GAAiC;AACpD,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAE,UAAU;IAEhB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAA;QAClBD,iBAAe,CAAC,SAAS,CAAC;QAC1B,MAAM,aAAa,GAAGC,kBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC;QAC/D,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;AAC3D,QAAA,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACjB,QAAA,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,aAAa;AACzC,QAAA,OAAO,MAAM;IACf,CAAC;IAED,KAAK,CAAC,KAAK,EAAE,SAAS,EAAA;AACpB,QAAAC,mBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC;QACnC,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7C,QAAA,IAAI,aAAa,KAAK,CAAC,IAAI,aAAa,GAAG,SAAS,IAAI,aAAa,GAAG,KAAK,CAAC,MAAM,EAAE;AACpF,YAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;QAC/C;AACA,QAAA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;IACrD,CAAC;;AAGI,MAAM,cAAc,GAAgC;AACzD,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,IAAI,EAAE,UAAU;IAChB,UAAU,GAAA;QACR,OAAO,CAAC,QAAQ,CAAC;IACnB,CAAC;;AAGH,SAASF,iBAAe,CAAC,SAAiB,EAAA;IACxCG,iBAAmB,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC9C;AAEA,SAASD,mBAAiB,CAAC,KAAiB,EAAE,SAAiB,EAAA;AAC7D,IAAAE,mBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACpE;AAEA,SAASH,kBAAgB,CAAC,WAAmB,EAAE,SAAiB,EAAA;AAC9D,IAAA,OAAO,qBAAqB,CAAC,WAAW,EAAE,SAAS,CAAC;AACtD;AAEA,SAAS,UAAU,CAAC,KAAiB,EAAA;AACnC,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB;IACF;IAEA,MAAM,MAAM,GAAG,UAId;AACD,IAAA,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC;AACrC,IAAA,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,EAAE;QACpC;IACF;AAEA,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,QAAA,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;IAC5C;AACF;;AC/DO,MAAM,QAAQ,GAAiC;AACpD,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAE,UAAU;IAEhB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAA;QAClB,eAAe,CAAC,SAAS,CAAC;QAC1B,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC;QAC/D,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;AAC3D,QAAA,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACjB,QAAA,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;AAC3B,QAAA,OAAO,MAAM;IACf,CAAC;IAED,KAAK,CAAC,KAAK,EAAE,SAAS,EAAA;AACpB,QAAA,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC;AAEnC,QAAA,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;QAC5B,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACvC,YAAA,KAAK,EAAE;QACT;QAEA,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;AACtC,YAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC;QACpD;QAEA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;IAC9B,CAAC;;AAGI,MAAM,cAAc,GAAgC;AACzD,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,IAAI,EAAE,UAAU;IAChB,UAAU,GAAA;QACR,OAAO,CAAC,QAAQ,CAAC;IACnB,CAAC;;AAGH,SAAS,eAAe,CAAC,SAAiB,EAAA;IACxCE,iBAAmB,CAAC,SAAS,CAAC;AAChC;AAEA,SAAS,iBAAiB,CAAC,KAAiB,EAAE,SAAiB,EAAA;AAC7D,IAAAC,mBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,gBAAgB,CAAC;AAC3D;AAEA,SAAS,gBAAgB,CAAC,WAAmB,EAAE,SAAiB,EAAA;IAC9D,MAAM,SAAS,GAAG,CAAC,WAAW,GAAG,CAAC,IAAI,SAAS;AAC/C,IAAA,OAAO,CAAC,IAAI,SAAS,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,SAAS,CAAC;AAC1D;;ACrDO,MAAM,SAAS,GAAkC;AACtD,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAE,WAAW;IAEjB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAA;AAClB,QAAA,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC;AAChC,QAAA,OAAO,KAAK,CAAC,KAAK,EAAE;IACtB,CAAC;IAED,KAAK,CAAC,KAAK,EAAE,SAAS,EAAA;AACpB,QAAA,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC;AAChC,QAAA,OAAO,KAAK,CAAC,KAAK,EAAE;IACtB,CAAC;;AAGI,MAAM,eAAe,GAA4B;AACtD,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,IAAI,EAAE,MAAM;IACZ,UAAU,GAAA;QACR,OAAO,CAAC,SAAS,CAAC;IACpB,CAAC;;AAGH,SAAS,cAAc,CAAC,KAAiB,EAAE,SAAiB,EAAA;AAC1D,IAAA,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC;AACpD;;ACzBM,SAAU,OAAO,CAAC,KAAiB,EAAE,SAAiB,EAAA;IAC1DJ,iBAAe,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACxC,MAAM,aAAa,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC;IACpE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;AAC3D,IAAA,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACjB,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC;AACxC,IAAA,OAAO,MAAM;AACf;AAEM,SAAU,SAAS,CAAC,KAAiB,EAAE,SAAiB,EAAA;AAC5D,IAAAE,mBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAE3D,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7C,IAAA,IAAI,aAAa,KAAK,CAAC,IAAI,aAAa,GAAG,SAAS,IAAI,aAAa,GAAG,KAAK,CAAC,MAAM,EAAE;AACpF,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;IAC5C;AAEA,IAAA,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChE,QAAA,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE;AAC9B,YAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;QAC5C;IACF;AAEA,IAAA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;AACrD;;ACvBO,MAAM,KAAK,GAA8B;AAC9C,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,GAAG,EAAE,OAAO;AACZ,IAAA,KAAK,EAAE,SAAS;;AAGX,MAAM,WAAW,GAA6B;AACnD,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,IAAI,EAAE,OAAO;IACb,UAAU,GAAA;QACR,OAAO,CAAC,KAAK,CAAC;IAChB,CAAC;;;ACZI,MAAM,KAAK,GAA8B;AAC9C,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAE,OAAO;AAEb,IAAA,GAAG,EAAE,OAAO;AAEZ,IAAA,KAAK,EAAE,SAAS;;AAGX,MAAM,WAAW,GAA6B;AACnD,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,IAAI,EAAE,OAAO;IACb,UAAU,GAAA;QACR,OAAO,CAAC,KAAK,CAAC;IAChB,CAAC;;;ACfI,MAAM,WAAW,GAAoC;AAC1D,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAE,aAAa;IAEnB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAA;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC,EAAE;AAClD,YAAA,MAAM,IAAI,UAAU,CAAC,uCAAuC,CAAC;QAC/D;AAEA,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS;AAC1C,QAAA,IAAI,SAAS,KAAK,CAAC,EAAE;AACnB,YAAA,OAAO,KAAK,CAAC,KAAK,EAAE;QACtB;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AACnE,QAAA,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACjB,QAAA,OAAO,MAAM;IACf,CAAC;AAED,IAAA,KAAK,CAAC,KAAK,EAAA;AACT,QAAA,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM;AACtB,QAAA,OAAO,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;AACtC,YAAA,GAAG,EAAE;QACP;QACA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;IAC5B,CAAC;;AAGI,MAAM,iBAAiB,GAA4B;AACxD,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,IAAI,EAAE,MAAM;IACZ,UAAU,GAAA;QACR,OAAO,CAAC,WAAW,CAAC;IACtB,CAAC;;;SC1Ba,cAAc,GAAA;IAC5B,OAAO;AACL,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,UAAU;QAChB,UAAU,GAAA;AACR,YAAA,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,CAAC;QACvH,CAAC;KACF;AACH;;;;"}