diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..600b32b --- /dev/null +++ b/.editorconfig @@ -0,0 +1,65 @@ +root = true + +# Kotlin source files +[*.kt] +max_line_length = 120 +ktlint_code_style = ktlint_official +indent_style = space +indent_size = 4 +charset = utf-8 +insert_final_newline = true +trim_trailing_whitespace = true +ktlint_standard_import-sorting = "ascii" + +# Gradle Kotlin DSL files +[*.gradle.kts] +max_line_length = 120 +ktlint_code_style = ktlint_official +indent_style = space +indent_size = 4 +charset = utf-8 +insert_final_newline = true +trim_trailing_whitespace = true + +# TOML (version catalog) +[*.toml] +max_line_length = 120 +indent_style = space +indent_size = 4 +charset = utf-8 +insert_final_newline = true +trim_trailing_whitespace = true + +# YAML / CI workflows +[*.{yml,yaml}] +max_line_length = 120 +indent_style = space +indent_size = 2 +charset = utf-8 +insert_final_newline = true +trim_trailing_whitespace = true + +# Markdown +[*.md] +max_line_length = 120 +indent_style = space +indent_size = 4 +charset = utf-8 +insert_final_newline = true +trim_trailing_whitespace = true + +# Properties files +[*.properties] +max_line_length = 120 +indent_style = space +indent_size = 4 +charset = utf-8 +insert_final_newline = true +trim_trailing_whitespace = true + +# Gradle wrapper properties +[gradle-wrapper.properties] +max_line_length = 120 +charset = utf-8 +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..a60cbc6 --- /dev/null +++ b/.env.example @@ -0,0 +1,27 @@ +# Maven Central Portal publishing — environment variables +# Copy to .env and fill in real values. NEVER commit .env. +# See references/central-release-report.md and .scratch/kompact-spec/issues/14-maven-central-publishing.md + +# --- Central Portal API token (https://central.sonatype.com/ → Account → User Tokens) --- +CENTRAL_PORTAL_TOKEN_USERNAME= +CENTRAL_PORTAL_TOKEN_PASSWORD= + +# --- Deployment ID (written to build/portal/deployment-id by centralPortalDeploy) --- +# Optionally set this instead of letting the task read the saved file. +CENTRAL_PORTAL_DEPLOYMENT_ID= + +# --- PGP signing key (ASCII-armored private key, from `gpg --armor --export-secret-keys`) --- +# SIGNING_KEY_ID: 16-char long key ID (e.g. C9E0F0E1681C9AF1). Gradle's signing +# plugin rejects 16-char IDs without 0x prefix; the loader script auto-shortens to +# the last 8 chars (e.g. 681C9AF1) before passing to Gradle. The .env file keeps +# the full long ID. +SIGNING_KEY= +SIGNING_KEY_ID= +SIGNING_PASSWORD= + +# --- CI/CD (GitHub Actions) --- +# These are committed as repository secrets, not in .env. +# COPILOT_GITHUB_TOKEN is already present (created 2026-09-03). +# Add: SIGNING_KEY, SIGNING_KEY_ID, SIGNING_PASSWORD, +# CENTRAL_PORTAL_TOKEN_USERNAME, CENTRAL_PORTAL_TOKEN_PASSWORD +# via: gh secret set --repo trancee/kompact diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..aa0cc3e --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,56 @@ +name: CI + +# Validates the public ABI goldens and runs the JVM test suite. +# apiCheck (macOS) enforces both kompact.api (JVM) and kompact.klib.api (merged +# ios klib) with strictValidation — iOS klibs can only be compiled on Apple +# hosts, so the klib golden is only meaningfully validated on the macOS job. +# On Linux, klibApiCheck fails (unsupported targets); the Linux job runs +# jvmApiCheck + jvmTest only (fast JVM API gate before the macOS final gate). + +on: + push: + branches: + - main + - master + - 'feat/**' + pull_request: + branches: + - main + - master + +permissions: + contents: read + pull-requests: write + +jobs: + api-check: + name: apiCheck + spotlessCheck (macOS) + runs-on: macos-latest + steps: + - uses: actions/checkout@v5 + - uses: actions/setup-java@v5 + with: + distribution: temurin + java-version: 21 + cache: gradle + - run: ./gradlew spotlessCheck :kompact:apiCheck --no-daemon --rerun-tasks --no-build-cache --warning-mode all + # The committed rendered reference in kompact/docs/api/ must stay in sync + # with the KDoc in commonMain. Regenerate and fail if the committed tree + # drifts (up-to-date checking means dokka only re-runs when KDoc changes). + # macOS only: dokka analyses the iOS klibs, which can't be compiled on Linux. + - name: Verify generated Dokka reference is in sync + run: | + ./gradlew :kompact:dokkaGeneratePublicationHtml --no-daemon --console=plain + git diff --exit-code -- kompact/docs/api/ + + jvm-test: + name: jvmTest + jvmApiCheck + spotlessCheck + koverVerify (Linux) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - uses: actions/setup-java@v5 + with: + distribution: temurin + java-version: 21 + cache: gradle + - run: ./gradlew spotlessCheck :kompact:koverVerify :kompact:jvmTest :kompact:jvmApiCheck --no-daemon --rerun-tasks --no-build-cache --warning-mode all diff --git a/.github/workflows/regen-goldens.yml b/.github/workflows/regen-goldens.yml index 02b634d..26e8e5e 100644 --- a/.github/workflows/regen-goldens.yml +++ b/.github/workflows/regen-goldens.yml @@ -22,8 +22,8 @@ jobs: regen: runs-on: macos-latest steps: - - uses: actions/checkout@v4 - - uses: actions/setup-java@v4 + - uses: actions/checkout@v5 + - uses: actions/setup-java@v5 with: distribution: temurin java-version: 21 @@ -31,7 +31,7 @@ jobs: - name: Regenerate ABI goldens run: ./gradlew ${{ inputs.args }} --no-daemon - name: Upload regenerated goldens - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: api-goldens path: kompact/api/ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..996d834 --- /dev/null +++ b/.gitignore @@ -0,0 +1,34 @@ +# Gradle +.gradle/ +.kotlin/ +.poolside/ +build/ +out/ +gradle/wrapper/dists/ + +# Artifacts +*.jar +*.war +*.class +*.klib +*.knp +# The Gradle wrapper jar MUST be committed (gradle/wrapper/gradle-wrapper.jar) so +# `./gradlew` works in CI/dev — un-ignore it despite the *.jar rule above. +!gradle/wrapper/gradle-wrapper.jar + +# IDE +.idea/ +*.iml +local.properties + +# OS +.DS_Store + +# Tooling / environment (not part of the library) +.poolside/ +.env + +# Generated Dokka HTML API reference for the kompact module. The rendered +# site in docs/api/ is committed (so the in-repo api-reference.md pointer is +# always live); regenerate with `:kompact:dokkaGeneratePublicationHtml`. +# KDoc in commonMain is the source of truth for the API surface. diff --git a/.scratch/kompact-ergonomics/issues/01-data-clump-scalartype.md b/.scratch/kompact-ergonomics/issues/01-data-clump-scalartype.md new file mode 100644 index 0000000..997bd3e --- /dev/null +++ b/.scratch/kompact-ergonomics/issues/01-data-clump-scalartype.md @@ -0,0 +1,220 @@ +Type: grilling +Status: resolved + +# 01 — Data clump: `bitWidth` + `signed` should be one domain concept + +## Question + +`KompactRuntime.readScalar(raw, bitOffset, bitWidth, signed)` and +`KompactWriter.writeScalar(bitWidth, value)` take `bitWidth` and +`signed` as two separate parameters. They always travel together and +encode a single domain concept — the integer type descriptor (i8, u16, +i32, u64, …). This is Fowler's *Data Clump* smell, and it scored P2 in +the prior code-review of `feat/laguna`. The repo's own value-class +pattern (`KompactResult`, `KompactField`) is the natural place to +absorb it. + +The decision: do we replace the `(bitWidth: Int, signed: Boolean)` +parameter pair with a single value-class argument (a `ScalarType` or +`IntegerKind` or similar)? If yes, what does the call site look like +(`readScalar(buf, off, ScalarType.INT_16)` vs an enum +`readScalar(buf, off, IntegerKind.SIGNED, 16)`), and does the change +also collapse `readScalar` and `readScalarLong` (touched by ticket +02) into one parametric function with the value class as the +discriminator? + +This ticket is the front of the frontier. Ticket 02 (`readScalarLong` +naming) and ticket 04 (Result ergonomics layer) are blocked on this +decision because the rename ergonomics and the result-API surface +both depend on what a "scalar type" looks like at the call site. + +## Context for the claiming session + +- `kompact/src/commonMain/kotlin/ch/trancee/kompact/runtime/KompactRuntime.kt` — + `readScalar` (lines ~138–160), `readScalarLong` (lines ~162–176). +- `kompact/src/commonMain/kotlin/ch/trancee/kompact/runtime/KompactWriter.kt` — + `writeScalar` (lines ~53–61), which has `bitWidth` but no `signed` + flag (the writer doesn't need to know sign because the bits are + stored as a two's-complement magnitude regardless of the caller's + intent — but see the open question below). +- The packed-Long error encoding in `KompactResult.kt` already + reserves `bits 59..48` for `rawEnumCode` — a future `ScalarType` + might benefit from reserving a small range for an enum ordinal + rather than the current `signed: Boolean` (decide as part of this + ticket). +- `docs/api-reference.md#checked-typed-read-accessors` and + `docs/getting-started.md` (the 16-bit tutorial) both document the + current `readScalar(buf, off, width, signed)` shape; both will + need to be re-aligned with whatever this ticket decides. +- `GettingStartedTest` in `kompact/src/commonTest/.../runtime/` is + the executable journey that pins the tutorial wire bytes + (`0xA5 0x40`); it must be updated alongside any signature change + so the tutorial's `readScalar(bytes, 0, 4, signed = false)` example + still compiles and still asserts the same wire bytes. + +## Open sub-questions (answer as part of this ticket) + +1. **Value class shape** — `ScalarType(bitWidth: Int, signed: Boolean)` + with named constants (`ScalarType.UINT_8`, `ScalarType.INT_32`, + …), or a sealed hierarchy of value classes (`UIntScalar`, + `IntScalar` parameterized by width), or an enum (less idiomatic for + parameterized data)? +2. **The writer side** — does `writeScalar(bitWidth, value)` also + take a `ScalarType` (for symmetry) or keep its current `Long` + value parameter and only the reader adopts the value class? +3. **The `signed: Boolean` on the writer** — the writer currently + takes a `value: Long` and writes the low `bitWidth` bits as a + two's-complement magnitude. Should the value class also carry the + sign intent so a `writeScalar(ScalarType.INT_8, -1L)` and a + `writeScalar(ScalarType.UINT_8, 255L)` produce the same wire bits + (currently they do, because the writer just stores the low bits + without sign information)? +4. **The `readScalar` / `readScalarLong` split** — does this ticket + collapse them (one `readScalar(buf, off, type: ScalarType): Result` + where the result kind is decided by `type`) or keep them separate + for the 1..32 vs 1..64 width band? See ticket 02. +5. **Test file split** — if the reader signature changes, ticket + 09 (test file split) is unblocked; this ticket should record the + intended new accessor shape so ticket 09 can plan its file + layout. + +## What "resolved" looks like + +- A single design choice is recorded under `## Answer` (the value + class shape, the writer-side question, and the + `readScalar`/`readScalarLong` outcome). +- The chosen shape is sketched in 5–15 lines of Kotlin (a type + declaration and 2–3 example call sites) so a follow-up + implementation ticket can apply it directly. +- The downstream tickets (02, 04, 09) are updated if the chosen + shape changes their scope (e.g. if 01 collapses `readScalar` and + `readScalarLong`, ticket 02 closes as completed and the gist is + moved to "Decisions so far" in the map). + +## Answer + +**Decision: single value class `ScalarType(bitWidth, signed)` with named companion +constants; both `readScalar` / `readScalarLong` (readers) and `writeScalar` (writer) +adopt it. Keep the reader split. No enum axis — enums are read via `readScalar` and +the `UnknownEnumCode` typed error is inspected on the result.** + +The four sub-questions, settled one at a time: + +- **Shape (Q1)** — single `value class ScalarType` over a `Long` (zero-alloc on + both JVM and iOS per ticket 03), constructed via an `internal` constructor and + exposed through named factory constants in the companion for the common + JVM/Kotlin primitive lanes (`INT_8`, `INT_16`, `INT_32`, `INT_64`, `UINT_8`, + `UINT_16`, `UINT_32`, `UINT_64`, `BOOL`) plus a generic `of(bitWidth, signed)` + factory for the rare 1..63 widths in between. The value class is + `@JvmInline` on the JVM and plain `value class` on iOS (ticket 03's + representation rule). +- **Reader split (Q2)** — keep `readScalar` (1..32 → `IntResult`) and + `readScalarLong` (1..64 → `LongResult`) as two functions. Collapsing would + either box on the success path (violates ticket 03's zero-alloc read + contract) or force the caller to cast the result. The split is intrinsic to + the JVM/Kotlin primitive lanes; the value class does not change it. Ticket + 02 (`readScalarLong` naming) is now *unblocked* but does *not* auto-resolve: + the long-variant function stays, and its name still needs work. +- **Writer side (Q3)** — adopt the value class: `writeScalar(type: ScalarType, + value: Long)`. The writer is not zero-alloc-constrained (per + `docs/architecture.md` and ticket 07), so the allocation of constructing a + `ScalarType` at the call site is acceptable. Symmetry with the reader is + the win — the call site uses the same `ScalarType.INT_16` constant for both + `readScalar` and `writeScalar`. +- **Enum axis (Q4)** — *no* `ScalarKind` field on the value class. The packed + result `Long` already reserves `bits 59..48` for the raw enum code (per + `KompactResult.kt`'s `RESULT_RAW_ENUM_SHIFT = 48`); the reader returns + `IntResult` and the caller inspects `result.error is KompactDecodeError.UnknownEnumCode` + for the fail-closed behavior ticket 04 mandates. Keeping the enum case on + the same `readScalar` access keeps the API small; the alternative (a + separate `readEnum`) is a separate ticket's decision. + +### Sketch (for the implementation commit) + +```kotlin +// kompact/src/commonMain/kotlin/ch/trancee/kompact/runtime/ScalarType.kt +@JvmInline +public value class ScalarType internal constructor(private val packed: Long) { + public val bitWidth: Int get() = (packed ushr 32).toInt() and 0x3F // 1..64 + public val signed: Boolean get() = (packed and 0x8000_0000L) != 0L + + public companion object { + public val INT_8: ScalarType = ScalarType(8, signed = true) + public val INT_16: ScalarType = ScalarType(16, signed = true) + public val INT_32: ScalarType = ScalarType(32, signed = true) + public val INT_64: ScalarType = ScalarType(64, signed = true) + public val UINT_8: ScalarType = ScalarType(8, signed = false) + public val UINT_16: ScalarType = ScalarType(16, signed = false) + public val UINT_32: ScalarType = ScalarType(32, signed = false) + public val UINT_64: ScalarType = ScalarType(64, signed = false) + public val BOOL: ScalarType = ScalarType(1, signed = false) + public fun of(bitWidth: Int, signed: Boolean): ScalarType = + ScalarType(bitWidth, signed) + } +} + +// KompactRuntime — new signatures +public inline fun readScalar(raw: ByteArray, bitOffset: Int, type: ScalarType): IntResult +public inline fun readScalarLong(raw: ByteArray, bitOffset: Int, type: ScalarType): LongResult + +// KompactWriter — new signature +public fun writeScalar(type: ScalarType, value: Long) +``` + +### Call sites (matching the current `GettingStartedTest` / `docs/getting-started.md`) + +```kotlin +// Reader — was: readScalar(bytes, 0, 4, signed = false) +val battery: Int = KompactRuntime.readScalar(bytes, 0, ScalarType.UINT_8).getOrThrow() + +// Writer — was: writeScalar(bitWidth = 4, value = 5L) +val w = KompactWriter() +w.writeScalar(ScalarType.UINT_8, 5L) +w.writeScalar(ScalarType.UINT_16, 10L) +w.writeBool(true) +``` + +### Propagation + +- **Ticket 02** (`readScalarLong` naming) — **unblocked**. The function stays; + the naming decision is its own. Note in 02's body. +- **Ticket 04** (Result ergonomics layer) — **unblocked**. The result types are + unaffected by the parameter shape. 04's recovery-pattern decision is + independent. +- **Ticket 09** (Test file split) — **unblocked**. The test file can now plan + against the new accessor signature; per-accessor file names will follow + the new shape (e.g. `KompactRuntimeReadScalarTest` exercises + `readScalar(raw, off, type: ScalarType)` for the common 8/16/32 lanes). +- **Ticket 07** (`VehicleTelemetry` example alignment) — **not auto-resolved**, + but the "teach the public API" choice becomes the natural one: if the + example getters use the new `readScalar` signature, the example teaches + the public API a newcomer will actually use. 07's "raw `readBits` shape" + option is still valid (codegen-output reference) but is less central. + Note in 07's body; do not resolve. + +### Implementation steps (for the follow-up commit) + +1. Add `kompact/src/commonMain/kotlin/ch/trancee/kompact/runtime/ScalarType.kt` + with the value class and the named constants. +2. Update `KompactRuntime.readScalar` / `readScalarLong` signatures to take + `type: ScalarType`. The internals (`readBits` / `readBitsLong` calls) + use `type.bitWidth` and `type.signed`. +3. Update `KompactWriter.writeScalar` signature to take `type: ScalarType`. + The internal dispatch (`writeBits` vs `writeBitsLong`) uses + `type.bitWidth`. +4. Update `KompactRuntimeCheckedReadTest.kt` (441 lines) to use the new + signature. This naturally sets up the ticket 09 split. +5. Update `GettingStartedTest.kt` to use the new signature; re-run + `:kompact:jvmTest` to confirm green and the wire bytes (`0xA5 0x40`) + still match. +6. Update `docs/getting-started.md` and `docs/api-reference.md` to use the + new signature. `VehicleTelemetry` getters stay on the raw `readBits` + path until ticket 07 resolves. +7. Regenerate the iOS klib golden on macOS via the `regen-goldens.yml` + workflow (the public ABI shifts: every `(Int, Boolean)` accessor + signature becomes `(Int, ScalarType)`, plus the new `ScalarType` class + and its `Companion`). +8. Push to `feat/laguna`; CI (`apiCheck` macOS + `jvmTest` Linux) should + stay green after the golden regen. + +## Comments diff --git a/.scratch/kompact-ergonomics/issues/02-readscalarlong-naming.md b/.scratch/kompact-ergonomics/issues/02-readscalarlong-naming.md new file mode 100644 index 0000000..2f9f380 --- /dev/null +++ b/.scratch/kompact-ergonomics/issues/02-readscalarlong-naming.md @@ -0,0 +1,142 @@ +Type: grilling +Status: resolved +Blocked by: — (unblocked 2026-09-05 by ticket 01 — the function stays; the rename is its own decision) + +# 02 — `readScalarLong` name misleads (accepts 1..64, reads as 64-bit) + +## Question + +`KompactRuntime.readScalarLong(raw, bitOffset, bitWidth, signed)` takes +a `bitWidth: Int` in `1..64`, but the name suggests a fixed 64-bit +read (the way the legacy `readInt64` / `readUInt64` overloads used to +work). A caller passing `bitWidth = 8` gets a `LongResult` back, but +the name "Long" reads as a width guarantee, not a width range. This +scored P2 in the prior code-review of `feat/laguna` (Fowler's +*Mysterious Name*). + +The decision: do we rename `readScalarLong` (and its companion +`writeScalar` on the writer, which has the same issue), or does +ticket 01's data-clump resolution collapse the two functions into one +parametric `readScalar` that returns a `Result` chosen by the value +class? If the answer to ticket 01 is "collapse," this ticket +auto-resolves; if the answer is "keep them separate," pick a name +that does not mislead (`readScalarWide`, `readScalar64`, or a +`ScalarType`-driven form). + +## Context for the claiming session + +- `kompact/src/commonMain/kotlin/ch/trancee/kompact/runtime/KompactRuntime.kt` + — `readScalarLong` (lines ~162–176). Signature: + `readScalarLong(raw: ByteArray, bitOffset: Int, bitWidth: Int, signed: Boolean): LongResult`. +- The result class for the 1..64 band is `LongResult`, which uses a + sentinel range near `Long.MIN_VALUE` for failure (see + `docs/architecture.md#runtime-error-encoding`). Renaming the + *function* does not change the *result type*; the question is + about the function's name only. +- `KompactRuntime.readBitsLong` (the raw primitive) has the same + 1..64 width range and is a *raw* accessor (no bounds check, no + typed result). It is documented alongside the checked accessors + in `docs/api-reference.md`. This ticket is about the *checked* + accessor; the raw primitive's name is consistent with the legacy + `readBits` / `readBitsLong` pair and is not in scope. +- The tutorial in `docs/getting-started.md` does not use + `readScalarLong` (it only uses `readScalar` for the 4-bit battery + and 10-bit speed). Renaming is therefore a public-API-only + change with no tutorial edit required. + +## Open sub-questions + +1. If ticket 01's data-clump is resolved by collapsing the two + functions into one parametric `readScalar` (with the result type + chosen by `ScalarType`), this ticket is auto-resolved. Confirm + or deny that dependency. +2. If kept as two functions, is the right rename `readScalarWide` + (matches "wide" as the Kotlin term for ≥33-bit integers), or + `readScalar64` (matches the legacy `Int64` / `UInt64` shape but + is *also* misleading because the function still takes a + `bitWidth` parameter), or some other name? +3. Does the writer's `writeScalar` (single function, takes 1..64 + bits) need a rename for consistency, or is the writer side + fine because the `Long` value type already signals the range? + +## What "resolved" looks like + +- The chosen name is recorded under `## Answer` (or this ticket + auto-resolves with a "see ticket 01" gist if the collapse is + chosen). +- If a rename is chosen, the new name is noted along with the + rationale (so the implementation commit can apply it). +- `docs/api-reference.md` is updated (or scheduled for the + implementation commit) to use the new name. + +## Answer + +**Decision: rename `readScalarLong` → `readScalarAsLong`. The `As` prefix +makes the result type (`LongResult`, backed by a primitive `Long`) +unambiguous and matches Kotlin's "as" pattern (`getOrThrow`, `as` +casts, `asReversed`). The no-suffix `readScalar` (implicit-`Int` +variant, returns `IntResult`) stays — it is not misleading.** + +The four sub-questions, settled: + +- **Does 01's resolution auto-close 02?** No. Ticket 01 explicitly + kept the reader split (`readScalar` 1..32 → `IntResult` vs. + `readScalarLong` 1..64 → `LongResult`); the long-variant + function stays and needs a name that doesn't mislead. +- **The right rename** — `readScalarAsLong` (the `As` prefix + signals "viewed as the destination type," matching the + stdlib-style suffix reading that Kotlin's `Int.toLong()` + already establishes: the suffix is the *result* type, not a + width guarantee). `readScalar` stays as the implicit-`Int` + variant. +- **Writer side** — no rename. The writer's + `writeScalar(type: ScalarType, value: Long)` takes a `Long` + value (zero-extended for widths ≤32, true `Long` for + 32..64); the `Long` here is unambiguously the value type + and is not misleading. +- **Pair symmetry (rejected)** — the alternative + `readScalarInt` + `readScalarLong` (both suffixed) was + considered and rejected: the no-suffix `readScalar` reads + naturally as "the read-scalar function" and is not the one + with a misleading name. Renaming `readScalar` to + `readScalarInt` is a larger public-API break for no clarity + gain. + +### Sketch (for the implementation commit) + +```kotlin +// KompactRuntime — rename only, signature unchanged from ticket 01 +- public inline fun readScalarLong(raw: ByteArray, bitOffset: Int, type: ScalarType): LongResult ++ public inline fun readScalarAsLong(raw: ByteArray, bitOffset: Int, type: ScalarType): LongResult +``` + +The internal dispatch and the `LongResult` failure encoding +(sentinel near `Long.MIN_VALUE`, per `docs/architecture.md#runtime-error-encoding`) +are unchanged. + +### Propagation + +- **Ticket 09** (Test file split) — **unblocked (already was)**. + If 09 splits per-accessor, the long-band test file is named + `KompactRuntimeReadScalarAsLongTest.kt` (not + `…ReadScalarLongTest.kt`). If 09 splits by result kind, the + `LongResult`-coverage file name is unchanged. Note in 09's + body; do not resolve. +- **Writer** — no rename. The writer's `writeScalar(type, value: + Long)` is not misleading (the `Long` is the value type, not + a width). +- **Docs** — `docs/api-reference.md#checked-typed-read-accessors` + table mentions `readScalarLong` by name; the implementation + commit updates it to `readScalarAsLong`. `docs/getting-started.md` + does not use `readScalarLong` (only `readScalar` for the + 4-bit battery and 10-bit speed), so no tutorial edit. +- **Implementation commit scope** — pure rename. No behavior + change. No klib golden regen needed (the *function name* is + part of the public ABI but the change is a one-symbol rename; + BCV's `apiCheck` will flag the diff and the macOS + `regen-goldens.yml` workflow regenerates the klib golden in + the same commit, matching the map's "Standing preference" + rule ("regenerate the goldens in the same commit" — see + `map.md#notes`). + +## Comments diff --git a/.scratch/kompact-ergonomics/issues/03-throw-helper-naming.md b/.scratch/kompact-ergonomics/issues/03-throw-helper-naming.md new file mode 100644 index 0000000..6cf3cf1 --- /dev/null +++ b/.scratch/kompact-ergonomics/issues/03-throw-helper-naming.md @@ -0,0 +1,151 @@ +Type: grilling +Status: resolved + +# 03 — `throwSmallFailure` / `throwLongFailure` / `throwDoubleFailure` leak the encoding + +## Question + +`KompactResult.kt` declares three `internal inline` helpers: +`throwSmallFailure`, `throwLongFailure`, `throwDoubleFailure`. They +each call `throw KompactDecodeException(decodeXxxError(packed))` and +exist so each platform actual's `getOrThrow()` stays one expression +(Ticket 10 deepen). The names describe the internal packed-Long +encoding ("small" = ≤32-bit packed layout, "long" = `LongResult` +sentinel band, "double" = NaN-payload), not the caller's intent. A +reader of `KompactResult.kt` has to know the encoding taxonomy to +understand which helper to call. The repo's decoding helpers follow +the opposite convention (`decodeErrorFromSmallBits`, +`decodeLongError`, `decodeDoubleError` — encoding-aware on the +*decode* side) so the asymmetry is real. + +The decision: do we rename the three helpers to intent-revealing +names (`throwFromPacked`, `throwDecodeFailure`, or a single +`throwFailure(packed, kind: ErrorKind)`), and/or collapse them into +one helper that takes the kind as a parameter? This is Fowler's +*Mysterious Name* and scored P3 in the prior code-review of +`feat/laguna`. + +## Context for the claiming session + +- `kompact/src/commonMain/kotlin/ch/trancee/kompact/runtime/KompactResult.kt` + — `throwSmallFailure` / `throwLongFailure` / `throwDoubleFailure` + (lines ~134–141). Each is `internal inline fun ...(packed: Long): Nothing = throw KompactDecodeException(decodeXxxError(packed))`. +- The decoding helpers they wrap are + `decodeErrorFromSmallBits(packed)`, + `decodeLongError(packed)`, and + `decodeDoubleError(packed)`. All three return a + `KompactDecodeError`. +- The helpers are called from the seven result value class + `getOrThrow()` members in `jvmMain` and `iosMain` + (`kompact/src/jvmMain/.../KompactResult.kt`, + `kompact/src/iosMain/.../KompactResult.kt`). Each `getOrThrow` + does `if (isSuccess) primitive else throwXxxFailure(packed)`. +- These helpers are `internal` — they are not part of the public + API. The public surface is `getOrThrow()` on the seven result + classes. So the rename is an *internal* refactor with no + consumer-visible effect; the cost is the touch on every platform + actual (4 calls in jvmMain, 4 in iosMain). + +## Open sub-questions + +1. **One helper or three?** A single `throwFailure(packed, kind: + ErrorKind)` would force the kind to be a parameter at every call + site, which is what the current three-helper split avoids. The + trade is clarity (one name) vs. terseness at the call site (no + extra arg). +2. **Naming convention** — `throwFromPacked` matches the repo's + `decodeErrorFromSmallBits` pattern. `throwDecodeFailure` matches + the failure semantic. Pick one (or propose a third). +3. **Should the decoding helpers be renamed for symmetry too?** + Out of scope for this ticket (they are already encoding-aware by + design), but the answer here might point at a follow-up. + +## What "resolved" looks like + +- The chosen name (or collapsed-form) is recorded under + `## Answer` with a one-line rationale. +- The four call sites in each platform's `KompactResult.kt` are + noted so the implementation commit can apply the rename + consistently. +- The decision is propagated to ticket 09 (test file split) if + any test file references the old names directly. + +## Answer + +**Decision: rename the three helpers to mirror the existing decode +pattern. `throwSmallFailure` → `throwDecodeErrorFromSmallBits`, +`throwLongFailure` → `throwDecodeErrorFromLong`, +`throwDoubleFailure` → `throwDecodeErrorFromDouble`. Three-helper +split is kept (each picks the right decoder for its encoding); +the rename is internal-only with no consumer-visible effect.** + +The sub-questions, settled: + +- **One helper or three?** Three. A single `throwFromPacked(packed, + kind)` would add a `kind` parameter at every call site; the + three-helper split keeps `getOrThrow()` a one-expression + function per the Ticket 10 deepen note. The three encodings + are genuinely different decoders (`decodeErrorFromSmallBits` / + `decodeLongError` / `decodeDoubleError`) so the split is + intrinsic to the data, not a stylistic choice. +- **Naming convention** — mirror the decode pattern. The + decode helpers are `decodeErrorFrom{SmallBits,Long,Double}`; + the throw helpers become `throwDecodeErrorFrom{SmallBits,Long,Double}`. + The `throw` prefix is the caller's intent (the action); + `DecodeError` is the kind of exception (matching + `KompactDecodeException`'s class name); `From{SmallBits,Long,Double}` + is the encoding suffix (the same suffix as the decode + helper each one wraps). The result is a clean + `{verb}DecodeErrorFrom{Encoding}` pattern where `verb ∈ + {decode, throw}`. +- **Rename the decode helpers too?** No. They are already + encoding-aware by design (`decodeErrorFrom{SmallBits,Long,Double}`); + the new throw names now share the `From{Encoding}` suffix + with them, completing the symmetry. No follow-up needed. + +### Sketch (for the implementation commit) + +```kotlin +// KompactResult.kt — commonMain (lines 136–141) +- internal inline fun throwSmallFailure(packed: Long): Nothing = +- throw KompactDecodeException(decodeErrorFromSmallBits(packed)) +- internal inline fun throwLongFailure(packed: Long): Nothing = +- throw KompactDecodeException(decodeLongError(packed)) +- internal inline fun throwDoubleFailure(packed: Long): Nothing = +- throw KompactDecodeException(decodeDoubleError(packed)) ++ internal inline fun throwDecodeErrorFromSmallBits(packed: Long): Nothing = ++ throw KompactDecodeException(decodeErrorFromSmallBits(packed)) ++ internal inline fun throwDecodeErrorFromLong(packed: Long): Nothing = ++ throw KompactDecodeException(decodeLongError(packed)) ++ internal inline fun throwDecodeErrorFromDouble(packed: Long): Nothing = ++ throw KompactDecodeException(decodeDoubleError(packed)) +``` + +The seven call sites in `jvmMain/.../KompactResult.kt` and +`iosMain/.../KompactResult.kt` (one per result class, in each +class's `getOrThrow()`) update to match. For example, the +`IntResult` `getOrThrow()` in `jvmMain` (line ~55) becomes: + +```kotlin +- else throwSmallFailure(packed) ++ else throwDecodeErrorFromSmallBits(packed) +``` + +### Propagation + +- **No public API change.** The three helpers are `internal`; + the rename is contained to the `:kompact` module. No BCV + golden regen needed. +- **No test changes needed.** The helpers are tested + transitively through `getOrThrow()` (the public surface); + the test assertions (`assertFailsWith`) + are name-agnostic. +- **No docs change.** The helpers are not mentioned in + `docs/api-reference.md` (they are `internal`); the + `docs/architecture.md#runtime-error-encoding` discussion + talks about the packed-Long layout, not the helper names. +- **Implementation commit scope** — pure rename. 3 helper + declarations + 14 call sites (7 in `jvmMain`, 7 in + `iosMain`). No behavior change. No golden regen. + +## Comments diff --git a/.scratch/kompact-ergonomics/issues/04-result-ergonomics-layer.md b/.scratch/kompact-ergonomics/issues/04-result-ergonomics-layer.md new file mode 100644 index 0000000..fdc19b9 --- /dev/null +++ b/.scratch/kompact-ergonomics/issues/04-result-ergonomics-layer.md @@ -0,0 +1,296 @@ +Type: grilling +Status: resolved +Blocked by: — (unblocked 2026-09-05 by ticket 01 — the parameter shape and the result-type shape are independent; 01 settled the parameter only) + +# 04 — Result ergonomics layer: how do consumers recover from failure? + +## Question + +The seven specialized result value classes (`ByteResult`, +`ShortResult`, `IntResult`, `LongResult`, `FloatResult`, +`DoubleResult`, `BooleanResult`) are the central ergonomic choice in +the runtime: they make the success path zero-alloc on the JVM +(`@JvmInline` over a `Long`) and on iOS (plain value class over +`Long`). A consumer today writes: + +```kotlin +val battery: Int = KompactRuntime + .readScalar(bytes, 0, 4, signed = false) + .getOrThrow() +``` + +For a consumer who wants to *handle* failure (not throw), the +`getOrThrow()` call is wrong, and the alternative is verbose: + +```kotlin +val result = KompactRuntime.readScalar(bytes, 0, 4, signed = false) +when (val err = result.error) { + null -> { /* success: use result.getOrThrow() */ } + KompactDecodeError.BoundsError -> { /* ... */ } + KompactDecodeError.BadLengthPrefix -> { /* ... */ } + KompactDecodeError.TruncatedNested -> { /* ... */ } + is KompactDecodeError.UnknownEnumCode -> { /* ... */ } +} +``` + +The decision: do we add a higher-level ergonomics layer to make the +common patterns cheaper, and if so what is it? Options to grill: + +- **A `decodeOrThrow` / `tryDecode` extension on each result type** — + e.g. `val battery: Int = KompactRuntime.readScalar(...).getOrThrow()` + becomes `val battery: Int = KompactRuntime.readScalarOrThrow(...)` + (function-level, returns the primitive, throws on failure). Cheaper + at the call site, but loses the explicit "this returns a typed + result" signal. +- **A single `Result` alias or namespace** that re-exports the + seven result types under one umbrella, so consumers + `import kompact.Result` and get `Result.Int`, `Result.Long`, etc. + Reduces the seven-name surface to one import. +- **A `KompactResult` *sealed* companion type** that wraps the seven + result types behind one type parameter, with a `fold` / + `when`-friendly `getOrElse { error -> ... }` API. Centralizes the + recovery pattern but reintroduces a generic — which is what + ticket 08 in the v1 spec explicitly *rejected* (the rejection + rationale: a generic `KompactDecodeResult` boxes on the success + path on the JVM, breaking the zero-alloc contract). +- **A function-shape ergonomics helper** that does the + `if (result.isFailure) TypedError else use(...)` pattern in one + call, e.g. `KompactFraming.readNestedTyped(raw, off, w): NestedRegionResult` + (see ticket 05). Each framing helper that currently returns + `null` gets a typed-result companion. +- **Nothing — the per-kind specialization *is* the ergonomics.** + The seven result types are the right call; the recovery pattern + is verbose but explicit; this ticket is the user pushing back + on the verbosity only to confirm that it is what we want. + +## Context for the claiming session + +- `kompact/src/commonMain/kotlin/ch/trancee/kompact/runtime/KompactResult.kt` — + the seven `expect value class` declarations and the + `KompactDecodeError` sealed class (`BoundsError`, + `BadLengthPrefix`, `TruncatedNested`, + `UnknownEnumCode(rawCode: Int)`). +- `kompact/src/commonMain/kotlin/ch/trancee/kompact/runtime/KompactDecodeError.kt` — + the sealed error taxonomy. +- `docs/api-reference.md#typed-result-value-classes` — current + reference text for the result types. +- `docs/getting-started.md` — the consumer-facing tutorial that + demonstrates the verbose recovery pattern. Any ergonomics layer + should be reflected there. +- `GettingStartedTest` in `kompact/src/commonTest/.../runtime/` — + the executable journey; if a new helper is added, the test + should also exercise it. +- The v1 spec map's ticket 08 notes ("Runtime error model — + specialized zero-alloc result value classes") — the rejection + rationale for a generic `KompactDecodeResult` is the + zero-alloc-on-success contract. Any new ergonomics layer must + not regress that. + +## Open sub-questions + +1. **What is the *common* recovery pattern in the wild?** The + v1 spec assumes `getOrThrow()` is the success path and the + `error` property is the failure path. If a survey of the + `commonTest` cases shows that 80% of consumers want to + short-circuit on failure, an extension function or helper that + does that in one call is justified. If the survey shows the + pattern is 50/50, two helpers (`getOrThrow` + a + `fold`/`map`/`getOrElse`) is the right answer. +2. **Is the seven-class surface actually confusing for newcomers?** + A new visitor reading `docs/api-reference.md` sees seven types + with the same four members and asks "why seven?" The answer + (zero-alloc on success on both JVM and iOS) is in + `docs/architecture.md`, but the *first impression* is friction. + A single namespace (`Result.Int`, `Result.Long`, …) is cheaper + to learn. Is the friction worth the zero-alloc guarantee? +3. **The writer side** — does the writer surface need an + ergonomics layer? The writer currently throws + `IllegalArgumentException` from `writeLengthPrefix` when the + prefix width is not in `VALID_PREFIX_WIDTHS` (lines ~48–57 of + `KompactFraming.kt`). Should the writer's failure modes also + become typed results? (Out of scope: the writer is not on the + zero-alloc hot path, so throwing is acceptable. The + architectural call here matters for symmetry.) + +## What "resolved" looks like + +- The chosen ergonomics layer (or "nothing") is recorded under + `## Answer` with a one-line rationale and a sketch of the new + surface (3–10 lines of Kotlin). +- If a new layer is added, the call-site shape is shown so the + implementation commit can apply it to `KompactRuntime`, + `KompactFraming`, and the platform actuals. +- The downstream ticket 05 (`readNested` typed-result companion) + is updated to align with the chosen layer. + +## Answer + +**Decision: adopt all three ergonomics additions — `…OrThrow` function-level +wrappers, a `Kompact.Result` namespace re-export, and `getOrElse` / `map` +extension functions on the seven result value classes. All three are +additive (no public-API break, no zero-alloc regression, no BCV regen +needed for the extensions — only the `Kompact.Result` namespace adds +a new top-level public symbol).** + +### What gets added + +1. **`…OrThrow` function-level wrappers** (5 new public functions on + `KompactRuntime`): each returns the primitive directly and throws + `KompactDecodeException` on bounds / encoding failure. The spec's + ticket 08 already contemplated this for Java interop; the + decision is to keep it for all callers (Kotlin and Java). + ```kotlin + public fun readBoolOrThrow(raw: ByteArray, bitOffset: Int): Boolean + public fun readScalarOrThrow(raw: ByteArray, bitOffset: Int, type: ScalarType): Int + public fun readScalarAsLongOrThrow(raw: ByteArray, bitOffset: Int, type: ScalarType): Long + public fun readFloatOrThrow(raw: ByteArray, bitOffset: Int): Float + public fun readDoubleOrThrow(raw: ByteArray, bitOffset: Int): Double + ``` + The internals do the same `fits` check the typed-result accessors + do, then call `readBits` / `readBitsLong` directly and return the + primitive. The `…OrThrow` form is one call site (`KompactRuntime + .readScalarOrThrow(bytes, 0, ScalarType.UINT_8)`); the typed-result + form is two (`KompactRuntime.readScalar(bytes, 0, ScalarType.UINT_8) + .getOrThrow()`). Both are zero-alloc on the success path (the + `…OrThrow` form avoids the value-class construction altogether + but the cost of the value-class was already zero on both JVM and + iOS — the win is call-site ergonomics, not allocation). + +2. **`Kompact.Result` namespace re-export** (1 new top-level public + symbol). `object ch.trancee.kompact.Kompact.Result` exposes the + seven result types as members: `Kompact.Result.Int`, + `Kompact.Result.Long`, `Kompact.Result.Boolean`, etc. The seven + top-level declarations stay (no breaking change); the namespace + is a one-stop import for newcomers who prefer a single import + path. Cost: 7 lines in `KompactResult.kt` (a `typealias`-style + re-export, not new types). + ```kotlin + public object Result { + public typealias Byte = ByteResult + public typealias Short = ShortResult + public typealias Int = IntResult + public typealias Long = LongResult + public typealias Float = FloatResult + public typealias Double = DoubleResult + public typealias Boolean = BooleanResult + } + ``` + +3. **`getOrElse` / `map` extension functions** on the seven result + value classes (14 new top-level public functions in + `commonMain/.../KompactResult.kt`). Mirror stdlib's + `Result` pattern: `getOrElse` takes a `(KompactDecodeError) + -> T` fallback; `map` takes a `(T) -> T` success transform + and returns the same result kind (so the failure propagates + unchanged). Both are pure extension functions; no value-class + change; no zero-alloc regression. + ```kotlin + public inline fun IntResult.getOrElse(fallback: (KompactDecodeError) -> Int): Int + public inline fun IntResult.map(transform: (Int) -> Int): IntResult + // …same for ShortResult, LongResult, FloatResult, DoubleResult, ByteResult, BooleanResult + ``` + +### What does NOT change + +- **The seven specialized result value classes** stay as + `expect value class` in `commonMain` + `@JvmInline actual` on + JVM + plain `actual` on iOS. The spec's ticket 08 zero-alloc + contract is preserved: no generic, no boxing, no throw on + the success path. The new extensions and the namespace do not + touch the encoding or the layout. +- **The four-member public surface** of each result class + (`isSuccess`, `isFailure`, `error`, `getOrThrow()`) stays. + `getOrElse` and `map` are additive; `getOrThrow()` is still + the throw-on-failure recovery call. +- **No `KompactDecodeResult` generic** — explicitly rejected by + the spec's ticket 08 (boxes on the success path on the JVM). + The ergonomics layer is *around* the seven specialized types, + not *instead of* them. + +### Sketch (for the implementation commit) + +```kotlin +// KompactResult.kt — additions to the existing file + +// 1. Namespace re-export +public object Result { + public typealias Byte = ByteResult + public typealias Short = ShortResult + public typealias Int = IntResult + public typealias Long = LongResult + public typealias Float = FloatResult + public typealias Double = DoubleResult + public typealias Boolean = BooleanResult +} + +// 2. getOrElse / map extensions (one per result kind) +public inline fun IntResult.getOrElse(fallback: (KompactDecodeError) -> Int): Int = + if (isSuccess) (packed and RESULT_VALUE_MASK).toInt() else fallback(error!!) +public inline fun IntResult.map(transform: (Int) -> Int): IntResult = + if (isSuccess) IntResult.success(transform((packed and RESULT_VALUE_MASK).toInt())) + else this +// …repeated for ShortResult, LongResult, FloatResult, DoubleResult, ByteResult, BooleanResult + +// KompactRuntime.kt — `…OrThrow` wrappers (additive) +public inline fun readBoolOrThrow(raw: ByteArray, bitOffset: Int): Boolean { + if (!fits(raw, bitOffset, 1)) throwBounds(BoundsError()) + return readBitsBoolean(raw, bitOffset) +} +public inline fun readScalarOrThrow(raw: ByteArray, bitOffset: Int, type: ScalarType): Int { + val w = type.bitWidth + if (!fits(raw, bitOffset, w)) throwBounds(BoundsError()) + val raw_ = readBits(raw, bitOffset, w) + return if (type.signed) signExtend(raw_, w) else raw_ +} +// …similar for readScalarAsLongOrThrow, readFloatOrThrow, readDoubleOrThrow +``` + +### Propagation + +- **Ticket 05** (`readNested` typed-result companion) — **unblocked**. + The ergonomics layer is now settled; 05 picks a name and applies + the same pattern. The recommended shape for 05 is: + - `KompactFraming.readNested(raw, off, prefixBitWidth): NestedRegionResult` + (typed result, with `getOrElse`/`map` extensions on + `NestedRegionResult` mirroring the result-class pattern). + - `KompactFraming.readNestedOrThrow(raw, off, prefixBitWidth): Pair` + (primitive pair, throws on failure). + - `KompactFraming.nestedRegionOrNull(...)` stays as the nullable + hot-path internal (zero-alloc; what the new functions call + internally). Deprecation cycle: the library has not been + released, so it's removed immediately (no deprecation cycle + per the map's "Blast radius" rule). + Note in 05's body; do not resolve. +- **Ticket 09** (Test file split) — note the new public symbols + (`…OrThrow`, `getOrElse`, `map`) need their own test coverage. + If 09 splits per-accessor, the new test files include + `KompactRuntimeReadScalarOrThrowTest.kt` etc. +- **Docs** — `docs/api-reference.md` adds a new subsection under + the runtime for `…OrThrow`, `getOrElse`/`map`, and the + `Kompact.Result` namespace. The `KompactResult` section + (current `## Typed result value classes`) is reorganized to + list the seven types and the new extensions. +- **Public ABI** — adds 1 top-level symbol (`Kompact.Result`), + 5 `…OrThrow` functions, 14 extension functions (7 `getOrElse` + + 7 `map`). BCV will catch the drift; klib golden regen on + macOS via the existing `regen-goldens.yml` workflow. + +## Comments + +**Implementation outcome (2026-09-06).** Resolved as decided. + +- Registered `Kompact.Result` namespace at `ch/trancee/kompact/Kompact.kt` + (`object Kompact { object Result { 7 typealias } }`); additive, no + zero-alloc regression, scoped inside `Kompact.Result` (no shadowing of + `kotlin.Result`). +- 5 `…OrThrow` wrappers on `KompactRuntime` + 14 `getOrElse`/`map` + extensions (7 + 7) on the result value classes. +- ABI: `kompact.api` (JVM) regenerated via `:kompact:jvmApiDump`, green + via `:kompact:jvmApiCheck`; byte-identical on the macOS regen. + `kompact.klib.api` (merged iOS klib) regenerated on macOS via + `regen-goldens.yml` (run `34021875744`, +4 lines for Kompact/Result). +- `:kompact:jvmTest` → BUILD SUCCESSFUL (187 tests). +- CI `34022123785` (`feat/laguna` @ `cf7dde57`) → `jvmTest (Linux)`: + success + `apiCheck (macOS)`: success. +- Commits `13f2f5b` (Kompact.kt + kompact.api + test split) + + `cf7dde5` (klib golden) on `feat/laguna`. diff --git a/.scratch/kompact-ergonomics/issues/05-readnested-typed-result.md b/.scratch/kompact-ergonomics/issues/05-readnested-typed-result.md new file mode 100644 index 0000000..acc4f2c --- /dev/null +++ b/.scratch/kompact-ergonomics/issues/05-readnested-typed-result.md @@ -0,0 +1,251 @@ +Type: grilling +Status: resolved +Blocked by: — (unblocked 2026-09-05 by ticket 04 — the ergonomics pattern is settled: `…OrThrow` function-level wrappers for the throw-on-failure case, typed-result companion + `getOrElse`/`map` extensions for the recovery case, and a nullable internal for the hot path. 05 picks a name and applies the same pattern.) + +# 05 — `KompactFraming.nestedRegionOrNull` should have a typed-result companion + +## Question + +`KompactFraming.nestedRegionOrNull(raw, bitOffset, prefixBitWidth): Pair?` +returns a nullable pair for a parse-forward nested region. The +nullable return is the right call for the framing hot path (no +allocation, no throw) — but it forces every consumer to repeat the +same `if (region == null) TypedError else use(start, length)` +boilerplate. The writer has a `writeNested` that mirrors the +`nestedRegionOrNull` *shape*; the reader should have a typed-result +companion that mirrors the writer's surface, e.g. +`KompactFraming.nestedRegion(raw, off, w): NestedRegionResult` with +`getOrThrow()` returning the `(startBit, bitLength)` pair. + +The decision: do we add the typed-result companion, and if yes, is +it the same shape as the result ergonomics layer chosen in ticket 04 +(a single `NestedRegionResult` with the `success` / `failure` / +`error` / `getOrThrow` pattern), or does ticket 04's resolution +automatically provide it (e.g. if ticket 04 picks a single +namespace, the framing helper adopts the namespace's `NestedRegion` +result)? + +## Context for the claiming session + +- `kompact/src/commonMain/kotlin/ch/trancee/kompact/runtime/KompactFraming.kt` + — `nestedRegionOrNull` (lines ~66–84). The function reads the + byte-count length prefix at `bitOffset` (width `prefixBitWidth` ∈ + `{8, 16, 32}`), validates against `KompactRuntime.fits`, and + returns the sub-region as `(startBit, bitLength)`. Returns + `null` on overrun (which the caller maps to a typed + `TruncatedNested` / `BadLengthPrefix`). +- The companion reader for the *count* prefix + (`readLengthPrefix`, lines ~32–41) returns `Int` directly (with + `-1` on failure) — also a "no allocation" hot-path pattern. + Should the count-prefix reader also get a typed-result + companion, or is `-1` the right shape for that one (since the + count is a single `Int`, not a pair)? +- The writer's `writeNested` and `writeRepeated` in + `KompactWriter.kt` (lines ~78–107) are the user-facing + symmetric shape. A consumer writing a nested payload with + `writeNested { ... }` and then reading it back with + `nestedRegionOrNull` is crossing the "nullable pair vs. + block" boundary twice; the typed-result companion makes the + read symmetric with the write. +- The v1 spec map's ticket 05 ("Framing — sequential + length-delimited") and ticket 08 ("Runtime error model") are + the locked references. Neither forbids a typed-result framing + helper; both require the success path to be allocation-free. + +## Open sub-questions + +1. **Naming** — `nestedRegion` (vs the current + `nestedRegionOrNull`) is the natural symmetric name, with the + `?` suffix signaling the nullable variant. Confirm or propose + an alternative. +2. **The result type** — a new `NestedRegionResult` value class + wrapping `(startBit: Int, bitLength: Int)` (a `Pair<…>`-shaped + payload), or a different shape (e.g. a `Long` packing + `startBit << 32 | bitLength`, but that's an internal encoding + detail and would leak). +3. **Count-prefix companion** — should `readLengthPrefix`'s `-1` + return also become a typed result, or is that out of scope for + this ticket (the user-facing pair is what newcomers see first)? +4. **`nestedRegionOrNull` deprecation** — once the typed-result + companion lands, does the nullable form stay (as a hot-path + internal), get deprecated (Q7: 1-MINOR cycle), or get removed + immediately? Per the v1 release status (not yet on Maven + Central), the deprecation cycle is cheap; pick the + user-friendliest path. + +## What "resolved" looks like + +- The chosen shape (or "no, the nullable pair is the right call") + is recorded under `## Answer` with a sketch of the new + companion's signature. +- If a new companion is added, the relationship to ticket 04's + ergonomics layer is recorded (does it use the layer's + namespace, or stand alone?). +- The deprecation question (keep / deprecate / remove + `nestedRegionOrNull`) is answered. + +## Answer + +**Decision: full ergonomics pair, plus the count-prefix `…OrThrow` +companion. The nullable `nestedRegionOrNull` demotes to `internal` +(kept as the hot-path internal that the new public functions +delegate to). No deprecation cycle (the library has not been +released, per the map's "Blast radius" rule).** + +### What gets added + +1. **`KompactFraming.readNestedOrThrow(raw, bitOffset, prefixBitWidth): Pair`** + — the throw-on-failure companion. Throws + `KompactDecodeException(BadLengthPrefix)` if `prefixBitWidth` + is not in `VALID_PREFIX_WIDTHS` or the prefix overruns the + buffer; throws `KompactDecodeException(TruncatedNested)` if + the nested region's payload overruns the buffer; throws + `KompactDecodeException(BoundsError)` if the byte count + overflows `Int` (the F-003 boundary check at the original + `nestedRegionOrNull`'s `byteCount > Int.MAX_VALUE / 8` line). +2. **`KompactFraming.readNested(raw, bitOffset, prefixBitWidth): NestedRegionResult`** + — the typed-result companion. Returns a + `NestedRegionResult` value class on success, a + `KompactDecodeError` on failure (zero-alloc on both JVM and + iOS, per the ticket 03 value-class pattern). +3. **`value class NestedRegionResult(val startBit: Int, val bitLength: Int)`** + — declared in `commonMain/.../KompactFraming.kt` (or a new + `NestedRegionResult.kt`). `@JvmInline` on the JVM actual; + plain `value class` on iOS actual. Two `Int` fields; the + field names are self-documenting (no `Pair.first` / + `Pair.second` confusion). The four-member public surface + mirrors the seven result classes: `isSuccess`, `isFailure`, + `error`, `getOrThrow(): Pair`. +4. **`KompactFraming.readLengthPrefixOrThrow(raw, bitOffset, bitWidth): Int`** + — the count-prefix throw-on-failure companion. Throws + `KompactDecodeException(BadLengthPrefix)` on invalid width + or overrun. The `-1`-on-failure form stays for the hot-path + internal; the `…OrThrow` form is the user-facing throw + path. No typed result for the count prefix — a single `Int` + is too small to justify a new value class (the spec's + ticket 08 keeps the seven specialized result value classes + per scalar kind; the count prefix is not a scalar). +5. **`Kompact.Result.NestedRegion` typealias** in + `KompactResult.kt` (the `Kompact.Result` namespace from + ticket 04). Mirrors the `Kompact.Result.Int` / `…Long` / + etc. pattern. +6. **`NestedRegionResult.getOrElse(fallback: (KompactDecodeError) -> Pair): Pair`** + and **`NestedRegionResult.map(transform: (Pair) -> Pair): NestedRegionResult`** + extensions, mirroring the stdlib `Result` pattern from + ticket 04. Pure extensions; no value-class change. + +### What gets demoted + +- **`KompactFraming.nestedRegionOrNull`**: `public inline` → + `internal inline`. The new public functions (`readNested` and + `readNestedOrThrow`) delegate to it; it's the hot-path + internal. No deprecation cycle (the library has not been + released, per the map's "Blast radius" rule). + +### Sketch (for the implementation commit) + +```kotlin +// KompactFraming.kt — commonMain (additions) + +public value class NestedRegionResult internal constructor(private val packed: Long) { + public val startBit: Int get() = (packed ushr 32).toInt() + public val bitLength: Int get() = packed.toInt() and 0xFFFFFFFF.toInt() + // isSuccess / isFailure / error / getOrThrow() — see ticket 03 value-class pattern + // Companion.success(startBit, bitLength) / failure(error) +} + +public inline fun readNestedOrThrow( + raw: ByteArray, bitOffset: Int, prefixBitWidth: Int +): Pair { + val region = nestedRegionOrNull(raw, bitOffset, prefixBitWidth) + ?: throw KompactDecodeException(/* BadLengthPrefix or TruncatedNested or BoundsError */) + return region.first to region.second +} + +public inline fun readNested( + raw: ByteArray, bitOffset: Int, prefixBitWidth: Int +): NestedRegionResult { + val region = nestedRegionOrNull(raw, bitOffset, prefixBitWidth) + return if (region != null) NestedRegionResult.success(region.first, region.second) + else NestedRegionResult.failure(/* BadLengthPrefix or TruncatedNested or BoundsError */) +} + +public inline fun readLengthPrefixOrThrow( + raw: ByteArray, bitOffset: Int, bitWidth: Int +): Int { + if (bitWidth !in VALID_PREFIX_WIDTHS) { + throw KompactDecodeException(KompactDecodeError.BadLengthPrefix) + } + if (!KompactRuntime.fits(raw, bitOffset, bitWidth)) { + throw KompactDecodeException(KompactDecodeError.BadLengthPrefix) + } + return when (bitWidth) { + 8 -> KompactRuntime.readBits(raw, bitOffset, 8) + 16 -> KompactRuntime.readBits(raw, bitOffset, 16) + else -> KompactRuntime.readBitsLong(raw, bitOffset, 32).toInt() + } +} + +// KompactFraming.kt — demoted (was public, now internal) +- public inline fun nestedRegionOrNull( ++ internal inline fun nestedRegionOrNull( + raw: ByteArray, bitOffset: Int, prefixBitWidth: Int +): Pair? { … } + +// KompactResult.kt — additions ++ public typealias NestedRegion = NestedRegionResult // in the Kompact.Result namespace ++ public inline fun NestedRegionResult.getOrElse(fallback: (KompactDecodeError) -> Pair): Pair ++ public inline fun NestedRegionResult.map(transform: (Pair) -> Pair): NestedRegionResult +``` + +### Propagation + +- **Test updates** (in the implementation commit): + - `kompact/src/commonTest/.../KompactFramingTest.kt:88, 102, 124, 127, 131, 134` + — these six call sites use `nestedRegionOrNull`. After the + demotion, they switch to `readNested` (typed result) or + `readNestedOrThrow` (throw). The two test methods named + `nestedRegionOrNull_rejectsIntMaxByteCountPrefix` and + `nestedRegionOrNull32_roundTripsLegitByteCount` rename to + `readNested_rejectsIntMaxByteCountPrefix` and + `readNested_roundTripsLegitByteCount` (the public accessor + is `readNested` now). + - `kompact/src/commonTest/.../KompactWriterTest.kt:105` — uses + `nestedRegionOrNull` to read back the `writeNested` output. + Switches to `readNested(buf, 0, 16).getOrThrow()`. +- **Docs**: + - `docs/api-reference.md#kompactframing` — the public-surface + table currently lists `nestedRegionOrNull`. After the + demotion, the table lists the new public functions + (`readNestedOrThrow`, `readNested`, `readLengthPrefixOrThrow`) + plus the new `NestedRegionResult` value class (with its + four-member surface). `nestedRegionOrNull` is removed + from the public table; a note marks it as the hot-path + internal. + - `docs/architecture.md#framing-contract` — the reference to + `nestedRegionOrNull` in the framing helpers sentence + (`writeLengthPrefix / nestedRegionOrNull object`) updates + to reference the new public surface. + - `docs/getting-started.md` — does not currently use + `nestedRegionOrNull`; the tutorial exercises fixed-width + scalars + the writer's `writeNested` (no read-back of + nested). The tutorial's "long-form payload" section (if + it gets added in a follow-up) can use the new + `readNested` as the symmetric reader. No edit required for + this ticket. +- **Public ABI change** — adds 1 new value class + (`NestedRegionResult`), 3 new public functions + (`readNestedOrThrow`, `readNested`, `readLengthPrefixOrThrow`), + 2 new extensions (`getOrElse`, `map`). Removes 1 public + function (`nestedRegionOrNull`, demoted to `internal`). + Net: 5 new public symbols, 1 demoted. BCV will catch the + drift; klib golden regen on macOS via the existing + `regen-goldens.yml` workflow. +- **Ticket 09** (Test file split) — note the new + `KompactFramingTest` tests for `readNested` / + `readNestedOrThrow` / `readLengthPrefixOrThrow` / + `NestedRegionResult` extensions may live in the framing + test file or a new `KompactFramingNestedRegionTest.kt` per + the split decision. Note in 09's body; do not resolve. + +## Comments diff --git a/.scratch/kompact-ergonomics/issues/06-annotation-visibility.md b/.scratch/kompact-ergonomics/issues/06-annotation-visibility.md new file mode 100644 index 0000000..3ad9770 --- /dev/null +++ b/.scratch/kompact-ergonomics/issues/06-annotation-visibility.md @@ -0,0 +1,260 @@ +Type: research +Status: resolved + +# 06 — `@KompactModel` / `@KompactField`: ship a processor, hide them, or keep as-is? + +## Question + +The annotations `@KompactModel` (class-target, source-retained) and +`@KompactField(bitOffset, bitWidth, lengthPrefixWidth, isNested, +repeatCountWidth, enumWidth, defaultValue, isVersionField)` are +declared in `kompact/src/commonMain/kotlin/ch/trancee/kompact/runtime/KompactAnnotations.kt` +and pinned by `KompactFieldV1SurfaceTest` (compile-time contract that +all eight members exist). They are documented in +`docs/api-reference.md#annotations` and referenced in the bundled +`VehicleTelemetry` example. + +The v1 spec map's ticket 02 ("Code generation — KSP 2.3.9+") +records the *decision* that a KSP processor will generate the +view-class bodies from the annotations, but the processor has +**never been implemented** in this repository. The annotation +surface therefore sits in the public API with no consumer +producers: a newcomer reading the README sees the annotations, +adds them to a model, and gets nothing (the annotations are +source-retained; no runtime effect; no codegen). + +Three options to grill: + +1. **Ship a minimal KSP processor** in a new `:kompact-ksp` module + (per ticket 12, "Module split & publication — split modules, + KSP-safe jar") that generates the `expect value class` + + `@JvmInline actual` / plain `actual` from a `@KompactModel` + value class declaration with `@KompactField` properties. This + makes the annotation surface a real ergonomic affordance: a + consumer writes the model class, the KSP processor generates + the read/write bodies, and the runtime's `KompactRuntime` / + `KompactWriter` calls stay zero-alloc. +2. **Hide the annotations** from the public API until the + processor lands. Move them to an `internal` package + (`ch.trancee.kompact.annotations.internal`) and gate the + public surface on `@RequiresOptIn` or a `Beta` annotation so + consumers don't accidentally use them. The runtime stays + usable by hand-written `KompactRuntime.readBits` calls (the + way `VehicleTelemetry` works today). +3. **Keep as-is.** The annotations are documented as + compile-time-only schema metadata; a newcomer reading the + API reference sees the note "no processor ships in this + repository today" and either writes a hand-written view class + or waits for the processor. Accept the documentation + friction. + +The decision: which of the three, and if (1), what is the +minimum viable processor scope (just `readBits`-shaped getters, +or full Ticket 04+05+07 generation including length prefixes and +nested)? + +## Context for the claiming session + +- `kompact/src/commonMain/kotlin/ch/trancee/kompact/runtime/KompactAnnotations.kt` — + the two annotation declarations (lines ~11–49). +- `kompact/src/commonTest/kotlin/ch/trancee/kompact/runtime/KompactFieldV1SurfaceTest.kt` + — the compile-time contract test. +- `.scratch/kompact-spec/issues/02-generation-strategy.md` — the + locked decision (KSP 2.3.9+, KSP emits whole `value class` source + files into commonMain). +- `.scratch/kompact-spec/issues/12-module-split-and-publication.md` + — the module split (`:kompact` runtime + `:kompact-ksp` processor + + optional gradle plugin). +- `.scratch/kompact-spec/issues/03-value-class-representation.md` + — the expect/actual value-class pattern the processor would + generate. +- `.scratch/kompact-spec/research/ksp-kmp-generation.md` — the + research notes on KSP generation across KMP targets. +- The annotations are referenced in the API reference + (`docs/api-reference.md#annotations`) and in + `VehicleTelemetry.kt` (the bundled example uses + `@KompactModel` + `@KompactField`). + +## Open sub-questions + +1. **Scope of the minimal processor (option 1)** — the v1 type + set is large (signed/unsigned scalars 1–64, booleans, IEEE + floats, strings, blobs, nested, repeated, versioning). A + processor that handles the full set is a large piece of work. + A minimum viable processor that handles only the + fixed-width scalar case (the same case `VehicleTelemetry` + exercises today) is a much smaller lift and would make + *that* model ergonomic. Which scope is the right MVP for this + effort's blast radius? +2. **Module split** — option 1 implies a new `:kompact-ksp` + module. The current `settings.gradle.kts` includes only + `:kompact`. Adding a new module is a non-trivial change to + the build. Is that within this effort's blast radius, or is + it a fresh effort? +3. **`Beta` / `@RequiresOptIn` semantics (option 2)** — Kotlin's + `@RequiresOptIn` is the idiomatic gate. The annotations + *aren't* experimental in the language sense (they're stable + source-retained metadata), so the gate would be a + "we reserve the right to change the schema metadata" notice. + Worth it, or over-engineered? +4. **If option 3 (keep as-is)** — is the friction + (newcomer-added-but-no-processor) the right paper cut, or + should the docs be louder about the hand-written + `VehicleTelemetry` pattern being the intended path until the + processor lands? + +## What "resolved" looks like + +- The chosen path is recorded under `## Answer` with a one-line + rationale. +- If option 1 is chosen, the MVP scope and the module-split + decision are recorded. +- If option 2 is chosen, the `@RequiresOptIn` shape and the + migration plan (how to handle the existing `VehicleTelemetry` + example) are recorded. +- The decision is propagated to ticket 07 + (`VehicleTelemetry` example alignment) and to + `docs/api-reference.md#annotations` (or a follow-up doc + commit). + +## Answer + +**Decision: hide `@KompactModel` and `@KompactField` behind a +`@RequiresOptIn` gate. The annotations move from the public +`ch.trancee.kompact.runtime` package to a preview package +`ch.trancee.kompact.annotations`, marked with a single +`@RequiresOptIn(level = RequiresOptIn.Level.WARNING)` annotation +`@KompactPreview`. Consumers who want the annotations today +opt in with `@OptIn(KompactPreview::class)`; consumers who +don't opt in don't see the annotations (they're "preview" API +and don't appear in IDE completion). Reversible when the +processor ships — re-expose the annotations as public. The +runtime classes stay in `ch.trancee.kompact.runtime`; only the +annotation classes move.** + +### Why this option + +The locked v1 spec (tickets 02, 03, 12, 13) commits the project +to a future `:kompact-ksp` KSP processor, but the processor is +not part of *this* effort's blast radius. The annotations are +`SOURCE`-retained (zero runtime cost) and currently sit in the +public API as a forward-compatibility hook. A newcomer who +reads the docs and adds `@KompactField` to a model gets nothing +today — no runtime effect, no processor. The honest ergonomic +call is to *say so in the compiler* via `@RequiresOptIn`, not +in prose alone. The warning fires at compile time, not at code +review time. + +Hiding the annotations is reversible: when the processor lands +(a separate effort), re-expose the annotations as public and +the opt-in gate is no longer needed. The `KompactFieldV1SurfaceTest` +stays as the compile-time contract test (it moves with the +annotations to the new package and opts in). + +### What gets added + +1. **`kompact/src/commonMain/kotlin/ch/trancee/kompact/annotations/KompactAnnotations.kt`** — + the two annotation classes (`@KompactModel`, `@KompactField`) + in the new preview package, with the same SOURCE retention + and the same eight `@KompactField` members as the locked + spec (per `KompactFieldV1SurfaceTest`'s compile-time contract). +2. **`@RequiresOptIn(level = RequiresOptIn.Level.WARNING)` annotation `KompactPreview`** + — declared in the same file; applied to both annotation + classes. The warning message references the missing KSP + processor and the migration path (hand-written value class + views, or `@OptIn(KompactPreview::class)` to silence). + +### What gets removed + +- **`kompact/src/commonMain/kotlin/ch/trancee/kompact/runtime/KompactAnnotations.kt`** + — the old location. The runtime package no longer carries + the annotation classes. + +### Sketch (for the implementation commit) + +```kotlin +// kompact/src/commonMain/kotlin/ch/trancee/kompact/annotations/KompactAnnotations.kt + +@RequiresOptIn( + level = RequiresOptIn.Level.WARNING, + message = "The @KompactModel / @KompactField schema annotations are a " + + "preview API. No KSP processor ships in this repository yet. " + + "Either hand-write your value class view (see VehicleTelemetry) " + + "or @OptIn(KompactPreview::class) to silence this warning." +) +@Target(AnnotationTarget.CLASS) +@Retention(AnnotationRetention.BINARY) // @RequiresOptIn requires BINARY +public annotation class KompactPreview + +@KompactPreview +@Target(AnnotationTarget.CLASS) +@Retention(AnnotationRetention.SOURCE) +public annotation class KompactModel + +@KompactPreview +@Target(AnnotationTarget.PROPERTY) +@Retention(AnnotationRetention.SOURCE) +public annotation class KompactField( + public val bitOffset: Int, + public val bitWidth: Int, + public val lengthPrefixWidth: Int = 8, + public val isNested: Boolean = false, + public val repeatCountWidth: Int = 8, + public val enumWidth: Int = 0, + public val defaultValue: String = "", + public val isVersionField: Boolean = false, +) +``` + +### Propagation + +- **`kompact/src/commonTest/.../KompactFieldV1SurfaceTest.kt`** — + updates the import path from + `ch.trancee.kompact.runtime.KompactField` to + `ch.trancee.kompact.annotations.KompactField` and adds + `@OptIn(KompactPreview::class)` to the probe class (or the + test class). The test's purpose — pin the compile-time + contract of `@KompactField`'s eight members — is unchanged. +- **`kompact/src/commonMain/.../generated/VehicleTelemetry.kt`** + (and the jvmMain + iosMain actuals) — updates the import path + and adds `@file:OptIn(KompactPreview::class)` (or + `@OptIn(KompactPreview::class)` on the class). The example + stays annotated; the warning is silenced for the example. + Note in ticket 07's body (the example-alignment ticket) — + 07's "raw `readBits` shape" option is no longer the only + choice, since the annotations can stay on the example. +- **Docs**: + - `docs/api-reference.md#annotations` — the public-surface + table for `@KompactModel` / `@KompactField` is replaced + with a "Preview API" note pointing at the new package, + the `@KompactPreview` opt-in, and the hand-written value + class pattern. + - `docs/architecture.md#value-class-representation` and the + "what is and is not in this repository today" section — + the annotation visibility decision is reflected. + - `README.md` — the "No codegen yet" bullet updates to + "Preview schema annotations (`@KompactModel` / + `@KompactField`) require `@OptIn(KompactPreview::class)`. + No KSP processor ships in this repository today; hand-write + your value class view (see `VehicleTelemetry`)." +- **Ticket 07** (`VehicleTelemetry` example alignment) — the + forward note from ticket 01 still applies. Ticket 06 + confirms that the example's annotations can stay (via + `@OptIn`), so 07's decision is purely about the getter + shape (raw `readBits` vs. public `readScalar` + + `readScalarAsLong`). Note in 07's body; do not resolve. + +### What this does NOT do + +- **No `:kompact-ksp` module is created.** That is a separate + effort; this ticket only hides the annotation surface that + currently pretends to be public. +- **No BCV regen needed** — the annotations are SOURCE-retained + and the preview opt-in is a compile-time feature; both have + zero runtime/ABI impact. The public ABI (the runtime classes + in `ch.trancee.kompact.runtime`) is unchanged. +- **No `KompactFieldV1SurfaceTest` removal** — the test + continues to pin the compile-time contract of + `@KompactField`'s eight members, just in the new package. + +## Comments diff --git a/.scratch/kompact-ergonomics/issues/07-vehicletelemetry-alignment.md b/.scratch/kompact-ergonomics/issues/07-vehicletelemetry-alignment.md new file mode 100644 index 0000000..ab643e7 --- /dev/null +++ b/.scratch/kompact-ergonomics/issues/07-vehicletelemetry-alignment.md @@ -0,0 +1,292 @@ +Type: grilling +Status: resolved +Blocked by: — (note 2026-09-05: ticket 01 settled the parameter shape as `ScalarType(bitWidth, signed)` with no enum axis. Ticket 06 settled the annotation visibility: the example's `@KompactModel` / `@KompactField` annotations are now gated by `@KompactPreview` (`@RequiresOptIn(WARNING)`); the example opts in via `@file:OptIn(KompactPreview::class)`. The "keep the raw `readBits` shape" option remains valid as a codegen-output reference. The "realign to the public `readScalar`" option now has the annotations as a clear `expect` shape (KSP processor's future output) — the example is closer to the codegen target either way. 07's decision is still its own.) +# 07 — `VehicleTelemetry` example: teach the public API or the codegen shape? + +## Question + +The bundled example +`kompact/src/commonMain/kotlin/ch/trancee/kompact/generated/VehicleTelemetry.kt` +is the `expect value class` that the README and `docs/getting-started.md` +reference. Its getter bodies are hand-written using the **raw** +`KompactRuntime.readBits` path: + +```kotlin +@KompactField(bitOffset = 0, bitWidth = 4) +public val batteryStatus: Int + +@KompactField(bitOffset = 4, bitWidth = 10) +public val speed: Int + +@KompactField(bitOffset = 14, bitWidth = 1) +public val isMalfunctioning: Boolean +``` + +…with the platform actuals (`jvmMain` + `iosMain` `VehicleTelemetry.kt`) +implementing the getters as `KompactRuntime.readBits(raw, +bitOffset, bitWidth)` (the raw zero-alloc primitive). This is +the *codegen-output* pattern: the KSP processor that ticket 06 +is about would emit exactly this shape. + +A newcomer reading the example sees two patterns at once: the +**annotation surface** (the `@KompactField` properties) and the +**raw readBits path** (the getter bodies, which are an internal +detail the consumer never writes by hand once the processor +lands). The newcomer may then write a hand-written value class +and not realize they're doing what a future KSP processor will +do for them, OR they may try to use the public +`readScalar` / `readBool` checked accessors and get a different +result (a `KompactResult`, not a primitive). + +The decision: which example teaches the right thing? + +- **Realign the example to use the public checked accessors** + (`readScalar` for the 4-bit and 10-bit fields, `readBool` for + the 1-bit flag). The getters then do + `.getOrThrow()` and return primitives. This teaches the + public API a newcomer will actually use (and what a hand-written + model would look like if the KSP processor never ships). It + costs the zero-alloc read path: the value-class getter now + allocates a `Long` for the result on every access (the + `@JvmInline`/`actual` value class still makes it zero-alloc + on the heap, but the primitive is extracted via + `getOrThrow` which… does not throw on success and returns + inline). + + Wait — the result is inline (`@JvmInline` value class over + `Long`), so the getter is still effectively zero-alloc. The + trade is between the *zero-alloc internal pattern* (raw + `readBits`) and the *public API pattern* (checked + `readScalar`/`readBool` with `.getOrThrow()`). + +- **Keep the raw `readBits` shape and document it as the + codegen-output pattern.** The example then teaches the + internal pattern, with a note "this is what the KSP processor + will emit; hand-write it now only if you want the zero-alloc + read path on the success hot path." The newcomer who doesn't + need the zero-alloc read path writes a different + hand-written model using the public checked accessors; the + docs explain the difference. + +- **Add a second example** (e.g. `VehicleTelemetryChecked.kt`) + that demonstrates the public checked accessors, alongside + the existing raw example. The raw example stays as the + codegen-output reference; the new example is the + newcomer-friendly path. Two examples, two readers. + +## Context for the claiming session + +- `kompact/src/commonMain/kotlin/ch/trancee/kompact/generated/VehicleTelemetry.kt` + — the `expect value class` declaration with the + `@KompactField` annotations (lines ~22–40). +- `kompact/src/jvmMain/kotlin/ch/trancee/kompact/generated/VehicleTelemetry.kt` + — the JVM actual with the raw `KompactRuntime.readBits` + bodies. +- `kompact/src/iosMain/kotlin/ch/trancee/kompact/generated/VehicleTelemetry.kt` + — the iOS actual. +- `kompact/src/commonTest/kotlin/ch/trancee/kompact/generated/VehicleTelemetryTest.kt` + — the test that pins the 16-bit wire bytes + (`0xA5 0x40`) and the round-trip values. +- The README and `docs/getting-started.md` both reference + `VehicleTelemetry` by name. Any example change ripples to + both. +- The `GettingStartedTest` in + `kompact/src/commonTest/.../runtime/` is the + executable-journey test for the tutorial; it uses the + **public** checked accessors and pins its own wire bytes + (`0xA5 0x40`). If the example is realigned to the public + API, the tutorial and the example converge; if the example + keeps the raw shape, the two diverge and the docs need to + explain both. + +## Open sub-questions + +1. **Is the example the right place to teach the codegen-output + pattern?** A newcomer landing on the repo for the first + time is not the audience for "this is what the KSP processor + will emit." The audience for the codegen-output pattern is + the *implementer of the KSP processor* (ticket 06) and + *maintainers of the runtime's zero-alloc contract*. A + separate doc (or research note) might be a better home. +2. **Convergence with the tutorial.** `docs/getting-started.md` + uses the public checked accessors and pins the wire bytes. + The example uses the raw path and pins the same wire bytes. + Converging on one shape makes the docs simpler; diverging + (with a clear "this is the internal pattern" note) preserves + the codegen-output reference. +3. **The annotation question (ticket 06).** If ticket 06 + decides to ship a processor, the raw example becomes the + "what the processor will emit" reference. If ticket 06 + decides to hide the annotations, the example either + drops the annotations (and becomes a plain `expect value class` + over a `ByteArray`) or goes away entirely. + +## What "resolved" looks like + +- The chosen shape (realign / keep / add a second example) is + recorded under `## Answer`. +- The decision is propagated to ticket 06 (annotation + visibility) and to the README and `docs/getting-started.md` + (which currently reference `VehicleTelemetry` by name). +- The wire bytes (`0xA5 0x40`) and the test + (`VehicleTelemetryTest`) stay green regardless of which shape + is chosen. + +## Answer + +**Decision: realign the `VehicleTelemetry` example to use the new +public checked accessors (`readScalar` + `readBool` from ticket 01, +`getOrThrow()` for the success path). The annotations stay on the +example (via `@file:OptIn(KompactPreview::class)` from ticket 06). +The codegen-output reference (raw `readBits` shape) moves to prose +in `docs/architecture.md`. Single canonical model.** + +### Why this option + +The example is the only annotated value class in the source +tree. A newcomer who reads the README → `docs/getting-started.md` +(the tutorial) → `docs/api-reference.md` → and then *opens* the +example sees a different shape from everything else: raw +`readBits` getter bodies, the internal zero-alloc pattern. They +wonder "is *this* the API?" The answer is no — the tutorial and +the API reference use the public checked accessors; the example +is the codegen-output pattern. Two stories, one for the +consumer, one for the future KSP processor implementer. + +The "challenge everything" mandate points at the single +canonical model: the example matches the tutorial. The +codegen-output pattern (raw `readBits` + annotations) is +preserved as prose in `docs/architecture.md` for the +implementer of the future processor; it does not need to live +as runnable source code in the example. + +### Sketch (for the implementation commit) + +```kotlin +// commonMain/.../generated/VehicleTelemetry.kt — the expect value class +@file:OptIn(KompactPreview::class) + +@KompactModel +public expect value class VehicleTelemetry(public val raw: ByteArray) { + + @KompactField(bitOffset = 0, bitWidth = 4) + public val batteryStatus: Int + + @KompactField(bitOffset = 4, bitWidth = 10) + public val speed: Int + + @KompactField(bitOffset = 14, bitWidth = 1) + public val isMalfunctioning: Boolean +} + +// jvmMain/.../generated/VehicleTelemetry.kt — the JVM actual +@file:OptIn(KompactPreview::class) + +@JvmInline +@KompactModel +public actual value class VehicleTelemetry(public actual val raw: ByteArray) { + + init { + require(raw.size >= 2) { /* F-001 fail-fast on truncated buffer */ } + } + + @KompactField(bitOffset = 0, bitWidth = 4) + public actual val batteryStatus: Int + get() = KompactRuntime.readScalar(raw, 0, ScalarType.UINT_8).getOrThrow() + + @KompactField(bitOffset = 4, bitWidth = 10) + public actual val speed: Int + get() = KompactRuntime.readScalar(raw, 4, ScalarType.UINT_16).getOrThrow() + + @KompactField(bitOffset = 14, bitWidth = 1) + public actual val isMalfunctioning: Boolean + get() = KompactRuntime.readBool(raw, 14).getOrThrow() +} + +// iosMain/.../generated/VehicleTelemetry.kt — the iOS actual: same getter +// shape, no @JvmInline (per the ticket 03 value-class pattern). +``` + +### What changes in the test + +`VehicleTelemetryTest.kt` continues to: +- build the buffer with `KompactRuntime.writeBits` (the + write-side stays raw; the write path is not the example's + teaching target), +- assert the wire bytes (`0xA5 0x40`), +- round-trip the values (5, 10, true) through + `VehicleTelemetry(buf)`, +- pin the F-001 constructor validation. + +The test's *read side* (the getters) is unchanged from the +consumer's perspective — the getters still return the same +primitives. The test passes with no edits. + +### What changes in the docs + +- **`docs/architecture.md`** — the "what is in this repository + today" section updates: the example's getter bodies are + the new public-API shape. The *codegen-output* pattern + (raw `readBits` + `@KompactField` annotations) moves to a + new prose section, e.g. a "Codegen output reference" block + that the future KSP processor implementer reads alongside + ticket 02's research notes. +- **`docs/api-reference.md`** — the `## annotations` section's + note that `VehicleTelemetry` "demonstrates the annotation + surface" is unchanged (the annotations are still on the + example). A new line notes "the example's getter bodies + use the public API; the codegen-output shape is documented + in `docs/architecture.md#codegen-output-reference`." +- **`README.md`** — no change (the README does not point at + the example as a learning artifact; the tutorial handles + the consumer's view). + +### What does NOT change + +- The annotations stay on the example (`@KompactModel`, + `@KompactField` × 3). They are gated by `@KompactPreview` + from ticket 06; the example opts in via + `@file:OptIn(KompactPreview::class)`. +- The `expect value class` declaration's `raw: ByteArray` + property and the three `@KompactField` properties stay the + same shape. +- The F-001 constructor validation in the platform actuals + (the `init` block that `require(raw.size >= 2)`) stays. +- The wire bytes (`0xA5 0x40`) and the round-trip values + stay. The test passes with no edits. +- The annotations are still SOURCE-retained (per + `KompactAnnotations.kt`); `@KompactPreview` is + BINARY-retained (required by `@RequiresOptIn`). + +### Propagation + +- **Ticket 09** (Test file split) — the test for the example + is currently `VehicleTelemetryTest.kt` (1 file, ~100 lines, + well within the D9 500-line limit). No split needed. +- **Ticket 10** (Docs layer structure review) — the codegen- + output reference in `docs/architecture.md` is a small prose + addition; ticket 10's "is the layering right?" question is + not affected. + +## Comments + +2026-09-06 — Amendment (mutable view classes override). + +ADR-0001 [`../../../docs/adr/0001-mutable-view-classes-with-write-through-setters.md`] +overrides the read-only-view decision from this ticket and ticket 07 +(write-builder-interface). The `VehicleTelemetry` fields are now `var` +with write-through setters in addition to the checked-accessor getters. + +The parts of this ticket's Answer that remain valid: +- Getters use `readScalar`/`readBool` + `getOrThrow()` (not raw `readBits`). +- `@KompactModel` / `@KompactField` annotations stay on the example. +- F-001 constructor validation stays. +- Wire bytes `0xA5 0x40` and round-trip values stay. + +The parts superseded: +- "Fields must be exposed as `val`" (PROMPT.md §1) — overridden to `var`. +- "Views are read-only" (ticket 07) — setters added as a secondary mutation path. +- "No `Companion.create`" — a `create` factory is added for outbound construction. + +`docs/architecture.md` updated to document the codegen-output reference (raw +`readBits` shape) as prose, and the mutable-view decision captured in ADR-0001. diff --git a/.scratch/kompact-ergonomics/issues/08-ci-ergonomics.md b/.scratch/kompact-ergonomics/issues/08-ci-ergonomics.md new file mode 100644 index 0000000..13ec800 --- /dev/null +++ b/.scratch/kompact-ergonomics/issues/08-ci-ergonomics.md @@ -0,0 +1,182 @@ +Type: grilling +Status: resolved + +# 08 — CI ergonomics: should Linux run `jvmApiCheck` too? + +## Question + +The CI workflow (`.github/workflows/ci.yml`) splits across runners: + +- `api-check` on `macos-latest` — runs `:kompact:apiCheck`, which + covers both the JVM ABI (`kompact/api/kompact.api`) and the + merged iOS klib ABI (`kompact/api/kompact.klib.api`). +- `jvm-test` on `ubuntu-latest` — runs `:kompact:jvmTest`. + +The split is necessary because only macOS can infer the iOS klib +ABI (per the v1 spec map's research note). But it has a +downside: a Linux contributor cannot run `apiCheck` locally — +`jvmApiCheck` runs on Linux (it's a JVM ABI check), but the +`klibApiCheck` part is a no-op on non-Apple hosts (a known +behaviour of BCV 0.18.0). A Linux contributor who changes the +public API gets a false green locally and only finds out about +the klib drift on the macOS CI run. + +The decision: do we add a Linux-side `:kompact:jvmApiCheck` job +(sibling of `jvm-test`) that catches the JVM part of the API +drift on every PR, leaving the klib check to the macOS job? Or +is the current split the right shape (one macOS job does both +APIs, one Linux job does the JVM tests, the Linux-API gap is +accepted)? + +## Context for the claiming session + +- `.github/workflows/ci.yml` — the two-job shape. +- `kompact/build.gradle.kts` — `apiValidation { klib { enabled = true } }` + (lines ~43–47) enables klib inference. +- `docs/ci.md` — the user-facing explanation of the current + shape. The "Re-running gates locally" section currently + documents that the iOS half of `apiCheck` is a no-op on + non-Mac hosts. +- The v1 spec map's ticket 13 ("KMP/KSP publication wiring") + resolved the BCV 0.18.0 / klib-enable wiring; the locked + decision is the current shape, not the alternative. + +## Open sub-questions + +1. **What does "Linux catches JVM API drift" actually buy us?** + The macOS `api-check` job already runs `jvmApiCheck` as part + of the combined `apiCheck`; the only thing the new Linux + job would do is *fail the PR earlier* (before the macOS + runner is even scheduled). For a feature branch like + `feat/laguna`, the macOS job is ~6 min and the Linux job + is ~10s. The earlier-fail saves time only on a *failed* + JVM-API check. +2. **Does the new job compose with the existing `jvm-test`?** + The simplest shape is one job that runs both + `jvmTest` and `jvmApiCheck` on Linux. The two tasks share + the JVM compile (so the wall-clock cost is dominated by + `jvmTest`), and a single job is easier to reason about + than two Linux jobs. +3. **Does this change the gate semantics for a contributor?** + Today, a Linux contributor who breaks the JVM API sees + the red on the macOS `api-check` job only (with a + ~6-min queue). With the new Linux job, they see the red + on Linux (no queue). The change is a faster feedback loop + for JVM API drift, not a new gate. +4. **The `regen-goldens.yml` workflow** is `workflow_dispatch` + only and lives on the feature branch. Should it move to + `main` so it's dispatchable as a public escape hatch, or + stay on the feature branch until the first release? + +## What "resolved" looks like + +- The chosen CI shape is recorded under `## Answer` with a + one-line rationale. +- The chosen `regen-goldens.yml` location (feature branch vs. + main) is recorded if the question is in scope. +- `docs/ci.md` is updated (or scheduled for the implementation + commit) to reflect the new shape. +- The implementation commit updates `.github/workflows/ci.yml` + accordingly and re-runs the macOS `api-check` to confirm + green. + +## Answer + +**Decision: fold `:kompact:jvmApiCheck` into the existing +`jvm-test` job (Ubuntu, JDK 21). The macOS `api-check` job +stays as the final gate. `regen-goldens.yml` stays on +`feat/laguna` (manual `workflow_dispatch`; GitHub UI path).** + +### CI shape + +`ci.yml`: +```yaml +jobs: + api-check: + name: apiCheck (macOS) + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 + with: { distribution: temurin, java-version: 21, cache: gradle } + - run: ./gradlew :kompact:apiCheck --no-daemon # unchanged + + jvm-test: + name: jvmTest + jvmApiCheck (Linux) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 + with: { distribution: temurin, java-version: 21, cache: gradle } + - run: ./gradlew :kompact:jvmTest :kompact:jvmApiCheck --no-daemon +``` + +The `jvm-test` job name updates to `jvmTest + jvmApiCheck (Linux)` +to advertise the two gates in the PR checks list. The two +tasks share the JVM compile (`:kompact:compileKotlinJvm` is +the common prerequisite), so the wall-clock cost of adding +`:kompact:jvmApiCheck` is dominated by the API comparison +(a few seconds). The macOS `api-check` job continues to run +the full `apiCheck`, which transitively includes +`jvmApiCheck` + `klibApiCheck` — so the macOS job is the +*final* gate (it catches everything), and the Linux job is +the *fast* gate (it catches JVM API drift before the macOS +queue). + +### Why this option + +The current split's only reason to exist is the macOS-only klib +inference. The JVM API check has no such constraint and +should run on every host that can run it (every host — it's +a JVM task with no native toolchain). A Linux contributor who +breaks the JVM API today gets a false green on the PR; the +macOS job catches it after a ~6-min queue. Folding `jvmApiCheck` +into the existing `jvm-test` job closes the gap with no extra +wall-clock cost (the JVM compile is shared) and no job sprawl +(one Linux job, one macOS job). + +### What this does NOT change + +- **The macOS `api-check` job stays as the final gate.** It + continues to run the full `apiCheck` (which transitively + includes `jvmApiCheck` + `klibApiCheck`). The macOS job is + the only one that catches klib drift; the Linux job catches + the JVM subset only. +- **No new job.** One Linux job, one macOS job (same as today). +- **No new runner type.** Still Ubuntu for the JVM gate, + macOS for the klib gate. + +### Regen-goldens location + +`regen-goldens.yml` stays on `feat/laguna` only (current +state). The dispatch path is: GitHub UI → Actions → Regen +Goldens → Run workflow → pick `feat/laguna`. The `gh +workflow run` path is still 404 (default-branch lookup), +but the UI path works. Moving the workflow to `main` is a +merge-time concern, not this effort's blast radius. + +### Propagation + +- **`docs/ci.md`** — the "The gates" table updates: the + `jvm-test` job is renamed to `jvmTest + jvmApiCheck + (Linux)` and now runs both tasks. The "Re-running gates + locally" section adds `:kompact:jvmApiCheck` to the local + command. The "regen-goldens" section stays as-is (location + unchanged). +- **The `GettingStartedTest` and `VehicleTelemetryTest` do not + change.** The new `jvmApiCheck` task runs the existing + `kompact/api/kompact.api` golden against the freshly-inferred + JVM ABI; if the implementation commits in this effort + (tickets 01–07) change the public JVM ABI, the golden + needs to be regenerated *before* the Linux job turns + green. The implementation order matters: the public-ABI + changes (tickets 01, 04, 05) commit together with the + regenerated `kompact.api` golden (the existing + `regen-goldens.yml` workflow handles this; the + implementation commit per ticket records "regen the + JVM golden in the same commit" in the map's `Notes`). +- **Ticket 10** (Docs layer structure review) — the + `docs/ci.md` update is a small doc edit; ticket 10's + "is the layering right?" question is not affected. + +## Comments diff --git a/.scratch/kompact-ergonomics/issues/09-test-file-split.md b/.scratch/kompact-ergonomics/issues/09-test-file-split.md new file mode 100644 index 0000000..1af0f6b --- /dev/null +++ b/.scratch/kompact-ergonomics/issues/09-test-file-split.md @@ -0,0 +1,265 @@ +Type: grilling +Status: resolved +Blocked by: — (note 2026-09-05: tickets 01, 02, 04, and 05 settled the runtime + framing public surface. New public symbols to test: `readScalar(raw, off, type: ScalarType)` (ticket 01) + `readScalarAsLong` (ticket 02 rename) + `…OrThrow` wrappers (tickets 04 + 05) + `Kompact.Result` namespace (ticket 04) + `getOrElse`/`map` extensions (tickets 04 + 05) + `NestedRegionResult` (ticket 05) + `KompactFraming.readNested` / `readNestedOrThrow` / `readLengthPrefixOrThrow` (ticket 05). The split boundary (per-accessor vs. per-result-kind) should plan for these new symbols. If splitting per-accessor, the long-band test file is `KompactRuntimeReadScalarAsLongTest.kt`; the framing test file is `KompactFramingReadNestedTest.kt`.) +# 09 — Test file split: `KompactRuntimeCheckedReadTest` is 441 lines + +## Question + +`kompact/src/commonTest/kotlin/ch/trancee/kompact/runtime/KompactRuntimeCheckedReadTest.kt` +is **441 lines** of `@Test` methods covering seven distinct +checked read accessors: + +- `readBool` +- `readScalar` (widths 8, 16, 32; signed + unsigned) +- `readScalarLong` (widths 32, 64; signed + unsigned; the 1..31 + overlap with `readScalar` is intentional per the v1 spec) +- `readFloat` +- `readDouble` +- Boundary hardening tests (F-002 / F-003) + +CONSTITUTION.md rule **D9** says: + +> Maintained source/test file D <=300 lines, R <=500; split by +> responsibility/layer/platform. + +441 lines exceeds the 300-line default and is 41 lines under the +500-line hard limit. The file is trending toward the limit as +new accessors (e.g. the `ScalarType`-shaped `readScalar` from +ticket 01) are added. A new maintainer opening the test +directory sees a wall of `@Test` methods in one file. + +The decision: do we split the file now, and if yes, by what +boundary? + +- **By accessor** — one file per accessor + (`KompactRuntimeReadBoolTest`, + `KompactRuntimeReadScalarTest`, …). Maximum clarity; the + file name announces the surface. Eight files (one per + accessor + one for boundary hardening). +- **By width band** — `ReadScalarIntTest` (1..32), + `ReadScalarLongTest` (1..64), `ReadFloatTest`, `ReadDoubleTest`, + `ReadBoolTest`. Mirrors the result type split (IntResult vs + LongResult). +- **By result kind** — one file per result value class + (`ReadBoolTest`, `ReadScalarIntTest`, `ReadScalarLongTest`, + `ReadFloatTest`, `ReadDoubleTest`, `ReadBytesTest`, + `ReadShortTest`). The result kind is the consumer-facing + surface; tests grouped by the kind of value they exercise + is the most natural navigation. +- **Don't split yet** — wait for ticket 01 to land (the + accessor surface may change) and split in the same commit + that introduces the new accessors. The 441-line file stays + as-is until then. + +## Context for the claiming session + +- `kompact/src/commonTest/kotlin/ch/trancee/kompact/runtime/KompactRuntimeCheckedReadTest.kt` + — the 441-line file. +- `kompact/src/commonTest/kotlin/ch/trancee/kompact/runtime/` + — the other test files in the same package: + - `KompactFieldV1SurfaceTest.kt` (annotation compile-time contract) + - `KompactFramingTest.kt` + - `KompactResultCanonicalizationTest.kt` + - `KompactResultTest.kt` + - `KompactRuntimeLongBitsTest.kt` (raw primitive, not the + checked accessors) + - `KompactRuntimePropertyTest.kt` (round-trip + property-based) + - `KompactRuntimeTest.kt` (raw primitive) + - `KompactWriterTest.kt` + - `GettingStartedTest.kt` (the tutorial's executable journey) +- CONSTITUTION.md rule D9 — the 300/500-line limit. +- The v1 spec map's ticket 10 ("Testing model") requires + commonTest to cover all four categories (round-trip, + property-based, cross-version compat, zero-alloc + assertion). The split must preserve the category coverage; + no `@Test` method should be lost. + +## Open sub-questions + +1. **What's the right boundary for the split?** The four + options above are sketched. Is there a fifth (e.g. by + accessor's `signed`/`unsigned` axis)? +2. **Should the split wait for ticket 01 (data clump / + `ScalarType`)?** The accessor surface may change, and + splitting now means the file names will need to be + renamed in a follow-up commit. Co-splitting with ticket + 01 is cheaper. +3. **The boundary hardening tests (F-002 / F-003)** — are + these per-accessor or per-runtime? They exercise + `KompactRuntime.fits` and the bounds-check code paths + across accessors, so they don't fit cleanly into a + per-accessor file. A separate `KompactRuntimeBoundsHardeningTest` + is the natural home. +4. **The `KompactRuntimeLongBitsTest` and `KompactRuntimeTest`** + — these are *raw primitive* tests (not the checked + accessors). Should they be merged into the new + per-accessor files, or kept separate? The raw primitives + are a different surface (no bounds check, no typed + result) and a separate concern; keep separate is the + simpler answer. + +## What "resolved" looks like + +- The chosen split boundary is recorded under `## Answer` + with the list of new file names. +- The boundary-hardening test's new home is recorded. +- The decision is coordinated with ticket 01 (if 01's + accessor surface changes, the new file names are noted + in 01's resolution so the implementation commit can split + and rename in one pass). + +## Answer + +**Decision: split by accessor, all tests in this one commit. Seven +new test files replace `KompactRuntimeCheckedReadTest.kt` +(which is deleted). Each file tests one accessor + its +`…OrThrow` companion + the matching result value class's +`getOrElse`/`map` extensions. The framing nested tests go in +a new `KompactFramingReadNestedTest.kt`.** + +### The seven new files + +1. **`KompactRuntimeReadBoolTest.kt`** — `readBool` (4 existing + tests with updated signature if needed) + `readBoolOrThrow` + (1 new test: bounds error throws) + `BooleanResult.getOrElse` + + `BooleanResult.map` (2 new tests). ~7 tests, ~60 lines. +2. **`KompactRuntimeReadScalarTest.kt`** — `readScalar` (24 + existing tests with the new `type: ScalarType` signature + from ticket 01) + `readScalarOrThrow` (1 new test) + + `IntResult.getOrElse` + `IntResult.map` (2 new tests). ~27 + tests, ~220 lines. +3. **`KompactRuntimeReadScalarAsLongTest.kt`** — `readScalarAsLong` + (renamed from `readScalarLong` per ticket 02; ~10 existing + tests with the new `type: ScalarType` signature) + + `readScalarAsLongOrThrow` (1 new test) + + `LongResult.getOrElse` + `LongResult.map` (2 new tests; the + `LongResult` sentinel-band failure case is a good place + to assert that `getOrElse` returns the fallback for the + sentinel). ~13 tests, ~110 lines. +4. **`KompactRuntimeReadFloatTest.kt`** — `readFloat` (existing + tests) + `readFloatOrThrow` (1 new test) + + `FloatResult.getOrElse` + `FloatResult.map` (2 new tests; + the NaN-payload failure case is a good place to assert the + fallback). ~4 tests, ~40 lines. +5. **`KompactRuntimeReadDoubleTest.kt`** — `readDouble` (existing + tests) + `readDoubleOrThrow` (1 new test) + + `DoubleResult.getOrElse` + `DoubleResult.map` (2 new tests). + ~4 tests, ~40 lines. +6. **`KompactRuntimeBoundsHardeningTest.kt`** — F-002 / F-003 + cross-accessor boundary tests (4 existing tests; no new + tests, just relocation). ~80 lines. +7. **`KompactFramingReadNestedTest.kt`** (new file) — the + nested-region tests for the new `readNested` / + `readNestedOrNull` (now `internal`) / `NestedRegionResult` + + `NestedRegionResult.getOrElse` / `NestedRegionResult.map` + / `readLengthPrefixOrThrow` (per ticket 05). ~6 tests, + ~80 lines. The existing `KompactFramingTest.kt` stays + (covers `readLengthPrefix` / `writeLengthPrefix` and the + existing nested-region tests; the new file picks up the + new public surface). + +Total: 7 new files, ~63 tests, ~630 lines. The largest single +file (`KompactRuntimeReadScalarTest.kt` at ~220 lines) is under +CONSTITUTION D9's 300-line default and well under the 500-line +hard limit. + +### Migration map (existing tests → new files) + +| Existing test (line in `KompactRuntimeCheckedReadTest.kt`) | New file | +| --- | --- | +| `readBool_*` (4 tests, lines ~20–35) | `KompactRuntimeReadBoolTest.kt` | +| `readScalar_width8_*` (4 tests) | `KompactRuntimeReadScalarTest.kt` | +| `readScalar_width16_*` (4 tests) | `KompactRuntimeReadScalarTest.kt` | +| `readScalar_width32_*` (8 tests) | `KompactRuntimeReadScalarTest.kt` | +| `readScalarLong_width64_*` (renamed to `readScalarAsLong` per ticket 02; ~10 tests) | `KompactRuntimeReadScalarAsLongTest.kt` | +| `readFloat_*` (existing tests) | `KompactRuntimeReadFloatTest.kt` | +| `readDouble_*` (existing tests) | `KompactRuntimeReadDoubleTest.kt` | +| F-002 / F-003 boundary tests (4 tests) | `KompactRuntimeBoundsHardeningTest.kt` | + +The new `…OrThrow` and `getOrElse` / `map` tests (one per +accessor / result kind) are added fresh, not migrated from +existing tests. The `Kompact.Result` namespace typealiases +are tested via the existing per-accessor tests (a single +`assertSame(BooleanResult, Kompact.Result.Boolean)` per +result kind, in the per-accessor file). + +### What this does NOT change + +- **The raw-primitive tests** (`KompactRuntimeTest.kt`, + `KompactRuntimeLongBitsTest.kt`, `KompactRuntimePropertyTest.kt`) + stay as-is. The split is for the *checked* accessors, not + the raw primitives. The raw primitives have their own + well-scoped test files. +- **`KompactResultTest.kt` and `KompactResultCanonicalizationTest.kt`** + stay as-is. The new `getOrElse` / `map` extensions are + tested in the per-accessor files (where the failure + mode is most relevant), not in the result-class test + files (which test the value class mechanics). +- **`KompactFieldV1SurfaceTest.kt`** stays as-is (tests the + annotation compile-time contract from ticket 06). +- **`GettingStartedTest.kt`** stays as-is (the tutorial's + executable journey; the `ScalarType` signature update + per ticket 01 is the only edit needed there). +- **`VehicleTelemetryTest.kt`** stays as-is (the example's + test; the getters use the new public API per ticket 07, + but the test's write side is raw `writeBits`, which is + unchanged). + +### Propagation + +- **`docs/ci.md`** — no change (the test files are + implementation detail; the CI shape from ticket 08 already + covers them). +- **Ticket 10** (Docs layer structure review) — no change + (tests are not part of the user-facing docs layer). +- **The implementation commit** is one mechanical refactor + + additive test commit: + 1. Apply tickets 01 + 02 + 04 + 05 + 07's source changes + (the runtime / writer / framing / result / annotation + public surfaces + the example realignment). + 2. Update the 46 existing test methods to use the new + signatures (`readScalar(raw, off, type: ScalarType)`, + `readScalarAsLong`, etc.). + 3. Create the 7 new test files (6 per-accessor runtime + + 1 framing). + 4. Add the new test methods (`…OrThrow`, `getOrElse`, + `map`, `NestedRegionResult` extensions, framing nested). + 5. Delete the old `KompactRuntimeCheckedReadTest.kt`. + 6. Update `GettingStartedTest.kt` to use the new + `ScalarType` signature (the tutorial's wire bytes + `0xA5 0x40` stay pinned). + 7. Update `VehicleTelemetryTest.kt` if the example's + getter shape changes (per ticket 07; the test reads + via the getters, so the assertions stay the same). + 8. Regenerate the klib golden on macOS via the + `regen-goldens.yml` workflow. + 9. Push to `feat/laguna`; CI should stay green. + +## Comments + +**Implementation outcome (2026-09-06).** Resolved — the 441-line +`KompactRuntimeCheckedReadTest.kt` was deleted and replaced with 6 +per-result-kind files in `kompact/src/commonTest/kotlin/ch/trancee/kompact/runtime/` +(46 tests relocated, 0 added; `KompactRuntimeCheckedApiTest.kt` untouched): + +| File | Tests | Coverage | +| --- | --- | --- | +| `KompactRuntimeReadBoolTest` | 4 | readBool | +| `KompactRuntimeReadScalarTest` | 21 | widths 8/16/32 | +| `KompactRuntimeReadScalarAsLongTest` | 9 | width 64 | +| `KompactRuntimeReadFloatTest` | 5 | readFloat | +| `KompactRuntimeReadDoubleTest` | 6 | readDouble | +| `KompactRuntimeBoundsHardeningTest` | 1 | F-002 | + +**Divergence from the Answer (above):** the executed split (6 files, +0 new tests, no framing nested file) supersedes the grilled Answer +(7 files incl. `KompactFramingReadNestedTest.kt` + ~17 new +`…OrThrow`/`getOrElse`/`map` tests). Per the user's final directive +("write the 6 files"), the split went per-result-kind with zero new +tests; the framing nested tests stayed in `KompactFramingTest.kt`. +The grilled Answer is retained above for context. + +- `:kompact:jvmTest` → BUILD SUCCESSFUL (187 tests). +- CI `34022123785` (`feat/laguna` @ `cf7dde57`) → `jvmTest` + `apiCheck` success. +- Commits `13f2f5b` (Kompact.kt + kompact.api + test split) + + `cf7dde5` (klib golden) on `feat/laguna`. diff --git a/.scratch/kompact-ergonomics/issues/10-docs-structure-review.md b/.scratch/kompact-ergonomics/issues/10-docs-structure-review.md new file mode 100644 index 0000000..d53af1e --- /dev/null +++ b/.scratch/kompact-ergonomics/issues/10-docs-structure-review.md @@ -0,0 +1,233 @@ +Type: grilling +Status: resolved + +# 10 — Is the docs/ layer the right shape? + +## Question + +The docs/ layer was just laid down in this effort as +`tutorial + reference + architecture + ci + navigation index`: + +- `docs/getting-started.md` — the executable tutorial (a + 16-bit telemetry frame, wire bytes pinned, verified by + `GettingStartedTest`). +- `docs/api-reference.md` — the public-API reference + (KompactRuntime / KompactWriter / KompactFraming / the + result value classes / KompactDecodeError / annotations). +- `docs/architecture.md` — the design rationale (LSB-first, + zero-alloc, value classes, packed-Long error encoding, + framing, versioning). +- `docs/ci.md` — the how-to for the two CI workflows. +- `docs/README.md` — the navigation index. + +The five-file shape follows the Diátaxis tutorial / +reference / explanation / how-to split, plus a navigation +index. The decision: is the layering itself the right one, +or is one of the splits off? + +- **"How to use it" vs. "how it works"** — is the tutorial + (`getting-started.md`) the right place for the "first + example" or should that be in the README and the + tutorial be a more advanced "here's the typed-result + pattern" walkthrough? Today the README has a 5-line + excerpt of the tutorial and links to it; the tutorial + has the full example. Is the layering correct? +- **"What can I call" vs. "what does it do"** — is the + reference (`api-reference.md`) the right place for + "every function and parameter," or should the + reference be the *narrow* surface (the seven public + read/write entry points) and the rationale for each + one live in `architecture.md`? Today the reference + is detailed (per-function tables) and the + architecture doc covers the *design* rationale. A + consumer reading the reference gets the signature + and a one-line description; a consumer reading the + architecture doc gets the *why*. The boundary is + right but the reference is currently 11k of tables + that duplicate information that could be a + KDoc-generated reference (e.g. via Dokka). +- **"How the CI works"** — is `docs/ci.md` the right + place, or should CI live in the project root + (`CONTRIBUTING.md` is the conventional home, but + this repo doesn't have one)? Today `docs/ci.md` is + a how-to for the two workflows; a contributor who + wants to know "how do I run the tests locally" reads + `docs/ci.md`. A contributor who wants to know "what + is the project's contribution workflow" reads + `AGENTS.md` (the AI policy, which is human-readable + but not contributor-focused). +- **The "what is in this repo" map** — `docs/README.md` + is the navigation index. Should this be a separate + page, or is it overkill for five docs? + +## Context for the claiming session + +- `README.md` — the root index, ~3k, with a where-to-go-next + table. +- `docs/getting-started.md` — ~5k, tutorial. +- `docs/api-reference.md` — ~12k, reference. +- `docs/architecture.md` — ~11k, explanation. +- `docs/ci.md` — ~4k, how-to. +- `docs/README.md` — ~2k, navigation index. +- The repo's existing human-readable docs (before this + effort): none for consumers. The only docs were + `AGENTS.md` / `CONSTITUTION.md` (AI policy) and + `.scratch/kompact-spec/` (internal spec). +- The Diátaxis skill's form definitions (tutorial, + how-to, reference, explanation) are the reference for + "is the layering right?" — each form has a defined + mode and a contract; if any of the five docs fails the + contract for its form, it's a layering problem. +- The repo's `AGENTS.md` says (in the "Agent skills" + section): "Issues and spec tickets live as markdown + files under `.scratch//`; no GitHub Issues + used. See `docs/agents/issue-tracker.md`." This is + *process* documentation, not consumer docs, and + doesn't compete with the docs/ layer. + +## Open sub-questions + +1. **Is the reference doc too long for a v1 library?** 12k + of per-function tables is fine for a stable, mature + API; for a v1 that's still being shaped by tickets + 01–10, the reference churns every commit. A + KDoc-generated reference (Dokka) might be the right + answer for v1 (less hand-maintained) with the + rationale content in `architecture.md`. +2. **Should the tutorial and the README's code excerpt + converge into one example?** Today the README has + a 5-line excerpt of the tutorial; the tutorial has + the full 16-bit example. If the layering changes + (tutorial moves to README, or README moves into + the tutorial), the convergence is implicit. +3. **The "contributor vs. consumer" split.** A + contributor's needs (run the tests, regenerate the + goldens, understand the spec) overlap with a + consumer's needs (use the API, understand the wire + format) but are not identical. The current docs + layer is consumer-first. A future "Contributor's + guide" might be a separate file in `docs/` or a + `CONTRIBUTING.md` at the root. +4. **The "what is in this repo" map.** `docs/README.md` + is the navigation index. Is this overkill, or is + it the natural entry point for someone who arrived + at `docs/` from a link in the README? + +## What "resolved" looks like + +- The chosen docs shape is recorded under `## Answer` + with a one-line rationale. +- If a file is renamed, merged, or split, the new + layout is listed. +- The decision is propagated to the README (which + currently links to the five docs) and to any + cross-references in `docs/architecture.md` and + `docs/api-reference.md` (which link to each other + and to the tutorial). +- If a `CONTRIBUTING.md` is added, its scope and + shape are noted. + +## Answer + +**Decisions** (one per open sub-question): + +- **Reference doc length** — **add Dokka now** (the user's + pick). Add the `dokka` Gradle plugin to `:kompact`, + configure `dokkaGfm` (Markdown output) to produce a per-file + reference in `docs/api/`, and replace the hand-maintained + per-function tables in `docs/api-reference.md` with a pointer + to the generated output. The narrative content (the + "Long" suffix explanation on `readScalarAsLong`, the + writer's growable-buffer note, the cross-references to the + architecture doc) stays hand-maintained in + `docs/api-reference.md` as the curated *overview*; the + per-function detail (signature, params, returns, throws, + warnings) is generated from KDoc. The implementation is a + follow-up commit: the *decision* is recorded here; the build + wiring (plugin, version catalog, config) is a separate + effort that doesn't block the other ergonomics tickets. +- **Tutorial vs. README excerpt** — **keep the current + shape**. The README's 5-line code excerpt is a *taste*, not + a *tutorial*; the tutorial (`docs/getting-started.md`) is + the canonical walkthrough with the wire bytes (`0xA5 0x40`) + and the expected output. Standard layered approach. +- **CI doc location** — **keep `docs/ci.md`**. The current + scope (two workflows + local-run instructions) fits a + single page. A future `CONTRIBUTING.md` at the root is the + right home for *broader* contributor docs (release process, + issue tracker, code review conventions) when they + accumulate; for now, CI alone doesn't justify a root-level + contributor doc. +- **`docs/README.md` index** — **keep the separate index**. + Two pages (root `README.md` + `docs/README.md`) is the + standard layered approach. The index lists the user-facing + docs and points at the internal docs (AGENTS.md, + CONSTITUTION.md, `docs/agents/*`). The index is a + navigation hub, not a duplication of the root. + +### What this means for the implementation commit + +The single-actionable decision is the Dokka pick. The +implementation is a follow-up commit (this ticket records the +*decision*; the build wiring is separate): + +1. Add the `dokka` plugin to `gradle/libs.versions.toml` (a + version-catalog entry for `org.jetbrains.dokka:dokka-gradle-plugin`). +2. Add the plugin to `kompact/build.gradle.kts` and configure + `dokkaGfm` (Markdown output) to produce per-file output at + `docs/api/`. +3. Update the `.gitignore` (or the `:kompact:clean` task) to + exclude the generated `docs/api/` from source control + (the output is a build artifact; the *source* of truth is + the KDoc comments). Alternatively, commit the generated + output and let CI re-verify it on every change; the user's + call (the simpler path is to commit the output so the docs + PR review is self-contained). +4. Replace the per-function tables in `docs/api-reference.md` + with a curated overview (the narrative currently in the + file: the "Long" explanation, the writer's growable-buffer + note, the cross-references) + a pointer to the generated + `docs/api/`. +5. Re-render the generated output on every `:kompact:apiDump` + or as a separate `:kompact:dokkaGfm` task that the CI + runs (the existing `apiCheck` job on macOS can be extended + to also regenerate the docs; the Linux `jvm-test` job can + run `:kompact:dokkaGfm` as an additional task if the + output is committed and needs to stay in sync with the + source). + +### What does NOT change + +- **The tutorial stays hand-maintained.** Tutorials are + acquisition-form (Diátaxis) and don't lend themselves to + generation; the wire-byte pinning (`0xA5 0x40`) and the + expected-output assertions are the tutorial's value, and + those are hand-written prose around the verified + `GettingStartedTest`. +- **The architecture doc stays hand-maintained.** It covers + the *why* (LSB-first, zero-alloc, value classes, error + encoding, framing, versioning), which is explanation-form + (Diátaxis) and is not what Dokka generates. +- **`docs/README.md` stays as the navigation index.** No + change. +- **`docs/ci.md` stays as the CI how-to.** No change. + +### Propagation + +- **Ticket 11** (`KompactWriter.bitCursor` visibility) — the + `docs/api-reference.md` rewrite (when it lands as part of + the Dokka follow-up) will reflect whatever 11 decides + (the `bitCursor` row in the public-surface table is added + or removed based on the visibility decision). Note in + 11's body; do not resolve. +- **The follow-up Dokka commit** depends on the public surface + stabilizing. The implementation commits for tickets 01 + + 02 + 04 + 05 + 07 land the new public symbols + (`ScalarType`, `readScalarAsLong`, the `…OrThrow` + wrappers, the `Kompact.Result` namespace, the `getOrElse` / + `map` extensions, `NestedRegionResult`, the framing + companion functions). The Dokka follow-up runs *after* + those land, so the generated reference is in sync from the + start. + +## Comments diff --git a/.scratch/kompact-ergonomics/issues/11-bitcursor-visibility.md b/.scratch/kompact-ergonomics/issues/11-bitcursor-visibility.md new file mode 100644 index 0000000..ee8328d --- /dev/null +++ b/.scratch/kompact-ergonomics/issues/11-bitcursor-visibility.md @@ -0,0 +1,168 @@ +Type: grilling +Status: resolved +Blocked by: — (note 2026-09-05: ticket 10 settled the docs layer — add Dokka in a follow-up commit (after the public surface from tickets 01 + 02 + 04 + 05 + 07 lands); `docs/api-reference.md` becomes the curated overview pointing at the generated `docs/api/`. The `bitCursor` row in the public-surface table is added or removed based on 11's decision; if 11 demotes `bitCursor` to `internal`, the row is removed from the curated overview and the generated reference will not include it (since `@internal` is excluded from the public output by default).) +# 11 — `KompactWriter.bitCursor`: ergonomic surface or implementation detail? + +## Question + +`KompactWriter` currently exposes a public read-only `var bitCursor: Int` +(`kompact/src/commonMain/kotlin/ch/trancee/kompact/runtime/KompactWriter.kt:24`), +documented as: "Exposed so nested/repeat assembly can reason about +bit alignment without re-deriving it (PROMPT §1: forward-only)." + +The decision: is `bitCursor` a real ergonomic surface that consumers +writing multi-step payloads will read, or an implementation detail +that should be `internal`? Three options to grill: + +- **Keep `bitCursor` public** — the documented rationale (nested + /repeat assembly) is real: a consumer writing `writeNested { ... }` + followed by more `writeScalar` calls may want to inspect the + cursor to know where they are. The public surface grows by + one property, but the use case is genuine. +- **Demote `bitCursor` to `internal`** — the cursor is the + writer's implementation detail; consumers write a multi-step + payload by appending values and calling `build()`, not by + inspecting the cursor. The "nested/repeat assembly" use case + is satisfied by `writeNested { ... }` (the cursor is + advanced *inside* the block; the consumer doesn't read it). + Reducing the public surface to the minimum. +- **Replace `bitCursor` with a `position()` / `mark()` / + `seek()` API** — if "inspect the cursor" is a real need, + a richer API (cursor + markers + seeking) is more useful + than a single read-only `var`. The writer becomes more + powerful but the public surface grows. + +This ticket is on the frontier now because the writer signature +stabilized after tickets 01 (`writeScalar(type, value)`) + 04 (the +`…OrThrow` pattern applies to readers, not writers) + 05 +(NestedRegionResult is a read-side concern). The question can be +asked concretely without speculating about the writer's final +shape. + +## Context for the claiming session + +- `kompact/src/commonMain/kotlin/ch/trancee/kompact/runtime/KompactWriter.kt` + — the `bitCursor` declaration (lines ~22–25): + ```kotlin + public var bitCursor: Int = 0 + private set + ``` + Read-only (the setter is `private`); advanced by `writeBits` / + `writeBitsLong` / `writeBool` / `writeScalar` / `writeString` / + `writeBlob` / `writeNested` / `writeRepeated` (each of these + appends and advances the cursor). +- The cursor is consulted internally by `ensureCapacityBits` + (line ~125) and `appendBytes` (line ~133). Both are `private`. + The consumer-visible uses of `bitCursor` are: (a) reading the + current position to decide what to write next, (b) reading the + current position to know the byte length of a nested region + (e.g. for a length prefix the consumer wants to write later). +- The writer's `writeNested` signature: + `writeNested(lengthPrefixWidth: Int = 16, block: KompactWriter.() -> Unit)`. + The block runs against the *parent* writer (the cursor is + advanced inside the block, but the consumer's writes are + applied to the parent; the child writer is internal). A + consumer who wants to know "how many bits did I write in this + nested block?" would need to read the cursor, but the + `writeNested` API doesn't expose that — the consumer is given + a single `lengthPrefixWidth` and the block; the block's + bit-length is computed internally. So the documented + rationale (Ticket 07) for `bitCursor` is the *internal* use + case, not the consumer's. +- The writer's `build(): ByteArray` returns the exact-length + snapshot. The consumer who wants to know the bit-length of + the accumulated payload reads the returned `ByteArray`'s + `size * 8` (or the cursor before calling `build()`). The + `bitCursor` is a convenient property for that. + +## Open sub-questions + +1. **Is the "nested/repeat assembly" use case real for + consumers?** The internal use (the writer's own bookkeeping) + is real, but the consumer's use is less clear. The current + `writeNested` API doesn't expose the cursor inside the block. + If a consumer wants to know "how much did I write?", they + read the cursor. But the *common* pattern is "write a + payload, call `build()`, get the bytes" — the cursor is + an internal implementation detail of that pattern. +2. **Is the cursor a stable contract?** If a future KSP + processor generates writer code (e.g. `writeScalar` calls + for a `@KompactField`-annotated class), the generated code + would not consult `bitCursor` — the layout is compile-time. + The cursor is for *hand-written* multi-step payloads. As + hand-written payloads become less common (the processor + takes over), the cursor's audience shrinks. +3. **The `Kompact.Result.NestedRegion` typealias + the + `readNested` typed result (ticket 05) cover the read side + of nested regions.** The write side (`writeNested`) is a + block, not a cursor-driven API. So the read/write symmetry + is on the *block* pattern, not the cursor. + +## What "resolved" looks like + +- The chosen path is recorded under `## Answer` with a + one-line rationale. +- The chosen path propagates to `docs/api-reference.md` (the + public-surface table for `KompactWriter` lists or omits + `bitCursor`). +- The chosen path propagates to the implementation commit: + the visibility modifier on the declaration + any test + updates + any doc updates. + +## Answer + +**Decision: demote `bitCursor` to `internal`.** + +Rationale (three converging facts): + +1. **No consumer reads it.** A repo-wide grep for `bitCursor` shows + references only inside `KompactWriter.kt`'s own methods + (`writeBits`/`writeBool`/`writeString`/`writeBlob`/`writeNested`/ + `writeRepeated`/`build`/`ensureCapacityBits`/`appendBytes`). The + `GettingStartedTest` (the only consumer-facing writer test) calls + `writeScalar`/`writeBool`/`writeString` + `build()` and never reads + the cursor. The `VehicleTelemetry` example is a *reader*; it doesn't + touch the writer at all. +2. **The documented rationale is internal.** The "nested/repeat + assembly can reason about bit alignment" use case is satisfied by + `writeNested(lengthPrefixWidth, block)` (compute-first, no back- + patch) and `writeRepeated(count, countWidth, block)` — the + consumer's bit-length is computed *inside* the block and never + exposed. The consumer's pattern is "write a payload, call + `build()`, get the bytes" — the cursor is the writer's internal + bookkeeping. +3. **The future KSP processor won't use it.** A generated writer + (from `@KompactField` annotations) computes the field layout at + compile time; it calls `writeScalar`/`writeBool`/etc. directly and + never inspects the cursor. The cursor's audience shrinks to zero + as hand-written payloads disappear. + +The "replace with a `position()` / `mark()` / `seek()` API" option is +**rejected** — speculative, no demonstrated consumer need, and it +grows the surface (3+ new functions) instead of shrinking it. The +map favors the "smallest simplification that makes the surface +easier." + +### Propagation + +This decision lands in the **implementation commit** (the single commit +that applies tickets 01 + 02 + 04 + 05 + 06 + 11 to the source): + +- **Source**: `KompactWriter.kt` line 24 changes from `public var + bitCursor` to `internal var bitCursor`. The KDoc drops the "Exposed + so nested/repeat assembly..." sentence (it is now internal). No + other source change — the property is read+written only within + `KompactWriter`. +- **Docs**: remove the `bitCursor` row from `docs/api-reference.md`'s + `KompactWriter` public-surface table. +- **Golden**: the post-implementation `kompact.klib.api` will not list + `bitCursor` (regenerated on macOS via `regen-goldens.yml`). + +### Override + +If a streaming / multi-step writer use case emerges where a consumer +needs to read the cursor to "decide what to write next," re-open this + ticket and keep `bitCursor` public. The `position()` richer API can + then be revisited with a concrete consumer. + +## Comments diff --git a/.scratch/kompact-ergonomics/map.md b/.scratch/kompact-ergonomics/map.md new file mode 100644 index 0000000..df1bcf6 --- /dev/null +++ b/.scratch/kompact-ergonomics/map.md @@ -0,0 +1,185 @@ +Status: wayfinder:map +Type: wayfinder:map + +# Map: kompact ergonomics + +> **Wayfinding operations** (this repo's local-markdown tracker): +> map is this file; child tickets live at +> `issues/NN-.md`, numbered from `01`, with a `Type:` line +> (`research` / `prototype` / `grilling` / `task`) and a `Status:` line +> (`claimed` / `resolved`). Blocking is a `Blocked by: NN, NN` line near +> the top of each ticket. The frontier is the open, unblocked, unclaimed +> children, first by number wins. See `docs/agents/issue-tracker.md`. + +## Destination + +Reach a v1 consumer surface of `:kompact` that is as easy to use as +possible with the least impact on complexity. "Easy to use" means a +newcomer reading the README can write a packed frame, read it back with +typed results, and recover from malformed input without learning the +internal packed-Long encoding. "Least impact on complexity" means we +simplify the surface without removing the v1 capability set the locked +spec commits to: signed/unsigned scalars 1–64, booleans, IEEE-754 +floats, length-delimited strings/blobs/nested/repeated, the seven +specialized result value classes, and the `@KompactModel` / `@KompactField` +schema annotations. + +The blast radius is everything in this repository except the locked +v1 spec tickets 01–13 (those carry user-decided scope and may not be +reopened by this effort — see `Out of scope`). The public ABI is free +to change; the library has not been released. Commits land on +`feat/laguna` behind the BCV gate (`apiCheck` on macOS for JVM + iOS klib +with `strictValidation=true`; `jvmApiCheck` + `jvmTest` on Linux), with the +klib golden regenerated via the `regen-goldens.yml` workflow. + +## Notes + +- **Consult first**: `docs/architecture.md` (the current design rationale + and the packed-Long layout that several tickets challenge), the v1 + spec map at `.scratch/kompact-spec/map.md` (so we don't accidentally + drift from the locked decisions), and the recent code-review report + on `feat/laguna` (the user-facing review that surfaced several of + these threads; see the prior review history for the P1/P2/P3 + findings). +- **Standing preference**: when a ticket resolves with a rename or + refactor that breaks the public ABI, regenerate the goldens + (`apiCheck` + `regen-goldens.yml`) in the same commit. Do not leave + the gate red between commits. +- **Tone**: the user asked us to "challenge everything." The route + favors the smallest simplification that makes the surface easier, + even at the cost of an internal rename. Do not preserve complexity + for symmetry's sake. +- **What "resolved" means here**: a ticket is resolved when the + decision is recorded on the ticket under `## Answer`, the ticket + status is `resolved`, the map's Decisions-so-far is updated with + a one-line gist + the ticket link, and any newly-surfaced ticket + has been created and wired. A follow-up implementation commit is + expected but is not part of resolving the decision ticket itself. + +## Decisions so far + + + +- [Data clump → `ScalarType` value class](issues/01-data-clump-scalartype.md): `value class ScalarType(bitWidth, signed)` with named companion constants (`INT_8`…`UINT_64` + `BOOL` + `of(w, signed)`); adopted by `readScalar`, `readScalarLong`, and `writeScalar`. The reader split (`readScalar` 1..32 / `readScalarLong` 1..64) is kept — the value class doesn't change the two `Int`/`Long` result lanes. No enum axis: enums are read via `readScalar` and inspected for `UnknownEnumCode` on the result. Unblocks tickets 02, 04, 09. +- [`readScalarLong` → `readScalarAsLong`](issues/02-readscalarlong-naming.md): pure rename; the `As` prefix makes the result type (`LongResult`) unambiguous and matches Kotlin's "as" pattern (`getOrThrow`, `as`, `asReversed`). `readScalar` (implicit-`Int` variant) stays. Writer side unchanged. Doc edit in `docs/api-reference.md#checked-typed-read-accessors`; tutorial not affected. +- [Throw helpers mirror the decode pattern](issues/03-throw-helper-naming.md): rename `throwSmallFailure` → `throwDecodeErrorFromSmallBits`, `throwLongFailure` → `throwDecodeErrorFromLong`, `throwDoubleFailure` → `throwDecodeErrorFromDouble`. Three-helper split kept (each picks the right decoder). Internal-only; no public-API change, no BCV regen, no test changes. 3 helper declarations + 14 call sites (7 in `jvmMain` + 7 in `iosMain`). +- [Result ergonomics layer: all three additions](issues/04-result-ergonomics-layer.md): (1) `…OrThrow` function-level wrappers on `KompactRuntime` (5 new public fns: `readBoolOrThrow`, `readScalarOrThrow`, `readScalarAsLongOrThrow`, `readFloatOrThrow`, `readDoubleOrThrow`); (2) `Kompact.Result` namespace re-exporting the seven result value classes as `typealias` members; (3) `getOrElse` / `map` extension functions on the seven result classes (14 new fns) mirroring stdlib's `Result`. All additive. The seven specialized result value classes and the four-member public surface stay unchanged. Unblocks ticket 05. +- [Framing: full ergonomics pair + count-prefix `…OrThrow`](issues/05-readnested-typed-result.md): add `KompactFraming.readNestedOrThrow(raw, off, prefixBitWidth): Pair` (throws on overrun), `KompactFraming.readNested(raw, off, prefixBitWidth): NestedRegionResult` (typed result), and `KompactFraming.readLengthPrefixOrThrow(raw, off, bitWidth): Int` (count-prefix throw-on-failure). `NestedRegionResult` is a new `value class NestedRegionResult(val startBit: Int, val bitLength: Int)` (zero-alloc, ticket 03 pattern) with `isSuccess`/`isFailure`/`error`/`getOrThrow()` and `getOrElse`/`map` extensions, plus `Kompact.Result.NestedRegion` typealias. The existing `nestedRegionOrNull` demotes to `internal inline` (hot-path internal; the new functions delegate to it). 6 source consumers in `KompactFramingTest.kt` + `KompactWriterTest.kt` switch to the new public form. +- [Annotations hidden behind `@RequiresOptIn`](issues/06-annotation-visibility.md): `@KompactModel` and `@KompactField` move from the public `ch.trancee.kompact.runtime` package to a preview `ch.trancee.kompact.annotations` package, gated by a `@KompactPreview` `@RequiresOptIn(level = WARNING)` annotation. Consumers opt in with `@OptIn(KompactPreview::class)`. Reversible when the locked `:kompact-ksp` processor (ticket 12) ships. `KompactFieldV1SurfaceTest` moves with the annotations and opts in. `VehicleTelemetry` example updates the import path and opts in. No runtime/ABI impact (annotations are SOURCE-retained; `@RequiresOptIn` is compile-time only). No BCV regen. +- [`VehicleTelemetry` example: realign to public API](issues/07-vehicletelemetry-alignment.md): the example's getter bodies use the new public checked accessors (`readScalar(raw, bitOffset, type: ScalarType).getOrThrow()` for the 4-bit and 10-bit fields, `readBool(raw, bitOffset).getOrThrow()` for the 1-bit flag). The annotations stay (via `@file:OptIn(KompactPreview::class)` from ticket 06). The example matches the tutorial (`docs/getting-started.md`) and the API reference. The codegen-output reference (raw `readBits` shape) moves to prose in `docs/architecture.md`. Test (`VehicleTelemetryTest`) is unchanged: the getters still return the same primitives; the wire bytes (`0xA5 0x40`) and round-trip values (5, 10, true) stay. +- [CI: Linux catches JVM API drift](issues/08-ci-ergonomics.md): fold `:kompact:jvmApiCheck` into the existing `jvm-test` job (Ubuntu, JDK 21). The job is renamed `jvmTest + jvmApiCheck (Linux)` and runs both tasks (`:kompact:jvmTest :kompact:jvmApiCheck`); the two tasks share the JVM compile, so the wall-clock cost is dominated by the API comparison. The macOS `api-check` job stays as the final gate (full `apiCheck` = `jvmApiCheck` + `klibApiCheck`). A Linux contributor who breaks the JVM API now gets the red on the PR *before* the macOS job is scheduled. `regen-goldens.yml` stays on `feat/laguna` (manual `workflow_dispatch` via the GitHub UI). +- [Test file split: per-accessor, all in one commit](issues/09-test-file-split.md): seven new test files replace the 441-line `KompactRuntimeCheckedReadTest.kt`: `KompactRuntimeReadBoolTest`, `KompactRuntimeReadScalarTest`, `KompactRuntimeReadScalarAsLongTest` (renamed from `…ReadScalarLong…` per ticket 02), `KompactRuntimeReadFloatTest`, `KompactRuntimeReadDoubleTest`, `KompactRuntimeBoundsHardeningTest` (F-002/F-003), and `KompactFramingReadNestedTest` (new from ticket 05). Each per-accessor file tests the accessor + its `…OrThrow` companion + the matching result class's `getOrElse`/`map` extensions. Total: ~63 tests, ~630 lines; the largest file is ~220 lines (under D9's 300-line default). The implementation commit moves the 46 existing tests to the new files (with the new `ScalarType` / `readScalarAsLong` signatures from tickets 01 + 02), adds the new tests for the new public symbols, and deletes the old file. +- [Docs layer: add Dokka, keep tutorial/README/ci/index as-is](issues/10-docs-structure-review.md): add the `dokka` Gradle plugin to `:kompact` (Markdown output via `dokkaGfm`, output to `docs/api/`) and replace the per-function tables in `docs/api-reference.md` with a pointer to the generated output. The narrative content (the "Long" suffix explanation, the writer's growable-buffer note, the cross-references to the architecture doc) stays hand-maintained in `docs/api-reference.md` as the curated overview. The tutorial (`docs/getting-started.md`), `docs/ci.md`, and `docs/README.md` stay as hand-maintained pages. The implementation is a follow-up commit (this ticket records the *decision*; the build wiring is separate, after the tickets 01 + 02 + 04 + 05 + 07 land). +- [KompactWriter.bitCursor: demote to `internal`](issues/11-bitcursor-visibility.md): a repo-wide grep confirms `bitCursor` is read+written only inside `KompactWriter.kt`'s own methods; no test, example, or consumer reads it. The documented "nested/repeat assembly" rationale is satisfied by `writeNested`/`writeRepeated` (compute-first, no back-patch); the future KSP processor won't consult the cursor. Demote `bitCursor` to `internal` (the writer's internal bookkeeping); reject the speculative `position()`/`mark()`/`seek()` richer API. The klib golden (regenerated on macOS) will no longer list it. + +## Frontier + +> All 11 design tickets (01–11) are resolved. The wayfinder frontier is +> **exhausted**. The implementation commit is **applied** (`13f2f5b`: source +> per 01+02+04+05+06+11; `cf7dde5`: klib golden via macOS +> `regen-goldens.yml`); the closeout of issues 04 + 09 is committed +> (`445397d`: issue `## Comments` + pushes). CI on `feat/laguna @ cf7dde5` +> is green (run `34022123785`: `jvmTest (Linux)` + `apiCheck (macOS)`). +> The klib golden regen was the final macOS-gated step. Remaining +> **follow-ups** (decided but not yet in the tree): **10** (add the +> `dokka` Gradle plugin to `:kompact`). + +## Implementation + +> The implementation commit is **not** a wayfinder ticket — it is the +> mechanical realization of tickets 01 + 02 + 04 + 05 + 06 + 11 (decided) +> + ticket 09 (split plan). One atomic commit. Tracked by the `todo` +> tool list, not by a ticket file. + +The 9-step plan from ticket 09's `## Answer`, with the source-edit +precedence that the decisions impose: + +1. **Source: scalars** — ticket 01 (`ScalarType` value class + + companion constants `INT_8`…`UINT_64` + `BOOL` + `of`); ticket + 02 (`readScalarLong` → `readScalarAsLong`). `readScalar(raw, off, + type: ScalarType): IntResult`, `readScalarAsLong(raw, off, type: + ScalarType): LongResult`, `KompactWriter.writeScalar(type, value)`. + The two Int/Long result lanes are unchanged. +2. **Source: result ergonomics** — ticket 04 (`readBoolOrThrow` / + `readScalarOrThrow` / `readScalarAsLongOrThrow` / `readFloatOrThrow` + / `readDoubleOrThrow`; `getOrElse`/`map` extensions on the 7 result + classes; `Kompact.Result` namespace). Ticket 03 pattern (zero-alloc + value-class wrapping a Long) applies to `NestedRegionResult`. +3. **Source: framing** — ticket 05 (`readLengthPrefixOrThrow`, + `readNested`, `readNestedOrThrow`; `nestedRegionOrNull` → internal; + `NestedRegionResult` value class + `isSuccess`/`isFailure`/`error`/ + `getOrThrow()` + `getOrElse`/`map`; `Kompact.Result.NestedRegion`). +4. **Source: writer** — ticket 11 (`bitCursor` → `internal`; drop the + "Exposed so nested/repeat assembly..." KDoc). `writeScalar` takes + `ScalarType`. +5. **Source: annotations** — ticket 06 (`@KompactModel`/`@KompactField` + → `ch.trancee.kompact.annotations`; `@KompactPreview` + `@RequiresOptIn(WARNING)`; `KompactFieldV1SurfaceTest` opts in). +6. **Source: example** — ticket 07 (`VehicleTelemetry` getters use + `readScalar(raw, off, type).getOrThrow()` / `readBool(raw, off) + .getOrThrow()`; annotations opt in). +7. **Tests** — ticket 09 (6 files, 46 tests, 0 added; relocate the 46 + existing read tests 1:1 into per-result-kind files — `ReadBoolTest` 4, + `ReadScalarTest` 21, `ReadScalarAsLongTest` 9, `ReadFloatTest` 5, + `ReadDoubleTest` 6, `BoundsHardeningTest` 1 (F-002); delete the old + `KompactRuntimeCheckedReadTest.kt`). Deviation from the grilled 7-file + answer (which carried a `KompactFramingReadNestedTest.kt` plus ~17 new + ergonomics tests) — see ticket 09 `## Comments`. +8. **Golden** — regen JVM golden (`apiDump`) on Linux (host-capable); + regen klib golden on macOS via `regen-goldens.yml` web-UI dispatch + (Linux cannot infer it). Verify `jvmApiCheck` + `jvmTest` green on + Linux; `apiCheck` green on macOS. +9. **Commit + push** — Conventional Commit ("refactor:" scopes the + signature rename + surface addition); push to `feat/laguna`; CI green + (Linux `jvmTest + jvmApiCheck` + macOS `apiCheck`). + +Sizing: ~6 source edits (3 files × 2 platforms for the actuals) + 1 +annotation file + 1 example (3 platform actuals) + 6 test files + 2 +goldens. The source edits are mechanical (signature changes + additive +declarations); the test files are the bulk (rewrite the read tests + new +ergonomics tests). The klib golden is the final macOS-gated step. + +## Not yet specified + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/kompact/docs/api/images/abstract-class.svg b/kompact/docs/api/images/abstract-class.svg new file mode 100644 index 0000000..ead94b8 --- /dev/null +++ b/kompact/docs/api/images/abstract-class.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/kompact/docs/api/images/anchor-copy-icon.svg b/kompact/docs/api/images/anchor-copy-icon.svg new file mode 100644 index 0000000..dd43e76 --- /dev/null +++ b/kompact/docs/api/images/anchor-copy-icon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/kompact/docs/api/images/annotation-kotlin.svg b/kompact/docs/api/images/annotation-kotlin.svg new file mode 100644 index 0000000..b748242 --- /dev/null +++ b/kompact/docs/api/images/annotation-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/kompact/docs/api/images/annotation.svg b/kompact/docs/api/images/annotation.svg new file mode 100644 index 0000000..76c2f4b --- /dev/null +++ b/kompact/docs/api/images/annotation.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/kompact/docs/api/images/arrow-down.svg b/kompact/docs/api/images/arrow-down.svg new file mode 100644 index 0000000..ca54658 --- /dev/null +++ b/kompact/docs/api/images/arrow-down.svg @@ -0,0 +1,3 @@ + + + diff --git a/kompact/docs/api/images/burger.svg b/kompact/docs/api/images/burger.svg new file mode 100644 index 0000000..a26f194 --- /dev/null +++ b/kompact/docs/api/images/burger.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/kompact/docs/api/images/check.svg b/kompact/docs/api/images/check.svg new file mode 100644 index 0000000..291e5ee --- /dev/null +++ b/kompact/docs/api/images/check.svg @@ -0,0 +1,3 @@ + + + diff --git a/kompact/docs/api/images/checkbox-off.svg b/kompact/docs/api/images/checkbox-off.svg new file mode 100644 index 0000000..a5117e8 --- /dev/null +++ b/kompact/docs/api/images/checkbox-off.svg @@ -0,0 +1,3 @@ + + + diff --git a/kompact/docs/api/images/checkbox-on.svg b/kompact/docs/api/images/checkbox-on.svg new file mode 100644 index 0000000..71891d5 --- /dev/null +++ b/kompact/docs/api/images/checkbox-on.svg @@ -0,0 +1,3 @@ + + + diff --git a/kompact/docs/api/images/class-kotlin.svg b/kompact/docs/api/images/class-kotlin.svg new file mode 100644 index 0000000..dc23120 --- /dev/null +++ b/kompact/docs/api/images/class-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/kompact/docs/api/images/class.svg b/kompact/docs/api/images/class.svg new file mode 100644 index 0000000..2447cf7 --- /dev/null +++ b/kompact/docs/api/images/class.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/kompact/docs/api/images/copy-icon.svg b/kompact/docs/api/images/copy-icon.svg new file mode 100644 index 0000000..abeb27e --- /dev/null +++ b/kompact/docs/api/images/copy-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/kompact/docs/api/images/cross.svg b/kompact/docs/api/images/cross.svg new file mode 100644 index 0000000..232069f --- /dev/null +++ b/kompact/docs/api/images/cross.svg @@ -0,0 +1,3 @@ + + + diff --git a/kompact/docs/api/images/enum-kotlin.svg b/kompact/docs/api/images/enum-kotlin.svg new file mode 100644 index 0000000..207a0ef --- /dev/null +++ b/kompact/docs/api/images/enum-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/kompact/docs/api/images/enum.svg b/kompact/docs/api/images/enum.svg new file mode 100644 index 0000000..2deba5f --- /dev/null +++ b/kompact/docs/api/images/enum.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/kompact/docs/api/images/exception-class.svg b/kompact/docs/api/images/exception-class.svg new file mode 100644 index 0000000..1bb4f88 --- /dev/null +++ b/kompact/docs/api/images/exception-class.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/kompact/docs/api/images/field-value.svg b/kompact/docs/api/images/field-value.svg new file mode 100644 index 0000000..3aa75be --- /dev/null +++ b/kompact/docs/api/images/field-value.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/kompact/docs/api/images/field-variable.svg b/kompact/docs/api/images/field-variable.svg new file mode 100644 index 0000000..7a8af50 --- /dev/null +++ b/kompact/docs/api/images/field-variable.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/kompact/docs/api/images/filter.svg b/kompact/docs/api/images/filter.svg new file mode 100644 index 0000000..be62ea5 --- /dev/null +++ b/kompact/docs/api/images/filter.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/kompact/docs/api/images/function.svg b/kompact/docs/api/images/function.svg new file mode 100644 index 0000000..e56a417 --- /dev/null +++ b/kompact/docs/api/images/function.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/kompact/docs/api/images/go-to-top-icon.svg b/kompact/docs/api/images/go-to-top-icon.svg new file mode 100644 index 0000000..62df4c7 --- /dev/null +++ b/kompact/docs/api/images/go-to-top-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/kompact/docs/api/images/homepage.svg b/kompact/docs/api/images/homepage.svg new file mode 100644 index 0000000..9a8927a --- /dev/null +++ b/kompact/docs/api/images/homepage.svg @@ -0,0 +1,3 @@ + + + diff --git a/kompact/docs/api/images/interface-kotlin.svg b/kompact/docs/api/images/interface-kotlin.svg new file mode 100644 index 0000000..e5273f0 --- /dev/null +++ b/kompact/docs/api/images/interface-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/kompact/docs/api/images/interface.svg b/kompact/docs/api/images/interface.svg new file mode 100644 index 0000000..0637028 --- /dev/null +++ b/kompact/docs/api/images/interface.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/kompact/docs/api/images/logo-icon.svg b/kompact/docs/api/images/logo-icon.svg new file mode 100644 index 0000000..ea6f37e --- /dev/null +++ b/kompact/docs/api/images/logo-icon.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + diff --git a/kompact/docs/api/images/object.svg b/kompact/docs/api/images/object.svg new file mode 100644 index 0000000..5f960b7 --- /dev/null +++ b/kompact/docs/api/images/object.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/kompact/docs/api/images/placeholder.svg b/kompact/docs/api/images/placeholder.svg new file mode 100644 index 0000000..e812962 --- /dev/null +++ b/kompact/docs/api/images/placeholder.svg @@ -0,0 +1,3 @@ + + + diff --git a/kompact/docs/api/images/success-icon.svg b/kompact/docs/api/images/success-icon.svg new file mode 100644 index 0000000..76945eb --- /dev/null +++ b/kompact/docs/api/images/success-icon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/kompact/docs/api/images/theme-toggle.svg b/kompact/docs/api/images/theme-toggle.svg new file mode 100644 index 0000000..490263f --- /dev/null +++ b/kompact/docs/api/images/theme-toggle.svg @@ -0,0 +1,3 @@ + + + diff --git a/kompact/docs/api/images/typealias-kotlin.svg b/kompact/docs/api/images/typealias-kotlin.svg new file mode 100644 index 0000000..73a0885 --- /dev/null +++ b/kompact/docs/api/images/typealias-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/kompact/docs/api/index.html b/kompact/docs/api/index.html new file mode 100644 index 0000000..2b8fb0b --- /dev/null +++ b/kompact/docs/api/index.html @@ -0,0 +1,228 @@ + + + + + kompact + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

kompact

+
+

Packages

+
+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
common
+
+
+
+
+
+
+ +
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
common
+
+
+
+
+
+
+ +
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
common
+
ios
+ +
+
+
+
+
+
+ +
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
common
+
ios
+ +
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/bit-offset.html b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/bit-offset.html new file mode 100644 index 0000000..582dba8 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/bit-offset.html @@ -0,0 +1,131 @@ + + + + + bitOffset + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

bitOffset

+
+

Parameters

bitOffset

zero-based LSB-first start bit of the field

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/bit-width.html b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/bit-width.html new file mode 100644 index 0000000..289963e --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/bit-width.html @@ -0,0 +1,131 @@ + + + + + bitWidth + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

bitWidth

+
+

Parameters

bitWidth

number of bits occupied by the field (1..64; for 32-bit use 32)

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/default-value.html b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/default-value.html new file mode 100644 index 0000000..90e5877 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/default-value.html @@ -0,0 +1,131 @@ + + + + + defaultValue + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

defaultValue

+
+

Parameters

defaultValue

string-encoded default used by the generated ctor/accessor when the backing region is absent or zero-filled (Ticket 04)

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/enum-width.html b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/enum-width.html new file mode 100644 index 0000000..47c2b4f --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/enum-width.html @@ -0,0 +1,131 @@ + + + + + enumWidth + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

enumWidth

+
+
val enumWidth: Int = 0

Parameters

enumWidth

bit width of an enum/ordinal (0 = not an enum)

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/index.html new file mode 100644 index 0000000..b169c75 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/index.html @@ -0,0 +1,275 @@ + + + + + KompactField + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

KompactField

+
@Target(allowedTargets = [AnnotationTarget.PROPERTY])
annotation class KompactField(val bitOffset: Int, val bitWidth: Int, val signed: Boolean = false, val lengthPrefixWidth: Int = 8, val isNested: Boolean = false, val repeatCountWidth: Int = 8, val enumWidth: Int = 0, val defaultValue: String = "", val isVersionField: Boolean = false)

Documents a property's bit position and width in the packed ByteArray.

The Kompact KSP processor reads these to generate the backing read/write logic (Tickets 04, 05, 06, 09). Offsets are LSB-first (Ticket 01) and must be densely packed with no gaps or overlaps (Ticket 06: the processor enforces this).

The length-prefix / nesting / repeat / enum / version members are v1 schema metadata consumed by codegen; they carry safe defaults so a plain @KompactField(bitOffset, bitWidth) scalar declaration remains valid.

Parameters

bitOffset

zero-based LSB-first start bit of the field

bitWidth

number of bits occupied by the field (1..64; for 32-bit use 32)

signed

true for two's-complement, false for unsigned magnitude (v1-spec-04: type set)

lengthPrefixWidth

fixed-width LE byte-count prefix width in {8,16,32} used when the field is a string/blob/nested/repeat (Ticket 05)

isNested

true when the field is a length-delimited composite region

repeatCountWidth

fixed-width LE count prefix width in {8,16,32} for repeated fields

enumWidth

bit width of an enum/ordinal (0 = not an enum)

defaultValue

string-encoded default used by the generated ctor/accessor when the backing region is absent or zero-filled (Ticket 04)

isVersionField

true for the schema-evolution version-tag field (Ticket 09)

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
val enumWidth: Int = 0
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
val isNested: Boolean = false
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
val isVersionField: Boolean = false
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
val signed: Boolean = false
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/is-nested.html b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/is-nested.html new file mode 100644 index 0000000..119794b --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/is-nested.html @@ -0,0 +1,131 @@ + + + + + isNested + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

isNested

+
+
val isNested: Boolean = false

Parameters

isNested

true when the field is a length-delimited composite region

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/is-version-field.html b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/is-version-field.html new file mode 100644 index 0000000..73f974a --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/is-version-field.html @@ -0,0 +1,131 @@ + + + + + isVersionField + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

isVersionField

+
+
val isVersionField: Boolean = false

Parameters

isVersionField

true for the schema-evolution version-tag field (Ticket 09)

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/length-prefix-width.html b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/length-prefix-width.html new file mode 100644 index 0000000..a5a56e4 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/length-prefix-width.html @@ -0,0 +1,131 @@ + + + + + lengthPrefixWidth + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

lengthPrefixWidth

+
+

Parameters

lengthPrefixWidth

fixed-width LE byte-count prefix width in {8,16,32} used when the field is a string/blob/nested/repeat (Ticket 05)

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/repeat-count-width.html b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/repeat-count-width.html new file mode 100644 index 0000000..fe8bd7f --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/repeat-count-width.html @@ -0,0 +1,131 @@ + + + + + repeatCountWidth + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

repeatCountWidth

+
+

Parameters

repeatCountWidth

fixed-width LE count prefix width in {8,16,32} for repeated fields

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/signed.html b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/signed.html new file mode 100644 index 0000000..c351329 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-field/signed.html @@ -0,0 +1,131 @@ + + + + + signed + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

signed

+
+
val signed: Boolean = false

Parameters

signed

true for two's-complement, false for unsigned magnitude (v1-spec-04: type set)

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-model/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-model/index.html new file mode 100644 index 0000000..1816880 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-model/index.html @@ -0,0 +1,135 @@ + + + + + KompactModel + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

KompactModel

+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class KompactModel

Marks a value class as a Kompact binary schema.

A Kompact schema is a multiplatform value class over a single ByteArray. The processor reads this annotation to validate field layout at compile time (Ticket 06) and is retained only at source level — it is compile-time metadata, not a runtime dependency (PROMPT §2).

+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-preview/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-preview/index.html new file mode 100644 index 0000000..09912bb --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/-kompact-preview/index.html @@ -0,0 +1,135 @@ + + + + + KompactPreview + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

KompactPreview

+
@RequiresOptIn(message = "Kompact codegen APIs are API-preview: expect binary/source changes across releases.", level = RequiresOptIn.Level.WARNING)
annotation class KompactPreview

API-preview marker for the Kompact codegen surface (model layout contracts and field metadata). The surface is not yet binary/source-stable (Ticket 07): generated declarations carry this marker via @file:OptIn(KompactPreview::class); hand-written code that references the markers is warned until graduation.

@RequiresOptIn markers may not target FILE or TYPE_USAGE; this marker is confined to class/function/property declarations (the codegen annotations that propagate it).

+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.annotations/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/index.html new file mode 100644 index 0000000..6ae1fd2 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.annotations/index.html @@ -0,0 +1,184 @@ + + + + + ch.trancee.kompact.annotations + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
@Target(allowedTargets = [AnnotationTarget.PROPERTY])
annotation class KompactField(val bitOffset: Int, val bitWidth: Int, val signed: Boolean = false, val lengthPrefixWidth: Int = 8, val isNested: Boolean = false, val repeatCountWidth: Int = 8, val enumWidth: Int = 0, val defaultValue: String = "", val isVersionField: Boolean = false)

Documents a property's bit position and width in the packed ByteArray.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class KompactModel

Marks a value class as a Kompact binary schema.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
@RequiresOptIn(message = "Kompact codegen APIs are API-preview: expect binary/source changes across releases.", level = RequiresOptIn.Level.WARNING)
annotation class KompactPreview

API-preview marker for the Kompact codegen surface (model layout contracts and field metadata). The surface is not yet binary/source-stable (Ticket 07): generated declarations carry this marker via @file:OptIn(KompactPreview::class); hand-written code that references the markers is warned until graduation.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/-companion/create.html b/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/-companion/create.html new file mode 100644 index 0000000..b7506c5 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/-companion/create.html @@ -0,0 +1,153 @@ + + + + + create + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

create

+
+
+
+
expect fun create(batteryStatus: Int, speed: Int, isMalfunctioning: Boolean): VehicleTelemetry

Creates a fully-encoded frame from individual field values. Allocates on the write path (KompactWriter's growable buffer); use this for outbound frames, not the read hot path.

actual fun create(batteryStatus: Int, speed: Int, isMalfunctioning: Boolean): VehicleTelemetry

Creates a fully-encoded frame from individual field values. Allocates on the write path (KompactWriter's growable buffer); use this for outbound frames, not the read hot path.

actual fun create(batteryStatus: Int, speed: Int, isMalfunctioning: Boolean): VehicleTelemetry

Creates a fully-encoded frame from individual field values. Allocates on the write path (KompactWriter's growable buffer); use this for outbound frames, not the read hot path.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/-companion/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/-companion/index.html new file mode 100644 index 0000000..57ed705 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/-companion/index.html @@ -0,0 +1,179 @@ + + + + + Companion + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Companion

+
+
+
expect object Companion
actual object Companion
actual object Companion
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect fun create(batteryStatus: Int, speed: Int, isMalfunctioning: Boolean): VehicleTelemetry

Creates a fully-encoded frame from individual field values. Allocates on the write path (KompactWriter's growable buffer); use this for outbound frames, not the read hot path.

actual fun create(batteryStatus: Int, speed: Int, isMalfunctioning: Boolean): VehicleTelemetry

Creates a fully-encoded frame from individual field values. Allocates on the write path (KompactWriter's growable buffer); use this for outbound frames, not the read hot path.

actual fun create(batteryStatus: Int, speed: Int, isMalfunctioning: Boolean): VehicleTelemetry

Creates a fully-encoded frame from individual field values. Allocates on the write path (KompactWriter's growable buffer); use this for outbound frames, not the read hot path.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/-vehicle-telemetry.html b/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/-vehicle-telemetry.html new file mode 100644 index 0000000..6fd5932 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/-vehicle-telemetry.html @@ -0,0 +1,153 @@ + + + + + VehicleTelemetry + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

VehicleTelemetry

+
+
+
+
expect constructor(raw: ByteArray)
actual constructor(raw: ByteArray)
actual constructor(raw: ByteArray)
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/battery-status.html b/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/battery-status.html new file mode 100644 index 0000000..c37e10c --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/battery-status.html @@ -0,0 +1,153 @@ + + + + + batteryStatus + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

batteryStatus

+
+
+
+
expect var batteryStatus: Int
actual var batteryStatus: Int
actual var batteryStatus: Int
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/index.html new file mode 100644 index 0000000..cb5ba1e --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/index.html @@ -0,0 +1,272 @@ + + + + + VehicleTelemetry + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

VehicleTelemetry

+
+
+
expect value class VehicleTelemetry(val raw: ByteArray)

Concrete shared example (PROMPT §3), realized as an expect value class per Ticket 03: a plain value class in common (no @JvmInline, per PROMPT §1) backed by a single ByteArray. Platform actuals provide the member bodies; the JVM actual is @JvmInline for zero-allocation wrapping, iOS uses a plain actual value class (Ticket 03 reconciliation).

Layout matrix (LSB-first), packed into 16 bits:

  • 0..3 (4 bits) : Battery Status Enum (0-15)

  • 4..13 (10 bits): Speed integer (0-1023)

  • 14..14 (1 bit) : Is Engine Malfunction Active (Boolean)

  • 15..15 (1 bit) : Reserved/Unused

The ByteArray is the wire format. A producer builds it via KompactWriter or VehicleTelemetry.create(...); a consumer reads fields via the @KompactField-annotated properties. Properties have write-through setters that modify the backing ByteArray in place, so you can read from a BLE characteristic, modify a field, and re-send the same buffer — no intermediate objects, no allocation on the read hot path.

actual value class VehicleTelemetry(val raw: ByteArray)

iOS actual: a plain value class (Kotlin/Native) with identical field layout.

actual value class VehicleTelemetry(val raw: ByteArray)

JVM actual: @JvmInline yields a zero-allocation inline class (Ticket 03).

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect constructor(raw: ByteArray)
actual constructor(raw: ByteArray)
actual constructor(raw: ByteArray)
+
+
+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect object Companion
actual object Companion
actual object Companion
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect var batteryStatus: Int
actual var batteryStatus: Int
actual var batteryStatus: Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val raw: ByteArray
actual val raw: ByteArray
actual val raw: ByteArray
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect var speed: Int
actual var speed: Int
actual var speed: Int
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/is-malfunctioning.html b/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/is-malfunctioning.html new file mode 100644 index 0000000..2787f86 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/is-malfunctioning.html @@ -0,0 +1,153 @@ + + + + + isMalfunctioning + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

isMalfunctioning

+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/raw.html b/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/raw.html new file mode 100644 index 0000000..6c791b7 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/raw.html @@ -0,0 +1,153 @@ + + + + + raw + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

raw

+
+
+
+
expect val raw: ByteArray
actual val raw: ByteArray
actual val raw: ByteArray
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/speed.html b/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/speed.html new file mode 100644 index 0000000..02abedc --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/speed.html @@ -0,0 +1,153 @@ + + + + + speed + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

speed

+
+
+
+
expect var speed: Int
actual var speed: Int
actual var speed: Int
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.generated/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.generated/index.html new file mode 100644 index 0000000..0da98d0 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.generated/index.html @@ -0,0 +1,176 @@ + + + + + ch.trancee.kompact.generated + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect value class VehicleTelemetry(val raw: ByteArray)

Concrete shared example (PROMPT §3), realized as an expect value class per Ticket 03: a plain value class in common (no @JvmInline, per PROMPT §1) backed by a single ByteArray. Platform actuals provide the member bodies; the JVM actual is @JvmInline for zero-allocation wrapping, iOS uses a plain actual value class (Ticket 03 reconciliation).

actual value class VehicleTelemetry(val raw: ByteArray)

iOS actual: a plain value class (Kotlin/Native) with identical field layout.

actual value class VehicleTelemetry(val raw: ByteArray)

JVM actual: @JvmInline yields a zero-allocation inline class (Ticket 03).

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/-boolean-result.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/-boolean-result.html new file mode 100644 index 0000000..92db5f9 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/-boolean-result.html @@ -0,0 +1,153 @@ + + + + + BooleanResult + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

BooleanResult

+
+
+
+
expect constructor(packed: Long)
actual constructor(packed: Long)
actual constructor(packed: Long)
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/-companion/failure.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/-companion/failure.html new file mode 100644 index 0000000..6a501e1 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/-companion/failure.html @@ -0,0 +1,153 @@ + + + + + failure + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

failure

+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/-companion/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/-companion/index.html new file mode 100644 index 0000000..9bef468 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/-companion/index.html @@ -0,0 +1,196 @@ + + + + + Companion + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Companion

+
+
+
expect object Companion
actual object Companion
actual object Companion
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect fun success(value: Boolean): BooleanResult
actual fun success(value: Boolean): BooleanResult
actual fun success(value: Boolean): BooleanResult
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/-companion/success.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/-companion/success.html new file mode 100644 index 0000000..138fc8f --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/-companion/success.html @@ -0,0 +1,153 @@ + + + + + success + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

success

+
+
+
+
expect fun success(value: Boolean): BooleanResult
actual fun success(value: Boolean): BooleanResult
actual fun success(value: Boolean): BooleanResult
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/error.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/error.html new file mode 100644 index 0000000..effd000 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/error.html @@ -0,0 +1,153 @@ + + + + + error + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

error

+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/get-or-throw.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/get-or-throw.html new file mode 100644 index 0000000..1167355 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/get-or-throw.html @@ -0,0 +1,153 @@ + + + + + getOrThrow + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

getOrThrow

+
+
+
+
expect fun getOrThrow(): Boolean
actual fun getOrThrow(): Boolean
actual fun getOrThrow(): Boolean
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/index.html new file mode 100644 index 0000000..ac84482 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/index.html @@ -0,0 +1,323 @@ + + + + + BooleanResult + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

BooleanResult

+
+
+
expect value class BooleanResult(val packed: Long)
actual value class BooleanResult(val packed: Long)
actual value class BooleanResult(val packed: Long)
+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect constructor(packed: Long)
actual constructor(packed: Long)
actual constructor(packed: Long)
+
+
+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect object Companion
actual object Companion
actual object Companion
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val isFailure: Boolean
actual val isFailure: Boolean
actual val isFailure: Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val isSuccess: Boolean
actual val isSuccess: Boolean
actual val isSuccess: Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val packed: Long
actual val packed: Long
actual val packed: Long
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect fun getOrThrow(): Boolean
actual fun getOrThrow(): Boolean
actual fun getOrThrow(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
inline fun BooleanResult.map(transform: (Boolean) -> Boolean): BooleanResult
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/is-failure.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/is-failure.html new file mode 100644 index 0000000..d66833f --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/is-failure.html @@ -0,0 +1,153 @@ + + + + + isFailure + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

isFailure

+
+
+
+
expect val isFailure: Boolean
actual val isFailure: Boolean
actual val isFailure: Boolean
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/is-success.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/is-success.html new file mode 100644 index 0000000..e81bc8b --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/is-success.html @@ -0,0 +1,153 @@ + + + + + isSuccess + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

isSuccess

+
+
+
+
expect val isSuccess: Boolean
actual val isSuccess: Boolean
actual val isSuccess: Boolean
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/packed.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/packed.html new file mode 100644 index 0000000..69deb26 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-boolean-result/packed.html @@ -0,0 +1,153 @@ + + + + + packed + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

packed

+
+
+
+
expect val packed: Long
actual val packed: Long
actual val packed: Long
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/-byte-result.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/-byte-result.html new file mode 100644 index 0000000..cbd084e --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/-byte-result.html @@ -0,0 +1,153 @@ + + + + + ByteResult + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

ByteResult

+
+
+
+
expect constructor(packed: Long)
actual constructor(packed: Long)
actual constructor(packed: Long)
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/-companion/failure.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/-companion/failure.html new file mode 100644 index 0000000..fad3467 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/-companion/failure.html @@ -0,0 +1,153 @@ + + + + + failure + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

failure

+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/-companion/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/-companion/index.html new file mode 100644 index 0000000..a843df7 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/-companion/index.html @@ -0,0 +1,196 @@ + + + + + Companion + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Companion

+
+
+
expect object Companion
actual object Companion
actual object Companion
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect fun success(value: Byte): ByteResult
actual fun success(value: Byte): ByteResult
actual fun success(value: Byte): ByteResult
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/-companion/success.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/-companion/success.html new file mode 100644 index 0000000..dd69a4a --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/-companion/success.html @@ -0,0 +1,153 @@ + + + + + success + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

success

+
+
+
+
expect fun success(value: Byte): ByteResult
actual fun success(value: Byte): ByteResult
actual fun success(value: Byte): ByteResult
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/error.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/error.html new file mode 100644 index 0000000..e5909cb --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/error.html @@ -0,0 +1,153 @@ + + + + + error + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

error

+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/get-or-throw.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/get-or-throw.html new file mode 100644 index 0000000..27f1f59 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/get-or-throw.html @@ -0,0 +1,153 @@ + + + + + getOrThrow + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

getOrThrow

+
+
+
+
expect fun getOrThrow(): Byte
actual fun getOrThrow(): Byte
actual fun getOrThrow(): Byte
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/index.html new file mode 100644 index 0000000..0deda71 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/index.html @@ -0,0 +1,323 @@ + + + + + ByteResult + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

ByteResult

+
+
+
expect value class ByteResult(val packed: Long)
actual value class ByteResult(val packed: Long)
actual value class ByteResult(val packed: Long)
+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect constructor(packed: Long)
actual constructor(packed: Long)
actual constructor(packed: Long)
+
+
+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect object Companion
actual object Companion
actual object Companion
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val isFailure: Boolean
actual val isFailure: Boolean
actual val isFailure: Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val isSuccess: Boolean
actual val isSuccess: Boolean
actual val isSuccess: Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val packed: Long
actual val packed: Long
actual val packed: Long
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
inline fun ByteResult.getOrElse(fallback: (KompactDecodeError) -> Byte): Byte
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect fun getOrThrow(): Byte
actual fun getOrThrow(): Byte
actual fun getOrThrow(): Byte
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
inline fun ByteResult.map(transform: (Byte) -> Byte): ByteResult
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/is-failure.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/is-failure.html new file mode 100644 index 0000000..ec94f95 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/is-failure.html @@ -0,0 +1,153 @@ + + + + + isFailure + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

isFailure

+
+
+
+
expect val isFailure: Boolean
actual val isFailure: Boolean
actual val isFailure: Boolean
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/is-success.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/is-success.html new file mode 100644 index 0000000..bd7149e --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/is-success.html @@ -0,0 +1,153 @@ + + + + + isSuccess + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

isSuccess

+
+
+
+
expect val isSuccess: Boolean
actual val isSuccess: Boolean
actual val isSuccess: Boolean
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/packed.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/packed.html new file mode 100644 index 0000000..9d9be50 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-byte-result/packed.html @@ -0,0 +1,153 @@ + + + + + packed + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

packed

+
+
+
+
expect val packed: Long
actual val packed: Long
actual val packed: Long
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/-companion/failure.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/-companion/failure.html new file mode 100644 index 0000000..5461ae5 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/-companion/failure.html @@ -0,0 +1,153 @@ + + + + + failure + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

failure

+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/-companion/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/-companion/index.html new file mode 100644 index 0000000..d700101 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/-companion/index.html @@ -0,0 +1,196 @@ + + + + + Companion + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Companion

+
+
+
expect object Companion
actual object Companion
actual object Companion
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect fun success(value: Double): DoubleResult
actual fun success(value: Double): DoubleResult
actual fun success(value: Double): DoubleResult
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/-companion/success.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/-companion/success.html new file mode 100644 index 0000000..d0fba50 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/-companion/success.html @@ -0,0 +1,153 @@ + + + + + success + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

success

+
+
+
+
expect fun success(value: Double): DoubleResult
actual fun success(value: Double): DoubleResult
actual fun success(value: Double): DoubleResult
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/-double-result.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/-double-result.html new file mode 100644 index 0000000..f4ff359 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/-double-result.html @@ -0,0 +1,153 @@ + + + + + DoubleResult + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

DoubleResult

+
+
+
+
expect constructor(packed: Long)
actual constructor(packed: Long)
actual constructor(packed: Long)
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/error.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/error.html new file mode 100644 index 0000000..40d1d8f --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/error.html @@ -0,0 +1,153 @@ + + + + + error + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

error

+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/get-or-throw.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/get-or-throw.html new file mode 100644 index 0000000..e82162c --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/get-or-throw.html @@ -0,0 +1,153 @@ + + + + + getOrThrow + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

getOrThrow

+
+
+
+
expect fun getOrThrow(): Double
actual fun getOrThrow(): Double
actual fun getOrThrow(): Double
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/index.html new file mode 100644 index 0000000..d94d723 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/index.html @@ -0,0 +1,323 @@ + + + + + DoubleResult + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

DoubleResult

+
+
+
expect value class DoubleResult(val packed: Long)
actual value class DoubleResult(val packed: Long)
actual value class DoubleResult(val packed: Long)
+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect constructor(packed: Long)
actual constructor(packed: Long)
actual constructor(packed: Long)
+
+
+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect object Companion
actual object Companion
actual object Companion
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val isFailure: Boolean
actual val isFailure: Boolean
actual val isFailure: Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val isSuccess: Boolean
actual val isSuccess: Boolean
actual val isSuccess: Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val packed: Long
actual val packed: Long
actual val packed: Long
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect fun getOrThrow(): Double
actual fun getOrThrow(): Double
actual fun getOrThrow(): Double
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
inline fun DoubleResult.map(transform: (Double) -> Double): DoubleResult
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/is-failure.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/is-failure.html new file mode 100644 index 0000000..5716259 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/is-failure.html @@ -0,0 +1,153 @@ + + + + + isFailure + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

isFailure

+
+
+
+
expect val isFailure: Boolean
actual val isFailure: Boolean
actual val isFailure: Boolean
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/is-success.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/is-success.html new file mode 100644 index 0000000..34326e7 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/is-success.html @@ -0,0 +1,153 @@ + + + + + isSuccess + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

isSuccess

+
+
+
+
expect val isSuccess: Boolean
actual val isSuccess: Boolean
actual val isSuccess: Boolean
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/packed.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/packed.html new file mode 100644 index 0000000..8da4c6b --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-double-result/packed.html @@ -0,0 +1,153 @@ + + + + + packed + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

packed

+
+
+
+
expect val packed: Long
actual val packed: Long
actual val packed: Long
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/-companion/failure.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/-companion/failure.html new file mode 100644 index 0000000..0c3f59d --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/-companion/failure.html @@ -0,0 +1,153 @@ + + + + + failure + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

failure

+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/-companion/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/-companion/index.html new file mode 100644 index 0000000..595e993 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/-companion/index.html @@ -0,0 +1,196 @@ + + + + + Companion + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Companion

+
+
+
expect object Companion
actual object Companion
actual object Companion
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect fun success(value: Float): FloatResult
actual fun success(value: Float): FloatResult
actual fun success(value: Float): FloatResult
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/-companion/success.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/-companion/success.html new file mode 100644 index 0000000..7e4cb4b --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/-companion/success.html @@ -0,0 +1,153 @@ + + + + + success + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

success

+
+
+
+
expect fun success(value: Float): FloatResult
actual fun success(value: Float): FloatResult
actual fun success(value: Float): FloatResult
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/-float-result.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/-float-result.html new file mode 100644 index 0000000..71b8eb3 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/-float-result.html @@ -0,0 +1,153 @@ + + + + + FloatResult + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

FloatResult

+
+
+
+
expect constructor(packed: Long)
actual constructor(packed: Long)
actual constructor(packed: Long)
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/error.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/error.html new file mode 100644 index 0000000..c0a0050 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/error.html @@ -0,0 +1,153 @@ + + + + + error + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

error

+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/get-or-throw.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/get-or-throw.html new file mode 100644 index 0000000..68263d7 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/get-or-throw.html @@ -0,0 +1,153 @@ + + + + + getOrThrow + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

getOrThrow

+
+
+
+
expect fun getOrThrow(): Float
actual fun getOrThrow(): Float
actual fun getOrThrow(): Float
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/index.html new file mode 100644 index 0000000..a9c0395 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/index.html @@ -0,0 +1,323 @@ + + + + + FloatResult + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

FloatResult

+
+
+
expect value class FloatResult(val packed: Long)
actual value class FloatResult(val packed: Long)
actual value class FloatResult(val packed: Long)
+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect constructor(packed: Long)
actual constructor(packed: Long)
actual constructor(packed: Long)
+
+
+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect object Companion
actual object Companion
actual object Companion
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val isFailure: Boolean
actual val isFailure: Boolean
actual val isFailure: Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val isSuccess: Boolean
actual val isSuccess: Boolean
actual val isSuccess: Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val packed: Long
actual val packed: Long
actual val packed: Long
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
inline fun FloatResult.getOrElse(fallback: (KompactDecodeError) -> Float): Float
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect fun getOrThrow(): Float
actual fun getOrThrow(): Float
actual fun getOrThrow(): Float
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
inline fun FloatResult.map(transform: (Float) -> Float): FloatResult
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/is-failure.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/is-failure.html new file mode 100644 index 0000000..b186358 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/is-failure.html @@ -0,0 +1,153 @@ + + + + + isFailure + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

isFailure

+
+
+
+
expect val isFailure: Boolean
actual val isFailure: Boolean
actual val isFailure: Boolean
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/is-success.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/is-success.html new file mode 100644 index 0000000..af8e036 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/is-success.html @@ -0,0 +1,153 @@ + + + + + isSuccess + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

isSuccess

+
+
+
+
expect val isSuccess: Boolean
actual val isSuccess: Boolean
actual val isSuccess: Boolean
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/packed.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/packed.html new file mode 100644 index 0000000..95c8d66 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-float-result/packed.html @@ -0,0 +1,153 @@ + + + + + packed + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

packed

+
+
+
+
expect val packed: Long
actual val packed: Long
actual val packed: Long
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/-companion/failure.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/-companion/failure.html new file mode 100644 index 0000000..cb62761 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/-companion/failure.html @@ -0,0 +1,153 @@ + + + + + failure + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

failure

+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/-companion/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/-companion/index.html new file mode 100644 index 0000000..db530a7 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/-companion/index.html @@ -0,0 +1,196 @@ + + + + + Companion + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Companion

+
+
+
expect object Companion
actual object Companion
actual object Companion
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect fun success(value: Int): IntResult
actual fun success(value: Int): IntResult
actual fun success(value: Int): IntResult
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/-companion/success.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/-companion/success.html new file mode 100644 index 0000000..7b73c81 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/-companion/success.html @@ -0,0 +1,153 @@ + + + + + success + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

success

+
+
+
+
expect fun success(value: Int): IntResult
actual fun success(value: Int): IntResult
actual fun success(value: Int): IntResult
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/-int-result.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/-int-result.html new file mode 100644 index 0000000..ba51fc6 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/-int-result.html @@ -0,0 +1,153 @@ + + + + + IntResult + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

IntResult

+
+
+
+
expect constructor(packed: Long)
actual constructor(packed: Long)
actual constructor(packed: Long)
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/error.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/error.html new file mode 100644 index 0000000..a4c7b10 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/error.html @@ -0,0 +1,153 @@ + + + + + error + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

error

+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/get-or-throw.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/get-or-throw.html new file mode 100644 index 0000000..ec53a53 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/get-or-throw.html @@ -0,0 +1,153 @@ + + + + + getOrThrow + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

getOrThrow

+
+
+
+
expect fun getOrThrow(): Int
actual fun getOrThrow(): Int
actual fun getOrThrow(): Int
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/index.html new file mode 100644 index 0000000..22aa919 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/index.html @@ -0,0 +1,323 @@ + + + + + IntResult + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

IntResult

+
+
+
expect value class IntResult(val packed: Long)
actual value class IntResult(val packed: Long)
actual value class IntResult(val packed: Long)
+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect constructor(packed: Long)
actual constructor(packed: Long)
actual constructor(packed: Long)
+
+
+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect object Companion
actual object Companion
actual object Companion
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val isFailure: Boolean
actual val isFailure: Boolean
actual val isFailure: Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val isSuccess: Boolean
actual val isSuccess: Boolean
actual val isSuccess: Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val packed: Long
actual val packed: Long
actual val packed: Long
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
inline fun IntResult.getOrElse(fallback: (KompactDecodeError) -> Int): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect fun getOrThrow(): Int
actual fun getOrThrow(): Int
actual fun getOrThrow(): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
inline fun IntResult.map(transform: (Int) -> Int): IntResult
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/is-failure.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/is-failure.html new file mode 100644 index 0000000..fb17796 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/is-failure.html @@ -0,0 +1,153 @@ + + + + + isFailure + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

isFailure

+
+
+
+
expect val isFailure: Boolean
actual val isFailure: Boolean
actual val isFailure: Boolean
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/is-success.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/is-success.html new file mode 100644 index 0000000..f32c449 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/is-success.html @@ -0,0 +1,153 @@ + + + + + isSuccess + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

isSuccess

+
+
+
+
expect val isSuccess: Boolean
actual val isSuccess: Boolean
actual val isSuccess: Boolean
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/packed.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/packed.html new file mode 100644 index 0000000..230a9ff --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-int-result/packed.html @@ -0,0 +1,153 @@ + + + + + packed + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

packed

+
+
+
+
expect val packed: Long
actual val packed: Long
actual val packed: Long
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-bad-length-prefix/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-bad-length-prefix/index.html new file mode 100644 index 0000000..f52b868 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-bad-length-prefix/index.html @@ -0,0 +1,135 @@ + + + + + BadLengthPrefix + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

BadLengthPrefix

+ +
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-bounds-error/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-bounds-error/index.html new file mode 100644 index 0000000..0a56e5a --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-bounds-error/index.html @@ -0,0 +1,135 @@ + + + + + BoundsError + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

BoundsError

+ +
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-truncated-nested/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-truncated-nested/index.html new file mode 100644 index 0000000..981fe14 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-truncated-nested/index.html @@ -0,0 +1,135 @@ + + + + + TruncatedNested + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

TruncatedNested

+ +
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-unknown-enum-code/-unknown-enum-code.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-unknown-enum-code/-unknown-enum-code.html new file mode 100644 index 0000000..1a76a0d --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-unknown-enum-code/-unknown-enum-code.html @@ -0,0 +1,131 @@ + + + + + UnknownEnumCode + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

UnknownEnumCode

+
+
constructor(rawCode: Int)
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-unknown-enum-code/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-unknown-enum-code/index.html new file mode 100644 index 0000000..97053fe --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-unknown-enum-code/index.html @@ -0,0 +1,174 @@ + + + + + UnknownEnumCode + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

UnknownEnumCode

+
data class UnknownEnumCode(val rawCode: Int) : KompactDecodeError
+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor(rawCode: Int)
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-unknown-enum-code/raw-code.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-unknown-enum-code/raw-code.html new file mode 100644 index 0000000..4791e8d --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-unknown-enum-code/raw-code.html @@ -0,0 +1,131 @@ + + + + + rawCode + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

rawCode

+
+ +
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/index.html new file mode 100644 index 0000000..b64f5c4 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/index.html @@ -0,0 +1,200 @@ + + + + + KompactDecodeError + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

KompactDecodeError

+
sealed class KompactDecodeError

Runtime decode error taxonomy (Ticket 06).

Returned (never thrown) on the read path: a checked accessor yields a typed Kompact*Result value class whose packed encodes the error kind. Accessing .error reconstructs the concrete case lazily — singletons on the common path, UnknownEnumCode allocates only the data-class payload.

Inheritors

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
data class UnknownEnumCode(val rawCode: Int) : KompactDecodeError
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-exception/-kompact-decode-exception.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-exception/-kompact-decode-exception.html new file mode 100644 index 0000000..f2da891 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-exception/-kompact-decode-exception.html @@ -0,0 +1,131 @@ + + + + + KompactDecodeException + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

KompactDecodeException

+
+
constructor(error: KompactDecodeError)
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-exception/error.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-exception/error.html new file mode 100644 index 0000000..972e9a8 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-exception/error.html @@ -0,0 +1,131 @@ + + + + + error + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

error

+
+ +
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-exception/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-exception/index.html new file mode 100644 index 0000000..a515540 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-decode-exception/index.html @@ -0,0 +1,204 @@ + + + + + KompactDecodeException + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

KompactDecodeException

+

Thrown by getOrThrow() / readOrThrow() on the failure path. The success hot-path never throws (Ticket 03 zero-alloc). Allocation of this exception is acceptable because it only occurs on an explicit recovery call.

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor(error: KompactDecodeError)
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
expect open val cause: Throwable?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
expect open val message: String?
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/-i-n-v-a-l-i-d_-l-e-n-g-t-h_-p-r-e-f-i-x.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/-i-n-v-a-l-i-d_-l-e-n-g-t-h_-p-r-e-f-i-x.html new file mode 100644 index 0000000..b81f5a3 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/-i-n-v-a-l-i-d_-l-e-n-g-t-h_-p-r-e-f-i-x.html @@ -0,0 +1,131 @@ + + + + + INVALID_LENGTH_PREFIX + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

INVALID_LENGTH_PREFIX

+
+

Sentinel returned by readLengthPrefix when bitWidth is invalid or the prefix field overruns raw (Q9: name the length-prefix failure sentinel rather than scattering a bare -1). This is the only value readLengthPrefix returns on failure; it is never a valid (non-negative) byte count.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/-v-a-l-i-d_-p-r-e-f-i-x_-w-i-d-t-h-s.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/-v-a-l-i-d_-p-r-e-f-i-x_-w-i-d-t-h-s.html new file mode 100644 index 0000000..35b44e9 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/-v-a-l-i-d_-p-r-e-f-i-x_-w-i-d-t-h-s.html @@ -0,0 +1,131 @@ + + + + + VALID_PREFIX_WIDTHS + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

VALID_PREFIX_WIDTHS

+
+

Valid length-prefix bit widths (Ticket 06 invariant matrix).

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/index.html new file mode 100644 index 0000000..02eb43b --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/index.html @@ -0,0 +1,249 @@ + + + + + KompactFraming + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

KompactFraming

+

Sequential, length-delimited framing (Ticket 05) and repeat/count handling.

Wire shape, read forward (no random access):

  • Length prefix — a fixed-width (8/16/32-bit) little-endian byte count placed at bitOffset; the prefixed payload follows immediately at bitOffset + prefixBitWidth.

  • Nested composite — a length-delimited sub-region: read the prefix to learn the byte count, then consume prefixBitWidth + count * 8 bits and hand the caller the sub-region's [startBit, bitLength).

  • Repeated fields — one fixed-width count prefix, then count elements in sequence (the count width is the field's declared prefix width).

Reads never throw on the hot path (Ticket 06): a prefix that overruns the buffer is surfaced via nestedRegionOrNull's nullable return so the caller can map it to a typed BadLengthPrefix result (Ticket 06/09: a length-prefix that exceeds remaining bytes is BadLengthPrefix; skew is fail-fast, never silent).

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Sentinel returned by readLengthPrefix when bitWidth is invalid or the prefix field overruns raw (Q9: name the length-prefix failure sentinel rather than scattering a bare -1). This is the only value readLengthPrefix returns on failure; it is never a valid (non-negative) byte count.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Valid length-prefix bit widths (Ticket 06 invariant matrix).

+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun readLengthPrefix(raw: ByteArray, bitOffset: Int, bitWidth: Int): Int

Reads a fixed-width (8/16/32-bit) little-endian byte count at bitOffset. Unsigned magnitude via the raw bit primitives; returns INVALID_LENGTH_PREFIX (-1) when bitWidth is invalid or the region overruns raw (caller maps to a typed error — never throws on the read path, Ticket 06).

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun readLengthPrefixOrThrow(raw: ByteArray, bitOffset: Int, bitWidth: Int): Int

Throwing variant of readLengthPrefix: throws KompactDecodeException on a bad prefix (Ticket 05).

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun readNested(raw: ByteArray, bitOffset: Int, prefixBitWidth: Int): NestedRegionResult

Typed NestedRegionResult variant of nestedRegionOrNull (Ticket 05).

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun readNestedOrThrow(raw: ByteArray, bitOffset: Int, prefixBitWidth: Int): NestedRegion

Throwing variant of readNested: throws KompactDecodeException on failure (Ticket 05).

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun writeLengthPrefix(raw: ByteArray, bitOffset: Int, bitWidth: Int, length: Int)

Writes length as a fixed-width little-endian byte count at bitOffset. Mirrors readLengthPrefix (Ticket 07: the writer selects the per-field prefix width at codegen time; it must be one of VALID_PREFIX_WIDTHS).

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/read-length-prefix-or-throw.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/read-length-prefix-or-throw.html new file mode 100644 index 0000000..6558f36 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/read-length-prefix-or-throw.html @@ -0,0 +1,131 @@ + + + + + readLengthPrefixOrThrow + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

readLengthPrefixOrThrow

+
+
fun readLengthPrefixOrThrow(raw: ByteArray, bitOffset: Int, bitWidth: Int): Int

Throwing variant of readLengthPrefix: throws KompactDecodeException on a bad prefix (Ticket 05).

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/read-length-prefix.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/read-length-prefix.html new file mode 100644 index 0000000..13c8aff --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/read-length-prefix.html @@ -0,0 +1,131 @@ + + + + + readLengthPrefix + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

readLengthPrefix

+
+
fun readLengthPrefix(raw: ByteArray, bitOffset: Int, bitWidth: Int): Int

Reads a fixed-width (8/16/32-bit) little-endian byte count at bitOffset. Unsigned magnitude via the raw bit primitives; returns INVALID_LENGTH_PREFIX (-1) when bitWidth is invalid or the region overruns raw (caller maps to a typed error — never throws on the read path, Ticket 06).

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/read-nested-or-throw.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/read-nested-or-throw.html new file mode 100644 index 0000000..c473622 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/read-nested-or-throw.html @@ -0,0 +1,131 @@ + + + + + readNestedOrThrow + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

readNestedOrThrow

+
+
fun readNestedOrThrow(raw: ByteArray, bitOffset: Int, prefixBitWidth: Int): NestedRegion

Throwing variant of readNested: throws KompactDecodeException on failure (Ticket 05).

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/read-nested.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/read-nested.html new file mode 100644 index 0000000..e8f8549 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/read-nested.html @@ -0,0 +1,131 @@ + + + + + readNested + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

readNested

+
+
fun readNested(raw: ByteArray, bitOffset: Int, prefixBitWidth: Int): NestedRegionResult

Typed NestedRegionResult variant of nestedRegionOrNull (Ticket 05).

Parses the prefixBitWidth length-prefix at bitOffset and, on success, returns the (startBit, bitLength) of the payload region. On a bad prefix width, an unreadable prefix, an overflowing count (F-003), or a length-prefix that exceeds the remaining buffer, returns a typed KompactDecodeError.BadLengthPrefix failure — never null — per the Ticket 06/09 invariant (length-prefix > remaining bytes -> BadLengthPrefix); skew is fail-fast, never silent.

Delegates to nestedRegionOrNull (no guard duplication needed since this function is no longer inline, so it can call internal helpers; see Q9 note on sentinel-named failure paths).

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/write-length-prefix.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/write-length-prefix.html new file mode 100644 index 0000000..9afa9a0 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-framing/write-length-prefix.html @@ -0,0 +1,131 @@ + + + + + writeLengthPrefix + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

writeLengthPrefix

+
+
fun writeLengthPrefix(raw: ByteArray, bitOffset: Int, bitWidth: Int, length: Int)

Writes length as a fixed-width little-endian byte count at bitOffset. Mirrors readLengthPrefix (Ticket 07: the writer selects the per-field prefix width at codegen time; it must be one of VALID_PREFIX_WIDTHS).

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/fits.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/fits.html new file mode 100644 index 0000000..c419c72 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/fits.html @@ -0,0 +1,131 @@ + + + + + fits + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

fits

+
+
fun fits(raw: ByteArray, bitOffset: Int, bitWidth: Int): Boolean

Bounds-check: true iff bitOffset+bitWidth fits in raw.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/index.html new file mode 100644 index 0000000..12a3476 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/index.html @@ -0,0 +1,395 @@ + + + + + KompactRuntime + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

KompactRuntime

+

Bit-stream primitives for Kompact.

Bit order is LSB-first (little-endian bit packing): byte 0 holds the field's bits 0-7, byte 1 holds bits 8-15, and bit 0 of each byte is the least-significant bit of the field value (Ticket 01). Every Byte is masked with and 0xFF before ushr/shl/or, so assembly is identical on the JVM and Kotlin/Native regardless of platform endianness (PROMPT §1).

These primitives are small, side-effect-free, and reference-free: a value-class getter delegates to them with no heap allocation on Kotlin/Native (value classes over primitive Long are unboxed) and no heap allocation on the JVM (the JIT scalar-replaces the @JvmInline wrapper) (Ticket 03).

+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun fits(raw: ByteArray, bitOffset: Int, bitWidth: Int): Boolean

Bounds-check: true iff bitOffset+bitWidth fits in raw.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun readBits(raw: ByteArray, bitOffset: Int, bitWidth: Int): Int

Reads bitWidth bits (1..31) from raw starting at bitOffset, LSB-first.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun readBitsBoolean(raw: ByteArray, bitOffset: Int): Boolean

Reads a single bit at bitOffset as a Boolean.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun readBitsLong(raw: ByteArray, bitOffset: Int, bitWidth: Int): Long

Reads bitWidth bits (1..64) from raw starting at bitOffset, LSB-first.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun readBool(raw: ByteArray, bitOffset: Int): BooleanResult

Reads 1 bit at bitOffset as a checked BooleanResult.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun readBoolOrThrow(raw: ByteArray, bitOffset: Int): Boolean

Throws KompactDecodeException on a bounds error; otherwise reads 1 bit as a Boolean (Ticket 04).

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun readDouble(raw: ByteArray, bitOffset: Int): DoubleResult

Reads 64 bits at bitOffset as a checked DoubleResult. NaN is canonicalized (Ticket 04).

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun readDoubleOrThrow(raw: ByteArray, bitOffset: Int): Double

Throws KompactDecodeException on a bounds error; otherwise reads 64 bits as a Double (Ticket 04).

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun readFloat(raw: ByteArray, bitOffset: Int): FloatResult

Reads 32 bits at bitOffset as a checked FloatResult. NaN is canonicalized (Ticket 04).

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun readFloatOrThrow(raw: ByteArray, bitOffset: Int): Float

Throws KompactDecodeException on a bounds error; otherwise reads 32 bits as a Float (Ticket 04).

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun readScalar(raw: ByteArray, bitOffset: Int, type: ScalarType): IntResult

Reads up to ScalarType.bitWidth bits of type as a checked IntResult. The width (1..32) and signedness come from type, so a single accessor replaces the 8 per-width readInt8/16/32 and readUInt8/16/32 overloads (ergonomics-01: ScalarType consolidation). Sign extension uses Long-arithmetic shifts, bit-identical to the legacy accessors. Callers pass a ScalarType; see readScalarOrThrow for the exceptions variant.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun readScalarAsLong(raw: ByteArray, bitOffset: Int, type: ScalarType): LongResult

Reads up to ScalarType.bitWidth bits of type as a checked LongResult (1..64). Width/signedness derive from type; sign extension (two's-complement) uses Long-arithmetic shifts. Replaces readScalarLong(w, b, signed); callers pass a ScalarType carrying the UInt64/Int64 bands (ergonomics-01: ScalarType consolidation). See readScalarAsLongOrThrow for the exceptions variant.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun readScalarAsLongOrThrow(raw: ByteArray, bitOffset: Int, type: ScalarType): Long

Throws KompactDecodeException on a bounds error; otherwise decodes type bits as a Long (Ticket 04).

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun readScalarOrThrow(raw: ByteArray, bitOffset: Int, type: ScalarType): Int

Throws KompactDecodeException on a bounds error; otherwise decodes type bits as an Int (Ticket 04).

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun writeBits(raw: ByteArray, bitOffset: Int, bitWidth: Int, value: Int)

Writes the low bitWidth bits (1..31) of value into raw at bitOffset, LSB-first.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun writeBitsBoolean(raw: ByteArray, bitOffset: Int, value: Boolean)

Writes value as a single bit at bitOffset.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun writeBitsLong(raw: ByteArray, bitOffset: Int, bitWidth: Int, value: Long)

Writes the low bitWidth bits (1..64) of value into raw at bitOffset, LSB-first.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-bits-boolean.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-bits-boolean.html new file mode 100644 index 0000000..258591b --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-bits-boolean.html @@ -0,0 +1,131 @@ + + + + + readBitsBoolean + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

readBitsBoolean

+
+
fun readBitsBoolean(raw: ByteArray, bitOffset: Int): Boolean

Reads a single bit at bitOffset as a Boolean.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-bits-long.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-bits-long.html new file mode 100644 index 0000000..c405f6b --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-bits-long.html @@ -0,0 +1,131 @@ + + + + + readBitsLong + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

readBitsLong

+
+
fun readBitsLong(raw: ByteArray, bitOffset: Int, bitWidth: Int): Long

Reads bitWidth bits (1..64) from raw starting at bitOffset, LSB-first.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-bits.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-bits.html new file mode 100644 index 0000000..359b618 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-bits.html @@ -0,0 +1,131 @@ + + + + + readBits + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

readBits

+
+
fun readBits(raw: ByteArray, bitOffset: Int, bitWidth: Int): Int

Reads bitWidth bits (1..31) from raw starting at bitOffset, LSB-first.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-bool-or-throw.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-bool-or-throw.html new file mode 100644 index 0000000..fcd3dcc --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-bool-or-throw.html @@ -0,0 +1,131 @@ + + + + + readBoolOrThrow + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

readBoolOrThrow

+
+
fun readBoolOrThrow(raw: ByteArray, bitOffset: Int): Boolean

Throws KompactDecodeException on a bounds error; otherwise reads 1 bit as a Boolean (Ticket 04).

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-bool.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-bool.html new file mode 100644 index 0000000..ad8bb05 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-bool.html @@ -0,0 +1,131 @@ + + + + + readBool + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

readBool

+
+
fun readBool(raw: ByteArray, bitOffset: Int): BooleanResult

Reads 1 bit at bitOffset as a checked BooleanResult.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-double-or-throw.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-double-or-throw.html new file mode 100644 index 0000000..7029c31 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-double-or-throw.html @@ -0,0 +1,131 @@ + + + + + readDoubleOrThrow + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

readDoubleOrThrow

+
+
fun readDoubleOrThrow(raw: ByteArray, bitOffset: Int): Double

Throws KompactDecodeException on a bounds error; otherwise reads 64 bits as a Double (Ticket 04).

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-double.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-double.html new file mode 100644 index 0000000..99f4856 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-double.html @@ -0,0 +1,131 @@ + + + + + readDouble + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

readDouble

+
+
fun readDouble(raw: ByteArray, bitOffset: Int): DoubleResult

Reads 64 bits at bitOffset as a checked DoubleResult. NaN is canonicalized (Ticket 04).

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-float-or-throw.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-float-or-throw.html new file mode 100644 index 0000000..9e4ea92 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-float-or-throw.html @@ -0,0 +1,131 @@ + + + + + readFloatOrThrow + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

readFloatOrThrow

+
+
fun readFloatOrThrow(raw: ByteArray, bitOffset: Int): Float

Throws KompactDecodeException on a bounds error; otherwise reads 32 bits as a Float (Ticket 04).

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-float.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-float.html new file mode 100644 index 0000000..86d9184 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-float.html @@ -0,0 +1,131 @@ + + + + + readFloat + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

readFloat

+
+
fun readFloat(raw: ByteArray, bitOffset: Int): FloatResult

Reads 32 bits at bitOffset as a checked FloatResult. NaN is canonicalized (Ticket 04).

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-scalar-as-long-or-throw.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-scalar-as-long-or-throw.html new file mode 100644 index 0000000..b50f806 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-scalar-as-long-or-throw.html @@ -0,0 +1,131 @@ + + + + + readScalarAsLongOrThrow + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

readScalarAsLongOrThrow

+
+
fun readScalarAsLongOrThrow(raw: ByteArray, bitOffset: Int, type: ScalarType): Long

Throws KompactDecodeException on a bounds error; otherwise decodes type bits as a Long (Ticket 04).

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-scalar-as-long.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-scalar-as-long.html new file mode 100644 index 0000000..230e3f7 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-scalar-as-long.html @@ -0,0 +1,131 @@ + + + + + readScalarAsLong + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

readScalarAsLong

+
+
fun readScalarAsLong(raw: ByteArray, bitOffset: Int, type: ScalarType): LongResult

Reads up to ScalarType.bitWidth bits of type as a checked LongResult (1..64). Width/signedness derive from type; sign extension (two's-complement) uses Long-arithmetic shifts. Replaces readScalarLong(w, b, signed); callers pass a ScalarType carrying the UInt64/Int64 bands (ergonomics-01: ScalarType consolidation). See readScalarAsLongOrThrow for the exceptions variant.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-scalar-or-throw.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-scalar-or-throw.html new file mode 100644 index 0000000..cd0d419 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-scalar-or-throw.html @@ -0,0 +1,131 @@ + + + + + readScalarOrThrow + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

readScalarOrThrow

+
+
fun readScalarOrThrow(raw: ByteArray, bitOffset: Int, type: ScalarType): Int

Throws KompactDecodeException on a bounds error; otherwise decodes type bits as an Int (Ticket 04).

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-scalar.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-scalar.html new file mode 100644 index 0000000..f6c24cc --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-scalar.html @@ -0,0 +1,131 @@ + + + + + readScalar + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

readScalar

+
+
fun readScalar(raw: ByteArray, bitOffset: Int, type: ScalarType): IntResult

Reads up to ScalarType.bitWidth bits of type as a checked IntResult. The width (1..32) and signedness come from type, so a single accessor replaces the 8 per-width readInt8/16/32 and readUInt8/16/32 overloads (ergonomics-01: ScalarType consolidation). Sign extension uses Long-arithmetic shifts, bit-identical to the legacy accessors. Callers pass a ScalarType; see readScalarOrThrow for the exceptions variant.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/write-bits-boolean.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/write-bits-boolean.html new file mode 100644 index 0000000..15e0c18 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/write-bits-boolean.html @@ -0,0 +1,131 @@ + + + + + writeBitsBoolean + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

writeBitsBoolean

+
+
fun writeBitsBoolean(raw: ByteArray, bitOffset: Int, value: Boolean)

Writes value as a single bit at bitOffset.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/write-bits-long.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/write-bits-long.html new file mode 100644 index 0000000..2ca0748 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/write-bits-long.html @@ -0,0 +1,131 @@ + + + + + writeBitsLong + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

writeBitsLong

+
+
fun writeBitsLong(raw: ByteArray, bitOffset: Int, bitWidth: Int, value: Long)

Writes the low bitWidth bits (1..64) of value into raw at bitOffset, LSB-first.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/write-bits.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/write-bits.html new file mode 100644 index 0000000..8b628ba --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-runtime/write-bits.html @@ -0,0 +1,131 @@ + + + + + writeBits + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

writeBits

+
+
fun writeBits(raw: ByteArray, bitOffset: Int, bitWidth: Int, value: Int)

Writes the low bitWidth bits (1..31) of value into raw at bitOffset, LSB-first.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/-companion/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/-companion/index.html new file mode 100644 index 0000000..7181464 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/-companion/index.html @@ -0,0 +1,135 @@ + + + + + Companion + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Companion

+
object Companion
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/-kompact-writer.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/-kompact-writer.html new file mode 100644 index 0000000..21c592d --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/-kompact-writer.html @@ -0,0 +1,131 @@ + + + + + KompactWriter + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

KompactWriter

+
+
constructor()
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/build.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/build.html new file mode 100644 index 0000000..aefb366 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/build.html @@ -0,0 +1,131 @@ + + + + + build + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

build

+
+

Returns an exact-length snapshot of the accumulated bits. Calling afterwards is allowed but yields an empty buffer (single-shot by design).

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/index.html new file mode 100644 index 0000000..f85a9fd --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/index.html @@ -0,0 +1,313 @@ + + + + + KompactWriter + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

KompactWriter

+

Forward-only, growable write builder for Kompact wire output (Ticket 07).

The write path is not bound by the zero-allocation hot-path discipline (Ticket 03) — allocation/lambda overhead is acceptable here. The binary shape is a straight translation of Ticket 05's framing: fixed-width LE length prefixes, length-delimited nested sub-regions (child length computed first, then prefix + bytes — no back-patch), and count-prefixed repeats <count><elem₀><elem₁>….

build() returns an exact-length snapshot; the backing buffer is not exposed, so the writer remains single-use forward-only (PROMPT §1).

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor()
+
+
+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
object Companion
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Returns an exact-length snapshot of the accumulated bits. Calling afterwards is allowed but yields an empty buffer (single-shot by design).

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun writeBits(bitWidth: Int, value: Int)

Appends bitWidth low bits of value (two's-complement magnitude).

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun writeBitsLong(bitWidth: Int, value: Long)

Appends bitWidth low bits of value (64-bit, for UInt64/Int64).

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun writeBlob(countWidth: Int, bytes: ByteArray)

Writes a length-prefixed blob: <prefix><bytes> (Ticket 05).

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun writeBool(value: Boolean)

Writes a single bit (true = 1, false = 0).

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun writeNested(lengthPrefixWidth: Int = 16, block: KompactWriter.() -> Unit)

Writes a nested sub-region: a child KompactWriter drains block, then the child's byte length is emitted as a lengthPrefixWidth-bit LE prefix immediately followed by the child bytes (forward-only, compute-first — Ticket 07). The child region begins byte-aligned after the prefix.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun writeRepeated(count: Int, countWidth: Int = 8, block: KompactWriter.() -> Unit)

Writes a count-prefixed repeat: <count><elem₀>…<elem_{count-1}> where each element is produced by one invocation of block against this writer (Ticket 05). countWidth must be one of KompactFraming.VALID_PREFIX_WIDTHS.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun writeScalar(type: ScalarType, value: Long)

Writes value under type: ScalarType.bitWidth low bits as a two's-complement magnitude (1..64), dispatched to writeBits (<=31) / writeBitsLong (32..64). Replaces the writeInt/writeUInt/writeInt64/writeEnum overloads — one accessor per width-band (ergonomics-01: ScalarType consolidation). Pass a ScalarType carrying the band.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun writeString(countWidth: Int, value: String)

Writes a length-prefixed UTF-8 string: <prefix><bytes> (Ticket 05).

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-bits-long.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-bits-long.html new file mode 100644 index 0000000..5ead464 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-bits-long.html @@ -0,0 +1,131 @@ + + + + + writeBitsLong + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

writeBitsLong

+
+
fun writeBitsLong(bitWidth: Int, value: Long)

Appends bitWidth low bits of value (64-bit, for UInt64/Int64).

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-bits.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-bits.html new file mode 100644 index 0000000..e12393e --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-bits.html @@ -0,0 +1,131 @@ + + + + + writeBits + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

writeBits

+
+
fun writeBits(bitWidth: Int, value: Int)

Appends bitWidth low bits of value (two's-complement magnitude).

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-blob.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-blob.html new file mode 100644 index 0000000..1b40e12 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-blob.html @@ -0,0 +1,131 @@ + + + + + writeBlob + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

writeBlob

+
+
fun writeBlob(countWidth: Int, bytes: ByteArray)

Writes a length-prefixed blob: <prefix><bytes> (Ticket 05).

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-bool.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-bool.html new file mode 100644 index 0000000..b6d76bf --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-bool.html @@ -0,0 +1,131 @@ + + + + + writeBool + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

writeBool

+
+
fun writeBool(value: Boolean)

Writes a single bit (true = 1, false = 0).

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-nested.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-nested.html new file mode 100644 index 0000000..167ec87 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-nested.html @@ -0,0 +1,131 @@ + + + + + writeNested + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

writeNested

+
+
fun writeNested(lengthPrefixWidth: Int = 16, block: KompactWriter.() -> Unit)

Writes a nested sub-region: a child KompactWriter drains block, then the child's byte length is emitted as a lengthPrefixWidth-bit LE prefix immediately followed by the child bytes (forward-only, compute-first — Ticket 07). The child region begins byte-aligned after the prefix.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-repeated.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-repeated.html new file mode 100644 index 0000000..e8b253e --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-repeated.html @@ -0,0 +1,131 @@ + + + + + writeRepeated + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

writeRepeated

+
+
fun writeRepeated(count: Int, countWidth: Int = 8, block: KompactWriter.() -> Unit)

Writes a count-prefixed repeat: <count><elem₀>…<elem_{count-1}> where each element is produced by one invocation of block against this writer (Ticket 05). countWidth must be one of KompactFraming.VALID_PREFIX_WIDTHS.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-scalar.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-scalar.html new file mode 100644 index 0000000..2a12a7c --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-scalar.html @@ -0,0 +1,131 @@ + + + + + writeScalar + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

writeScalar

+
+
fun writeScalar(type: ScalarType, value: Long)

Writes value under type: ScalarType.bitWidth low bits as a two's-complement magnitude (1..64), dispatched to writeBits (<=31) / writeBitsLong (32..64). Replaces the writeInt/writeUInt/writeInt64/writeEnum overloads — one accessor per width-band (ergonomics-01: ScalarType consolidation). Pass a ScalarType carrying the band.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-string.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-string.html new file mode 100644 index 0000000..a4c83a4 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-string.html @@ -0,0 +1,131 @@ + + + + + writeString + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

writeString

+
+
fun writeString(countWidth: Int, value: String)

Writes a length-prefixed UTF-8 string: <prefix><bytes> (Ticket 05).

+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/-companion/failure.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/-companion/failure.html new file mode 100644 index 0000000..a9ac280 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/-companion/failure.html @@ -0,0 +1,153 @@ + + + + + failure + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

failure

+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/-companion/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/-companion/index.html new file mode 100644 index 0000000..ed57b10 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/-companion/index.html @@ -0,0 +1,196 @@ + + + + + Companion + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Companion

+
+
+
expect object Companion
actual object Companion
actual object Companion
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect fun success(value: Long): LongResult
actual fun success(value: Long): LongResult
actual fun success(value: Long): LongResult
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/-companion/success.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/-companion/success.html new file mode 100644 index 0000000..ef3159d --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/-companion/success.html @@ -0,0 +1,153 @@ + + + + + success + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

success

+
+
+
+
expect fun success(value: Long): LongResult
actual fun success(value: Long): LongResult
actual fun success(value: Long): LongResult
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/-long-result.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/-long-result.html new file mode 100644 index 0000000..502c4d1 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/-long-result.html @@ -0,0 +1,153 @@ + + + + + LongResult + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

LongResult

+
+
+
+
expect constructor(packed: Long)
actual constructor(packed: Long)
actual constructor(packed: Long)
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/error.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/error.html new file mode 100644 index 0000000..8bbcaec --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/error.html @@ -0,0 +1,153 @@ + + + + + error + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

error

+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/get-or-throw.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/get-or-throw.html new file mode 100644 index 0000000..c89d5ea --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/get-or-throw.html @@ -0,0 +1,153 @@ + + + + + getOrThrow + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

getOrThrow

+
+
+
+
expect fun getOrThrow(): Long
actual fun getOrThrow(): Long
actual fun getOrThrow(): Long
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/index.html new file mode 100644 index 0000000..68f2cf7 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/index.html @@ -0,0 +1,323 @@ + + + + + LongResult + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

LongResult

+
+
+
expect value class LongResult(val packed: Long)

Checked 64-bit integer result (Ticket 08).

Because every 64-bit Long bit-pattern is a valid signed value, success and failure cannot be distinguished without reserving a sentinel band. success therefore treats a compact range near Long.MIN_VALUE (bit 63 set with bits 62..58 clear, i.e. Long.MIN_VALUE through Long.MIN_VALUE + (1L shl 58) - 1) as the failure sentinel — these values are not representable as success. The first representable negative success value is Long.MIN_VALUE + (1L shl 58) (bit 58 set, outside the sentinel mask). This is the documented tradeoff of packing a typed result into a single Long without boxing; see Ticket 08.

actual value class LongResult(val packed: Long)

Checked 64-bit integer result (Ticket 08).

Because every 64-bit Long bit-pattern is a valid signed value, success and failure cannot be distinguished without reserving a sentinel band. success therefore treats a compact range near Long.MIN_VALUE (bit 63 set with bits 62..58 clear, i.e. Long.MIN_VALUE through Long.MIN_VALUE + (1L shl 58) - 1) as the failure sentinel — these values are not representable as success. The first representable negative success value is Long.MIN_VALUE + (1L shl 58) (bit 58 set, outside the sentinel mask). This is the documented tradeoff of packing a typed result into a single Long without boxing; see Ticket 08.

actual value class LongResult(val packed: Long)

Checked 64-bit integer result (Ticket 08).

Because every 64-bit Long bit-pattern is a valid signed value, success and failure cannot be distinguished without reserving a sentinel band. success therefore treats a compact range near Long.MIN_VALUE (bit 63 set with bits 62..58 clear, i.e. Long.MIN_VALUE through Long.MIN_VALUE + (1L shl 58) - 1) as the failure sentinel — these values are not representable as success. The first representable negative success value is Long.MIN_VALUE + (1L shl 58) (bit 58 set, outside the sentinel mask). This is the documented tradeoff of packing a typed result into a single Long without boxing; see Ticket 08.

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect constructor(packed: Long)
actual constructor(packed: Long)
actual constructor(packed: Long)
+
+
+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect object Companion
actual object Companion
actual object Companion
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val isFailure: Boolean
actual val isFailure: Boolean
actual val isFailure: Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val isSuccess: Boolean
actual val isSuccess: Boolean
actual val isSuccess: Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val packed: Long
actual val packed: Long
actual val packed: Long
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
inline fun LongResult.getOrElse(fallback: (KompactDecodeError) -> Long): Long
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect fun getOrThrow(): Long
actual fun getOrThrow(): Long
actual fun getOrThrow(): Long
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
inline fun LongResult.map(transform: (Long) -> Long): LongResult
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/is-failure.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/is-failure.html new file mode 100644 index 0000000..ef93c2a --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/is-failure.html @@ -0,0 +1,153 @@ + + + + + isFailure + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

isFailure

+
+
+
+
expect val isFailure: Boolean
actual val isFailure: Boolean
actual val isFailure: Boolean
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/is-success.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/is-success.html new file mode 100644 index 0000000..92551dd --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/is-success.html @@ -0,0 +1,153 @@ + + + + + isSuccess + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

isSuccess

+
+
+
+
expect val isSuccess: Boolean
actual val isSuccess: Boolean
actual val isSuccess: Boolean
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/packed.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/packed.html new file mode 100644 index 0000000..aba7a1d --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-long-result/packed.html @@ -0,0 +1,153 @@ + + + + + packed + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

packed

+
+
+
+
expect val packed: Long
actual val packed: Long
actual val packed: Long
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/-companion/failure.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/-companion/failure.html new file mode 100644 index 0000000..c76aaf4 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/-companion/failure.html @@ -0,0 +1,153 @@ + + + + + failure + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

failure

+
+ +
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/-companion/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/-companion/index.html new file mode 100644 index 0000000..5c25cc0 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/-companion/index.html @@ -0,0 +1,196 @@ + + + + + Companion + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Companion

+
+
+
expect object Companion
actual object Companion
actual object Companion
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect fun success(startBit: Int, bitLength: Int): NestedRegionResult
actual fun success(startBit: Int, bitLength: Int): NestedRegionResult
actual fun success(startBit: Int, bitLength: Int): NestedRegionResult
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/-companion/success.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/-companion/success.html new file mode 100644 index 0000000..989d877 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/-companion/success.html @@ -0,0 +1,153 @@ + + + + + success + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

success

+
+
+
+
expect fun success(startBit: Int, bitLength: Int): NestedRegionResult
actual fun success(startBit: Int, bitLength: Int): NestedRegionResult
actual fun success(startBit: Int, bitLength: Int): NestedRegionResult
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/-nested-region-result.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/-nested-region-result.html new file mode 100644 index 0000000..de1f45b --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/-nested-region-result.html @@ -0,0 +1,153 @@ + + + + + NestedRegionResult + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

NestedRegionResult

+
+
+
+
expect constructor(packed: Long)
actual constructor(packed: Long)
actual constructor(packed: Long)
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/bit-length.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/bit-length.html new file mode 100644 index 0000000..2740db0 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/bit-length.html @@ -0,0 +1,153 @@ + + + + + bitLength + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

bitLength

+
+
+
+
expect val bitLength: Int
actual val bitLength: Int
actual val bitLength: Int
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/error.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/error.html new file mode 100644 index 0000000..2da8f1f --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/error.html @@ -0,0 +1,153 @@ + + + + + error + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

error

+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/get-or-throw.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/get-or-throw.html new file mode 100644 index 0000000..3f141bf --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/get-or-throw.html @@ -0,0 +1,153 @@ + + + + + getOrThrow + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

getOrThrow

+
+
+
+
expect fun getOrThrow(): NestedRegion
actual fun getOrThrow(): NestedRegion
actual fun getOrThrow(): NestedRegion
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/index.html new file mode 100644 index 0000000..dc9db1e --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/index.html @@ -0,0 +1,357 @@ + + + + + NestedRegionResult + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

NestedRegionResult

+
+
+
expect value class NestedRegionResult(val packed: Long)
actual value class NestedRegionResult(val packed: Long)
actual value class NestedRegionResult(val packed: Long)
+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect constructor(packed: Long)
actual constructor(packed: Long)
actual constructor(packed: Long)
+
+
+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect object Companion
actual object Companion
actual object Companion
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val bitLength: Int
actual val bitLength: Int
actual val bitLength: Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val isFailure: Boolean
actual val isFailure: Boolean
actual val isFailure: Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val isSuccess: Boolean
actual val isSuccess: Boolean
actual val isSuccess: Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val packed: Long
actual val packed: Long
actual val packed: Long
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val startBit: Int
actual val startBit: Int
actual val startBit: Int
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect fun getOrThrow(): NestedRegion
actual fun getOrThrow(): NestedRegion
actual fun getOrThrow(): NestedRegion
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/is-failure.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/is-failure.html new file mode 100644 index 0000000..97e97b4 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/is-failure.html @@ -0,0 +1,153 @@ + + + + + isFailure + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

isFailure

+
+
+
+
expect val isFailure: Boolean
actual val isFailure: Boolean
actual val isFailure: Boolean
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/is-success.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/is-success.html new file mode 100644 index 0000000..db33063 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/is-success.html @@ -0,0 +1,153 @@ + + + + + isSuccess + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

isSuccess

+
+
+
+
expect val isSuccess: Boolean
actual val isSuccess: Boolean
actual val isSuccess: Boolean
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/packed.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/packed.html new file mode 100644 index 0000000..b64fe1a --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/packed.html @@ -0,0 +1,153 @@ + + + + + packed + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

packed

+
+
+
+
expect val packed: Long
actual val packed: Long
actual val packed: Long
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/start-bit.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/start-bit.html new file mode 100644 index 0000000..13dfb41 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region-result/start-bit.html @@ -0,0 +1,153 @@ + + + + + startBit + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

startBit

+
+
+
+
expect val startBit: Int
actual val startBit: Int
actual val startBit: Int
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region/index.html new file mode 100644 index 0000000..28b971a --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-nested-region/index.html @@ -0,0 +1,135 @@ + + + + + NestedRegion + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

NestedRegion

+
typealias NestedRegion = Pair<Int, Int>
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-b-o-o-l.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-b-o-o-l.html new file mode 100644 index 0000000..3d54662 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-b-o-o-l.html @@ -0,0 +1,153 @@ + + + + + BOOL + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

BOOL

+
+
+
+
expect val BOOL: ScalarType
actual val BOOL: ScalarType
actual val BOOL: ScalarType
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-i-n-t_16.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-i-n-t_16.html new file mode 100644 index 0000000..d09c948 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-i-n-t_16.html @@ -0,0 +1,153 @@ + + + + + INT_16 + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

INT_16

+
+
+
+
expect val INT_16: ScalarType
actual val INT_16: ScalarType
actual val INT_16: ScalarType
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-i-n-t_32.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-i-n-t_32.html new file mode 100644 index 0000000..e25c79c --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-i-n-t_32.html @@ -0,0 +1,153 @@ + + + + + INT_32 + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

INT_32

+
+
+
+
expect val INT_32: ScalarType
actual val INT_32: ScalarType
actual val INT_32: ScalarType
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-i-n-t_64.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-i-n-t_64.html new file mode 100644 index 0000000..ddd5f2e --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-i-n-t_64.html @@ -0,0 +1,153 @@ + + + + + INT_64 + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

INT_64

+
+
+
+
expect val INT_64: ScalarType
actual val INT_64: ScalarType
actual val INT_64: ScalarType
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-i-n-t_8.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-i-n-t_8.html new file mode 100644 index 0000000..9369447 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-i-n-t_8.html @@ -0,0 +1,153 @@ + + + + + INT_8 + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

INT_8

+
+
+
+
expect val INT_8: ScalarType
actual val INT_8: ScalarType
actual val INT_8: ScalarType
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-u-i-n-t_16.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-u-i-n-t_16.html new file mode 100644 index 0000000..93be749 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-u-i-n-t_16.html @@ -0,0 +1,153 @@ + + + + + UINT_16 + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

UINT_16

+
+
+
+
expect val UINT_16: ScalarType
actual val UINT_16: ScalarType
actual val UINT_16: ScalarType
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-u-i-n-t_32.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-u-i-n-t_32.html new file mode 100644 index 0000000..1074686 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-u-i-n-t_32.html @@ -0,0 +1,153 @@ + + + + + UINT_32 + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

UINT_32

+
+
+
+
expect val UINT_32: ScalarType
actual val UINT_32: ScalarType
actual val UINT_32: ScalarType
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-u-i-n-t_64.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-u-i-n-t_64.html new file mode 100644 index 0000000..9de348f --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-u-i-n-t_64.html @@ -0,0 +1,153 @@ + + + + + UINT_64 + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

UINT_64

+
+
+
+
expect val UINT_64: ScalarType
actual val UINT_64: ScalarType
actual val UINT_64: ScalarType
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-u-i-n-t_8.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-u-i-n-t_8.html new file mode 100644 index 0000000..fe198f6 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-u-i-n-t_8.html @@ -0,0 +1,153 @@ + + + + + UINT_8 + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

UINT_8

+
+
+
+
expect val UINT_8: ScalarType
actual val UINT_8: ScalarType
actual val UINT_8: ScalarType
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/index.html new file mode 100644 index 0000000..f831b29 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/index.html @@ -0,0 +1,336 @@ + + + + + Companion + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Companion

+
+
+
expect object Companion
actual object Companion
actual object Companion
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val BOOL: ScalarType
actual val BOOL: ScalarType
actual val BOOL: ScalarType
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val INT_16: ScalarType
actual val INT_16: ScalarType
actual val INT_16: ScalarType
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val INT_32: ScalarType
actual val INT_32: ScalarType
actual val INT_32: ScalarType
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val INT_64: ScalarType
actual val INT_64: ScalarType
actual val INT_64: ScalarType
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val INT_8: ScalarType
actual val INT_8: ScalarType
actual val INT_8: ScalarType
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val UINT_16: ScalarType
actual val UINT_16: ScalarType
actual val UINT_16: ScalarType
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val UINT_32: ScalarType
actual val UINT_32: ScalarType
actual val UINT_32: ScalarType
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val UINT_64: ScalarType
actual val UINT_64: ScalarType
actual val UINT_64: ScalarType
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val UINT_8: ScalarType
actual val UINT_8: ScalarType
actual val UINT_8: ScalarType
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect fun of(bitWidth: Int, signed: Boolean): ScalarType
actual fun of(bitWidth: Int, signed: Boolean): ScalarType
actual fun of(bitWidth: Int, signed: Boolean): ScalarType
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/of.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/of.html new file mode 100644 index 0000000..055147d --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/of.html @@ -0,0 +1,153 @@ + + + + + of + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

of

+
+
+
+
expect fun of(bitWidth: Int, signed: Boolean): ScalarType
actual fun of(bitWidth: Int, signed: Boolean): ScalarType
actual fun of(bitWidth: Int, signed: Boolean): ScalarType
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-scalar-type.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-scalar-type.html new file mode 100644 index 0000000..c481b8f --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/-scalar-type.html @@ -0,0 +1,153 @@ + + + + + ScalarType + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

ScalarType

+
+
+
+
expect constructor(packed: Int)
actual constructor(packed: Int)
actual constructor(packed: Int)
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/bit-width.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/bit-width.html new file mode 100644 index 0000000..ac1ff53 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/bit-width.html @@ -0,0 +1,153 @@ + + + + + bitWidth + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

bitWidth

+
+
+
+
expect val bitWidth: Int
actual val bitWidth: Int
actual val bitWidth: Int
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/index.html new file mode 100644 index 0000000..5ec5722 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/index.html @@ -0,0 +1,255 @@ + + + + + ScalarType + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

ScalarType

+
+
+
expect value class ScalarType(val packed: Int)
actual value class ScalarType(val packed: Int)
actual value class ScalarType(val packed: Int)
+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect constructor(packed: Int)
actual constructor(packed: Int)
actual constructor(packed: Int)
+
+
+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect object Companion
actual object Companion
actual object Companion
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val bitWidth: Int
actual val bitWidth: Int
actual val bitWidth: Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val packed: Int
actual val packed: Int
actual val packed: Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val signed: Boolean
actual val signed: Boolean
actual val signed: Boolean
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/packed.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/packed.html new file mode 100644 index 0000000..6abc483 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/packed.html @@ -0,0 +1,153 @@ + + + + + packed + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

packed

+
+
+
+
expect val packed: Int
actual val packed: Int
actual val packed: Int
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/signed.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/signed.html new file mode 100644 index 0000000..1558fb2 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-scalar-type/signed.html @@ -0,0 +1,153 @@ + + + + + signed + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

signed

+
+
+
+
expect val signed: Boolean
actual val signed: Boolean
actual val signed: Boolean
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/-companion/failure.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/-companion/failure.html new file mode 100644 index 0000000..faf6134 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/-companion/failure.html @@ -0,0 +1,153 @@ + + + + + failure + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

failure

+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/-companion/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/-companion/index.html new file mode 100644 index 0000000..475c5f3 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/-companion/index.html @@ -0,0 +1,196 @@ + + + + + Companion + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Companion

+
+
+
expect object Companion
actual object Companion
actual object Companion
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect fun success(value: Short): ShortResult
actual fun success(value: Short): ShortResult
actual fun success(value: Short): ShortResult
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/-companion/success.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/-companion/success.html new file mode 100644 index 0000000..f0158e5 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/-companion/success.html @@ -0,0 +1,153 @@ + + + + + success + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

success

+
+
+
+
expect fun success(value: Short): ShortResult
actual fun success(value: Short): ShortResult
actual fun success(value: Short): ShortResult
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/-short-result.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/-short-result.html new file mode 100644 index 0000000..39e6e90 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/-short-result.html @@ -0,0 +1,153 @@ + + + + + ShortResult + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

ShortResult

+
+
+
+
expect constructor(packed: Long)
actual constructor(packed: Long)
actual constructor(packed: Long)
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/error.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/error.html new file mode 100644 index 0000000..6c07d00 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/error.html @@ -0,0 +1,153 @@ + + + + + error + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

error

+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/get-or-throw.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/get-or-throw.html new file mode 100644 index 0000000..6929c10 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/get-or-throw.html @@ -0,0 +1,153 @@ + + + + + getOrThrow + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

getOrThrow

+
+
+
+
expect fun getOrThrow(): Short
actual fun getOrThrow(): Short
actual fun getOrThrow(): Short
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/index.html new file mode 100644 index 0000000..20cc5b7 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/index.html @@ -0,0 +1,323 @@ + + + + + ShortResult + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

ShortResult

+
+
+
expect value class ShortResult(val packed: Long)
actual value class ShortResult(val packed: Long)
actual value class ShortResult(val packed: Long)
+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect constructor(packed: Long)
actual constructor(packed: Long)
actual constructor(packed: Long)
+
+
+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect object Companion
actual object Companion
actual object Companion
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val isFailure: Boolean
actual val isFailure: Boolean
actual val isFailure: Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val isSuccess: Boolean
actual val isSuccess: Boolean
actual val isSuccess: Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect val packed: Long
actual val packed: Long
actual val packed: Long
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
inline fun ShortResult.getOrElse(fallback: (KompactDecodeError) -> Short): Short
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect fun getOrThrow(): Short
actual fun getOrThrow(): Short
actual fun getOrThrow(): Short
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
inline fun ShortResult.map(transform: (Short) -> Short): ShortResult
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/is-failure.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/is-failure.html new file mode 100644 index 0000000..16d9191 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/is-failure.html @@ -0,0 +1,153 @@ + + + + + isFailure + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

isFailure

+
+
+
+
expect val isFailure: Boolean
actual val isFailure: Boolean
actual val isFailure: Boolean
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/is-success.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/is-success.html new file mode 100644 index 0000000..003f41d --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/is-success.html @@ -0,0 +1,153 @@ + + + + + isSuccess + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

isSuccess

+
+
+
+
expect val isSuccess: Boolean
actual val isSuccess: Boolean
actual val isSuccess: Boolean
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/packed.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/packed.html new file mode 100644 index 0000000..ea24f52 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/-short-result/packed.html @@ -0,0 +1,153 @@ + + + + + packed + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

packed

+
+
+
+
expect val packed: Long
actual val packed: Long
actual val packed: Long
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/get-or-else.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/get-or-else.html new file mode 100644 index 0000000..c28e54b --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/get-or-else.html @@ -0,0 +1,131 @@ + + + + + getOrElse + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

getOrElse

+
+ +
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/index.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/index.html new file mode 100644 index 0000000..25d0e82 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/index.html @@ -0,0 +1,436 @@ + + + + + ch.trancee.kompact.runtime + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect value class BooleanResult(val packed: Long)
actual value class BooleanResult(val packed: Long)
actual value class BooleanResult(val packed: Long)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect value class ByteResult(val packed: Long)
actual value class ByteResult(val packed: Long)
actual value class ByteResult(val packed: Long)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect value class DoubleResult(val packed: Long)
actual value class DoubleResult(val packed: Long)
actual value class DoubleResult(val packed: Long)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect value class FloatResult(val packed: Long)
actual value class FloatResult(val packed: Long)
actual value class FloatResult(val packed: Long)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect value class IntResult(val packed: Long)
actual value class IntResult(val packed: Long)
actual value class IntResult(val packed: Long)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
sealed class KompactDecodeError

Runtime decode error taxonomy (Ticket 06).

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Thrown by getOrThrow() / readOrThrow() on the failure path. The success hot-path never throws (Ticket 03 zero-alloc). Allocation of this exception is acceptable because it only occurs on an explicit recovery call.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Sequential, length-delimited framing (Ticket 05) and repeat/count handling.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Bit-stream primitives for Kompact.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Forward-only, growable write builder for Kompact wire output (Ticket 07).

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect value class LongResult(val packed: Long)

Checked 64-bit integer result (Ticket 08).

actual value class LongResult(val packed: Long)

Checked 64-bit integer result (Ticket 08).

actual value class LongResult(val packed: Long)

Checked 64-bit integer result (Ticket 08).

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
typealias NestedRegion = Pair<Int, Int>
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect value class NestedRegionResult(val packed: Long)
actual value class NestedRegionResult(val packed: Long)
actual value class NestedRegionResult(val packed: Long)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect value class ScalarType(val packed: Int)
actual value class ScalarType(val packed: Int)
actual value class ScalarType(val packed: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
expect value class ShortResult(val packed: Long)
actual value class ShortResult(val packed: Long)
actual value class ShortResult(val packed: Long)
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
inline fun BooleanResult.map(transform: (Boolean) -> Boolean): BooleanResult
inline fun ByteResult.map(transform: (Byte) -> Byte): ByteResult
inline fun DoubleResult.map(transform: (Double) -> Double): DoubleResult
inline fun FloatResult.map(transform: (Float) -> Float): FloatResult
inline fun IntResult.map(transform: (Int) -> Int): IntResult
inline fun LongResult.map(transform: (Long) -> Long): LongResult
inline fun ShortResult.map(transform: (Short) -> Short): ShortResult
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact.runtime/map.html b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/map.html new file mode 100644 index 0000000..1165958 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact.runtime/map.html @@ -0,0 +1,131 @@ + + + + + map + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

map

+
+
inline fun ByteResult.map(transform: (Byte) -> Byte): ByteResult
inline fun ShortResult.map(transform: (Short) -> Short): ShortResult
inline fun IntResult.map(transform: (Int) -> Int): IntResult
inline fun LongResult.map(transform: (Long) -> Long): LongResult
inline fun FloatResult.map(transform: (Float) -> Float): FloatResult
inline fun DoubleResult.map(transform: (Double) -> Double): DoubleResult
inline fun BooleanResult.map(transform: (Boolean) -> Boolean): BooleanResult
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/-boolean/index.html b/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/-boolean/index.html new file mode 100644 index 0000000..db35aee --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/-boolean/index.html @@ -0,0 +1,135 @@ + + + + + Boolean + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Boolean

+ +
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/-byte/index.html b/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/-byte/index.html new file mode 100644 index 0000000..b2006b6 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/-byte/index.html @@ -0,0 +1,135 @@ + + + + + Byte + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Byte

+
typealias Byte = ByteResult
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/-double/index.html b/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/-double/index.html new file mode 100644 index 0000000..a3652b2 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/-double/index.html @@ -0,0 +1,135 @@ + + + + + Double + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Double

+
typealias Double = DoubleResult
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/-float/index.html b/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/-float/index.html new file mode 100644 index 0000000..57317f9 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/-float/index.html @@ -0,0 +1,135 @@ + + + + + Float + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Float

+
typealias Float = FloatResult
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/-int/index.html b/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/-int/index.html new file mode 100644 index 0000000..10012c2 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/-int/index.html @@ -0,0 +1,135 @@ + + + + + Int + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Int

+
typealias Int = IntResult
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/-long/index.html b/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/-long/index.html new file mode 100644 index 0000000..8ab31df --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/-long/index.html @@ -0,0 +1,135 @@ + + + + + Long + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Long

+
typealias Long = LongResult
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/-short/index.html b/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/-short/index.html new file mode 100644 index 0000000..d64a2b4 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/-short/index.html @@ -0,0 +1,135 @@ + + + + + Short + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Short

+
typealias Short = ShortResult
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/index.html b/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/index.html new file mode 100644 index 0000000..5237de4 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/-result/index.html @@ -0,0 +1,245 @@ + + + + + Result + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Result

+
object Result
+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
typealias Byte = ByteResult
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
typealias Double = DoubleResult
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
typealias Float = FloatResult
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
typealias Int = IntResult
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
typealias Long = LongResult
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
typealias Short = ShortResult
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/index.html b/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/index.html new file mode 100644 index 0000000..95745e9 --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact/-kompact/index.html @@ -0,0 +1,155 @@ + + + + + Kompact + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Kompact

+
object Kompact

Top-level namespace for the Kompact runtime.

Result re-exports the seven specialized typed-result value classes under one import path — Kompact.Result.Int, Kompact.Result.Boolean, … — so a newcomer can import ch.trancee.kompact.Kompact instead of naming all seven result types. The seven top-level declarations stay; this is purely a one-stop re-export (additive; zero-alloc on the success path).

See KompactResult.kt for the packed-Long encodings of each result kind.

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
object Result
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/ch.trancee.kompact/index.html b/kompact/docs/api/kompact/ch.trancee.kompact/index.html new file mode 100644 index 0000000..bb2215f --- /dev/null +++ b/kompact/docs/api/kompact/ch.trancee.kompact/index.html @@ -0,0 +1,154 @@ + + + + + ch.trancee.kompact + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
object Kompact

Top-level namespace for the Kompact runtime.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/kompact/docs/api/kompact/package-list b/kompact/docs/api/kompact/package-list new file mode 100644 index 0000000..e7ed2d7 --- /dev/null +++ b/kompact/docs/api/kompact/package-list @@ -0,0 +1,202 @@ +$dokka.format:html-v1 +$dokka.linkExtension:html +$dokka.location:ch.trancee.kompact.annotations////PointingToDeclaration/kompact/ch.trancee.kompact.annotations/index.html +$dokka.location:ch.trancee.kompact.annotations/KompactField///PointingToDeclaration/kompact/ch.trancee.kompact.annotations/-kompact-field/index.html +$dokka.location:ch.trancee.kompact.annotations/KompactField/bitOffset/#/PointingToDeclaration/kompact/ch.trancee.kompact.annotations/-kompact-field/bit-offset.html +$dokka.location:ch.trancee.kompact.annotations/KompactField/bitWidth/#/PointingToDeclaration/kompact/ch.trancee.kompact.annotations/-kompact-field/bit-width.html +$dokka.location:ch.trancee.kompact.annotations/KompactField/defaultValue/#/PointingToDeclaration/kompact/ch.trancee.kompact.annotations/-kompact-field/default-value.html +$dokka.location:ch.trancee.kompact.annotations/KompactField/enumWidth/#/PointingToDeclaration/kompact/ch.trancee.kompact.annotations/-kompact-field/enum-width.html +$dokka.location:ch.trancee.kompact.annotations/KompactField/isNested/#/PointingToDeclaration/kompact/ch.trancee.kompact.annotations/-kompact-field/is-nested.html +$dokka.location:ch.trancee.kompact.annotations/KompactField/isVersionField/#/PointingToDeclaration/kompact/ch.trancee.kompact.annotations/-kompact-field/is-version-field.html +$dokka.location:ch.trancee.kompact.annotations/KompactField/lengthPrefixWidth/#/PointingToDeclaration/kompact/ch.trancee.kompact.annotations/-kompact-field/length-prefix-width.html +$dokka.location:ch.trancee.kompact.annotations/KompactField/repeatCountWidth/#/PointingToDeclaration/kompact/ch.trancee.kompact.annotations/-kompact-field/repeat-count-width.html +$dokka.location:ch.trancee.kompact.annotations/KompactField/signed/#/PointingToDeclaration/kompact/ch.trancee.kompact.annotations/-kompact-field/signed.html +$dokka.location:ch.trancee.kompact.annotations/KompactModel///PointingToDeclaration/kompact/ch.trancee.kompact.annotations/-kompact-model/index.html +$dokka.location:ch.trancee.kompact.annotations/KompactPreview///PointingToDeclaration/kompact/ch.trancee.kompact.annotations/-kompact-preview/index.html +$dokka.location:ch.trancee.kompact.generated////PointingToDeclaration/kompact/ch.trancee.kompact.generated/index.html +$dokka.location:ch.trancee.kompact.generated/VehicleTelemetry.Companion///PointingToDeclaration/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/-companion/index.html +$dokka.location:ch.trancee.kompact.generated/VehicleTelemetry.Companion/create/#kotlin.Int#kotlin.Int#kotlin.Boolean/PointingToDeclaration/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/-companion/create.html +$dokka.location:ch.trancee.kompact.generated/VehicleTelemetry///PointingToDeclaration/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/index.html +$dokka.location:ch.trancee.kompact.generated/VehicleTelemetry/VehicleTelemetry/#kotlin.ByteArray/PointingToDeclaration/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/-vehicle-telemetry.html +$dokka.location:ch.trancee.kompact.generated/VehicleTelemetry/batteryStatus/#/PointingToDeclaration/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/battery-status.html +$dokka.location:ch.trancee.kompact.generated/VehicleTelemetry/isMalfunctioning/#/PointingToDeclaration/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/is-malfunctioning.html +$dokka.location:ch.trancee.kompact.generated/VehicleTelemetry/raw/#/PointingToDeclaration/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/raw.html +$dokka.location:ch.trancee.kompact.generated/VehicleTelemetry/speed/#/PointingToDeclaration/kompact/ch.trancee.kompact.generated/-vehicle-telemetry/speed.html +$dokka.location:ch.trancee.kompact.runtime////PointingToDeclaration/kompact/ch.trancee.kompact.runtime/index.html +$dokka.location:ch.trancee.kompact.runtime//getOrElse/ch.trancee.kompact.runtime.BooleanResult#kotlin.Function1[ch.trancee.kompact.runtime.KompactDecodeError,kotlin.Boolean]/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/get-or-else.html +$dokka.location:ch.trancee.kompact.runtime//getOrElse/ch.trancee.kompact.runtime.ByteResult#kotlin.Function1[ch.trancee.kompact.runtime.KompactDecodeError,kotlin.Byte]/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/get-or-else.html +$dokka.location:ch.trancee.kompact.runtime//getOrElse/ch.trancee.kompact.runtime.DoubleResult#kotlin.Function1[ch.trancee.kompact.runtime.KompactDecodeError,kotlin.Double]/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/get-or-else.html +$dokka.location:ch.trancee.kompact.runtime//getOrElse/ch.trancee.kompact.runtime.FloatResult#kotlin.Function1[ch.trancee.kompact.runtime.KompactDecodeError,kotlin.Float]/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/get-or-else.html +$dokka.location:ch.trancee.kompact.runtime//getOrElse/ch.trancee.kompact.runtime.IntResult#kotlin.Function1[ch.trancee.kompact.runtime.KompactDecodeError,kotlin.Int]/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/get-or-else.html +$dokka.location:ch.trancee.kompact.runtime//getOrElse/ch.trancee.kompact.runtime.LongResult#kotlin.Function1[ch.trancee.kompact.runtime.KompactDecodeError,kotlin.Long]/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/get-or-else.html +$dokka.location:ch.trancee.kompact.runtime//getOrElse/ch.trancee.kompact.runtime.NestedRegionResult#kotlin.Function1[ch.trancee.kompact.runtime.KompactDecodeError,kotlin.Pair[kotlin.Int,kotlin.Int]]/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/get-or-else.html +$dokka.location:ch.trancee.kompact.runtime//getOrElse/ch.trancee.kompact.runtime.ShortResult#kotlin.Function1[ch.trancee.kompact.runtime.KompactDecodeError,kotlin.Short]/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/get-or-else.html +$dokka.location:ch.trancee.kompact.runtime//map/ch.trancee.kompact.runtime.BooleanResult#kotlin.Function1[kotlin.Boolean,kotlin.Boolean]/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/map.html +$dokka.location:ch.trancee.kompact.runtime//map/ch.trancee.kompact.runtime.ByteResult#kotlin.Function1[kotlin.Byte,kotlin.Byte]/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/map.html +$dokka.location:ch.trancee.kompact.runtime//map/ch.trancee.kompact.runtime.DoubleResult#kotlin.Function1[kotlin.Double,kotlin.Double]/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/map.html +$dokka.location:ch.trancee.kompact.runtime//map/ch.trancee.kompact.runtime.FloatResult#kotlin.Function1[kotlin.Float,kotlin.Float]/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/map.html +$dokka.location:ch.trancee.kompact.runtime//map/ch.trancee.kompact.runtime.IntResult#kotlin.Function1[kotlin.Int,kotlin.Int]/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/map.html +$dokka.location:ch.trancee.kompact.runtime//map/ch.trancee.kompact.runtime.LongResult#kotlin.Function1[kotlin.Long,kotlin.Long]/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/map.html +$dokka.location:ch.trancee.kompact.runtime//map/ch.trancee.kompact.runtime.NestedRegionResult#kotlin.Function1[kotlin.Pair[kotlin.Int,kotlin.Int],kotlin.Pair[kotlin.Int,kotlin.Int]]/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/map.html +$dokka.location:ch.trancee.kompact.runtime//map/ch.trancee.kompact.runtime.ShortResult#kotlin.Function1[kotlin.Short,kotlin.Short]/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/map.html +$dokka.location:ch.trancee.kompact.runtime/BooleanResult.Companion///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-boolean-result/-companion/index.html +$dokka.location:ch.trancee.kompact.runtime/BooleanResult.Companion/failure/#ch.trancee.kompact.runtime.KompactDecodeError/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-boolean-result/-companion/failure.html +$dokka.location:ch.trancee.kompact.runtime/BooleanResult.Companion/success/#kotlin.Boolean/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-boolean-result/-companion/success.html +$dokka.location:ch.trancee.kompact.runtime/BooleanResult///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-boolean-result/index.html +$dokka.location:ch.trancee.kompact.runtime/BooleanResult/BooleanResult/#kotlin.Long/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-boolean-result/-boolean-result.html +$dokka.location:ch.trancee.kompact.runtime/BooleanResult/error/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-boolean-result/error.html +$dokka.location:ch.trancee.kompact.runtime/BooleanResult/getOrThrow/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-boolean-result/get-or-throw.html +$dokka.location:ch.trancee.kompact.runtime/BooleanResult/isFailure/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-boolean-result/is-failure.html +$dokka.location:ch.trancee.kompact.runtime/BooleanResult/isSuccess/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-boolean-result/is-success.html +$dokka.location:ch.trancee.kompact.runtime/BooleanResult/packed/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-boolean-result/packed.html +$dokka.location:ch.trancee.kompact.runtime/ByteResult.Companion///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-byte-result/-companion/index.html +$dokka.location:ch.trancee.kompact.runtime/ByteResult.Companion/failure/#ch.trancee.kompact.runtime.KompactDecodeError/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-byte-result/-companion/failure.html +$dokka.location:ch.trancee.kompact.runtime/ByteResult.Companion/success/#kotlin.Byte/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-byte-result/-companion/success.html +$dokka.location:ch.trancee.kompact.runtime/ByteResult///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-byte-result/index.html +$dokka.location:ch.trancee.kompact.runtime/ByteResult/ByteResult/#kotlin.Long/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-byte-result/-byte-result.html +$dokka.location:ch.trancee.kompact.runtime/ByteResult/error/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-byte-result/error.html +$dokka.location:ch.trancee.kompact.runtime/ByteResult/getOrThrow/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-byte-result/get-or-throw.html +$dokka.location:ch.trancee.kompact.runtime/ByteResult/isFailure/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-byte-result/is-failure.html +$dokka.location:ch.trancee.kompact.runtime/ByteResult/isSuccess/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-byte-result/is-success.html +$dokka.location:ch.trancee.kompact.runtime/ByteResult/packed/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-byte-result/packed.html +$dokka.location:ch.trancee.kompact.runtime/DoubleResult.Companion///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-double-result/-companion/index.html +$dokka.location:ch.trancee.kompact.runtime/DoubleResult.Companion/failure/#ch.trancee.kompact.runtime.KompactDecodeError/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-double-result/-companion/failure.html +$dokka.location:ch.trancee.kompact.runtime/DoubleResult.Companion/success/#kotlin.Double/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-double-result/-companion/success.html +$dokka.location:ch.trancee.kompact.runtime/DoubleResult///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-double-result/index.html +$dokka.location:ch.trancee.kompact.runtime/DoubleResult/DoubleResult/#kotlin.Long/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-double-result/-double-result.html +$dokka.location:ch.trancee.kompact.runtime/DoubleResult/error/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-double-result/error.html +$dokka.location:ch.trancee.kompact.runtime/DoubleResult/getOrThrow/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-double-result/get-or-throw.html +$dokka.location:ch.trancee.kompact.runtime/DoubleResult/isFailure/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-double-result/is-failure.html +$dokka.location:ch.trancee.kompact.runtime/DoubleResult/isSuccess/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-double-result/is-success.html +$dokka.location:ch.trancee.kompact.runtime/DoubleResult/packed/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-double-result/packed.html +$dokka.location:ch.trancee.kompact.runtime/FloatResult.Companion///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-float-result/-companion/index.html +$dokka.location:ch.trancee.kompact.runtime/FloatResult.Companion/failure/#ch.trancee.kompact.runtime.KompactDecodeError/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-float-result/-companion/failure.html +$dokka.location:ch.trancee.kompact.runtime/FloatResult.Companion/success/#kotlin.Float/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-float-result/-companion/success.html +$dokka.location:ch.trancee.kompact.runtime/FloatResult///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-float-result/index.html +$dokka.location:ch.trancee.kompact.runtime/FloatResult/FloatResult/#kotlin.Long/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-float-result/-float-result.html +$dokka.location:ch.trancee.kompact.runtime/FloatResult/error/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-float-result/error.html +$dokka.location:ch.trancee.kompact.runtime/FloatResult/getOrThrow/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-float-result/get-or-throw.html +$dokka.location:ch.trancee.kompact.runtime/FloatResult/isFailure/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-float-result/is-failure.html +$dokka.location:ch.trancee.kompact.runtime/FloatResult/isSuccess/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-float-result/is-success.html +$dokka.location:ch.trancee.kompact.runtime/FloatResult/packed/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-float-result/packed.html +$dokka.location:ch.trancee.kompact.runtime/IntResult.Companion///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-int-result/-companion/index.html +$dokka.location:ch.trancee.kompact.runtime/IntResult.Companion/failure/#ch.trancee.kompact.runtime.KompactDecodeError/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-int-result/-companion/failure.html +$dokka.location:ch.trancee.kompact.runtime/IntResult.Companion/success/#kotlin.Int/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-int-result/-companion/success.html +$dokka.location:ch.trancee.kompact.runtime/IntResult///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-int-result/index.html +$dokka.location:ch.trancee.kompact.runtime/IntResult/IntResult/#kotlin.Long/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-int-result/-int-result.html +$dokka.location:ch.trancee.kompact.runtime/IntResult/error/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-int-result/error.html +$dokka.location:ch.trancee.kompact.runtime/IntResult/getOrThrow/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-int-result/get-or-throw.html +$dokka.location:ch.trancee.kompact.runtime/IntResult/isFailure/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-int-result/is-failure.html +$dokka.location:ch.trancee.kompact.runtime/IntResult/isSuccess/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-int-result/is-success.html +$dokka.location:ch.trancee.kompact.runtime/IntResult/packed/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-int-result/packed.html +$dokka.location:ch.trancee.kompact.runtime/KompactDecodeError.BadLengthPrefix///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-bad-length-prefix/index.html +$dokka.location:ch.trancee.kompact.runtime/KompactDecodeError.BoundsError///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-bounds-error/index.html +$dokka.location:ch.trancee.kompact.runtime/KompactDecodeError.TruncatedNested///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-truncated-nested/index.html +$dokka.location:ch.trancee.kompact.runtime/KompactDecodeError.UnknownEnumCode///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-unknown-enum-code/index.html +$dokka.location:ch.trancee.kompact.runtime/KompactDecodeError.UnknownEnumCode/UnknownEnumCode/#kotlin.Int/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-unknown-enum-code/-unknown-enum-code.html +$dokka.location:ch.trancee.kompact.runtime/KompactDecodeError.UnknownEnumCode/rawCode/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/-unknown-enum-code/raw-code.html +$dokka.location:ch.trancee.kompact.runtime/KompactDecodeError///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-decode-error/index.html +$dokka.location:ch.trancee.kompact.runtime/KompactDecodeException///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-decode-exception/index.html +$dokka.location:ch.trancee.kompact.runtime/KompactDecodeException/KompactDecodeException/#ch.trancee.kompact.runtime.KompactDecodeError/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-decode-exception/-kompact-decode-exception.html +$dokka.location:ch.trancee.kompact.runtime/KompactDecodeException/error/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-decode-exception/error.html +$dokka.location:ch.trancee.kompact.runtime/KompactFraming///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-framing/index.html +$dokka.location:ch.trancee.kompact.runtime/KompactFraming/INVALID_LENGTH_PREFIX/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-framing/-i-n-v-a-l-i-d_-l-e-n-g-t-h_-p-r-e-f-i-x.html +$dokka.location:ch.trancee.kompact.runtime/KompactFraming/VALID_PREFIX_WIDTHS/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-framing/-v-a-l-i-d_-p-r-e-f-i-x_-w-i-d-t-h-s.html +$dokka.location:ch.trancee.kompact.runtime/KompactFraming/readLengthPrefix/#kotlin.ByteArray#kotlin.Int#kotlin.Int/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-framing/read-length-prefix.html +$dokka.location:ch.trancee.kompact.runtime/KompactFraming/readLengthPrefixOrThrow/#kotlin.ByteArray#kotlin.Int#kotlin.Int/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-framing/read-length-prefix-or-throw.html +$dokka.location:ch.trancee.kompact.runtime/KompactFraming/readNested/#kotlin.ByteArray#kotlin.Int#kotlin.Int/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-framing/read-nested.html +$dokka.location:ch.trancee.kompact.runtime/KompactFraming/readNestedOrThrow/#kotlin.ByteArray#kotlin.Int#kotlin.Int/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-framing/read-nested-or-throw.html +$dokka.location:ch.trancee.kompact.runtime/KompactFraming/writeLengthPrefix/#kotlin.ByteArray#kotlin.Int#kotlin.Int#kotlin.Int/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-framing/write-length-prefix.html +$dokka.location:ch.trancee.kompact.runtime/KompactRuntime///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-runtime/index.html +$dokka.location:ch.trancee.kompact.runtime/KompactRuntime/fits/#kotlin.ByteArray#kotlin.Int#kotlin.Int/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-runtime/fits.html +$dokka.location:ch.trancee.kompact.runtime/KompactRuntime/readBits/#kotlin.ByteArray#kotlin.Int#kotlin.Int/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-bits.html +$dokka.location:ch.trancee.kompact.runtime/KompactRuntime/readBitsBoolean/#kotlin.ByteArray#kotlin.Int/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-bits-boolean.html +$dokka.location:ch.trancee.kompact.runtime/KompactRuntime/readBitsLong/#kotlin.ByteArray#kotlin.Int#kotlin.Int/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-bits-long.html +$dokka.location:ch.trancee.kompact.runtime/KompactRuntime/readBool/#kotlin.ByteArray#kotlin.Int/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-bool.html +$dokka.location:ch.trancee.kompact.runtime/KompactRuntime/readBoolOrThrow/#kotlin.ByteArray#kotlin.Int/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-bool-or-throw.html +$dokka.location:ch.trancee.kompact.runtime/KompactRuntime/readDouble/#kotlin.ByteArray#kotlin.Int/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-double.html +$dokka.location:ch.trancee.kompact.runtime/KompactRuntime/readDoubleOrThrow/#kotlin.ByteArray#kotlin.Int/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-double-or-throw.html +$dokka.location:ch.trancee.kompact.runtime/KompactRuntime/readFloat/#kotlin.ByteArray#kotlin.Int/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-float.html +$dokka.location:ch.trancee.kompact.runtime/KompactRuntime/readFloatOrThrow/#kotlin.ByteArray#kotlin.Int/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-float-or-throw.html +$dokka.location:ch.trancee.kompact.runtime/KompactRuntime/readScalar/#kotlin.ByteArray#kotlin.Int#ch.trancee.kompact.runtime.ScalarType/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-scalar.html +$dokka.location:ch.trancee.kompact.runtime/KompactRuntime/readScalarAsLong/#kotlin.ByteArray#kotlin.Int#ch.trancee.kompact.runtime.ScalarType/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-scalar-as-long.html +$dokka.location:ch.trancee.kompact.runtime/KompactRuntime/readScalarAsLongOrThrow/#kotlin.ByteArray#kotlin.Int#ch.trancee.kompact.runtime.ScalarType/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-scalar-as-long-or-throw.html +$dokka.location:ch.trancee.kompact.runtime/KompactRuntime/readScalarOrThrow/#kotlin.ByteArray#kotlin.Int#ch.trancee.kompact.runtime.ScalarType/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-runtime/read-scalar-or-throw.html +$dokka.location:ch.trancee.kompact.runtime/KompactRuntime/writeBits/#kotlin.ByteArray#kotlin.Int#kotlin.Int#kotlin.Int/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-runtime/write-bits.html +$dokka.location:ch.trancee.kompact.runtime/KompactRuntime/writeBitsBoolean/#kotlin.ByteArray#kotlin.Int#kotlin.Boolean/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-runtime/write-bits-boolean.html +$dokka.location:ch.trancee.kompact.runtime/KompactRuntime/writeBitsLong/#kotlin.ByteArray#kotlin.Int#kotlin.Int#kotlin.Long/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-runtime/write-bits-long.html +$dokka.location:ch.trancee.kompact.runtime/KompactWriter.Companion///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-writer/-companion/index.html +$dokka.location:ch.trancee.kompact.runtime/KompactWriter///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-writer/index.html +$dokka.location:ch.trancee.kompact.runtime/KompactWriter/KompactWriter/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-writer/-kompact-writer.html +$dokka.location:ch.trancee.kompact.runtime/KompactWriter/build/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-writer/build.html +$dokka.location:ch.trancee.kompact.runtime/KompactWriter/writeBits/#kotlin.Int#kotlin.Int/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-bits.html +$dokka.location:ch.trancee.kompact.runtime/KompactWriter/writeBitsLong/#kotlin.Int#kotlin.Long/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-bits-long.html +$dokka.location:ch.trancee.kompact.runtime/KompactWriter/writeBlob/#kotlin.Int#kotlin.ByteArray/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-blob.html +$dokka.location:ch.trancee.kompact.runtime/KompactWriter/writeBool/#kotlin.Boolean/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-bool.html +$dokka.location:ch.trancee.kompact.runtime/KompactWriter/writeNested/#kotlin.Int#kotlin.Function1[ch.trancee.kompact.runtime.KompactWriter,kotlin.Unit]/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-nested.html +$dokka.location:ch.trancee.kompact.runtime/KompactWriter/writeRepeated/#kotlin.Int#kotlin.Int#kotlin.Function1[ch.trancee.kompact.runtime.KompactWriter,kotlin.Unit]/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-repeated.html +$dokka.location:ch.trancee.kompact.runtime/KompactWriter/writeScalar/#ch.trancee.kompact.runtime.ScalarType#kotlin.Long/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-scalar.html +$dokka.location:ch.trancee.kompact.runtime/KompactWriter/writeString/#kotlin.Int#kotlin.String/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-kompact-writer/write-string.html +$dokka.location:ch.trancee.kompact.runtime/LongResult.Companion///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-long-result/-companion/index.html +$dokka.location:ch.trancee.kompact.runtime/LongResult.Companion/failure/#ch.trancee.kompact.runtime.KompactDecodeError/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-long-result/-companion/failure.html +$dokka.location:ch.trancee.kompact.runtime/LongResult.Companion/success/#kotlin.Long/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-long-result/-companion/success.html +$dokka.location:ch.trancee.kompact.runtime/LongResult///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-long-result/index.html +$dokka.location:ch.trancee.kompact.runtime/LongResult/LongResult/#kotlin.Long/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-long-result/-long-result.html +$dokka.location:ch.trancee.kompact.runtime/LongResult/error/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-long-result/error.html +$dokka.location:ch.trancee.kompact.runtime/LongResult/getOrThrow/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-long-result/get-or-throw.html +$dokka.location:ch.trancee.kompact.runtime/LongResult/isFailure/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-long-result/is-failure.html +$dokka.location:ch.trancee.kompact.runtime/LongResult/isSuccess/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-long-result/is-success.html +$dokka.location:ch.trancee.kompact.runtime/LongResult/packed/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-long-result/packed.html +$dokka.location:ch.trancee.kompact.runtime/NestedRegion///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-nested-region/index.html +$dokka.location:ch.trancee.kompact.runtime/NestedRegionResult.Companion///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-nested-region-result/-companion/index.html +$dokka.location:ch.trancee.kompact.runtime/NestedRegionResult.Companion/failure/#ch.trancee.kompact.runtime.KompactDecodeError/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-nested-region-result/-companion/failure.html +$dokka.location:ch.trancee.kompact.runtime/NestedRegionResult.Companion/success/#kotlin.Int#kotlin.Int/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-nested-region-result/-companion/success.html +$dokka.location:ch.trancee.kompact.runtime/NestedRegionResult///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-nested-region-result/index.html +$dokka.location:ch.trancee.kompact.runtime/NestedRegionResult/NestedRegionResult/#kotlin.Long/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-nested-region-result/-nested-region-result.html +$dokka.location:ch.trancee.kompact.runtime/NestedRegionResult/bitLength/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-nested-region-result/bit-length.html +$dokka.location:ch.trancee.kompact.runtime/NestedRegionResult/error/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-nested-region-result/error.html +$dokka.location:ch.trancee.kompact.runtime/NestedRegionResult/getOrThrow/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-nested-region-result/get-or-throw.html +$dokka.location:ch.trancee.kompact.runtime/NestedRegionResult/isFailure/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-nested-region-result/is-failure.html +$dokka.location:ch.trancee.kompact.runtime/NestedRegionResult/isSuccess/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-nested-region-result/is-success.html +$dokka.location:ch.trancee.kompact.runtime/NestedRegionResult/packed/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-nested-region-result/packed.html +$dokka.location:ch.trancee.kompact.runtime/NestedRegionResult/startBit/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-nested-region-result/start-bit.html +$dokka.location:ch.trancee.kompact.runtime/ScalarType.Companion///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/index.html +$dokka.location:ch.trancee.kompact.runtime/ScalarType.Companion/BOOL/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-b-o-o-l.html +$dokka.location:ch.trancee.kompact.runtime/ScalarType.Companion/INT_16/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-i-n-t_16.html +$dokka.location:ch.trancee.kompact.runtime/ScalarType.Companion/INT_32/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-i-n-t_32.html +$dokka.location:ch.trancee.kompact.runtime/ScalarType.Companion/INT_64/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-i-n-t_64.html +$dokka.location:ch.trancee.kompact.runtime/ScalarType.Companion/INT_8/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-i-n-t_8.html +$dokka.location:ch.trancee.kompact.runtime/ScalarType.Companion/UINT_16/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-u-i-n-t_16.html +$dokka.location:ch.trancee.kompact.runtime/ScalarType.Companion/UINT_32/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-u-i-n-t_32.html +$dokka.location:ch.trancee.kompact.runtime/ScalarType.Companion/UINT_64/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-u-i-n-t_64.html +$dokka.location:ch.trancee.kompact.runtime/ScalarType.Companion/UINT_8/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/-u-i-n-t_8.html +$dokka.location:ch.trancee.kompact.runtime/ScalarType.Companion/of/#kotlin.Int#kotlin.Boolean/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-scalar-type/-companion/of.html +$dokka.location:ch.trancee.kompact.runtime/ScalarType///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-scalar-type/index.html +$dokka.location:ch.trancee.kompact.runtime/ScalarType/ScalarType/#kotlin.Int/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-scalar-type/-scalar-type.html +$dokka.location:ch.trancee.kompact.runtime/ScalarType/bitWidth/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-scalar-type/bit-width.html +$dokka.location:ch.trancee.kompact.runtime/ScalarType/packed/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-scalar-type/packed.html +$dokka.location:ch.trancee.kompact.runtime/ScalarType/signed/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-scalar-type/signed.html +$dokka.location:ch.trancee.kompact.runtime/ShortResult.Companion///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-short-result/-companion/index.html +$dokka.location:ch.trancee.kompact.runtime/ShortResult.Companion/failure/#ch.trancee.kompact.runtime.KompactDecodeError/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-short-result/-companion/failure.html +$dokka.location:ch.trancee.kompact.runtime/ShortResult.Companion/success/#kotlin.Short/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-short-result/-companion/success.html +$dokka.location:ch.trancee.kompact.runtime/ShortResult///PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-short-result/index.html +$dokka.location:ch.trancee.kompact.runtime/ShortResult/ShortResult/#kotlin.Long/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-short-result/-short-result.html +$dokka.location:ch.trancee.kompact.runtime/ShortResult/error/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-short-result/error.html +$dokka.location:ch.trancee.kompact.runtime/ShortResult/getOrThrow/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-short-result/get-or-throw.html +$dokka.location:ch.trancee.kompact.runtime/ShortResult/isFailure/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-short-result/is-failure.html +$dokka.location:ch.trancee.kompact.runtime/ShortResult/isSuccess/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-short-result/is-success.html +$dokka.location:ch.trancee.kompact.runtime/ShortResult/packed/#/PointingToDeclaration/kompact/ch.trancee.kompact.runtime/-short-result/packed.html +$dokka.location:ch.trancee.kompact////PointingToDeclaration/kompact/ch.trancee.kompact/index.html +$dokka.location:ch.trancee.kompact/Kompact.Result.Boolean///PointingToDeclaration/kompact/ch.trancee.kompact/-kompact/-result/-boolean/index.html +$dokka.location:ch.trancee.kompact/Kompact.Result.Byte///PointingToDeclaration/kompact/ch.trancee.kompact/-kompact/-result/-byte/index.html +$dokka.location:ch.trancee.kompact/Kompact.Result.Double///PointingToDeclaration/kompact/ch.trancee.kompact/-kompact/-result/-double/index.html +$dokka.location:ch.trancee.kompact/Kompact.Result.Float///PointingToDeclaration/kompact/ch.trancee.kompact/-kompact/-result/-float/index.html +$dokka.location:ch.trancee.kompact/Kompact.Result.Int///PointingToDeclaration/kompact/ch.trancee.kompact/-kompact/-result/-int/index.html +$dokka.location:ch.trancee.kompact/Kompact.Result.Long///PointingToDeclaration/kompact/ch.trancee.kompact/-kompact/-result/-long/index.html +$dokka.location:ch.trancee.kompact/Kompact.Result.Short///PointingToDeclaration/kompact/ch.trancee.kompact/-kompact/-result/-short/index.html +$dokka.location:ch.trancee.kompact/Kompact.Result///PointingToDeclaration/kompact/ch.trancee.kompact/-kompact/-result/index.html +$dokka.location:ch.trancee.kompact/Kompact///PointingToDeclaration/kompact/ch.trancee.kompact/-kompact/index.html +ch.trancee.kompact +ch.trancee.kompact.annotations +ch.trancee.kompact.generated +ch.trancee.kompact.runtime diff --git a/kompact/docs/api/navigation.html b/kompact/docs/api/navigation.html new file mode 100644 index 0000000..5259623 --- /dev/null +++ b/kompact/docs/api/navigation.html @@ -0,0 +1,150 @@ + diff --git a/kompact/docs/api/scripts/main.js b/kompact/docs/api/scripts/main.js new file mode 100644 index 0000000..a38279f --- /dev/null +++ b/kompact/docs/api/scripts/main.js @@ -0,0 +1,45 @@ +(()=>{var e={1817:e=>{e.exports=''},4811:e=>{e.exports=''},5742:e=>{e.exports=''},7112:e=>{e.exports=''},8420:e=>{e.exports=''},7004:e=>{e.exports=''},7222:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>s});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(5280),c=a()(o());c.i(l.A),c.push([e.id,'.avatar_d716 {\n display: inline-block;\n -o-object-fit: cover;\n object-fit: cover;\n -o-object-position: center;\n object-position: center;\n\n /* This is a "graceful degradation" fallback, while the real value is controlled by JS */\n\n border-radius: var(--ring-border-radius);\n}\n\n.subavatar_b10d {\n position: absolute;\n top: 15px;\n left: 27px;\n\n border: 1px var(--ring-content-background-color) solid;\n}\n\n.empty_a151 {\n display: inline-block;\n\n box-sizing: border-box;\n\n border: 1px solid var(--ring-borders-color);\n}\n',"",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/avatar/avatar.css"],names:[],mappings:"AAEA;EACE,qBAAqB;EACrB,oBAAiB;KAAjB,iBAAiB;EACjB,0BAAuB;KAAvB,uBAAuB;;EAEvB,wFAAwF;;EAExF,wCAAwC;AAC1C;;AAEA;EACE,kBAAkB;EAClB,SAAS;EACT,UAAU;;EAEV,sDAAsD;AACxD;;AAEA;EACE,qBAAqB;;EAErB,sBAAsB;;EAEtB,2CAA2C;AAC7C",sourcesContent:['@import "../global/variables.css";\n\n.avatar {\n display: inline-block;\n object-fit: cover;\n object-position: center;\n\n /* This is a "graceful degradation" fallback, while the real value is controlled by JS */\n\n border-radius: var(--ring-border-radius);\n}\n\n.subavatar {\n position: absolute;\n top: 15px;\n left: 27px;\n\n border: 1px var(--ring-content-background-color) solid;\n}\n\n.empty {\n display: inline-block;\n\n box-sizing: border-box;\n\n border: 1px solid var(--ring-borders-color);\n}\n'],sourceRoot:""}]),c.locals={avatar:"avatar_d716",subavatar:"subavatar_b10d",empty:"empty_a151"};const s=c},9892:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>u});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9106),c=t(5280),s=a()(o());s.i(c.A),s.i(l.default,"",!0),s.push([e.id,'.heightS_b28d {\n --ring-button-height: 24px;\n --ring-button-font-size: var(--ring-font-size-smaller);\n}\n\n.heightM_dfd3 {\n --ring-button-height: 28px;\n --ring-button-font-size: var(--ring-font-size);\n}\n\n.heightL_a4d3 {\n --ring-button-height: 32px;\n --ring-button-font-size: var(--ring-font-size);\n}\n\n.button_aba4 {\n position: relative;\n\n display: inline-block;\n\n box-sizing: border-box;\n height: var(--ring-button-height);\n margin: 0;\n padding: 0 16px;\n\n cursor: pointer;\n transition: color var(--ring-ease), background-color var(--ring-ease), box-shadow var(--ring-ease);\n text-decoration: none;\n\n color: var(--ring-text-color);\n\n border: 0;\n border-radius: var(--ring-border-radius);\n outline: 0;\n background-color: var(--ring-content-background-color);\n box-shadow: inset 0 0 0 1px var(--ring-borders-color);\n\n font-family: var(--ring-font-family);\n font-size: var(--ring-button-font-size);\n\n line-height: var(--ring-button-height);\n}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.button_aba4:hover {\n transition: none;\n\n box-shadow: inset 0 0 0 1px var(--ring-border-hover-color);\n }}\n\n.button_aba4:active {\n transition: none;\n\n background-color: var(--ring-selected-background-color);\n box-shadow: inset 0 0 0 1px var(--ring-border-hover-color);\n }\n\n.button_aba4:focus-visible {\n transition: none;\n\n box-shadow: inset 0 0 0 1px var(--ring-border-hover-color), 0 0 0 1px var(--ring-border-hover-color);\n }\n\n.button_aba4.active_bbe6 {\n transition: none;\n\n background-color: var(--ring-hover-background-color);\n box-shadow: inset 0 0 0 1px var(--ring-main-color);\n }\n\n.button_aba4.active_bbe6:focus-visible {\n box-shadow: inset 0 0 0 2px var(--ring-main-color), 0 0 0 1px var(--ring-border-hover-color);\n }\n\n.button_aba4[disabled] {\n pointer-events: none;\n\n background-color: var(--ring-disabled-background-color);\n box-shadow: inset 0 0 0 1px var(--ring-border-disabled-color);\n }\n\n.button_aba4.active_bbe6[disabled] {\n background-color: var(--ring-disabled-selected-background-color);\n box-shadow: inset 0 0 0 1px var(--ring-border-selected-disabled-color);\n }\n\n.button_aba4[disabled],\n .button_aba4.withIcon_ef77[disabled] {\n color: var(--ring-disabled-color);\n }\n\n.button_aba4[disabled] .icon_e878 {\n color: var(--ring-icon-disabled-color);\n }\n\n.button_aba4::-moz-focus-inner {\n padding: 0;\n\n border: 0;\n outline: 0;\n }\n\n.withIcon_ef77 {\n color: var(--ring-secondary-color);\n}\n\n.primary_ddae {\n color: var(--ring-white-text-color);\n background-color: var(--ring-main-color);\n box-shadow: none;\n}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.primary_ddae:hover {\n transition: none;\n\n background-color: var(--ring-main-hover-color);\n box-shadow: none;\n }}\n\n.primary_ddae.withIcon_ef77,\n .primary_ddae.withIcon_ef77:active,\n .primary_ddae.withIcon_ef77.active_bbe6 {\n color: var(--ring-action-link-color);\n }\n\n.primary_ddae:focus-visible,\n .primary_ddae:active,\n .primary_ddae.active_bbe6 {\n background-color: var(--ring-button-primary-background-color);\n }\n\n.primary_ddae:active,\n .primary_ddae.active_bbe6 {\n box-shadow: inset 0 0 0 1px var(--ring-button-primary-border-color);\n }\n\n.primary_ddae[disabled] {\n background-color: var(--ring-disabled-background-color);\n box-shadow: inset 0 0 0 1px var(--ring-border-disabled-color);\n }\n\n.primary_ddae.loader_cbfc[disabled] {\n color: var(--ring-white-text-color);\n }\n\n.primary_ddae .loaderBackground_d9f5 {\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n border-radius: var(--ring-border-radius);\n }\n\n.primary_ddae .loaderBackground_d9f5::before {\n background-image:\n linear-gradient(\n to right,\n var(--ring-main-color),\n var(--ring-button-loader-background) 40%,\n var(--ring-main-color) 80%\n );\n }\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.danger_bcea:hover {\n transition: none;\n }}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.danger_bcea:hover {\n box-shadow: inset 0 0 0 1px var(--ring-button-danger-hover-color);\n }}\n\n.danger_bcea,\n .danger_bcea.withIcon_ef77,\n .danger_bcea.withIcon_ef77:active,\n .danger_bcea.withIcon_ef77.active_bbe6,\n .danger_bcea.text_fc2a,\n .danger_bcea.text_fc2a:active,\n .danger_bcea.text_fc2a.active_bbe6 {\n color: var(--ring-error-color);\n }\n\n.danger_bcea:active,\n .danger_bcea.active_bbe6 {\n background-color: var(--ring-button-danger-active-color);\n }\n\n.danger_bcea:active,\n .danger_bcea.active_bbe6,\n .danger_bcea:focus-visible {\n box-shadow: inset 0 0 0 1px var(--ring-button-danger-hover-color);\n }\n\n.danger_bcea:focus-visible {\n transition: none;\n }\n\n.text_fc2a.text_fc2a,\n.withIcon_ef77.withIcon_ef77 {\n background-color: transparent;\n box-shadow: none;\n}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.text_fc2a.text_fc2a:hover, .withIcon_ef77.withIcon_ef77:hover {\n transition: none;\n }}\n\n.text_fc2a.text_fc2a:active,\n .withIcon_ef77.withIcon_ef77:active,\n .text_fc2a.text_fc2a.active_bbe6,\n .withIcon_ef77.withIcon_ef77.active_bbe6 {\n background-color: transparent;\n box-shadow: none;\n }\n\n.text_fc2a.text_fc2a:focus-visible, .withIcon_ef77.withIcon_ef77:focus-visible {\n box-shadow: inset 0 0 0 2px var(--ring-border-hover-color);\n }\n\n.loader_cbfc.text_fc2a > .content_b2b8 {\n animation-name: text-loading_d1b4;\n animation-duration: 1200ms;\n animation-iteration-count: infinite;\n}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.text_fc2a.text_fc2a:hover {\n background-color: transparent;\n box-shadow: none;\n}}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.withIcon_ef77:hover:not(:focus-visible) {\n background-color: transparent;\n box-shadow: none;\n}}\n\n.text_fc2a {\n color: var(--ring-action-link-color);\n}\n\n.inline_b4a2 {\n display: inline-block;\n\n margin: 0;\n padding: 0;\n\n font-size: var(--ring-font-size);\n}\n\n.withIcon_ef77 {\n padding: 0 8px;\n}\n\n.text_fc2a:active,\n .text_fc2a.active_bbe6 {\n color: var(--ring-link-hover-color);\n }\n\n.withIcon_ef77:active,\n .withIcon_ef77.active_bbe6 {\n color: var(--ring-action-link-color);\n }\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.withIcon_ef77:hover {\n color: var(--ring-link-hover-color);\n}}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.text_fc2a:hover {\n color: var(--ring-link-hover-color);\n}}\n\n.icon_e878 {\n color: inherit;\n\n line-height: normal;\n}\n\n.icon_e878:not(:last-child) {\n margin-right: 4px;\n }\n\n.withNormalIcon_aaca .icon_e878 {\n transition: color var(--ring-ease);\n\n color: var(--ring-icon-color);\n}\n\n.withNormalIcon_aaca:active,\n.withNormalIcon_aaca.active_bbe6 {\n color: var(--ring-main-color);\n}\n\n.withNormalIcon_aaca:active .icon_e878, .withNormalIcon_aaca.active_bbe6 .icon_e878 {\n transition: none;\n\n color: inherit;\n }\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.withNormalIcon_aaca:hover .icon_e878,\n.withDangerIcon_e3ca:hover .icon_e878 {\n transition: none;\n\n color: inherit;\n}}\n\n.withDangerIcon_e3ca .icon_e878,\n.withDangerIcon_e3ca:active .icon_e878 {\n color: var(--ring-icon-error-color);\n}\n\n.loader_cbfc {\n position: relative;\n z-index: 0;\n\n pointer-events: none;\n\n background-color: transparent;\n}\n\n.loaderBackground_d9f5 {\n position: absolute;\n z-index: -1;\n top: 1px;\n right: 1px;\n bottom: 1px;\n left: 1px;\n\n overflow: hidden;\n\n border-radius: var(--ring-border-radius-small);\n}\n\n.loaderBackground_d9f5::before {\n display: block;\n\n width: calc(100% + 64px);\n height: 100%;\n\n content: "";\n animation: progress_ed8f 1s linear infinite;\n\n background-image:\n linear-gradient(\n to right,\n var(--ring-content-background-color),\n var(--ring-selected-background-color) 40%,\n var(--ring-content-background-color) 80%\n );\n\n background-repeat: repeat;\n background-size: 64px;\n }\n\n.delayed_d562 .content_b2b8::after {\n content: "…";\n}\n\n.short_a07a {\n width: 32px;\n padding: 0;\n}\n\n.dropdownIcon_e982 {\n margin-right: -2px;\n\n margin-left: 2px;\n\n transition: color var(--ring-ease);\n\n color: var(--ring-icon-secondary-color);\n\n line-height: normal;\n}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.button_aba4:hover .dropdownIcon_e982 {\n transition: none;\n\n color: var(--ring-main-color);\n}}\n\n@keyframes progress_ed8f {\n from {\n transform: translateX(-64px);\n }\n\n to {\n transform: translateX(0);\n }\n}\n\n@keyframes text-loading_d1b4 {\n 50% {\n opacity: 0.5;\n }\n}\n',"",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/button/button.css",""],names:[],mappings:"AAOA;EACE,0BAAoC;EACpC,sDAAsD;AACxD;;AAEA;EACE,0BAAsC;EACtC,8CAA8C;AAChD;;AAEA;EACE,0BAAoC;EACpC,8CAA8C;AAChD;;AAEA;EACE,kBAAkB;;EAElB,qBAAqB;;EAErB,sBAAsB;EACtB,iCAAc;EACd,SAAS;EACT,eAAyB;;EAEzB,eAAe;EACf,kGAAkG;EAClG,qBAAqB;;EAErB,6BAA6B;;EAE7B,SAAS;EACT,wCAAwC;EACxC,UAAU;EACV,sDAAsD;EACtD,qDAAmD;;EAEnD,oCAAoC;EACpC,uCAAuC;;EAEvC,sCAAmB;AA2DrB;;AC1GA,wGAAA;IAAA,iBAAA;;IAAA,2DAAA;GAAA,CAAA;;ADuDE;IACE,gBAAgB;;IAEhB,uDAAuD;IACvD,0DAAwD;EAC1D;;AAEA;IACE,gBAAgB;;IAEhB,oGAAkG;EACpG;;AAEA;IACE,gBAAgB;;IAEhB,oDAAoD;IACpD,kDAAgD;EAClD;;AAEA;IACE,4FAA4F;EAC9F;;AAEA;IACE,oBAAoB;;IAEpB,uDAAuD;IACvD,6DAA2D;EAC7D;;AAEA;IACE,gEAAgE;IAChE,sEAAoE;EACtE;;AAEA;;IAEE,iCAAiC;EACnC;;AAEA;IACE,sCAAsC;EACxC;;AAEA;IACE,UAAU;;IAEV,SAAS;IACT,UAAU;EACZ;;AAGF;EACE,kCAAkC;AACpC;;AAEA;EACE,mCAAmC;EACnC,wCAAwC;EACxC,gBAAgB;AAqDlB;;ACxKA,wGAAA;IAAA,iBAAA;;IAAA,+CAAA;IAAA,iBAAA;GAAA,CAAA;;AD4HE;;;IAGE,oCAAoC;EACtC;;AAEA;;;IAGE,6DAA6D;EAC/D;;AAEA;;IAEE,mEAAiE;EACnE;;AAEA;IACE,uDAAuD;IACvD,6DAA2D;EAC7D;;AAEA;IACE,mCAAmC;EACrC;;AAEA;IACE,MAAM;IACN,QAAQ;IACR,SAAS;IACT,OAAO;;IAEP,wCAAwC;EAW1C;;AATE;MACE;;;;;;SAMG;IACL;;ACtKJ,wGAAA;IAAA,iBAAA;GAAA,CAAA;;AAAA,wGAAA;IAAA,kEAAA;GAAA,CAAA;;AD2KE;;;;;;;IAOE,8BAA8B;EAChC;;AAEA;;IAEE,wDAAwD;EAC1D;;AAEA;;;IAIE,iEAA+D;EACjE;;AAEA;IAEE,gBAAgB;EAClB;;AAGF;;EAEE,6BAA6B;EAC7B,gBAAgB;AAelB;;ACzNA,wGAAA;IAAA,iBAAA;GAAA,CAAA;;ADgNE;;;;IAEE,6BAA6B;IAC7B,gBAAgB;EAClB;;AAEA;IACE,0DAA0D;EAC5D;;AAGF;EACE,iCAA4B;EAC5B,0BAA0B;EAC1B,mCAAmC;AACrC;;AC/NA,wGAAA;EAAA,8BAAA;EAAA,iBAAA;CAAA,CAAA;;AAAA,wGAAA;EAAA,8BAAA;EAAA,iBAAA;CAAA,CAAA;;AD2OA;EACE,oCAAoC;AACtC;;AAEA;EACE,qBAAqB;;EAErB,SAAS;EACT,UAAU;;EAEV,gCAAgC;AAClC;;AAEA;EACE,cAAe;AACjB;;AAGE;;IAEE,mCAAmC;EACrC;;AAIA;;IAEE,oCAAoC;EACtC;;ACvQF,wGAAA;EAAA,oCAAA;CAAA,CAAA;;AAAA,wGAAA;EAAA,oCAAA;CAAA,CAAA;;ADkRA;EACE,cAAc;;EAEd,mBAAmB;AAKrB;;AAHE;IACE,iBAA8B;EAChC;;AAGF;EACE,kCAAkC;;EAElC,6BAA6B;AAC/B;;AAEA;;EAEE,6BAA6B;AAO/B;;AALE;IACE,gBAAgB;;IAEhB,cAAc;EAChB;;AC1SF,wGAAA;;EAAA,iBAAA;;EAAA,eAAA;CAAA,CAAA;;ADoTA;;EAEE,mCAAmC;AACrC;;AAEA;EACE,kBAAkB;EAClB,UAAU;;EAEV,oBAAoB;;EAEpB,6BAA6B;AAC/B;;AAEA;EACE,kBAAkB;EAClB,WAAW;EACX,QAAQ;EACR,UAAU;EACV,WAAW;EACX,SAAS;;EAET,gBAAgB;;EAEhB,8CAA8C;AAsBhD;;AApBE;IACE,cAAc;;IAEd,wBAA+B;IAC/B,YAAY;;IAEZ,WAAW;IACX,2CAAsC;;IAEtC;;;;;;OAMG;;IAEH,yBAAyB;IACzB,qBAA4B;EAC9B;;AAGF;EACE,YAAY;AACd;;AAEA;EACE,WAAqB;EACrB,UAAU;AACZ;;AAEA;EACE,kBAAkB;;EAElB,gBAAgB;;EAEhB,kCAAkC;;EAElC,uCAAuC;;EAEvC,mBAAmB;AACrB;;ACvXA,wGAAA;EAAA,iBAAA;;EAAA,8BAAA;CAAA,CAAA;;AD+XA;EACE;IACE,4BAA4C;EAC9C;;EAEA;IACE,wBAAwB;EAC1B;AACF;;AAEA;EACE;IACE,YAAY;EACd;AACF",sourcesContent:['@import "../global/variables.css";\n\n@value unit from "../global/global.css";\n@value button-shadow: inset 0 0 0 1px;\n@value height: var(--ring-button-height);\n@value loaderWidth: calc(unit * 8);\n\n.heightS {\n --ring-button-height: calc(unit * 3);\n --ring-button-font-size: var(--ring-font-size-smaller);\n}\n\n.heightM {\n --ring-button-height: calc(unit * 3.5);\n --ring-button-font-size: var(--ring-font-size);\n}\n\n.heightL {\n --ring-button-height: calc(unit * 4);\n --ring-button-font-size: var(--ring-font-size);\n}\n\n.button {\n position: relative;\n\n display: inline-block;\n\n box-sizing: border-box;\n height: height;\n margin: 0;\n padding: 0 calc(unit * 2);\n\n cursor: pointer;\n transition: color var(--ring-ease), background-color var(--ring-ease), box-shadow var(--ring-ease);\n text-decoration: none;\n\n color: var(--ring-text-color);\n\n border: 0;\n border-radius: var(--ring-border-radius);\n outline: 0;\n background-color: var(--ring-content-background-color);\n box-shadow: button-shadow var(--ring-borders-color);\n\n font-family: var(--ring-font-family);\n font-size: var(--ring-button-font-size);\n\n line-height: height;\n\n &:hover {\n transition: none;\n\n box-shadow: button-shadow var(--ring-border-hover-color);\n }\n\n &:active {\n transition: none;\n\n background-color: var(--ring-selected-background-color);\n box-shadow: button-shadow var(--ring-border-hover-color);\n }\n\n &:focus-visible {\n transition: none;\n\n box-shadow: button-shadow var(--ring-border-hover-color), 0 0 0 1px var(--ring-border-hover-color);\n }\n\n &.active {\n transition: none;\n\n background-color: var(--ring-hover-background-color);\n box-shadow: button-shadow var(--ring-main-color);\n }\n\n &:focus-visible.active {\n box-shadow: inset 0 0 0 2px var(--ring-main-color), 0 0 0 1px var(--ring-border-hover-color);\n }\n\n &[disabled] {\n pointer-events: none;\n\n background-color: var(--ring-disabled-background-color);\n box-shadow: button-shadow var(--ring-border-disabled-color);\n }\n\n &[disabled].active {\n background-color: var(--ring-disabled-selected-background-color);\n box-shadow: button-shadow var(--ring-border-selected-disabled-color);\n }\n\n &[disabled],\n &[disabled].withIcon {\n color: var(--ring-disabled-color);\n }\n\n &[disabled] .icon {\n color: var(--ring-icon-disabled-color);\n }\n\n &::-moz-focus-inner {\n padding: 0;\n\n border: 0;\n outline: 0;\n }\n}\n\n.withIcon {\n color: var(--ring-secondary-color);\n}\n\n.primary {\n color: var(--ring-white-text-color);\n background-color: var(--ring-main-color);\n box-shadow: none;\n\n &:hover {\n transition: none;\n\n background-color: var(--ring-main-hover-color);\n box-shadow: none;\n }\n\n &.withIcon,\n &.withIcon:active,\n &.withIcon.active {\n color: var(--ring-action-link-color);\n }\n\n &:focus-visible,\n &:active,\n &.active {\n background-color: var(--ring-button-primary-background-color);\n }\n\n &:active,\n &.active {\n box-shadow: button-shadow var(--ring-button-primary-border-color);\n }\n\n &[disabled] {\n background-color: var(--ring-disabled-background-color);\n box-shadow: button-shadow var(--ring-border-disabled-color);\n }\n\n &[disabled].loader {\n color: var(--ring-white-text-color);\n }\n\n & .loaderBackground {\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n border-radius: var(--ring-border-radius);\n\n &::before {\n background-image:\n linear-gradient(\n to right,\n var(--ring-main-color),\n var(--ring-button-loader-background) 40%,\n var(--ring-main-color) 80%\n );\n }\n }\n}\n\n.danger {\n &,\n &.withIcon,\n &.withIcon:active,\n &.withIcon.active,\n &.text,\n &.text:active,\n &.text.active {\n color: var(--ring-error-color);\n }\n\n &:active,\n &.active {\n background-color: var(--ring-button-danger-active-color);\n }\n\n &:active,\n &.active,\n &:focus-visible,\n &:hover {\n box-shadow: button-shadow var(--ring-button-danger-hover-color);\n }\n\n &:focus-visible,\n &:hover {\n transition: none;\n }\n}\n\n.text.text,\n.withIcon.withIcon {\n background-color: transparent;\n box-shadow: none;\n\n &:hover {\n transition: none;\n }\n\n &:active,\n &.active {\n background-color: transparent;\n box-shadow: none;\n }\n\n &:focus-visible {\n box-shadow: inset 0 0 0 2px var(--ring-border-hover-color);\n }\n}\n\n.loader.text > .content {\n animation-name: text-loading;\n animation-duration: 1200ms;\n animation-iteration-count: infinite;\n}\n\n.text.text:hover {\n background-color: transparent;\n box-shadow: none;\n}\n\n.withIcon:hover:not(:focus-visible) {\n background-color: transparent;\n box-shadow: none;\n}\n\n.text {\n color: var(--ring-action-link-color);\n}\n\n.inline {\n display: inline-block;\n\n margin: 0;\n padding: 0;\n\n font-size: var(--ring-font-size);\n}\n\n.withIcon {\n padding: 0 unit;\n}\n\n.text {\n &:active,\n &.active {\n color: var(--ring-link-hover-color);\n }\n}\n\n.withIcon {\n &:active,\n &.active {\n color: var(--ring-action-link-color);\n }\n}\n\n.withIcon:hover {\n color: var(--ring-link-hover-color);\n}\n\n.text:hover {\n color: var(--ring-link-hover-color);\n}\n\n.icon {\n color: inherit;\n\n line-height: normal;\n\n &:not(:last-child) {\n margin-right: calc(unit * 0.5);\n }\n}\n\n.withNormalIcon .icon {\n transition: color var(--ring-ease);\n\n color: var(--ring-icon-color);\n}\n\n.withNormalIcon:active,\n.withNormalIcon.active {\n color: var(--ring-main-color);\n\n & .icon {\n transition: none;\n\n color: inherit;\n }\n}\n\n.withNormalIcon:hover .icon,\n.withDangerIcon:hover .icon {\n transition: none;\n\n color: inherit;\n}\n\n.withDangerIcon .icon,\n.withDangerIcon:active .icon {\n color: var(--ring-icon-error-color);\n}\n\n.loader {\n position: relative;\n z-index: 0;\n\n pointer-events: none;\n\n background-color: transparent;\n}\n\n.loaderBackground {\n position: absolute;\n z-index: -1;\n top: 1px;\n right: 1px;\n bottom: 1px;\n left: 1px;\n\n overflow: hidden;\n\n border-radius: var(--ring-border-radius-small);\n\n &::before {\n display: block;\n\n width: calc(100% + loaderWidth);\n height: 100%;\n\n content: "";\n animation: progress 1s linear infinite;\n\n background-image:\n linear-gradient(\n to right,\n var(--ring-content-background-color),\n var(--ring-selected-background-color) 40%,\n var(--ring-content-background-color) 80%\n );\n\n background-repeat: repeat;\n background-size: loaderWidth;\n }\n}\n\n.delayed .content::after {\n content: "…";\n}\n\n.short {\n width: calc(unit * 4);\n padding: 0;\n}\n\n.dropdownIcon {\n margin-right: -2px;\n\n margin-left: 2px;\n\n transition: color var(--ring-ease);\n\n color: var(--ring-icon-secondary-color);\n\n line-height: normal;\n}\n\n.button:hover .dropdownIcon {\n transition: none;\n\n color: var(--ring-main-color);\n}\n\n@keyframes progress {\n from {\n transform: translateX(calc(0 - loaderWidth));\n }\n\n to {\n transform: translateX(0);\n }\n}\n\n@keyframes text-loading {\n 50% {\n opacity: 0.5;\n }\n}\n',null],sourceRoot:""}]),s.locals={unit:`${l.default.locals.unit}`,"button-shadow":"inset 0 0 0 1px",height:"var(--ring-button-height)",loaderWidth:"64px",heightS:"heightS_b28d",heightM:"heightM_dfd3",heightL:"heightL_a4d3",button:"button_aba4",active:"active_bbe6",withIcon:"withIcon_ef77",icon:"icon_e878",primary:"primary_ddae",loader:"loader_cbfc",loaderBackground:"loaderBackground_d9f5",danger:"danger_bcea",text:"text_fc2a",content:"content_b2b8","text-loading":"text-loading_d1b4",inline:"inline_b4a2",withNormalIcon:"withNormalIcon_aaca",withDangerIcon:"withDangerIcon_e3ca",progress:"progress_ed8f",delayed:"delayed_d562",short:"short_a07a",dropdownIcon:"dropdownIcon_e982"};const u=s},1866:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>u});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9106),c=t(5280),s=a()(o());s.i(c.A),s.i(l.default,"",!0),s.push([e.id,".checkbox_dccf {\n position: relative;\n\n display: inline-block;\n\n text-align: left;\n\n color: var(--ring-text-color);\n outline: none;\n}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.checkbox_dccf:hover .cell_edda {\n transition: background-color var(--ring-ease);\n\n border-color: var(--ring-border-hover-color);\n }}\n\n.cell_edda {\n position: relative;\n top: -2px;\n\n display: inline-block;\n\n box-sizing: border-box;\n width: 14px;\n height: 14px;\n\n -webkit-user-select: none;\n\n -moz-user-select: none;\n\n user-select: none;\n transition: border-color var(--ring-ease), background-color var(--ring-ease), box-shadow var(--ring-ease);\n vertical-align: middle;\n pointer-events: none;\n\n border: 1px solid var(--ring-borders-color);\n border-radius: var(--ring-border-radius-small);\n background-color: var(--ring-content-background-color);\n}\n\n.icon_b476.icon_b476 {\n position: absolute;\n\n top: -1px;\n left: -1px;\n\n width: 16px;\n height: 16px;\n\n opacity: 0;\n color: var(--ring-white-text-color);\n}\n\n.icon_b476.icon_b476 svg {\n position: absolute;\n top: 0;\n left: 0;\n }\n\n.check_a219 {\n}\n\n.minus_de65 {\n}\n\n.input_a330 {\n position: absolute;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 100%;\n margin: 0;\n\n cursor: pointer;\n\n opacity: 0;\n\n /* stylelint-disable-next-line selector-max-specificity */\n}\n\n.input_a330:checked + .cell_edda,\n .input_a330:indeterminate + .cell_edda {\n border-color: transparent;\n background-color: var(--ring-main-color);\n }\n\n/* stylelint-disable-next-line selector-max-specificity */\n\n.input_a330:checked + .cell_edda .check_a219 {\n opacity: 1;\n }\n\n.input_a330:focus-visible + .cell_edda,\n .input_a330.focus_eaa3 + .cell_edda {\n transition: background-color var(--ring-ease);\n\n border-color: var(--ring-border-hover-color);\n box-shadow: 0 0 0 1px var(--ring-border-hover-color);\n }\n\n/* stylelint-disable-next-line selector-max-specificity */\n\n.input_a330:indeterminate + .cell_edda .minus_de65 {\n opacity: 1;\n }\n\n.input_a330[disabled] {\n pointer-events: none;\n }\n\n/* stylelint-disable-next-line selector-max-specificity */\n\n.input_a330[disabled][disabled] + .cell_edda {\n border-color: var(--ring-border-disabled-color);\n background-color: var(--ring-disabled-background-color);\n }\n\n/* stylelint-disable-next-line selector-max-specificity */\n\n.input_a330[disabled]:checked + .cell_edda,\n .input_a330[disabled]:indeterminate + .cell_edda {\n border-color: var(--ring-border-selected-disabled-color);\n }\n\n/* stylelint-disable-next-line selector-max-specificity */\n\n.input_a330[disabled]:checked + .cell_edda .check_a219,\n .input_a330[disabled]:indeterminate + .cell_edda .minus_de65 {\n color: var(--ring-icon-disabled-color);\n }\n\n/* stylelint-disable-next-line selector-max-specificity */\n\n.input_a330:indeterminate:indeterminate + .cell_edda .check_a219 {\n transition: none;\n\n opacity: 0;\n }\n\n.input_a330[disabled] ~ .label_dcc7 {\n color: var(--ring-disabled-color);\n }\n\n.label_dcc7 {\n margin-left: 8px;\n\n line-height: normal;\n}\n","",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/checkbox/checkbox.css",""],names:[],mappings:"AAKA;EACE,kBAAkB;;EAElB,qBAAqB;;EAErB,gBAAgB;;EAEhB,6BAA6B;EAC7B,aAAa;AAOf;;ACpBA,wGAAA;IAAA,8CAAA;;IAAA,6CAAA;GAAA,CAAA;;ADsBA;EACE,kBAAkB;EAClB,SAAS;;EAET,qBAAqB;;EAErB,sBAAsB;EACtB,WAAmB;EACnB,YAAoB;;EAEpB,yBAAiB;;KAAjB,sBAAiB;;UAAjB,iBAAiB;EACjB,yGAAyG;EACzG,sBAAsB;EACtB,oBAAoB;;EAEpB,2CAA2C;EAC3C,8CAA8C;EAC9C,sDAAsD;AACxD;;AAEA;EACE,kBAAkB;;EAElB,SAAS;EACT,UAAU;;EAEV,WAAqB;EACrB,YAAsB;;EAEtB,UAAU;EACV,mCAAmC;AAOrC;;AALE;IACE,kBAAkB;IAClB,MAAM;IACN,OAAO;EACT;;AAGF;AAEA;;AAEA;AAEA;;AAEA;EACE,kBAAkB;EAClB,MAAM;EACN,OAAO;;EAEP,WAAW;EACX,YAAY;EACZ,SAAS;;EAET,eAAe;;EAEf,UAAU;;EAEV,yDAAyD;AAyD3D;;AAxDE;;IAEE,yBAAyB;IACzB,wCAAwC;EAC1C;;AAEA,yDAAyD;;AACzD;IACE,UAAU;EACZ;;AAEA;;IAEE,6CAA6C;;IAE7C,4CAA4C;IAC5C,oDAAoD;EACtD;;AAEA,yDAAyD;;AACzD;IACE,UAAU;EACZ;;AAEA;IACE,oBAAoB;EACtB;;AAEA,yDAAyD;;AACzD;IACE,+CAA+C;IAC/C,uDAAuD;EACzD;;AAEA,yDAAyD;;AACzD;;IAEE,wDAAwD;EAC1D;;AAEA,yDAAyD;;AACzD;;IAEE,sCAAsC;EACxC;;AAEA,yDAAyD;;AACzD;IACE,gBAAgB;;IAEhB,UAAU;EACZ;;AAEA;IACE,iCAAiC;EACnC;;AAGF;EACE,gBAAiB;;EAEjB,mBAAmB;AACrB",sourcesContent:['@import "../global/variables.css";\n\n@value unit from "../global/global.css";\n@value checkboxSize: 14px;\n\n.checkbox {\n position: relative;\n\n display: inline-block;\n\n text-align: left;\n\n color: var(--ring-text-color);\n outline: none;\n\n &:hover .cell {\n transition: background-color var(--ring-ease);\n\n border-color: var(--ring-border-hover-color);\n }\n}\n\n.cell {\n position: relative;\n top: -2px;\n\n display: inline-block;\n\n box-sizing: border-box;\n width: checkboxSize;\n height: checkboxSize;\n\n user-select: none;\n transition: border-color var(--ring-ease), background-color var(--ring-ease), box-shadow var(--ring-ease);\n vertical-align: middle;\n pointer-events: none;\n\n border: 1px solid var(--ring-borders-color);\n border-radius: var(--ring-border-radius-small);\n background-color: var(--ring-content-background-color);\n}\n\n.icon.icon {\n position: absolute;\n\n top: -1px;\n left: -1px;\n\n width: calc(unit * 2);\n height: calc(unit * 2);\n\n opacity: 0;\n color: var(--ring-white-text-color);\n\n & svg {\n position: absolute;\n top: 0;\n left: 0;\n }\n}\n\n.check {\n composes: icon;\n}\n\n.minus {\n composes: icon;\n}\n\n.input {\n position: absolute;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 100%;\n margin: 0;\n\n cursor: pointer;\n\n opacity: 0;\n\n /* stylelint-disable-next-line selector-max-specificity */\n &:checked + .cell,\n &:indeterminate + .cell {\n border-color: transparent;\n background-color: var(--ring-main-color);\n }\n\n /* stylelint-disable-next-line selector-max-specificity */\n &:checked + .cell .check {\n opacity: 1;\n }\n\n &:focus-visible + .cell,\n &.focus + .cell {\n transition: background-color var(--ring-ease);\n\n border-color: var(--ring-border-hover-color);\n box-shadow: 0 0 0 1px var(--ring-border-hover-color);\n }\n\n /* stylelint-disable-next-line selector-max-specificity */\n &:indeterminate + .cell .minus {\n opacity: 1;\n }\n\n &[disabled] {\n pointer-events: none;\n }\n\n /* stylelint-disable-next-line selector-max-specificity */\n &[disabled][disabled] + .cell {\n border-color: var(--ring-border-disabled-color);\n background-color: var(--ring-disabled-background-color);\n }\n\n /* stylelint-disable-next-line selector-max-specificity */\n &[disabled]:checked + .cell,\n &[disabled]:indeterminate + .cell {\n border-color: var(--ring-border-selected-disabled-color);\n }\n\n /* stylelint-disable-next-line selector-max-specificity */\n &[disabled]:checked + .cell .check,\n &[disabled]:indeterminate + .cell .minus {\n color: var(--ring-icon-disabled-color);\n }\n\n /* stylelint-disable-next-line selector-max-specificity */\n &:indeterminate:indeterminate + .cell .check {\n transition: none;\n\n opacity: 0;\n }\n\n &[disabled] ~ .label {\n color: var(--ring-disabled-color);\n }\n}\n\n.label {\n margin-left: unit;\n\n line-height: normal;\n}\n',null],sourceRoot:""}]),s.locals={unit:`${l.default.locals.unit}`,checkboxSize:"14px",checkbox:"checkbox_dccf",cell:"cell_edda",icon:"icon_b476",check:"check_a219 icon_b476",minus:"minus_de65 icon_b476",input:"input_a330",focus:"focus_eaa3",label:"label_dcc7"};const u=s},5486:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>l});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i)()(o());a.push([e.id,".label_bed7 {\n display: block;\n\n margin-bottom: calc(var(--ring-unit)*0.5);\n}\n\n.formLabel_f9ba {\n color: var(--ring-text-color);\n\n font-size: var(--ring-font-size);\n line-height: var(--ring-line-height);\n}\n\n.secondaryLabel_e8a1 {\n color: var(--ring-secondary-color);\n\n font-size: var(--ring-font-size-smaller);\n line-height: var(--ring-line-height-lowest);\n}\n\n.disabledLabel_e4c1 {\n color: var(--ring-disabled-color);\n}\n","",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/control-label/control-label.css"],names:[],mappings:"AAAA;EACE,cAAc;;EAEd,yCAA2C;AAC7C;;AAEA;EACE,6BAA6B;;EAE7B,gCAAgC;EAChC,oCAAoC;AACtC;;AAEA;EACE,kCAAkC;;EAElC,wCAAwC;EACxC,2CAA2C;AAC7C;;AAEA;EACE,iCAAiC;AACnC",sourcesContent:[".label {\n display: block;\n\n margin-bottom: calc(var(--ring-unit) * 0.5);\n}\n\n.formLabel {\n color: var(--ring-text-color);\n\n font-size: var(--ring-font-size);\n line-height: var(--ring-line-height);\n}\n\n.secondaryLabel {\n color: var(--ring-secondary-color);\n\n font-size: var(--ring-font-size-smaller);\n line-height: var(--ring-line-height-lowest);\n}\n\n.disabledLabel {\n color: var(--ring-disabled-color);\n}\n"],sourceRoot:""}]),a.locals={label:"label_bed7",formLabel:"formLabel_f9ba",secondaryLabel:"secondaryLabel_e8a1",disabledLabel:"disabledLabel_e4c1"};const l=a},6506:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>s});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(5280),c=a()(o());c.i(l.A),c.push([e.id,".dropdown_a1de {\n display: inline-block;\n}\n\n.anchor_fdbe.anchor_fdbe {\n margin: 0 -3px;\n padding: 0 3px;\n\n font: inherit;\n}\n\n.chevron_ffc6 {\n margin-left: 2px;\n\n line-height: normal;\n}\n","",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/dropdown/dropdown.css"],names:[],mappings:"AAEA;EACE,qBAAqB;AACvB;;AAEA;EACE,cAAc;EACd,cAAc;;EAEd,aAAa;AACf;;AAEA;EACE,gBAAgB;;EAEhB,mBAAmB;AACrB",sourcesContent:['@import "../global/variables.css";\n\n.dropdown {\n display: inline-block;\n}\n\n.anchor.anchor {\n margin: 0 -3px;\n padding: 0 3px;\n\n font: inherit;\n}\n\n.chevron {\n margin-left: 2px;\n\n line-height: normal;\n}\n'],sourceRoot:""}]),c.locals={dropdown:"dropdown_a1de",anchor:"anchor_fdbe",chevron:"chevron_ffc6"};const s=c},9106:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>l});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i)()(o());a.push([e.id,'/* https://readymag.com/artemtiunov/RingUILanguage/colours/ */\n\n/*\nUnit shouldn\'t be CSS custom property because it is not intended to change\nAlso it won\'t form in FF47 https://bugzilla.mozilla.org/show_bug.cgi?id=594933\n*/\n\n.clearfix_c694::after {\n display: block;\n clear: both;\n\n content: "";\n }\n\n.font_a1f6 {\n font-family: var(--ring-font-family);\n font-size: var(--ring-font-size);\n line-height: var(--ring-line-height);\n}\n\n.font-lower_c3c9 {\n\n line-height: var(--ring-line-height-lower);\n}\n\n.font-smaller_d963 {\n\n font-size: var(--ring-font-size-smaller);\n}\n\n.font-smaller-lower_ff5f {\n\n line-height: var(--ring-line-height-lowest);\n}\n\n.font-larger-lower_b336 {\n\n font-size: var(--ring-font-size-larger);\n}\n\n.font-larger_f035 {\n\n line-height: var(--ring-line-height-taller);\n}\n\n/* To be used at large sizes */\n/* As close as possible to Helvetica Neue Thin (to replace Gotham) */\n.thin-font_de5b {\n font-family: "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;\n font-size: var(--ring-font-size);\n font-weight: 100; /* Renders Helvetica Neue UltraLight on OS X */\n}\n\n.monospace-font_ac33 {\n font-family: var(--ring-font-family-monospace);\n font-size: var(--ring-font-size-smaller);\n}\n\n.ellipsis_e43b {\n overflow: hidden;\n\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n.resetButton_ddd2 {\n overflow: visible;\n\n padding: 0;\n\n text-align: left;\n\n color: inherit;\n border: 0;\n\n background-color: transparent;\n\n font: inherit;\n}\n\n.resetButton_ddd2::-moz-focus-inner {\n padding: 0;\n\n border: 0;\n }\n\n/* Note: footer also has top margin which isn\'t taken into account here */\n\n/* Media breakpoints (minimal values) */\n\n/* Media queries */\n',"",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/global/global.css"],names:[],mappings:"AAAA,6DAA6D;;AAE7D;;;CAGC;;AAIC;IACE,cAAc;IACd,WAAW;;IAEX,WAAW;EACb;;AAGF;EACE,oCAAoC;EACpC,gCAAgC;EAChC,oCAAoC;AACtC;;AAEA;;EAGE,0CAA0C;AAC5C;;AAEA;;EAGE,wCAAwC;AAC1C;;AAEA;;EAGE,2CAA2C;AAC7C;;AAEA;;EAGE,uCAAuC;AACzC;;AAEA;;EAGE,2CAA2C;AAC7C;;AAEA,8BAA8B;AAC9B,oEAAoE;AACpE;EACE,uEAAuE;EACvE,gCAAgC;EAChC,gBAAgB,EAAE,+CAA+C;AACnE;;AAEA;EACE,8CAA8C;EAC9C,wCAAwC;AAC1C;;AAEA;EACE,gBAAgB;;EAEhB,mBAAmB;EACnB,uBAAuB;AACzB;;AAEA;EACE,iBAAiB;;EAEjB,UAAU;;EAEV,gBAAgB;;EAEhB,cAAc;EACd,SAAS;;EAET,6BAA6B;;EAE7B,aAAa;AAOf;;AALE;IACE,UAAU;;IAEV,SAAS;EACX;;AAGF,yEAAyE;;AAGzE,uCAAuC;;AAKvC,kBAAkB",sourcesContent:['/* https://readymag.com/artemtiunov/RingUILanguage/colours/ */\n\n/*\nUnit shouldn\'t be CSS custom property because it is not intended to change\nAlso it won\'t form in FF47 https://bugzilla.mozilla.org/show_bug.cgi?id=594933\n*/\n@value unit: 8px;\n\n.clearfix {\n &::after {\n display: block;\n clear: both;\n\n content: "";\n }\n}\n\n.font {\n font-family: var(--ring-font-family);\n font-size: var(--ring-font-size);\n line-height: var(--ring-line-height);\n}\n\n.font-lower {\n composes: font;\n\n line-height: var(--ring-line-height-lower);\n}\n\n.font-smaller {\n composes: font-lower;\n\n font-size: var(--ring-font-size-smaller);\n}\n\n.font-smaller-lower {\n composes: font-smaller;\n\n line-height: var(--ring-line-height-lowest);\n}\n\n.font-larger-lower {\n composes: font-lower;\n\n font-size: var(--ring-font-size-larger);\n}\n\n.font-larger {\n composes: font-larger-lower;\n\n line-height: var(--ring-line-height-taller);\n}\n\n/* To be used at large sizes */\n/* As close as possible to Helvetica Neue Thin (to replace Gotham) */\n.thin-font {\n font-family: "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;\n font-size: var(--ring-font-size);\n font-weight: 100; /* Renders Helvetica Neue UltraLight on OS X */\n}\n\n.monospace-font {\n font-family: var(--ring-font-family-monospace);\n font-size: var(--ring-font-size-smaller);\n}\n\n.ellipsis {\n overflow: hidden;\n\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n.resetButton {\n overflow: visible;\n\n padding: 0;\n\n text-align: left;\n\n color: inherit;\n border: 0;\n\n background-color: transparent;\n\n font: inherit;\n\n &::-moz-focus-inner {\n padding: 0;\n\n border: 0;\n }\n}\n\n/* Note: footer also has top margin which isn\'t taken into account here */\n@value footer-height: calc(unit * 8);\n\n/* Media breakpoints (minimal values) */\n@value breakpoint-small: 640px;\n@value breakpoint-middle: 960px;\n@value breakpoint-large: 1200px;\n\n/* Media queries */\n@value extra-small-screen-media: (max-width: calc(breakpoint-small - 1px));\n@value small-screen-media: (min-width: breakpoint-small) and (max-width: calc(breakpoint-middle - 1px));\n@value middle-screen-media: (min-width: breakpoint-middle) and (max-width: calc(breakpoint-large - 1px));\n@value large-screen-media: (min-width: breakpoint-large);\n'],sourceRoot:""}]),a.locals={unit:"8px","footer-height":"64px","breakpoint-small":"640px","breakpoint-middle":"960px","breakpoint-large":"1200px","extra-small-screen-media":"(max-width: 639px)","small-screen-media":"(min-width: 640px) and (max-width: 959px)","middle-screen-media":"(min-width: 960px) and (max-width: 1199px)","large-screen-media":"(min-width: 1200px)",clearfix:"clearfix_c694",font:"font_a1f6","font-lower":"font-lower_c3c9 font_a1f6","font-smaller":"font-smaller_d963 font-lower_c3c9 font_a1f6","font-smaller-lower":"font-smaller-lower_ff5f font-smaller_d963 font-lower_c3c9 font_a1f6","font-larger-lower":"font-larger-lower_b336 font-lower_c3c9 font_a1f6","font-larger":"font-larger_f035 font-larger-lower_b336 font-lower_c3c9 font_a1f6","thin-font":"thin-font_de5b","monospace-font":"monospace-font_ac33",ellipsis:"ellipsis_e43b",resetButton:"resetButton_ddd2"};const l=a},5280:(e,n,t)=>{"use strict";t.d(n,{A:()=>l});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i)()(o());a.push([e.id,'/* stylelint-disable color-no-hex */\n\n.light_f331,\n:root {\n --ring-unit: 8px;\n\n /* Element */\n --ring-line-components: 223, 229, 235;\n --ring-line-color: rgb(var(--ring-line-components)); /* #dfe5eb */\n --ring-borders-components: 197, 209, 219;\n --ring-borders-color: rgb(var(--ring-borders-components)); /* #c5d1db */\n --ring-icon-components: 184, 209, 229;\n --ring-icon-color: rgb(var(--ring-icon-components)); /* #b8d1e5 */\n --ring-icon-secondary-components: 153, 153, 153;\n --ring-icon-secondary-color: rgb(var(--ring-icon-secondary-components)); /* #999 */\n --ring-border-disabled-components: 232, 232, 232;\n --ring-border-disabled-color: rgb(var(--ring-border-disabled-components)); /* #e8e8e8 */\n --ring-border-selected-disabled-components: 212, 212, 212;\n --ring-border-selected-disabled-color: rgb(var(--ring-border-selected-disabled-components)); /* #d4d4d4 */\n --ring-border-unselected-disabled-components: 232, 232, 232;\n --ring-border-unselected-disabled-color: rgb(var(--ring-border-unselected-disabled-components)); /* #e8e8e8 */ /* TODO remove in 6.0 */\n --ring-icon-disabled-components: 212, 212, 212;\n --ring-icon-disabled-color: rgb(var(--ring-icon-disabled-components)); /* #d4d4d4 */\n --ring-border-hover-components: 128, 198, 255;\n --ring-border-hover-color: rgb(var(--ring-border-hover-components)); /* #80c6ff */\n --ring-icon-hover-components: var(--ring-link-hover-color);\n --ring-icon-hover-color: var(--ring-link-hover-color);\n --ring-main-components: 0, 128, 229;\n --ring-main-color: rgb(var(--ring-main-components)); /* #0080e5 */\n --ring-action-link-components: var(--ring-main-components);\n --ring-action-link-color: rgb(var(--ring-main-components)); /* #0080e5 */\n --ring-main-hover-components: 0, 112, 204;\n --ring-main-hover-color: rgb(var(--ring-main-hover-components)); /* #0070cc */\n --ring-icon-error-components: 219, 88, 96;\n --ring-icon-error-color: rgb(var(--ring-icon-error-components)); /* #db5860 */\n --ring-icon-warning-components: 237, 162, 0;\n --ring-icon-warning-color: rgb(var(--ring-icon-warning-components)); /* #eda200 */\n --ring-icon-success-components: 89, 168, 105;\n --ring-icon-success-color: rgb(var(--ring-icon-success-components)); /* #59a869 */\n --ring-pale-control-components: 207, 219, 229;\n --ring-pale-control-color: rgb(var(--ring-pale-control-components)); /* #cfdbe5 */\n --ring-popup-border-components: 0, 28, 54;\n --ring-popup-border-color: var(--ring-line-color);\n --ring-popup-shadow-components: rgba(var(--ring-popup-border-components), 0.1);\n --ring-popup-shadow-color: rgba(var(--ring-popup-border-components), 0.1);\n --ring-popup-secondary-shadow-color: rgba(var(--ring-popup-border-components), 0.04);\n --ring-message-shadow-color: rgba(var(--ring-popup-border-components), 0.3);\n --ring-pinned-shadow-components: 115, 117, 119;\n --ring-pinned-shadow-color: rgb(var(--ring-pinned-shadow-components)); /* #737577 */\n --ring-button-danger-hover-components: var(--ring-icon-error-color);\n --ring-button-danger-hover-color: var(--ring-icon-error-color);\n --ring-button-primary-border-components: 0, 98, 178;\n --ring-button-primary-border-color: rgb(var(--ring-button-primary-border-components)); /* #0062b2 */\n --ring-popup-shadow: 0 2px 8px var(--ring-popup-shadow-color), 0 1px 2px var(--ring-popup-secondary-shadow-color);\n --ring-dialog-shadow: 0 4px 24px var(--ring-popup-shadow-color), 0 2px 6px var(--ring-popup-secondary-shadow-color);\n\n /* Text */\n --ring-search-components: 102, 158, 204;\n --ring-search-color: rgb(var(--ring-search-components)); /* #669ecc */\n --ring-hint-components: 64, 99, 128;\n --ring-hint-color: rgb(var(--ring-hint-components)); /* #406380 */\n --ring-link-components: 15, 91, 153;\n --ring-link-color: rgb(var(--ring-link-components)); /* #0f5b99 */\n --ring-link-hover-components: 255, 0, 140;\n --ring-link-hover-color: rgb(var(--ring-link-hover-components)); /* #ff008c */\n --ring-error-components: 169, 15, 26;\n --ring-error-color: rgb(var(--ring-error-components)); /* #a90f1a */\n --ring-warning-components: 178, 92, 0;\n --ring-warning-color: rgb(var(--ring-warning-components)); /* #b25c00 */\n --ring-success-components: 12, 117, 35;\n --ring-success-color: rgb(var(--ring-success-components)); /* #0c7523 */\n --ring-text-components: 31, 35, 38;\n --ring-text-color: rgb(var(--ring-text-components)); /* #1f2326 */\n --ring-active-text-color: var(--ring-text-color);\n --ring-white-text-components: 255, 255, 255;\n --ring-white-text-color: rgb(var(--ring-white-text-components)); /* #fff */\n --ring-heading-color: var(--ring-text-color);\n --ring-secondary-components: 115, 117, 119;\n --ring-secondary-color: rgb(var(--ring-secondary-components)); /* #737577 */\n --ring-disabled-components: 153, 153, 153;\n --ring-disabled-color: rgb(var(--ring-disabled-components)); /* #999 */\n\n /* Background */\n --ring-content-background-components: 255, 255, 255;\n --ring-content-background-color: rgb(var(--ring-content-background-components)); /* #fff */\n --ring-popup-background-components: 255, 255, 255;\n --ring-popup-background-color: rgb(var(--ring-popup-background-components)); /* #fff */\n --ring-sidebar-background-components: 247, 249, 250;\n --ring-sidebar-background-color: rgb(var(--ring-sidebar-background-components)); /* #f7f9fa */\n --ring-selected-background-components: 212, 237, 255;\n --ring-selected-background-color: rgb(var(--ring-selected-background-components)); /* #d4edff */\n --ring-hover-background-components: 235, 246, 255;\n --ring-hover-background-color: rgb(var(--ring-hover-background-components)); /* #ebf6ff */\n --ring-navigation-background-components: 255, 255, 255;\n --ring-navigation-background-color: rgb(var(--ring-navigation-background-components)); /* #fff */\n --ring-tag-background-components: 230, 236, 242;\n --ring-tag-background-color: rgb(var(--ring-tag-background-components)); /* #e6ecf2 */\n --ring-tag-hover-background-components: 211, 218, 224;\n --ring-tag-hover-background-color: rgb(var(--ring-tag-hover-background-components)); /* #d3dae0 */\n --ring-removed-background-components: 255, 213, 203;\n --ring-removed-background-color: rgb(var(--ring-removed-background-components)); /* #ffd5cb */\n --ring-warning-background-components: 250, 236, 205;\n --ring-warning-background-color: rgb(var(--ring-warning-background-components)); /* #faeccd */\n --ring-added-background-components: 216, 240, 216;\n --ring-added-background-color: rgb(var(--ring-added-background-components)); /* #d8f0d8 */\n --ring-disabled-background-components: 245, 245, 245;\n --ring-disabled-background-color: rgb(var(--ring-disabled-background-components)); /* #f5f5f5 */\n --ring-disabled-selected-background-components: 232, 232, 232;\n --ring-disabled-selected-background-color: rgb(var(--ring-disabled-selected-background-components)); /* #e8e8e8 */\n --ring-button-danger-active-components: 255, 231, 232;\n --ring-button-danger-active-color: rgb(var(--ring-button-danger-active-components)); /* #ffe7e8 */\n --ring-button-loader-background-components: 51, 163, 255;\n --ring-button-loader-background: rgb(var(--ring-button-loader-background-components)); /* #33a3ff */\n --ring-button-primary-background-components: 26, 152, 255;\n --ring-button-primary-background-color: rgb(var(--ring-button-primary-background-components)); /* #1a98ff */\n --ring-table-loader-background-color: rgba(var(--ring-content-background-components), 0.5); /* #ffffff80 */\n\n /* Code */\n --ring-code-background-color: var(--ring-content-background-color);\n --ring-code-components: 0, 0, 0;\n --ring-code-color: rgb(var(--ring-code-components)); /* #000 */\n --ring-code-comment-components: 112, 112, 112;\n --ring-code-comment-color: rgb(var(--ring-code-comment-components)); /* #707070 */\n --ring-code-meta-components: 112, 112, 112;\n --ring-code-meta-color: rgb(var(--ring-code-meta-components)); /* #707070 */\n --ring-code-keyword-components: 0, 0, 128;\n --ring-code-keyword-color: rgb(var(--ring-code-keyword-components)); /* #000080 */\n --ring-code-tag-background-components: 239, 239, 239;\n --ring-code-tag-background-color: rgb(var(--ring-code-tag-background-components)); /* #efefef */\n --ring-code-tag-color: var(--ring-code-keyword-color);\n --ring-code-tag-font-weight: bold;\n --ring-code-field-components: 102, 14, 122;\n --ring-code-field-color: rgb(var(--ring-code-field-components)); /* #660e7a */\n --ring-code-attribute-components: 0, 0, 255;\n --ring-code-attribute-color: rgb(var(--ring-code-attribute-components)); /* #00f */\n --ring-code-number-color: var(--ring-code-attribute-color);\n --ring-code-string-components: 0, 122, 0;\n --ring-code-string-color: rgb(var(--ring-code-string-components)); /* #007a00 */\n --ring-code-addition-components: 170, 222, 170;\n --ring-code-addition-color: rgb(var(--ring-code-addition-components)); /* #aadeaa */\n --ring-code-deletion-components: 200, 200, 200;\n --ring-code-deletion-color: rgb(var(--ring-code-deletion-components)); /* #c8c8c8 */\n\n /* Metrics */\n --ring-border-radius: 4px;\n --ring-border-radius-small: 2px;\n --ring-font-size-larger: 15px;\n --ring-font-size: 14px;\n --ring-font-size-smaller: 12px;\n --ring-line-height-taller: 21px;\n --ring-line-height: 20px;\n --ring-line-height-lower: 18px;\n --ring-line-height-lowest: 16px;\n --ring-ease: 0.3s ease-out;\n --ring-fast-ease: 0.15s ease-out;\n --ring-font-family: system-ui, -apple-system, Segoe UI, Roboto, Noto Sans, Ubuntu, Cantarell, Helvetica Neue, Arial, sans-serif;\n --ring-font-family-monospace:\n Menlo,\n "Bitstream Vera Sans Mono",\n "Ubuntu Mono",\n Consolas,\n "Courier New",\n Courier,\n monospace;\n\n /* Common z-index-values */\n\n /* Invisible element is an absolutely positioned element which should be below */\n /* all other elements on the page */\n --ring-invisible-element-z-index: -1;\n\n /* z-index for position: fixed elements */\n --ring-fixed-z-index: 1;\n\n /* Elements that should overlay all other elements on the page */\n --ring-overlay-z-index: 5;\n\n /* Alerts should de displayed above overlays */\n --ring-alert-z-index: 6;\n}\n',"",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/global/variables.css"],names:[],mappings:"AAAA,mCAAmC;;AAEnC;;EAEE,gBAAgB;;EAEhB,YAAY;EACZ,qCAAqC;EACrC,mDAAmD,EAAE,YAAY;EACjE,wCAAwC;EACxC,yDAAyD,EAAE,YAAY;EACvE,qCAAqC;EACrC,mDAAmD,EAAE,YAAY;EACjE,+CAA+C;EAC/C,uEAAuE,EAAE,SAAS;EAClF,gDAAgD;EAChD,yEAAyE,EAAE,YAAY;EACvF,yDAAyD;EACzD,2FAA2F,EAAE,YAAY;EACzG,2DAA2D;EAC3D,+FAA+F,EAAE,YAAY,EAAE,uBAAuB;EACtI,8CAA8C;EAC9C,qEAAqE,EAAE,YAAY;EACnF,6CAA6C;EAC7C,mEAAmE,EAAE,YAAY;EACjF,0DAA0D;EAC1D,qDAAqD;EACrD,mCAAmC;EACnC,mDAAmD,EAAE,YAAY;EACjE,0DAA0D;EAC1D,0DAA0D,EAAE,YAAY;EACxE,yCAAyC;EACzC,+DAA+D,EAAE,YAAY;EAC7E,yCAAyC;EACzC,+DAA+D,EAAE,YAAY;EAC7E,2CAA2C;EAC3C,mEAAmE,EAAE,YAAY;EACjF,4CAA4C;EAC5C,mEAAmE,EAAE,YAAY;EACjF,6CAA6C;EAC7C,mEAAmE,EAAE,YAAY;EACjF,yCAAyC;EACzC,iDAAiD;EACjD,8EAA8E;EAC9E,yEAAyE;EACzE,oFAAoF;EACpF,2EAA2E;EAC3E,8CAA8C;EAC9C,qEAAqE,EAAE,YAAY;EACnF,mEAAmE;EACnE,8DAA8D;EAC9D,mDAAmD;EACnD,qFAAqF,EAAE,YAAY;EACnG,iHAAiH;EACjH,mHAAmH;;EAEnH,SAAS;EACT,uCAAuC;EACvC,uDAAuD,EAAE,YAAY;EACrE,mCAAmC;EACnC,mDAAmD,EAAE,YAAY;EACjE,mCAAmC;EACnC,mDAAmD,EAAE,YAAY;EACjE,yCAAyC;EACzC,+DAA+D,EAAE,YAAY;EAC7E,oCAAoC;EACpC,qDAAqD,EAAE,YAAY;EACnE,qCAAqC;EACrC,yDAAyD,EAAE,YAAY;EACvE,sCAAsC;EACtC,yDAAyD,EAAE,YAAY;EACvE,kCAAkC;EAClC,mDAAmD,EAAE,YAAY;EACjE,gDAAgD;EAChD,2CAA2C;EAC3C,+DAA+D,EAAE,SAAS;EAC1E,4CAA4C;EAC5C,0CAA0C;EAC1C,6DAA6D,EAAE,YAAY;EAC3E,yCAAyC;EACzC,2DAA2D,EAAE,SAAS;;EAEtE,eAAe;EACf,mDAAmD;EACnD,+EAA+E,EAAE,SAAS;EAC1F,iDAAiD;EACjD,2EAA2E,EAAE,SAAS;EACtF,mDAAmD;EACnD,+EAA+E,EAAE,YAAY;EAC7F,oDAAoD;EACpD,iFAAiF,EAAE,YAAY;EAC/F,iDAAiD;EACjD,2EAA2E,EAAE,YAAY;EACzF,sDAAsD;EACtD,qFAAqF,EAAE,SAAS;EAChG,+CAA+C;EAC/C,uEAAuE,EAAE,YAAY;EACrF,qDAAqD;EACrD,mFAAmF,EAAE,YAAY;EACjG,mDAAmD;EACnD,+EAA+E,EAAE,YAAY;EAC7F,mDAAmD;EACnD,+EAA+E,EAAE,YAAY;EAC7F,iDAAiD;EACjD,2EAA2E,EAAE,YAAY;EACzF,oDAAoD;EACpD,iFAAiF,EAAE,YAAY;EAC/F,6DAA6D;EAC7D,mGAAmG,EAAE,YAAY;EACjH,qDAAqD;EACrD,mFAAmF,EAAE,YAAY;EACjG,wDAAwD;EACxD,qFAAqF,EAAE,YAAY;EACnG,yDAAyD;EACzD,6FAA6F,EAAE,YAAY;EAC3G,0FAA0F,EAAE,cAAc;;EAE1G,SAAS;EACT,kEAAkE;EAClE,+BAA+B;EAC/B,mDAAmD,EAAE,SAAS;EAC9D,6CAA6C;EAC7C,mEAAmE,EAAE,YAAY;EACjF,0CAA0C;EAC1C,6DAA6D,EAAE,YAAY;EAC3E,yCAAyC;EACzC,mEAAmE,EAAE,YAAY;EACjF,oDAAoD;EACpD,iFAAiF,EAAE,YAAY;EAC/F,qDAAqD;EACrD,iCAAiC;EACjC,0CAA0C;EAC1C,+DAA+D,EAAE,YAAY;EAC7E,2CAA2C;EAC3C,uEAAuE,EAAE,SAAS;EAClF,0DAA0D;EAC1D,wCAAwC;EACxC,iEAAiE,EAAE,YAAY;EAC/E,8CAA8C;EAC9C,qEAAqE,EAAE,YAAY;EACnF,8CAA8C;EAC9C,qEAAqE,EAAE,YAAY;;EAEnF,YAAY;EACZ,yBAAyB;EACzB,+BAA+B;EAC/B,6BAA6B;EAC7B,sBAAsB;EACtB,8BAA8B;EAC9B,+BAA+B;EAC/B,wBAAwB;EACxB,8BAA8B;EAC9B,+BAA+B;EAC/B,0BAA0B;EAC1B,gCAAgC;EAChC,+HAAgD;EAChD;;;;;;;aAOW;;EAEX,0BAA0B;;EAE1B,gFAAgF;EAChF,mCAAmC;EACnC,oCAAoC;;EAEpC,yCAAyC;EACzC,uBAAuB;;EAEvB,gEAAgE;EAChE,yBAAyB;;EAEzB,8CAA8C;EAC9C,uBAAuB;AACzB",sourcesContent:['/* stylelint-disable color-no-hex */\n\n.light,\n:root {\n --ring-unit: 8px;\n\n /* Element */\n --ring-line-components: 223, 229, 235;\n --ring-line-color: rgb(var(--ring-line-components)); /* #dfe5eb */\n --ring-borders-components: 197, 209, 219;\n --ring-borders-color: rgb(var(--ring-borders-components)); /* #c5d1db */\n --ring-icon-components: 184, 209, 229;\n --ring-icon-color: rgb(var(--ring-icon-components)); /* #b8d1e5 */\n --ring-icon-secondary-components: 153, 153, 153;\n --ring-icon-secondary-color: rgb(var(--ring-icon-secondary-components)); /* #999 */\n --ring-border-disabled-components: 232, 232, 232;\n --ring-border-disabled-color: rgb(var(--ring-border-disabled-components)); /* #e8e8e8 */\n --ring-border-selected-disabled-components: 212, 212, 212;\n --ring-border-selected-disabled-color: rgb(var(--ring-border-selected-disabled-components)); /* #d4d4d4 */\n --ring-border-unselected-disabled-components: 232, 232, 232;\n --ring-border-unselected-disabled-color: rgb(var(--ring-border-unselected-disabled-components)); /* #e8e8e8 */ /* TODO remove in 6.0 */\n --ring-icon-disabled-components: 212, 212, 212;\n --ring-icon-disabled-color: rgb(var(--ring-icon-disabled-components)); /* #d4d4d4 */\n --ring-border-hover-components: 128, 198, 255;\n --ring-border-hover-color: rgb(var(--ring-border-hover-components)); /* #80c6ff */\n --ring-icon-hover-components: var(--ring-link-hover-color);\n --ring-icon-hover-color: var(--ring-link-hover-color);\n --ring-main-components: 0, 128, 229;\n --ring-main-color: rgb(var(--ring-main-components)); /* #0080e5 */\n --ring-action-link-components: var(--ring-main-components);\n --ring-action-link-color: rgb(var(--ring-main-components)); /* #0080e5 */\n --ring-main-hover-components: 0, 112, 204;\n --ring-main-hover-color: rgb(var(--ring-main-hover-components)); /* #0070cc */\n --ring-icon-error-components: 219, 88, 96;\n --ring-icon-error-color: rgb(var(--ring-icon-error-components)); /* #db5860 */\n --ring-icon-warning-components: 237, 162, 0;\n --ring-icon-warning-color: rgb(var(--ring-icon-warning-components)); /* #eda200 */\n --ring-icon-success-components: 89, 168, 105;\n --ring-icon-success-color: rgb(var(--ring-icon-success-components)); /* #59a869 */\n --ring-pale-control-components: 207, 219, 229;\n --ring-pale-control-color: rgb(var(--ring-pale-control-components)); /* #cfdbe5 */\n --ring-popup-border-components: 0, 28, 54;\n --ring-popup-border-color: var(--ring-line-color);\n --ring-popup-shadow-components: rgba(var(--ring-popup-border-components), 0.1);\n --ring-popup-shadow-color: rgba(var(--ring-popup-border-components), 0.1);\n --ring-popup-secondary-shadow-color: rgba(var(--ring-popup-border-components), 0.04);\n --ring-message-shadow-color: rgba(var(--ring-popup-border-components), 0.3);\n --ring-pinned-shadow-components: 115, 117, 119;\n --ring-pinned-shadow-color: rgb(var(--ring-pinned-shadow-components)); /* #737577 */\n --ring-button-danger-hover-components: var(--ring-icon-error-color);\n --ring-button-danger-hover-color: var(--ring-icon-error-color);\n --ring-button-primary-border-components: 0, 98, 178;\n --ring-button-primary-border-color: rgb(var(--ring-button-primary-border-components)); /* #0062b2 */\n --ring-popup-shadow: 0 2px 8px var(--ring-popup-shadow-color), 0 1px 2px var(--ring-popup-secondary-shadow-color);\n --ring-dialog-shadow: 0 4px 24px var(--ring-popup-shadow-color), 0 2px 6px var(--ring-popup-secondary-shadow-color);\n\n /* Text */\n --ring-search-components: 102, 158, 204;\n --ring-search-color: rgb(var(--ring-search-components)); /* #669ecc */\n --ring-hint-components: 64, 99, 128;\n --ring-hint-color: rgb(var(--ring-hint-components)); /* #406380 */\n --ring-link-components: 15, 91, 153;\n --ring-link-color: rgb(var(--ring-link-components)); /* #0f5b99 */\n --ring-link-hover-components: 255, 0, 140;\n --ring-link-hover-color: rgb(var(--ring-link-hover-components)); /* #ff008c */\n --ring-error-components: 169, 15, 26;\n --ring-error-color: rgb(var(--ring-error-components)); /* #a90f1a */\n --ring-warning-components: 178, 92, 0;\n --ring-warning-color: rgb(var(--ring-warning-components)); /* #b25c00 */\n --ring-success-components: 12, 117, 35;\n --ring-success-color: rgb(var(--ring-success-components)); /* #0c7523 */\n --ring-text-components: 31, 35, 38;\n --ring-text-color: rgb(var(--ring-text-components)); /* #1f2326 */\n --ring-active-text-color: var(--ring-text-color);\n --ring-white-text-components: 255, 255, 255;\n --ring-white-text-color: rgb(var(--ring-white-text-components)); /* #fff */\n --ring-heading-color: var(--ring-text-color);\n --ring-secondary-components: 115, 117, 119;\n --ring-secondary-color: rgb(var(--ring-secondary-components)); /* #737577 */\n --ring-disabled-components: 153, 153, 153;\n --ring-disabled-color: rgb(var(--ring-disabled-components)); /* #999 */\n\n /* Background */\n --ring-content-background-components: 255, 255, 255;\n --ring-content-background-color: rgb(var(--ring-content-background-components)); /* #fff */\n --ring-popup-background-components: 255, 255, 255;\n --ring-popup-background-color: rgb(var(--ring-popup-background-components)); /* #fff */\n --ring-sidebar-background-components: 247, 249, 250;\n --ring-sidebar-background-color: rgb(var(--ring-sidebar-background-components)); /* #f7f9fa */\n --ring-selected-background-components: 212, 237, 255;\n --ring-selected-background-color: rgb(var(--ring-selected-background-components)); /* #d4edff */\n --ring-hover-background-components: 235, 246, 255;\n --ring-hover-background-color: rgb(var(--ring-hover-background-components)); /* #ebf6ff */\n --ring-navigation-background-components: 255, 255, 255;\n --ring-navigation-background-color: rgb(var(--ring-navigation-background-components)); /* #fff */\n --ring-tag-background-components: 230, 236, 242;\n --ring-tag-background-color: rgb(var(--ring-tag-background-components)); /* #e6ecf2 */\n --ring-tag-hover-background-components: 211, 218, 224;\n --ring-tag-hover-background-color: rgb(var(--ring-tag-hover-background-components)); /* #d3dae0 */\n --ring-removed-background-components: 255, 213, 203;\n --ring-removed-background-color: rgb(var(--ring-removed-background-components)); /* #ffd5cb */\n --ring-warning-background-components: 250, 236, 205;\n --ring-warning-background-color: rgb(var(--ring-warning-background-components)); /* #faeccd */\n --ring-added-background-components: 216, 240, 216;\n --ring-added-background-color: rgb(var(--ring-added-background-components)); /* #d8f0d8 */\n --ring-disabled-background-components: 245, 245, 245;\n --ring-disabled-background-color: rgb(var(--ring-disabled-background-components)); /* #f5f5f5 */\n --ring-disabled-selected-background-components: 232, 232, 232;\n --ring-disabled-selected-background-color: rgb(var(--ring-disabled-selected-background-components)); /* #e8e8e8 */\n --ring-button-danger-active-components: 255, 231, 232;\n --ring-button-danger-active-color: rgb(var(--ring-button-danger-active-components)); /* #ffe7e8 */\n --ring-button-loader-background-components: 51, 163, 255;\n --ring-button-loader-background: rgb(var(--ring-button-loader-background-components)); /* #33a3ff */\n --ring-button-primary-background-components: 26, 152, 255;\n --ring-button-primary-background-color: rgb(var(--ring-button-primary-background-components)); /* #1a98ff */\n --ring-table-loader-background-color: rgba(var(--ring-content-background-components), 0.5); /* #ffffff80 */\n\n /* Code */\n --ring-code-background-color: var(--ring-content-background-color);\n --ring-code-components: 0, 0, 0;\n --ring-code-color: rgb(var(--ring-code-components)); /* #000 */\n --ring-code-comment-components: 112, 112, 112;\n --ring-code-comment-color: rgb(var(--ring-code-comment-components)); /* #707070 */\n --ring-code-meta-components: 112, 112, 112;\n --ring-code-meta-color: rgb(var(--ring-code-meta-components)); /* #707070 */\n --ring-code-keyword-components: 0, 0, 128;\n --ring-code-keyword-color: rgb(var(--ring-code-keyword-components)); /* #000080 */\n --ring-code-tag-background-components: 239, 239, 239;\n --ring-code-tag-background-color: rgb(var(--ring-code-tag-background-components)); /* #efefef */\n --ring-code-tag-color: var(--ring-code-keyword-color);\n --ring-code-tag-font-weight: bold;\n --ring-code-field-components: 102, 14, 122;\n --ring-code-field-color: rgb(var(--ring-code-field-components)); /* #660e7a */\n --ring-code-attribute-components: 0, 0, 255;\n --ring-code-attribute-color: rgb(var(--ring-code-attribute-components)); /* #00f */\n --ring-code-number-color: var(--ring-code-attribute-color);\n --ring-code-string-components: 0, 122, 0;\n --ring-code-string-color: rgb(var(--ring-code-string-components)); /* #007a00 */\n --ring-code-addition-components: 170, 222, 170;\n --ring-code-addition-color: rgb(var(--ring-code-addition-components)); /* #aadeaa */\n --ring-code-deletion-components: 200, 200, 200;\n --ring-code-deletion-color: rgb(var(--ring-code-deletion-components)); /* #c8c8c8 */\n\n /* Metrics */\n --ring-border-radius: 4px;\n --ring-border-radius-small: 2px;\n --ring-font-size-larger: 15px;\n --ring-font-size: 14px;\n --ring-font-size-smaller: 12px;\n --ring-line-height-taller: 21px;\n --ring-line-height: 20px;\n --ring-line-height-lower: 18px;\n --ring-line-height-lowest: 16px;\n --ring-ease: 0.3s ease-out;\n --ring-fast-ease: 0.15s ease-out;\n --ring-font-family: system-ui, Arial, sans-serif;\n --ring-font-family-monospace:\n Menlo,\n "Bitstream Vera Sans Mono",\n "Ubuntu Mono",\n Consolas,\n "Courier New",\n Courier,\n monospace;\n\n /* Common z-index-values */\n\n /* Invisible element is an absolutely positioned element which should be below */\n /* all other elements on the page */\n --ring-invisible-element-z-index: -1;\n\n /* z-index for position: fixed elements */\n --ring-fixed-z-index: 1;\n\n /* Elements that should overlay all other elements on the page */\n --ring-overlay-z-index: 5;\n\n /* Alerts should de displayed above overlays */\n --ring-alert-z-index: 6;\n}\n'],sourceRoot:""}]),a.locals={light:"light_f331"};const l=a},9173:(e,n,t)=>{"use strict";t.d(n,{A:()=>l});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i)()(o());a.push([e.id,"/* stylelint-disable color-no-hex */\n\n.ring-ui-theme-dark,\n.dark_d4a9,\n:root.dark_d4a9 {\n --ring-line-components: 71, 81, 89;\n --ring-line-color: rgb(var(--ring-line-components)); /* #475159 */\n --ring-borders-components: 64, 99, 128;\n --ring-borders-color: rgb(var(--ring-borders-components)); /* #406380 */\n --ring-icon-components: 128, 146, 157;\n --ring-icon-color: rgb(var(--ring-icon-components)); /* #80929d */\n --ring-icon-secondary-components: 128, 146, 157;\n --ring-icon-secondary-color: rgb(var(--ring-icon-secondary-components)); /* #80929d */\n --ring-border-disabled-components: 54, 54, 54;\n --ring-border-disabled-color: rgb(var(--ring-border-disabled-components)); /* #363636 */\n --ring-border-selected-disabled-components: 54, 54, 54;\n --ring-border-selected-disabled-color: rgb(var(--ring-border-selected-disabled-components)); /* #363636 */\n --ring-border-unselected-disabled-components: 54, 54, 54;\n --ring-border-unselected-disabled-color: rgb(var(--ring-border-unselected-disabled-components)); /* #363636 */ /* TODO remove in 6.0 */\n --ring-icon-disabled-components: 80, 82, 83;\n --ring-icon-disabled-color: rgb(var(--ring-icon-disabled-components)); /* #505253 */\n --ring-border-hover-components: 112, 177, 230;\n --ring-border-hover-color: rgb(var(--ring-border-hover-components)); /* #70b1e6 */\n --ring-main-components: 0, 142, 255;\n --ring-main-color: rgb(var(--ring-main-components)); /* #008eff */\n --ring-action-link-components: var(--ring-main-components);\n --ring-action-link-color: rgb(var(--ring-main-components)); /* #008eff */\n --ring-main-hover-components: 0, 126, 229;\n --ring-main-hover-color: rgb(var(--ring-main-hover-components)); /* #007ee5 */\n --ring-icon-error-components: 219, 88, 96;\n --ring-icon-error-color: rgb(var(--ring-icon-error-components)); /* #db5860 */\n --ring-icon-warning-components: 237, 162, 0;\n --ring-icon-warning-color: rgb(var(--ring-icon-warning-components)); /* #eda200 */\n --ring-icon-success-components: 71, 212, 100;\n --ring-icon-success-color: rgb(var(--ring-icon-success-components)); /* #47d464 */\n --ring-popup-border-components: 0, 42, 76;\n --ring-popup-border-color: rgba(var(--ring-popup-border-components), 0.1);\n --ring-popup-shadow-color: rgba(var(--ring-popup-border-components), 0.15);\n --ring-message-shadow-color: rgba(var(--ring-popup-border-components), 0.3);\n --ring-pinned-shadow-components: 0, 0, 0;\n --ring-pinned-shadow-color: rgb(var(--ring-pinned-shadow-components)); /* #000 */\n --ring-button-danger-hover-color: var(--ring-error-color);\n --ring-button-primary-border-components: 128, 198, 255;\n --ring-button-primary-border-color: rgb(var(--ring-button-primary-border-components)); /* #80c6ff */\n\n /* Text */\n --ring-hint-components: 128, 146, 157;\n --ring-hint-color: rgb(var(--ring-hint-components)); /* #80929d */\n --ring-link-components: 112, 177, 230;\n --ring-link-color: rgb(var(--ring-link-components)); /* #70b1e6 */\n --ring-error-components: 219, 88, 96;\n --ring-error-color: rgb(var(--ring-error-components)); /* #db5860 */\n --ring-warning-components: 237, 162, 0;\n --ring-warning-color: rgb(var(--ring-warning-components)); /* #eda200 */\n --ring-success-components: 71, 212, 100;\n --ring-success-color: rgb(var(--ring-success-components)); /* #47d464 */\n --ring-text-components: 187, 187, 187;\n --ring-text-color: rgb(var(--ring-text-components)); /* #bbb */\n --ring-active-text-components: 255, 255, 255;\n --ring-active-text-color: rgb(var(--ring-active-text-components)); /* #fff */\n --ring-heading-color: var(--ring-text-color);\n --ring-secondary-components: 128, 146, 157;\n --ring-secondary-color: rgb(var(--ring-secondary-components)); /* #80929d */\n --ring-disabled-components: 81, 95, 104;\n --ring-disabled-color: rgb(var(--ring-disabled-components)); /* #515F68 */\n\n /* Background */\n --ring-content-background-components: 35, 39, 43;\n --ring-content-background-color: rgb(var(--ring-content-background-components)); /* #23272b */\n --ring-popup-background-components: 17, 19, 20;\n --ring-popup-background-color: rgb(var(--ring-popup-background-components)); /* #111314 */\n --ring-sidebar-background-components: 40, 52, 61;\n --ring-sidebar-background-color: rgb(var(--ring-sidebar-background-components)); /* #28343d */\n --ring-selected-background-components: 6, 38, 64;\n --ring-selected-background-color: rgb(var(--ring-selected-background-components)); /* #062640 */\n --ring-hover-background-components: 11, 26, 38;\n --ring-hover-background-color: rgb(var(--ring-hover-background-components)); /* #0b1a26 */\n --ring-navigation-background-components: 17, 19, 20;\n --ring-navigation-background-color: rgb(var(--ring-navigation-background-components)); /* #111314 */\n --ring-tag-background-components: 62, 77, 89;\n --ring-tag-background-color: rgb(var(--ring-tag-background-components)); /* #3e4d59 */\n --ring-tag-hover-background-components: 51, 62, 71;\n --ring-tag-hover-background-color: rgb(var(--ring-tag-hover-background-components)); /* #333e47 */\n --ring-removed-background-components: 143, 82, 71;\n --ring-removed-background-color: rgb(var(--ring-removed-background-components)); /* #8f5247 */\n --ring-warning-background-components: 89, 61, 1;\n --ring-warning-background-color: rgb(var(--ring-warning-background-components)); /* #593d01 */\n --ring-added-background-components: 54, 89, 71;\n --ring-added-background-color: rgb(var(--ring-added-background-components)); /* #365947 */\n --ring-disabled-background-components: 44, 47, 51;\n --ring-disabled-background-color: rgb(var(--ring-disabled-background-components)); /* #2C2F33 */\n --ring-disabled-selected-background-components: 44, 47, 51;\n --ring-disabled-selected-background-color: rgb(var(--ring-disabled-selected-background-components)); /* #2C2F33 */\n --ring-button-danger-active-components: 38, 8, 10;\n --ring-button-danger-active-color: rgb(var(--ring-button-danger-active-components)); /* #26080a */\n --ring-button-primary-background-components: 0, 126, 229;\n --ring-button-primary-background-color: rgb(var(--ring-button-primary-background-components)); /* #007ee5 */\n --ring-table-loader-background-color: rgba(var(--ring-content-background-components), 0.5); /* #23272b80 */\n\n /* Code */\n --ring-code-background-components: 43, 43, 43;\n --ring-code-background-color: rgb(var(--ring-code-background-components)); /* #2b2b2b */\n --ring-code-components: 169, 183, 198;\n --ring-code-color: rgb(var(--ring-code-components)); /* #a9b7c6 */\n --ring-code-meta-components: 187, 181, 41;\n --ring-code-meta-color: rgb(var(--ring-code-meta-components)); /* #bbb529 */\n --ring-code-keyword-components: 204, 120, 50;\n --ring-code-keyword-color: rgb(var(--ring-code-keyword-components)); /* #cc7832 */\n --ring-code-tag-background-components: 43, 43, 43;\n --ring-code-tag-background-color: rgb(var(--ring-code-tag-background-components)); /* #2b2b2b */\n --ring-code-tag-components: 232, 191, 106;\n --ring-code-tag-color: rgb(var(--ring-code-tag-components)); /* #e8bf6a */\n --ring-code-tag-font-weight: normal;\n --ring-code-field-components: 152, 118, 170;\n --ring-code-field-color: rgb(var(--ring-code-tag-font-weight)); /* #9876aa */\n --ring-code-attribute-components: 186, 186, 186;\n --ring-code-attribute-color: rgb(var(--ring-code-attribute-components)); /* #bababa */\n --ring-code-number-components: 104, 151, 187;\n --ring-code-number-color: rgb(var(--ring-code-number-components)); /* #6897bb */\n --ring-code-string-components: 106, 135, 89;\n --ring-code-string-color: rgb(var(--ring-code-string-components)); /* #6a8759 */\n --ring-code-addition-components: 68, 113, 82;\n --ring-code-addition-color: rgb(var(--ring-code-addition-components)); /* #447152 */\n --ring-code-deletion-components: 101, 110, 118;\n --ring-code-deletion-color: rgb(var(--ring-code-deletion-components)); /* #656e76 */\n\n color-scheme: dark;\n}\n","",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/global/variables_dark.css"],names:[],mappings:"AAAA,mCAAmC;;AAEnC;;;EAGE,kCAAkC;EAClC,mDAAmD,EAAE,YAAY;EACjE,sCAAsC;EACtC,yDAAyD,EAAE,YAAY;EACvE,qCAAqC;EACrC,mDAAmD,EAAE,YAAY;EACjE,+CAA+C;EAC/C,uEAAuE,EAAE,YAAY;EACrF,6CAA6C;EAC7C,yEAAyE,EAAE,YAAY;EACvF,sDAAsD;EACtD,2FAA2F,EAAE,YAAY;EACzG,wDAAwD;EACxD,+FAA+F,EAAE,YAAY,EAAE,uBAAuB;EACtI,2CAA2C;EAC3C,qEAAqE,EAAE,YAAY;EACnF,6CAA6C;EAC7C,mEAAmE,EAAE,YAAY;EACjF,mCAAmC;EACnC,mDAAmD,EAAE,YAAY;EACjE,0DAA0D;EAC1D,0DAA0D,EAAE,YAAY;EACxE,yCAAyC;EACzC,+DAA+D,EAAE,YAAY;EAC7E,yCAAyC;EACzC,+DAA+D,EAAE,YAAY;EAC7E,2CAA2C;EAC3C,mEAAmE,EAAE,YAAY;EACjF,4CAA4C;EAC5C,mEAAmE,EAAE,YAAY;EACjF,yCAAyC;EACzC,yEAAyE;EACzE,0EAA0E;EAC1E,2EAA2E;EAC3E,wCAAwC;EACxC,qEAAqE,EAAE,SAAS;EAChF,yDAAyD;EACzD,sDAAsD;EACtD,qFAAqF,EAAE,YAAY;;EAEnG,SAAS;EACT,qCAAqC;EACrC,mDAAmD,EAAE,YAAY;EACjE,qCAAqC;EACrC,mDAAmD,EAAE,YAAY;EACjE,oCAAoC;EACpC,qDAAqD,EAAE,YAAY;EACnE,sCAAsC;EACtC,yDAAyD,EAAE,YAAY;EACvE,uCAAuC;EACvC,yDAAyD,EAAE,YAAY;EACvE,qCAAqC;EACrC,mDAAmD,EAAE,SAAS;EAC9D,4CAA4C;EAC5C,iEAAiE,EAAE,SAAS;EAC5E,4CAA4C;EAC5C,0CAA0C;EAC1C,6DAA6D,EAAE,YAAY;EAC3E,uCAAuC;EACvC,2DAA2D,EAAE,YAAY;;EAEzE,eAAe;EACf,gDAAgD;EAChD,+EAA+E,EAAE,YAAY;EAC7F,8CAA8C;EAC9C,2EAA2E,EAAE,YAAY;EACzF,gDAAgD;EAChD,+EAA+E,EAAE,YAAY;EAC7F,gDAAgD;EAChD,iFAAiF,EAAE,YAAY;EAC/F,8CAA8C;EAC9C,2EAA2E,EAAE,YAAY;EACzF,mDAAmD;EACnD,qFAAqF,EAAE,YAAY;EACnG,4CAA4C;EAC5C,uEAAuE,EAAE,YAAY;EACrF,kDAAkD;EAClD,mFAAmF,EAAE,YAAY;EACjG,iDAAiD;EACjD,+EAA+E,EAAE,YAAY;EAC7F,+CAA+C;EAC/C,+EAA+E,EAAE,YAAY;EAC7F,8CAA8C;EAC9C,2EAA2E,EAAE,YAAY;EACzF,iDAAiD;EACjD,iFAAiF,EAAE,YAAY;EAC/F,0DAA0D;EAC1D,mGAAmG,EAAE,YAAY;EACjH,iDAAiD;EACjD,mFAAmF,EAAE,YAAY;EACjG,wDAAwD;EACxD,6FAA6F,EAAE,YAAY;EAC3G,0FAA0F,EAAE,cAAc;;EAE1G,SAAS;EACT,6CAA6C;EAC7C,yEAAyE,EAAE,YAAY;EACvF,qCAAqC;EACrC,mDAAmD,EAAE,YAAY;EACjE,yCAAyC;EACzC,6DAA6D,EAAE,YAAY;EAC3E,4CAA4C;EAC5C,mEAAmE,EAAE,YAAY;EACjF,iDAAiD;EACjD,iFAAiF,EAAE,YAAY;EAC/F,yCAAyC;EACzC,2DAA2D,EAAE,YAAY;EACzE,mCAAmC;EACnC,2CAA2C;EAC3C,8DAA8D,EAAE,YAAY;EAC5E,+CAA+C;EAC/C,uEAAuE,EAAE,YAAY;EACrF,4CAA4C;EAC5C,iEAAiE,EAAE,YAAY;EAC/E,2CAA2C;EAC3C,iEAAiE,EAAE,YAAY;EAC/E,4CAA4C;EAC5C,qEAAqE,EAAE,YAAY;EACnF,8CAA8C;EAC9C,qEAAqE,EAAE,YAAY;;EAEnF,kBAAkB;AACpB",sourcesContent:["/* stylelint-disable color-no-hex */\n\n:global(.ring-ui-theme-dark),\n.dark,\n:root.dark {\n --ring-line-components: 71, 81, 89;\n --ring-line-color: rgb(var(--ring-line-components)); /* #475159 */\n --ring-borders-components: 64, 99, 128;\n --ring-borders-color: rgb(var(--ring-borders-components)); /* #406380 */\n --ring-icon-components: 128, 146, 157;\n --ring-icon-color: rgb(var(--ring-icon-components)); /* #80929d */\n --ring-icon-secondary-components: 128, 146, 157;\n --ring-icon-secondary-color: rgb(var(--ring-icon-secondary-components)); /* #80929d */\n --ring-border-disabled-components: 54, 54, 54;\n --ring-border-disabled-color: rgb(var(--ring-border-disabled-components)); /* #363636 */\n --ring-border-selected-disabled-components: 54, 54, 54;\n --ring-border-selected-disabled-color: rgb(var(--ring-border-selected-disabled-components)); /* #363636 */\n --ring-border-unselected-disabled-components: 54, 54, 54;\n --ring-border-unselected-disabled-color: rgb(var(--ring-border-unselected-disabled-components)); /* #363636 */ /* TODO remove in 6.0 */\n --ring-icon-disabled-components: 80, 82, 83;\n --ring-icon-disabled-color: rgb(var(--ring-icon-disabled-components)); /* #505253 */\n --ring-border-hover-components: 112, 177, 230;\n --ring-border-hover-color: rgb(var(--ring-border-hover-components)); /* #70b1e6 */\n --ring-main-components: 0, 142, 255;\n --ring-main-color: rgb(var(--ring-main-components)); /* #008eff */\n --ring-action-link-components: var(--ring-main-components);\n --ring-action-link-color: rgb(var(--ring-main-components)); /* #008eff */\n --ring-main-hover-components: 0, 126, 229;\n --ring-main-hover-color: rgb(var(--ring-main-hover-components)); /* #007ee5 */\n --ring-icon-error-components: 219, 88, 96;\n --ring-icon-error-color: rgb(var(--ring-icon-error-components)); /* #db5860 */\n --ring-icon-warning-components: 237, 162, 0;\n --ring-icon-warning-color: rgb(var(--ring-icon-warning-components)); /* #eda200 */\n --ring-icon-success-components: 71, 212, 100;\n --ring-icon-success-color: rgb(var(--ring-icon-success-components)); /* #47d464 */\n --ring-popup-border-components: 0, 42, 76;\n --ring-popup-border-color: rgba(var(--ring-popup-border-components), 0.1);\n --ring-popup-shadow-color: rgba(var(--ring-popup-border-components), 0.15);\n --ring-message-shadow-color: rgba(var(--ring-popup-border-components), 0.3);\n --ring-pinned-shadow-components: 0, 0, 0;\n --ring-pinned-shadow-color: rgb(var(--ring-pinned-shadow-components)); /* #000 */\n --ring-button-danger-hover-color: var(--ring-error-color);\n --ring-button-primary-border-components: 128, 198, 255;\n --ring-button-primary-border-color: rgb(var(--ring-button-primary-border-components)); /* #80c6ff */\n\n /* Text */\n --ring-hint-components: 128, 146, 157;\n --ring-hint-color: rgb(var(--ring-hint-components)); /* #80929d */\n --ring-link-components: 112, 177, 230;\n --ring-link-color: rgb(var(--ring-link-components)); /* #70b1e6 */\n --ring-error-components: 219, 88, 96;\n --ring-error-color: rgb(var(--ring-error-components)); /* #db5860 */\n --ring-warning-components: 237, 162, 0;\n --ring-warning-color: rgb(var(--ring-warning-components)); /* #eda200 */\n --ring-success-components: 71, 212, 100;\n --ring-success-color: rgb(var(--ring-success-components)); /* #47d464 */\n --ring-text-components: 187, 187, 187;\n --ring-text-color: rgb(var(--ring-text-components)); /* #bbb */\n --ring-active-text-components: 255, 255, 255;\n --ring-active-text-color: rgb(var(--ring-active-text-components)); /* #fff */\n --ring-heading-color: var(--ring-text-color);\n --ring-secondary-components: 128, 146, 157;\n --ring-secondary-color: rgb(var(--ring-secondary-components)); /* #80929d */\n --ring-disabled-components: 81, 95, 104;\n --ring-disabled-color: rgb(var(--ring-disabled-components)); /* #515F68 */\n\n /* Background */\n --ring-content-background-components: 35, 39, 43;\n --ring-content-background-color: rgb(var(--ring-content-background-components)); /* #23272b */\n --ring-popup-background-components: 17, 19, 20;\n --ring-popup-background-color: rgb(var(--ring-popup-background-components)); /* #111314 */\n --ring-sidebar-background-components: 40, 52, 61;\n --ring-sidebar-background-color: rgb(var(--ring-sidebar-background-components)); /* #28343d */\n --ring-selected-background-components: 6, 38, 64;\n --ring-selected-background-color: rgb(var(--ring-selected-background-components)); /* #062640 */\n --ring-hover-background-components: 11, 26, 38;\n --ring-hover-background-color: rgb(var(--ring-hover-background-components)); /* #0b1a26 */\n --ring-navigation-background-components: 17, 19, 20;\n --ring-navigation-background-color: rgb(var(--ring-navigation-background-components)); /* #111314 */\n --ring-tag-background-components: 62, 77, 89;\n --ring-tag-background-color: rgb(var(--ring-tag-background-components)); /* #3e4d59 */\n --ring-tag-hover-background-components: 51, 62, 71;\n --ring-tag-hover-background-color: rgb(var(--ring-tag-hover-background-components)); /* #333e47 */\n --ring-removed-background-components: 143, 82, 71;\n --ring-removed-background-color: rgb(var(--ring-removed-background-components)); /* #8f5247 */\n --ring-warning-background-components: 89, 61, 1;\n --ring-warning-background-color: rgb(var(--ring-warning-background-components)); /* #593d01 */\n --ring-added-background-components: 54, 89, 71;\n --ring-added-background-color: rgb(var(--ring-added-background-components)); /* #365947 */\n --ring-disabled-background-components: 44, 47, 51;\n --ring-disabled-background-color: rgb(var(--ring-disabled-background-components)); /* #2C2F33 */\n --ring-disabled-selected-background-components: 44, 47, 51;\n --ring-disabled-selected-background-color: rgb(var(--ring-disabled-selected-background-components)); /* #2C2F33 */\n --ring-button-danger-active-components: 38, 8, 10;\n --ring-button-danger-active-color: rgb(var(--ring-button-danger-active-components)); /* #26080a */\n --ring-button-primary-background-components: 0, 126, 229;\n --ring-button-primary-background-color: rgb(var(--ring-button-primary-background-components)); /* #007ee5 */\n --ring-table-loader-background-color: rgba(var(--ring-content-background-components), 0.5); /* #23272b80 */\n\n /* Code */\n --ring-code-background-components: 43, 43, 43;\n --ring-code-background-color: rgb(var(--ring-code-background-components)); /* #2b2b2b */\n --ring-code-components: 169, 183, 198;\n --ring-code-color: rgb(var(--ring-code-components)); /* #a9b7c6 */\n --ring-code-meta-components: 187, 181, 41;\n --ring-code-meta-color: rgb(var(--ring-code-meta-components)); /* #bbb529 */\n --ring-code-keyword-components: 204, 120, 50;\n --ring-code-keyword-color: rgb(var(--ring-code-keyword-components)); /* #cc7832 */\n --ring-code-tag-background-components: 43, 43, 43;\n --ring-code-tag-background-color: rgb(var(--ring-code-tag-background-components)); /* #2b2b2b */\n --ring-code-tag-components: 232, 191, 106;\n --ring-code-tag-color: rgb(var(--ring-code-tag-components)); /* #e8bf6a */\n --ring-code-tag-font-weight: normal;\n --ring-code-field-components: 152, 118, 170;\n --ring-code-field-color: rgb(var(--ring-code-tag-font-weight)); /* #9876aa */\n --ring-code-attribute-components: 186, 186, 186;\n --ring-code-attribute-color: rgb(var(--ring-code-attribute-components)); /* #bababa */\n --ring-code-number-components: 104, 151, 187;\n --ring-code-number-color: rgb(var(--ring-code-number-components)); /* #6897bb */\n --ring-code-string-components: 106, 135, 89;\n --ring-code-string-color: rgb(var(--ring-code-string-components)); /* #6a8759 */\n --ring-code-addition-components: 68, 113, 82;\n --ring-code-addition-color: rgb(var(--ring-code-addition-components)); /* #447152 */\n --ring-code-deletion-components: 101, 110, 118;\n --ring-code-deletion-color: rgb(var(--ring-code-deletion-components)); /* #656e76 */\n\n color-scheme: dark;\n}\n"],sourceRoot:""}]),a.locals={dark:"dark_d4a9"};const l=a},5066:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>u});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9106),c=t(5280),s=a()(o());s.i(c.A),s.i(l.default,"",!0),s.push([e.id,'.icon_aaa7 {\n display: inline-block;\n\n fill: currentColor;\n}\n\n.glyph_f986 {\n display: inline-flex;\n\n margin-right: -1px;\n margin-left: -1px;\n\n pointer-events: none;\n}\n\n.glyph_f986[width="10"] {\n vertical-align: -1px;\n }\n\n.glyph_f986[width="14"] {\n margin-right: -2px;\n margin-left: 0;\n\n vertical-align: -3px;\n }\n\n.glyph_f986[width="16"] {\n vertical-align: -3px;\n }\n\n.glyph_f986[width="20"] {\n vertical-align: -2px;\n }\n\n.glyph_f986.compatibilityMode_d631 {\n width: 16px;\n height: 16px;\n margin-right: 0;\n margin-left: 0;\n }\n\n/* HACK: This media query hack makes styles applied for WebKit browsers only */\n/* stylelint-disable-next-line media-feature-name-no-vendor-prefix */\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n .glyph_f986 {\n width: auto; /* Safari size bug workaround, see https://youtrack.jetbrains.com/issue/RG-1983 */\n }\n}\n\n.gray_f6a8 {\n color: var(--ring-icon-secondary-color);\n}\n\n.hover_fc27 {\n color: var(--ring-icon-hover-color);\n}\n\n.green_bfb1 {\n color: var(--ring-icon-success-color);\n}\n\n.magenta_b045 {\n color: var(--ring-link-hover-color);\n}\n\n.red_a7ec {\n color: var(--ring-icon-error-color);\n}\n\n.blue_ec1e {\n color: var(--ring-main-color);\n}\n\n.white_c896 {\n color: var(--ring-white-text-color);\n}\n\n.loading_c5e2 {\n animation-name: icon-loading_fe22;\n animation-duration: 1200ms;\n animation-iteration-count: infinite;\n}\n\n@keyframes icon-loading_fe22 {\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(0.9);\n\n opacity: 0.5;\n }\n\n 100% {\n transform: scale(1);\n }\n}\n',"",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/icon/icon.css"],names:[],mappings:"AAIA;EACE,qBAAqB;;EAErB,kBAAkB;AACpB;;AAEA;EACE,oBAAoB;;EAEpB,kBAAkB;EAClB,iBAAiB;;EAEjB,oBAAoB;AA2BtB;;AAzBE;IACE,oBAAoB;EACtB;;AAEA;IACE,kBAAkB;IAClB,cAAc;;IAEd,oBAAoB;EACtB;;AAEA;IACE,oBAAoB;EACtB;;AAEA;IACE,oBAAoB;EACtB;;AAEA;IACE,WAAqB;IACrB,YAAsB;IACtB,eAAe;IACf,cAAc;EAChB;;AAGF,8EAA8E;AAC9E,oEAAoE;AACpE;EACE;IACE,WAAW,EAAE,iFAAiF;EAChG;AACF;;AAEA;EACE,uCAAuC;AACzC;;AAEA;EACE,mCAAmC;AACrC;;AAEA;EACE,qCAAqC;AACvC;;AAEA;EACE,mCAAmC;AACrC;;AAEA;EACE,mCAAmC;AACrC;;AAEA;EACE,6BAA6B;AAC/B;;AAEA;EACE,mCAAmC;AACrC;;AAEA;EACE,iCAA4B;EAC5B,0BAA0B;EAC1B,mCAAmC;AACrC;;AAEA;EACE;IACE,mBAAmB;EACrB;;EAEA;IACE,qBAAqB;;IAErB,YAAY;EACd;;EAEA;IACE,mBAAmB;EACrB;AACF",sourcesContent:['@import "../global/variables.css";\n\n@value unit from "../global/global.css";\n\n.icon {\n display: inline-block;\n\n fill: currentColor;\n}\n\n.glyph {\n display: inline-flex;\n\n margin-right: -1px;\n margin-left: -1px;\n\n pointer-events: none;\n\n &[width="10"] {\n vertical-align: -1px;\n }\n\n &[width="14"] {\n margin-right: -2px;\n margin-left: 0;\n\n vertical-align: -3px;\n }\n\n &[width="16"] {\n vertical-align: -3px;\n }\n\n &[width="20"] {\n vertical-align: -2px;\n }\n\n &.compatibilityMode {\n width: calc(unit * 2);\n height: calc(unit * 2);\n margin-right: 0;\n margin-left: 0;\n }\n}\n\n/* HACK: This media query hack makes styles applied for WebKit browsers only */\n/* stylelint-disable-next-line media-feature-name-no-vendor-prefix */\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n .glyph {\n width: auto; /* Safari size bug workaround, see https://youtrack.jetbrains.com/issue/RG-1983 */\n }\n}\n\n.gray {\n color: var(--ring-icon-secondary-color);\n}\n\n.hover {\n color: var(--ring-icon-hover-color);\n}\n\n.green {\n color: var(--ring-icon-success-color);\n}\n\n.magenta {\n color: var(--ring-link-hover-color);\n}\n\n.red {\n color: var(--ring-icon-error-color);\n}\n\n.blue {\n color: var(--ring-main-color);\n}\n\n.white {\n color: var(--ring-white-text-color);\n}\n\n.loading {\n animation-name: icon-loading;\n animation-duration: 1200ms;\n animation-iteration-count: infinite;\n}\n\n@keyframes icon-loading {\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(0.9);\n\n opacity: 0.5;\n }\n\n 100% {\n transform: scale(1);\n }\n}\n'],sourceRoot:""}]),s.locals={unit:`${l.default.locals.unit}`,icon:"icon_aaa7",glyph:"glyph_f986",compatibilityMode:"compatibilityMode_d631",gray:"gray_f6a8",hover:"hover_fc27",green:"green_bfb1",magenta:"magenta_b045",red:"red_a7ec",blue:"blue_ec1e",white:"white_c896",loading:"loading_c5e2","icon-loading":"icon-loading_fe22"};const u=s},8976:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>u});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9106),c=t(5280),s=a()(o());s.i(c.A),s.i(l.default,"",!0),s.push([e.id,":root {\n --ring-input-xs: 96px;\n --ring-input-s: 96px;\n --ring-input-m: 240px;\n --ring-input-l: 400px;\n}\n\n/**\n * @name Input Sizes\n */\n\n/* XS */\n\n.ring-input-size_xs.ring-input-size_xs {\n display: inline-block;\n\n width: 96px;\n\n width: var(--ring-input-xs);\n}\n\n.ring-input-size_xs.ring-input-size_xs ~ .ring-error-bubble {\n left: 98px;\n left: calc(var(--ring-input-xs) + 2px);\n}\n\n/* S */\n\n.ring-input-size_s.ring-input-size_s {\n display: inline-block;\n\n width: 96px;\n\n width: var(--ring-input-s);\n}\n\n.ring-input-size_s.ring-input-size_s ~ .ring-error-bubble {\n left: 98px;\n left: calc(var(--ring-input-s) + 2px);\n}\n\n/* M */\n\n.ring-input-size_m.ring-input-size_m {\n display: inline-block;\n\n width: 240px;\n\n width: var(--ring-input-m);\n}\n\n.ring-input-size_m.ring-input-size_m ~ .ring-error-bubble {\n left: 242px;\n left: calc(var(--ring-input-m) + 2px);\n}\n\n.ring-input-size_md.ring-input-size_md {\n display: inline-block;\n\n width: 240px;\n\n width: var(--ring-input-m);\n}\n\n.ring-input-size_md.ring-input-size_md ~ .ring-error-bubble {\n left: 242px;\n left: calc(var(--ring-input-m) + 2px);\n}\n\n/* L */\n\n.ring-input-size_l.ring-input-size_l {\n display: inline-block;\n\n width: 400px;\n\n width: var(--ring-input-l);\n}\n\n.ring-input-size_l.ring-input-size_l ~ .ring-error-bubble {\n left: 402px;\n left: calc(var(--ring-input-l) + 2px);\n}\n\n.ring-input-height_s.ring-input-height_s {\n --ring-input-padding-block: 1px;\n}\n\n.ring-input-height_m.ring-input-height_m {\n --ring-input-padding-block: 3px;\n}\n\n.ring-input-height_l.ring-input-height_l {\n --ring-input-padding-block: 5px;\n}\n","",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/input-size/input-size.css"],names:[],mappings:"AAIA;EACE,qBAAgC;EAChC,oBAA+B;EAC/B,qBAA+B;EAC/B,qBAA+B;AACjC;;AAEA;;EAEE;;AAEF,OAAO;;AAEP;EACE,qBAAqB;;EAErB,WAA2B;;EAA3B,2BAA2B;AAC7B;;AAEA;EACE,UAAsC;EAAtC,sCAAsC;AACxC;;AAEA,MAAM;;AAEN;EACE,qBAAqB;;EAErB,WAA0B;;EAA1B,0BAA0B;AAC5B;;AAEA;EACE,UAAqC;EAArC,qCAAqC;AACvC;;AAEA,MAAM;;AAEN;EACE,qBAAqB;;EAErB,YAA0B;;EAA1B,0BAA0B;AAC5B;;AAEA;EACE,WAAqC;EAArC,qCAAqC;AACvC;;AAEA;EACE,qBAAqB;;EAErB,YAA0B;;EAA1B,0BAA0B;AAC5B;;AAEA;EACE,WAAqC;EAArC,qCAAqC;AACvC;;AAEA,MAAM;;AAEN;EACE,qBAAqB;;EAErB,YAA0B;;EAA1B,0BAA0B;AAC5B;;AAEA;EACE,WAAqC;EAArC,qCAAqC;AACvC;;AAEA;EACE,+BAA+B;AACjC;;AAEA;EACE,+BAA+B;AACjC;;AAEA;EACE,+BAA+B;AACjC",sourcesContent:['@import "../global/variables.css";\n\n@value unit from "../global/global.css";\n\n:root {\n --ring-input-xs: calc(unit * 12);\n --ring-input-s: calc(unit * 12);\n --ring-input-m: calc(unit * 30);\n --ring-input-l: calc(unit * 50);\n}\n\n/**\n * @name Input Sizes\n */\n\n/* XS */\n\n:global(.ring-input-size_xs.ring-input-size_xs) {\n display: inline-block;\n\n width: var(--ring-input-xs);\n}\n\n:global(.ring-input-size_xs.ring-input-size_xs ~ .ring-error-bubble) {\n left: calc(var(--ring-input-xs) + 2px);\n}\n\n/* S */\n\n:global(.ring-input-size_s.ring-input-size_s) {\n display: inline-block;\n\n width: var(--ring-input-s);\n}\n\n:global(.ring-input-size_s.ring-input-size_s ~ .ring-error-bubble) {\n left: calc(var(--ring-input-s) + 2px);\n}\n\n/* M */\n\n:global(.ring-input-size_m.ring-input-size_m) {\n display: inline-block;\n\n width: var(--ring-input-m);\n}\n\n:global(.ring-input-size_m.ring-input-size_m ~ .ring-error-bubble) {\n left: calc(var(--ring-input-m) + 2px);\n}\n\n:global(.ring-input-size_md.ring-input-size_md) {\n display: inline-block;\n\n width: var(--ring-input-m);\n}\n\n:global(.ring-input-size_md.ring-input-size_md ~ .ring-error-bubble) {\n left: calc(var(--ring-input-m) + 2px);\n}\n\n/* L */\n\n:global(.ring-input-size_l.ring-input-size_l) {\n display: inline-block;\n\n width: var(--ring-input-l);\n}\n\n:global(.ring-input-size_l.ring-input-size_l ~ .ring-error-bubble) {\n left: calc(var(--ring-input-l) + 2px);\n}\n\n:global(.ring-input-height_s.ring-input-height_s) {\n --ring-input-padding-block: 1px;\n}\n\n:global(.ring-input-height_m.ring-input-height_m) {\n --ring-input-padding-block: 3px;\n}\n\n:global(.ring-input-height_l.ring-input-height_l) {\n --ring-input-padding-block: 5px;\n}\n'],sourceRoot:""}]),s.locals={unit:`${l.default.locals.unit}`};const u=s},8266:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>p});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9106),c=t(5280),s=t(9892),u=a()(o());u.i(c.A),u.i(s.default),u.i(l.default,"",!0),u.push([e.id,'.outerContainer_cb70 {\n --ring-input-icon-offset: 20px;\n --ring-input-padding-inline: 8px;\n --ring-input-background-color: var(--ring-content-background-color);\n}\n\n.borderless_f79b {\n /* stylelint-disable-next-line length-zero-no-unit */\n --ring-input-padding-inline: 0px;\n}\n\n.container_ee33 {\n position: relative;\n\n box-sizing: border-box;\n\n font-size: var(--ring-font-size);\n line-height: var(--ring-line-height);\n}\n\n.container_ee33 * {\n box-sizing: border-box;\n }\n\n.input_f220 {\n --ring-input-padding-start: var(--ring-input-padding-inline);\n --ring-input-padding-end: var(--ring-input-padding-inline);\n\n width: 100%;\n\n margin: 0;\n padding-top: var(--ring-input-padding-block);\n padding-right: var(--ring-input-padding-end);\n padding-bottom: var(--ring-input-padding-block);\n padding-left: var(--ring-input-padding-start);\n\n transition: border-color var(--ring-ease);\n\n color: var(--ring-text-color);\n border: 1px solid var(--ring-borders-color);\n border-radius: var(--ring-border-radius);\n outline: none;\n background-color: var(--ring-input-background-color);\n\n font: inherit;\n\n caret-color: var(--ring-main-color);\n}\n\n[dir="rtl"] .input_f220 {\n padding-right: var(--ring-input-padding-start);\n padding-left: var(--ring-input-padding-end);\n }\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.input_f220:hover {\n transition: none;\n\n border-color: var(--ring-border-hover-color);\n }}\n\n.error_ff90 .input_f220 {\n border-color: var(--ring-icon-error-color);\n }\n\n.input_f220:focus {\n transition: none;\n\n border-color: var(--ring-main-color);\n }\n\n.input_f220[disabled] {\n color: var(--ring-disabled-color);\n border-color: var(--ring-border-disabled-color);\n background-color: var(--ring-disabled-background-color);\n\n -webkit-text-fill-color: var(--ring-disabled-color); /* Required for Safari, see RG-2063 for details */\n }\n\n/*\n Kill yellow/blue webkit autocomplete\n https://css-tricks.com/snippets/css/change-autocomplete-styles-webkit-browsers/\n */\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.input_f220:-webkit-autofill:hover {\n -webkit-transition: background-color 50000s ease-in-out 0s;\n transition: background-color 50000s ease-in-out 0s;\n }}\n\n.input_f220:-webkit-autofill,\n .input_f220:-webkit-autofill:focus {\n -webkit-transition: background-color 50000s ease-in-out 0s;\n transition: background-color 50000s ease-in-out 0s;\n }\n\n.borderless_f79b .input_f220 {\n border-color: transparent;\n background-color: transparent;\n}\n\n.withIcon_f066 .input_f220 {\n --ring-input-padding-start: calc(var(--ring-input-padding-inline) + var(--ring-input-icon-offset));\n}\n\n.clearable_fd1e .input_f220 {\n --ring-input-padding-end: calc(var(--ring-input-padding-inline) + var(--ring-input-icon-offset));\n}\n\n.icon_e49c {\n position: absolute;\n top: calc(var(--ring-input-padding-block) + 1px);\n left: var(--ring-input-padding-inline);\n\n pointer-events: none;\n\n color: var(--ring-icon-secondary-color);\n}\n\n[dir="rtl"] .icon_e49c {\n right: 8px;\n left: auto;\n }\n\n.clear_ffc3 {\n position: absolute;\n top: calc(var(--ring-input-padding-block) + 2px);\n right: var(--ring-input-padding-inline);\n\n height: auto;\n\n padding-right: 0;\n\n line-height: inherit;\n}\n\n.empty_cc0d .clear_ffc3 {\n display: none;\n }\n\n[dir="rtl"] .clear_ffc3 {\n right: auto;\n left: 8px;\n }\n\ntextarea.input_f220 {\n overflow: hidden;\n\n box-sizing: border-box;\n\n resize: none;\n}\n\n.input_f220::-moz-placeholder {\n color: var(--ring-disabled-color);\n}\n\n.input_f220::placeholder {\n color: var(--ring-disabled-color);\n}\n\n.input_f220::-webkit-search-cancel-button {\n -webkit-appearance: none;\n}\n\n.errorText_e447 {\n margin-top: 4px;\n\n color: var(--ring-error-color);\n\n font-size: var(--ring-font-size-smaller);\n line-height: var(--ring-line-height-lowest);\n}\n\n.sizeS_c560 {\n width: 96px;\n}\n\n.sizeM_aee6 {\n width: 240px;\n}\n\n.sizeL_b0ca {\n width: 400px;\n}\n\n.sizeFULL_f4f9 {\n width: 100%;\n}\n\n.heightS_a68d {\n --ring-input-padding-block: 1px;\n}\n\n.heightM_bc35 {\n --ring-input-padding-block: 3px;\n}\n\n.heightL_f82d {\n --ring-input-padding-block: 5px;\n}\n',"",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/input/input.css",""],names:[],mappings:"AAKA;EACE,8BAA0C;EAC1C,gCAAiC;EACjC,mEAAmE;AACrE;;AAEA;EACE,oDAAoD;EACpD,gCAAgC;AAClC;;AAEA;EACE,kBAAkB;;EAElB,sBAAsB;;EAEtB,gCAAgC;EAChC,oCAAoC;AAKtC;;AAHE;IACE,sBAAsB;EACxB;;AAGF;EACE,4DAA4D;EAC5D,0DAA0D;;EAE1D,WAAW;;EAEX,SAAS;EACT,4CAA4C;EAC5C,4CAA4C;EAC5C,+CAA+C;EAC/C,6CAA6C;;EAE7C,yCAAyC;;EAEzC,6BAA6B;EAC7B,2CAA2C;EAC3C,wCAAwC;EACxC,aAAa;EACb,oDAAoD;;EAEpD,aAAa;;EAEb,mCAAmC;AA0CrC;;AAxCE;IACE,8CAA8C;IAC9C,2CAA2C;EAC7C;;ACxDF,wGAAA;IAAA,iBAAA;;IAAA,6CAAA;GAAA,CAAA;;ADgEE;IACE,0CAA0C;EAC5C;;AAEA;IACE,gBAAgB;;IAEhB,oCAAoC;EACtC;;AAEA;IACE,iCAAiC;IACjC,+CAA+C;IAC/C,uDAAuD;;IAEvD,mDAAmD,EAAE,iDAAiD;EACxG;;AAEA;;;GAGC;;ACrFH,wGAAA;MAAA,2DAAA;MAAA,mDAAA;KAAA,CAAA;;ADuFI;;MAGE,0DAAkD;MAAlD,kDAAkD;IACpD;;AAIJ;EACE,yBAAyB;EACzB,6BAA6B;AAC/B;;AAEA;EACE,kGAAkG;AACpG;;AAEA;EACE,gGAAgG;AAClG;;AAEA;EACE,kBAAkB;EAClB,gDAAgD;EAChD,sCAAsC;;EAEtC,oBAAoB;;EAEpB,uCAAuC;AAMzC;;AAJE;IACE,UAAW;IACX,UAAU;EACZ;;AAGF;EACE,kBAAkB;EAClB,gDAAgD;EAChD,uCAAuC;;EAEvC,YAAY;;EAEZ,gBAAgB;;EAEhB,oBAAoB;AAUtB;;AARE;IACE,aAAa;EACf;;AAEA;IACE,WAAW;IACX,SAAU;EACZ;;AAGF;EACE,gBAAgB;;EAEhB,sBAAsB;;EAEtB,YAAY;AACd;;AAEA;EACE,iCAAiC;AACnC;;AAFA;EACE,iCAAiC;AACnC;;AAEA;EACE,wBAAwB;AAC1B;;AAEA;EACE,eAA0B;;EAE1B,8BAA8B;;EAE9B,wCAAwC;EACxC,2CAA2C;AAC7C;;AAEA;EACE,WAAsB;AACxB;;AAEA;EACE,YAAsB;AACxB;;AAEA;EACE,YAAsB;AACxB;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,+BAA+B;AACjC;;AAEA;EACE,+BAA+B;AACjC;;AAEA;EACE,+BAA+B;AACjC",sourcesContent:['@import "../global/variables.css";\n@import "../button/button.css";\n\n@value unit from "../global/global.css";\n\n.outerContainer {\n --ring-input-icon-offset: calc(unit * 2.5);\n --ring-input-padding-inline: unit;\n --ring-input-background-color: var(--ring-content-background-color);\n}\n\n.borderless {\n /* stylelint-disable-next-line length-zero-no-unit */\n --ring-input-padding-inline: 0px;\n}\n\n.container {\n position: relative;\n\n box-sizing: border-box;\n\n font-size: var(--ring-font-size);\n line-height: var(--ring-line-height);\n\n & * {\n box-sizing: border-box;\n }\n}\n\n.input {\n --ring-input-padding-start: var(--ring-input-padding-inline);\n --ring-input-padding-end: var(--ring-input-padding-inline);\n\n width: 100%;\n\n margin: 0;\n padding-top: var(--ring-input-padding-block);\n padding-right: var(--ring-input-padding-end);\n padding-bottom: var(--ring-input-padding-block);\n padding-left: var(--ring-input-padding-start);\n\n transition: border-color var(--ring-ease);\n\n color: var(--ring-text-color);\n border: 1px solid var(--ring-borders-color);\n border-radius: var(--ring-border-radius);\n outline: none;\n background-color: var(--ring-input-background-color);\n\n font: inherit;\n\n caret-color: var(--ring-main-color);\n\n [dir="rtl"] & {\n padding-right: var(--ring-input-padding-start);\n padding-left: var(--ring-input-padding-end);\n }\n\n &:hover {\n transition: none;\n\n border-color: var(--ring-border-hover-color);\n }\n\n .error & {\n border-color: var(--ring-icon-error-color);\n }\n\n &:focus {\n transition: none;\n\n border-color: var(--ring-main-color);\n }\n\n &[disabled] {\n color: var(--ring-disabled-color);\n border-color: var(--ring-border-disabled-color);\n background-color: var(--ring-disabled-background-color);\n\n -webkit-text-fill-color: var(--ring-disabled-color); /* Required for Safari, see RG-2063 for details */\n }\n\n /*\n Kill yellow/blue webkit autocomplete\n https://css-tricks.com/snippets/css/change-autocomplete-styles-webkit-browsers/\n */\n &:-webkit-autofill {\n &,\n &:hover,\n &:focus {\n transition: background-color 50000s ease-in-out 0s;\n }\n }\n}\n\n.borderless .input {\n border-color: transparent;\n background-color: transparent;\n}\n\n.withIcon .input {\n --ring-input-padding-start: calc(var(--ring-input-padding-inline) + var(--ring-input-icon-offset));\n}\n\n.clearable .input {\n --ring-input-padding-end: calc(var(--ring-input-padding-inline) + var(--ring-input-icon-offset));\n}\n\n.icon {\n position: absolute;\n top: calc(var(--ring-input-padding-block) + 1px);\n left: var(--ring-input-padding-inline);\n\n pointer-events: none;\n\n color: var(--ring-icon-secondary-color);\n\n [dir="rtl"] & {\n right: unit;\n left: auto;\n }\n}\n\n.clear {\n position: absolute;\n top: calc(var(--ring-input-padding-block) + 2px);\n right: var(--ring-input-padding-inline);\n\n height: auto;\n\n padding-right: 0;\n\n line-height: inherit;\n\n .empty & {\n display: none;\n }\n\n [dir="rtl"] & {\n right: auto;\n left: unit;\n }\n}\n\ntextarea.input {\n overflow: hidden;\n\n box-sizing: border-box;\n\n resize: none;\n}\n\n.input::placeholder {\n color: var(--ring-disabled-color);\n}\n\n.input::-webkit-search-cancel-button {\n -webkit-appearance: none;\n}\n\n.errorText {\n margin-top: calc(unit / 2);\n\n color: var(--ring-error-color);\n\n font-size: var(--ring-font-size-smaller);\n line-height: var(--ring-line-height-lowest);\n}\n\n.sizeS {\n width: calc(unit * 12);\n}\n\n.sizeM {\n width: calc(unit * 30);\n}\n\n.sizeL {\n width: calc(unit * 50);\n}\n\n.sizeFULL {\n width: 100%;\n}\n\n.heightS {\n --ring-input-padding-block: 1px;\n}\n\n.heightM {\n --ring-input-padding-block: 3px;\n}\n\n.heightL {\n --ring-input-padding-block: 5px;\n}\n',null],sourceRoot:""}]),u.locals={unit:`${l.default.locals.unit}`,outerContainer:"outerContainer_cb70",borderless:"borderless_f79b",container:"container_ee33",input:"input_f220",error:"error_ff90",withIcon:"withIcon_f066",clearable:"clearable_fd1e",icon:"icon_e49c",clear:"clear_ffc3",empty:"empty_cc0d",errorText:"errorText_e447",sizeS:"sizeS_c560",sizeM:"sizeM_aee6",sizeL:"sizeL_b0ca",sizeFULL:"sizeFULL_f4f9",heightS:"heightS_a68d",heightM:"heightM_bc35",heightL:"heightL_f82d"};const p=u},6960:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>s});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(5280),c=a()(o());c.i(l.A),c.push([e.id,".link_e6e5 {\n cursor: pointer;\n transition: color var(--ring-fast-ease);\n\n color: var(--ring-link-color);\n\n outline: none;\n}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.link_e6e5:hover {\n transition: none;\n\n color: var(--ring-link-hover-color);\n }}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.link_e6e5:hover {\n text-decoration: none;\n }}\n\n.link_e6e5 {\n text-decoration: none;\n }\n\n.link_e6e5.hover_bed7 {\n transition: none;\n\n color: var(--ring-link-hover-color);\n }\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.link_e6e5:hover .inner_e3ba {\n border-width: 0;\n border-bottom: 2px solid;\n border-image-source: linear-gradient(currentcolor 50%, transparent 50%);\n border-image-slice: 0 0 100% 0;\n }}\n\n.link_e6e5.active_f804 {\n color: inherit;\n }\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.link_e6e5.compatibilityUnderlineMode_e7a0:hover {\n text-decoration: underline;\n\n /* stylelint-disable-next-line selector-max-specificity */\n }\n .link_e6e5.compatibilityUnderlineMode_e7a0:hover .inner_e3ba {\n border: none;\n }}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.link_e6e5.pseudo_d9ae:hover {\n text-decoration: none;\n\n /* stylelint-disable-next-line selector-max-specificity */\n }\n .link_e6e5.pseudo_d9ae:hover .inner_e3ba {\n border: none;\n }}\n\n.link_e6e5:focus-visible {\n box-shadow: 0 0 0 2px var(--ring-border-hover-color);\n }\n\n@media (min-resolution: 2dppx) {@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.link_e6e5:hover .inner_e3ba {\n border-bottom-width: 1px;\n }}\n}\n\n.text_e98a {\n border-radius: var(--ring-border-radius);\n}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.inherit_d267:not(:hover) {\n color: inherit;\n}}\n\n.pseudo_d9ae {\n margin: 0;\n padding: 0;\n\n text-align: left;\n\n border: 0;\n\n background: transparent;\n\n font: inherit;\n}\n\n.pseudo_d9ae::-moz-focus-inner {\n padding: 0;\n\n border: 0;\n }\n","",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/link/link.css",""],names:[],mappings:"AAEA;EACE,eAAe;EACf,uCAAuC;;EAEvC,6BAA6B;;EA2C7B,aAAa;AAKf;;ACtDA,wGAAA;IAAA,iBAAA;;IAAA,oCAAA;GAAA,CAAA;;AAAA,wGAAA;IAAA,sBAAA;GAAA,CAAA;;ADQE;IAEE,qBAAqB;EACvB;;AAEA;IAEE,gBAAgB;;IAEhB,mCAAmC;EACrC;;AClBF,wGAAA;IAAA,gBAAA;IAAA,yBAAA;IAAA,wEAAA;IAAA,+BAAA;GAAA,CAAA;;AD2BE;IACE,cAAc;EAChB;;AC7BF,wGAAA;IAAA,2BAAA;;IAAA,0DAAA;GAAA;IAAA;MAAA,aAAA;KAAA,CAAA;;AAAA,wGAAA;IAAA,sBAAA;;IAAA,0DAAA;GAAA;IAAA;MAAA,aAAA;KAAA,CAAA;;ADmDE;IACE,oDAAoD;EACtD;;AAGF,gCCxDA,wGAAA;IAAA,yBAAA;GAAA,CAAA;AD4DA;;AAEA;EACE,wCAAwC;AAC1C;;AChEA,wGAAA;EAAA,eAAA;CAAA,CAAA;;ADsEA;EACE,SAAS;EACT,UAAU;;EAEV,gBAAgB;;EAEhB,SAAS;;EAET,uBAAuB;;EAEvB,aAAa;AAOf;;AALE;IACE,UAAU;;IAEV,SAAS;EACX",sourcesContent:['@import "../global/variables.css";\n\n.link {\n cursor: pointer;\n transition: color var(--ring-fast-ease);\n\n color: var(--ring-link-color);\n\n &,\n &:hover {\n text-decoration: none;\n }\n\n &:hover,\n &.hover {\n transition: none;\n\n color: var(--ring-link-hover-color);\n }\n\n &:hover .inner {\n border-width: 0;\n border-bottom: 2px solid;\n border-image-source: linear-gradient(currentcolor 50%, transparent 50%);\n border-image-slice: 0 0 100% 0;\n }\n\n &.active {\n color: inherit;\n }\n\n &.compatibilityUnderlineMode:hover {\n text-decoration: underline;\n\n /* stylelint-disable-next-line selector-max-specificity */\n & .inner {\n border: none;\n }\n }\n\n &.pseudo:hover {\n text-decoration: none;\n\n /* stylelint-disable-next-line selector-max-specificity */\n & .inner {\n border: none;\n }\n }\n\n outline: none;\n\n &:focus-visible {\n box-shadow: 0 0 0 2px var(--ring-border-hover-color);\n }\n}\n\n@media (min-resolution: 2dppx) {\n .link:hover .inner {\n border-bottom-width: 1px;\n }\n}\n\n.text {\n border-radius: var(--ring-border-radius);\n}\n\n.inherit:not(:hover) {\n color: inherit;\n}\n\n.pseudo {\n margin: 0;\n padding: 0;\n\n text-align: left;\n\n border: 0;\n\n background: transparent;\n\n font: inherit;\n\n &::-moz-focus-inner {\n padding: 0;\n\n border: 0;\n }\n}\n',null],sourceRoot:""}]),c.locals={link:"link_e6e5",hover:"hover_bed7",inner:"inner_e3ba",active:"active_f804",compatibilityUnderlineMode:"compatibilityUnderlineMode_e7a0",pseudo:"pseudo_d9ae",text:"text_e98a",inherit:"inherit_d267"};const s=c},480:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>u});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9106),c=t(5280),s=a()(o());s.i(c.A),s.i(l.default,"",!0),s.push([e.id,'.list_a01c {\n position: relative;\n\n z-index: 1;\n\n border-radius: var(--ring-border-radius);\n\n line-height: normal;\n}\n\n.simpleInner_a4f8 {\n overflow: auto;\n}\n\n.scrolling_a910 {\n pointer-events: none;\n}\n\n.separator_c26e {\n display: block;\n\n min-height: 8px;\n\n margin-top: 8px;\n padding: 0 16px 1px;\n\n text-align: right;\n white-space: nowrap;\n\n color: var(--ring-secondary-color);\n border-top: 1px solid var(--ring-line-color);\n\n font-size: var(--ring-font-size-smaller);\n line-height: var(--ring-line-height-lower);\n}\n\n.separator_first_ec9e {\n margin-top: 0;\n padding-top: 0;\n\n border: none;\n}\n\n.item_eadd {\n display: block;\n\n box-sizing: border-box;\n\n width: 100%;\n\n text-align: left;\n vertical-align: bottom;\n white-space: nowrap;\n text-decoration: none;\n\n outline: none;\n\n font-size: var(--ring-font-size);\n}\n\n.item_eadd.item_eadd {\n padding: 3px 16px 5px;\n\n line-height: 24px;\n}\n\n.itemContainer_f365 {\n position: relative;\n}\n\n.compact_efa8 {\n line-height: 16px;\n}\n\n.error_aa15 {\n cursor: default;\n}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.error_aa15:hover {\n color: var(--ring-error-color);\n }}\n\n/* Override ring-link */\n\n.error_aa15,\n .error_aa15:focus,\n .error_aa15:visited {\n color: var(--ring-error-color);\n }\n\n.add_a8da {\n padding: 8px 16px;\n\n line-height: 32px;\n}\n\n.top_c4d5 {\n display: flex;\n align-items: baseline;\n flex-direction: row;\n}\n\n.left_ea6b {\n align-self: center;\n flex-shrink: 0;\n}\n\n.label_dac9 {\n overflow: hidden;\n flex-grow: 1;\n flex-shrink: 1;\n\n text-align: left;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n[dir="rtl"] .label_dac9 {\n text-align: right;\n direction: ltr;\n }\n\n.description_efcc {\n overflow: hidden;\n flex-shrink: 100;\n\n padding-left: 8px;\n\n text-align: right;\n white-space: nowrap;\n text-overflow: ellipsis;\n\n color: var(--ring-secondary-color);\n\n font-size: var(--ring-font-size-smaller);\n font-weight: 400;\n line-height: var(--ring-line-height-lowest);\n}\n\n.right_df77 {\n display: flex;\n align-items: center;\n align-self: center;\n flex-direction: row;\n flex-shrink: 0;\n}\n\n.details_a2b7 {\n margin-bottom: 6px;\n\n white-space: normal;\n\n color: var(--ring-secondary-color);\n\n font-size: var(--ring-font-size-smaller);\n line-height: var(--ring-line-height-lowest);\n}\n\n.padded_a74d {\n margin-left: 20px;\n}\n\n/* Override :last-child */\n.hint_d29d.hint_d29d {\n margin-bottom: 0;\n\n border-top: 1px solid var(--ring-line-color);\n background-color: var(--ring-sidebar-background-color);\n\n font-size: var(--ring-font-size-smaller);\n}\n\n.action_d10e {\n cursor: pointer;\n\n color: var(--ring-text-color);\n}\n\n/* override link */\n.actionLink_a4c7.actionLink_a4c7 {\n transition: none;\n}\n\n.hover_a4cd:not(.error_aa15) {\n background-color: var(--ring-selected-background-color);\n}\n\n.icon_f1f3 {\n display: inline-block;\n\n width: 20px;\n height: 20px;\n margin-left: 16px;\n\n background-repeat: no-repeat;\n background-position: center;\n\n background-size: contain;\n}\n\n.highlight_e4dd {\n color: var(--ring-link-hover-color);\n}\n\n.service_a4fc {\n color: var(--ring-secondary-color);\n}\n\n.glyph_dfd5 {\n float: left;\n\n width: 20px;\n\n margin-right: 8px;\n\n color: var(--ring-icon-secondary-color);\n}\n\n.avatar_f258 {\n\n top: 0;\n\n height: 20px;\n\n -o-object-fit: cover;\n\n object-fit: cover;\n -o-object-position: center;\n object-position: center;\n}\n\n.rightGlyph_fb77 {\n\n float: right;\n\n margin-right: 0;\n margin-left: 16px;\n}\n\n.checkboxContainer_c949 {\n position: absolute;\n top: 7px;\n left: 19px;\n\n width: 20px;\n height: 20px;\n margin-right: 8px;\n}\n\n.compact_efa8 .checkboxContainer_c949 {\n top: 0;\n\n width: 16px;\n height: 16px;\n}\n\n.title_e1bf {\n display: block;\n\n margin-top: 10px;\n margin-bottom: 6px;\n padding: 8px 16px 0;\n\n text-align: left;\n}\n\n[dir="rtl"] .title_e1bf {\n text-align: right;\n direction: ltr;\n }\n\n.title_first_ac55 {\n margin-top: 0;\n}\n\n.text_fe0e {\n letter-spacing: 1.5px;\n text-transform: uppercase;\n\n color: var(--ring-secondary-color);\n\n font-size: var(--ring-font-size-smaller);\n}\n\n.fade_d35c {\n position: absolute;\n bottom: 0;\n\n width: 100%;\n height: 24px;\n\n pointer-events: none;\n\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0), var(--ring-content-background-color));\n}\n\n.disabled_c3d8 {\n pointer-events: none;\n\n color: var(--ring-disabled-color);\n}\n',"",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/list/list.css",""],names:[],mappings:"AAKA;EACE,kBAAkB;;EAElB,UAAU;;EAEV,wCAAwC;;EAExC,mBAAmB;AACrB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,oBAAoB;AACtB;;AAEA;EACE,cAAc;;EAEd,eAAuB;;EAEvB,eAAuB;EACvB,mBAA6B;;EAE7B,iBAAiB;EACjB,mBAAmB;;EAEnB,kCAAkC;EAClC,4CAA4C;;EAE5C,wCAAwC;EACxC,0CAA0C;AAC5C;;AAEA;EACE,aAAa;EACb,cAAc;;EAEd,YAAY;AACd;;AAEA;EACE,cAAc;;EAEd,sBAAsB;;EAEtB,WAAW;;EAEX,gBAAgB;EAChB,sBAAsB;EACtB,mBAAmB;EACnB,qBAAqB;;EAErB,aAAa;;EAEb,gCAAgC;AAClC;;AAEA;EACE,qBAA+B;;EAE/B,iBAA2B;AAC7B;;AAEA;EACE,kBAAkB;AACpB;;AAEA;EACE,iBAA2B;AAC7B;;AAEA;EACE,eAAe;AASjB;;ACzFA,wGAAA;IAAA,+BAAA;GAAA,CAAA;;ADkFE,uBAAuB;;AACvB;;;IAIE,8BAA8B;EAChC;;AAGF;EACE,iBAA4B;;EAE5B,iBAA2B;AAC7B;;AAEA;EACE,aAAa;EACb,qBAAqB;EACrB,mBAAmB;AACrB;;AAEA;EACE,kBAAkB;EAClB,cAAc;AAChB;;AAEA;EACE,gBAAgB;EAChB,YAAY;EACZ,cAAc;;EAEd,gBAAgB;EAChB,mBAAmB;EACnB,uBAAuB;AAMzB;;AAJE;IACE,iBAAiB;IACjB,cAAc;EAChB;;AAGF;EACE,gBAAgB;EAChB,gBAAgB;;EAEhB,iBAAkB;;EAElB,iBAAiB;EACjB,mBAAmB;EACnB,uBAAuB;;EAEvB,kCAAkC;;EAElC,wCAAwC;EACxC,gBAAgB;EAChB,2CAA2C;AAC7C;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,kBAAkB;EAClB,mBAAmB;EACnB,cAAc;AAChB;;AAEA;EACE,kBAAkB;;EAElB,mBAAmB;;EAEnB,kCAAkC;;EAElC,wCAAwC;EACxC,2CAA2C;AAC7C;;AAEA;EACE,iBAAiB;AACnB;;AAEA,yBAAyB;AACzB;EACE,gBAAgB;;EAEhB,4CAA4C;EAC5C,sDAAsD;;EAEtD,wCAAwC;AAC1C;;AAEA;EACE,eAAe;;EAEf,6BAA6B;AAC/B;;AAEA,kBAAkB;AAClB;EACE,gBAAgB;AAClB;;AAEA;EACE,uDAAuD;AACzD;;AAEA;EACE,qBAAqB;;EAErB,WAAW;EACX,YAAY;EACZ,iBAA2B;;EAE3B,4BAA4B;EAC5B,2BAA2B;;EAE3B,wBAAwB;AAC1B;;AAEA;EACE,mCAAmC;AACrC;;AAEA;EACE,kCAAkC;AACpC;;AAEA;EACE,WAAW;;EAEX,WAAW;;EAEX,iBAAkB;;EAElB,uCAAuC;AACzC;;AAEA;;EAGE,MAAM;;EAEN,YAAY;;EAEZ,oBAAiB;;KAAjB,iBAAiB;EACjB,0BAAuB;KAAvB,uBAAuB;AACzB;;AAEA;;EAGE,YAAY;;EAEZ,eAAe;EACf,iBAA2B;AAC7B;;AAEA;EACE,kBAAkB;EAClB,QAAQ;EACR,UAAU;;EAEV,WAAW;EACX,YAAY;EACZ,iBAAkB;AACpB;;AAEA;EACE,MAAM;;EAEN,WAAqB;EACrB,YAAsB;AACxB;;AAEA;EACE,cAAc;;EAEd,gBAAgB;EAChB,kBAAkB;EAClB,mBAAqC;;EAErC,gBAAgB;AAMlB;;AAJE;IACE,iBAAiB;IACjB,cAAc;EAChB;;AAGF;EACE,aAAa;AACf;;AAEA;EACE,qBAAqB;EACrB,yBAAyB;;EAEzB,kCAAkC;;EAElC,wCAAwC;AAC1C;;AAEA;EACE,kBAAkB;EAClB,SAAS;;EAET,WAAW;EACX,YAAsB;;EAEtB,oBAAoB;;EAEpB,oGAAoG;AACtG;;AAEA;EACE,oBAAoB;;EAEpB,iCAAiC;AACnC",sourcesContent:['@import "../global/variables.css";\n\n@value unit from "../global/global.css";\n@value listSpacing: unit;\n\n.list {\n position: relative;\n\n z-index: 1;\n\n border-radius: var(--ring-border-radius);\n\n line-height: normal;\n}\n\n.simpleInner {\n overflow: auto;\n}\n\n.scrolling {\n pointer-events: none;\n}\n\n.separator {\n display: block;\n\n min-height: listSpacing;\n\n margin-top: listSpacing;\n padding: 0 calc(unit * 2) 1px;\n\n text-align: right;\n white-space: nowrap;\n\n color: var(--ring-secondary-color);\n border-top: 1px solid var(--ring-line-color);\n\n font-size: var(--ring-font-size-smaller);\n line-height: var(--ring-line-height-lower);\n}\n\n.separator_first {\n margin-top: 0;\n padding-top: 0;\n\n border: none;\n}\n\n.item {\n display: block;\n\n box-sizing: border-box;\n\n width: 100%;\n\n text-align: left;\n vertical-align: bottom;\n white-space: nowrap;\n text-decoration: none;\n\n outline: none;\n\n font-size: var(--ring-font-size);\n}\n\n.item.item {\n padding: 3px calc(unit * 2) 5px;\n\n line-height: calc(unit * 3);\n}\n\n.itemContainer {\n position: relative;\n}\n\n.compact {\n line-height: calc(unit * 2);\n}\n\n.error {\n cursor: default;\n\n /* Override ring-link */\n &,\n &:hover,\n &:focus,\n &:visited {\n color: var(--ring-error-color);\n }\n}\n\n.add {\n padding: unit calc(2 * unit);\n\n line-height: calc(4 * unit);\n}\n\n.top {\n display: flex;\n align-items: baseline;\n flex-direction: row;\n}\n\n.left {\n align-self: center;\n flex-shrink: 0;\n}\n\n.label {\n overflow: hidden;\n flex-grow: 1;\n flex-shrink: 1;\n\n text-align: left;\n white-space: nowrap;\n text-overflow: ellipsis;\n\n [dir="rtl"] & {\n text-align: right;\n direction: ltr;\n }\n}\n\n.description {\n overflow: hidden;\n flex-shrink: 100;\n\n padding-left: unit;\n\n text-align: right;\n white-space: nowrap;\n text-overflow: ellipsis;\n\n color: var(--ring-secondary-color);\n\n font-size: var(--ring-font-size-smaller);\n font-weight: 400;\n line-height: var(--ring-line-height-lowest);\n}\n\n.right {\n display: flex;\n align-items: center;\n align-self: center;\n flex-direction: row;\n flex-shrink: 0;\n}\n\n.details {\n margin-bottom: 6px;\n\n white-space: normal;\n\n color: var(--ring-secondary-color);\n\n font-size: var(--ring-font-size-smaller);\n line-height: var(--ring-line-height-lowest);\n}\n\n.padded {\n margin-left: 20px;\n}\n\n/* Override :last-child */\n.hint.hint {\n margin-bottom: 0;\n\n border-top: 1px solid var(--ring-line-color);\n background-color: var(--ring-sidebar-background-color);\n\n font-size: var(--ring-font-size-smaller);\n}\n\n.action {\n cursor: pointer;\n\n color: var(--ring-text-color);\n}\n\n/* override link */\n.actionLink.actionLink {\n transition: none;\n}\n\n.hover:not(.error) {\n background-color: var(--ring-selected-background-color);\n}\n\n.icon {\n display: inline-block;\n\n width: 20px;\n height: 20px;\n margin-left: calc(unit * 2);\n\n background-repeat: no-repeat;\n background-position: center;\n\n background-size: contain;\n}\n\n.highlight {\n color: var(--ring-link-hover-color);\n}\n\n.service {\n color: var(--ring-secondary-color);\n}\n\n.glyph {\n float: left;\n\n width: 20px;\n\n margin-right: unit;\n\n color: var(--ring-icon-secondary-color);\n}\n\n.avatar {\n composes: glyph;\n\n top: 0;\n\n height: 20px;\n\n object-fit: cover;\n object-position: center;\n}\n\n.rightGlyph {\n composes: glyph;\n\n float: right;\n\n margin-right: 0;\n margin-left: calc(unit * 2);\n}\n\n.checkboxContainer {\n position: absolute;\n top: 7px;\n left: 19px;\n\n width: 20px;\n height: 20px;\n margin-right: unit;\n}\n\n.compact .checkboxContainer {\n top: 0;\n\n width: calc(unit * 2);\n height: calc(unit * 2);\n}\n\n.title {\n display: block;\n\n margin-top: 10px;\n margin-bottom: 6px;\n padding: listSpacing calc(unit * 2) 0;\n\n text-align: left;\n\n [dir="rtl"] & {\n text-align: right;\n direction: ltr;\n }\n}\n\n.title_first {\n margin-top: 0;\n}\n\n.text {\n letter-spacing: 1.5px;\n text-transform: uppercase;\n\n color: var(--ring-secondary-color);\n\n font-size: var(--ring-font-size-smaller);\n}\n\n.fade {\n position: absolute;\n bottom: 0;\n\n width: 100%;\n height: calc(unit * 3);\n\n pointer-events: none;\n\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0), var(--ring-content-background-color));\n}\n\n.disabled {\n pointer-events: none;\n\n color: var(--ring-disabled-color);\n}\n',null],sourceRoot:""}]),s.locals={unit:`${l.default.locals.unit}`,listSpacing:"8px",list:"list_a01c",simpleInner:"simpleInner_a4f8",scrolling:"scrolling_a910",separator:"separator_c26e",separator_first:"separator_first_ec9e",item:"item_eadd",itemContainer:"itemContainer_f365",compact:"compact_efa8",error:"error_aa15",add:"add_a8da",top:"top_c4d5",left:"left_ea6b",label:"label_dac9",description:"description_efcc",right:"right_df77",details:"details_a2b7",padded:"padded_a74d",hint:"hint_d29d",action:"action_d10e",actionLink:"actionLink_a4c7",hover:"hover_a4cd",icon:"icon_f1f3",highlight:"highlight_e4dd",service:"service_a4fc",glyph:"glyph_dfd5",avatar:"avatar_f258 glyph_dfd5",rightGlyph:"rightGlyph_fb77 glyph_dfd5",checkboxContainer:"checkboxContainer_c949",title:"title_e1bf",title_first:"title_first_ac55",text:"text_fe0e",fade:"fade_d35c",disabled:"disabled_c3d8"};const u=s},1586:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>p});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9173),c=t(9106),s=t(5280),u=a()(o());u.i(s.A),u.i(l.A,"",!0),u.i(c.default,"",!0),u.push([e.id,`:root {\n /* stylelint-disable-next-line color-no-hex */\n --ring-loader-inline-stops: #ff00eb, #bd3bff, #008eff, #58ba00, #f48700, #ff00eb;\n}\n\n.${l.A.locals.dark},\n.ring-ui-theme-dark {\n /* stylelint-disable-next-line color-no-hex */\n --ring-loader-inline-stops: #ff2eef, #d178ff, #289fff, #88d444, #ffe000, #ff2eef;\n}\n\n@keyframes spin_ad60 {\n 0% {\n transform: rotate(0);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n@keyframes pulse_c906 {\n 0% {\n transform: scale(1);\n }\n\n 100% {\n transform: scale(1.41667);\n }\n}\n\n.loader_d294,\n.ring-loader-inline {\n /* needed for better backward-compatibility */\n\n position: relative;\n\n display: inline-block;\n\n overflow: hidden;\n\n transform: rotate(0);\n animation: spin_ad60 1s linear infinite;\n vertical-align: -3px;\n\n border-radius: 8px;\n}\n\n.loader_d294,\n .ring-loader-inline,\n .loader_d294::after,\n .ring-loader-inline::after {\n transform-origin: 50% 50%;\n }\n\n.loader_d294::after, .ring-loader-inline::after {\n display: block;\n\n width: 16px;\n height: 16px;\n\n content: "";\n animation: pulse_c906 0.85s cubic-bezier(0.68, 0, 0.74, 0.74) infinite alternate;\n\n background-image: conic-gradient(#ff00eb, #bd3bff, #008eff, #58ba00, #f48700, #ff00eb);\n\n background-image: conic-gradient(var(--ring-loader-inline-stops));\n -webkit-mask-image: radial-gradient(8px, transparent 71.875%, var(--ring-content-background-color) 71.875%);\n mask-image: radial-gradient(8px, transparent 71.875%, var(--ring-content-background-color) 71.875%);\n }\n\n.children_ece6 {\n margin-left: 4px;\n}\n`,"",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/loader-inline/loader-inline.css"],names:[],mappings:"AAKA;EACE,6CAA6C;EAC7C,gFAAgF;AAClF;;AAEA;;EAEE,6CAA6C;EAC7C,gFAAgF;AAClF;;AAEA;EACE;IACE,oBAAoB;EACtB;;EAEA;IACE,yBAAyB;EAC3B;AACF;;AAEA;EACE;IACE,mBAAmB;EACrB;;EAEA;IACE,yBAA+B;EACjC;AACF;;AAEA;;EAEE,6CAA6C;;EAE7C,kBAAkB;;EAElB,qBAAqB;;EAErB,gBAAgB;;EAEhB,oBAAoB;EACpB,uCAAkC;EAClC,oBAAoB;;EAEpB,kBAAmB;AAmBrB;;AAjBE;;;;IAEE,yBAAyB;EAC3B;;AAEA;IACE,cAAc;;IAEd,WAAqB;IACrB,YAAsB;;IAEtB,WAAW;IACX,gFAA2E;;IAE3E,sFAAiE;;IAAjE,iEAAiE;IACjE,2GAAoG;YAApG,mGAAoG;EACtG;;AAGF;EACE,gBAA2B;AAC7B",sourcesContent:['@import "../global/variables.css";\n\n@value dark from "../global/variables_dark.css";\n@value unit from "../global/global.css";\n\n:root {\n /* stylelint-disable-next-line color-no-hex */\n --ring-loader-inline-stops: #ff00eb, #bd3bff, #008eff, #58ba00, #f48700, #ff00eb;\n}\n\n.dark,\n:global(.ring-ui-theme-dark) {\n /* stylelint-disable-next-line color-no-hex */\n --ring-loader-inline-stops: #ff2eef, #d178ff, #289fff, #88d444, #ffe000, #ff2eef;\n}\n\n@keyframes spin {\n 0% {\n transform: rotate(0);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n@keyframes pulse {\n 0% {\n transform: scale(1);\n }\n\n 100% {\n transform: scale(calc(17 / 12));\n }\n}\n\n.loader,\n:global(.ring-loader-inline) {\n /* needed for better backward-compatibility */\n\n position: relative;\n\n display: inline-block;\n\n overflow: hidden;\n\n transform: rotate(0);\n animation: spin 1s linear infinite;\n vertical-align: -3px;\n\n border-radius: unit;\n\n &,\n &::after {\n transform-origin: 50% 50%;\n }\n\n &::after {\n display: block;\n\n width: calc(unit * 2);\n height: calc(unit * 2);\n\n content: "";\n animation: pulse 0.85s cubic-bezier(0.68, 0, 0.74, 0.74) infinite alternate;\n\n background-image: conic-gradient(var(--ring-loader-inline-stops));\n mask-image: radial-gradient(unit, transparent 71.875%, var(--ring-content-background-color) 71.875%);\n }\n}\n\n.children {\n margin-left: calc(unit / 2);\n}\n'],sourceRoot:""}]),u.locals={dark:`${l.A.locals.dark}`,unit:`${c.default.locals.unit}`,loader:"loader_d294",spin:"spin_ad60",pulse:"pulse_c906",children:"children_ece6"};const p=u},8890:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>u});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9106),c=t(5280),s=a()(o());s.i(c.A),s.i(l.default,"",!0),s.push([e.id,".popup_f35e {\n\n position: fixed;\n z-index: var(--ring-overlay-z-index);\n top: -100vh;\n left: -100vw;\n\n overflow-y: auto;\n\n box-sizing: border-box;\n\n border: 1px solid var(--ring-popup-border-color);\n border-radius: var(--ring-border-radius);\n\n background-color: var(--ring-popup-background-color);\n box-shadow: var(--ring-popup-shadow);\n}\n\n.hidden_c587 {\n display: none;\n}\n\n.showing_b07a {\n opacity: 0;\n}\n\n.attached_ea95 {\n border-top: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n","",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/popup/popup.css"],names:[],mappings:"AAEA;;EAGE,eAAe;EACf,oCAAoC;EACpC,WAAW;EACX,YAAY;;EAEZ,gBAAgB;;EAEhB,sBAAsB;;EAEtB,gDAAgD;EAChD,wCAAwC;;EAExC,oDAAoD;EACpD,oCAAoC;AACtC;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,UAAU;AACZ;;AAEA;EACE,aAAa;EACb,yBAAyB;EACzB,0BAA0B;AAC5B",sourcesContent:['@import "../global/variables.css";\n\n.popup {\n composes: font from "../global/global.css";\n\n position: fixed;\n z-index: var(--ring-overlay-z-index);\n top: -100vh;\n left: -100vw;\n\n overflow-y: auto;\n\n box-sizing: border-box;\n\n border: 1px solid var(--ring-popup-border-color);\n border-radius: var(--ring-border-radius);\n\n background-color: var(--ring-popup-background-color);\n box-shadow: var(--ring-popup-shadow);\n}\n\n.hidden {\n display: none;\n}\n\n.showing {\n opacity: 0;\n}\n\n.attached {\n border-top: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n'],sourceRoot:""}]),s.locals={popup:`popup_f35e ${l.default.locals.font}`,hidden:"hidden_c587",showing:"showing_b07a",attached:"attached_ea95"};const u=s},4481:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>u});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9106),c=t(5280),s=a()(o());s.i(c.A),s.i(l.default,"",!0),s.push([e.id,'@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.filterWithTagsFocused_ffbf.filterWithTagsFocused_ffbf:hover {\n border-color: var(--ring-main-color);\n}}\n\n.filterWithTags_ff56 {\n overflow: hidden;\n\n margin: 16px 8px 0;\n padding: 3px;\n\n text-align: left;\n\n border: 1px solid var(--ring-borders-color);\n border-radius: var(--ring-border-radius);\n}\n\n.filterWithTags_ff56 .filterWrapper_dd63 {\n padding-right: 0;\n padding-left: 0;\n\n border-bottom: none;\n }\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.filterWithTags_ff56:hover {\n border-color: var(--ring-border-hover-color);\n }}\n\n.filterWithTagsFocused_ffbf {\n border-color: var(--ring-main-color);\n}\n\n.filterWithTagsInput_ab94 {\n padding: 0;\n\n border: none;\n}\n\n.filter_deda {\n flex-grow: 1;\n\n width: 0;\n}\n\n.popup_f21d {\n overscroll-behavior: contain;\n}\n\n.filterWrapper_dd63 {\n position: relative;\n\n display: flex;\n\n margin: 0;\n padding-right: 8px;\n padding-left: 44px;\n\n border-bottom: 1px solid var(--ring-borders-color);\n}\n\n[dir="rtl"] .filterWrapper_dd63 {\n padding-right: 44px;\n padding-left: 8px;\n }\n\n.filterIcon_b648 {\n position: absolute;\n top: 7px;\n left: 16px;\n\n color: var(--ring-icon-color);\n}\n\n[dir="rtl"] .filterIcon_b648 {\n right: 16px;\n left: auto;\n }\n\n.bottomLine_c880 {\n text-align: center;\n}\n\n.bottomLine_c880.bottomLineOverItem_dfb4 {\n position: relative;\n\n z-index: var(--ring-fixed-z-index);\n\n margin-top: -36px;\n\n background-color: var(--ring-content-background-color);\n }\n\n.message_ccdf {\n display: inline-block;\n\n margin: 8px 0;\n padding: 0 16px;\n}\n\n.selectAll_ff5e {\n display: flex;\n justify-content: space-between;\n\n padding: 8px 16px 0;\n}\n',"",{version:3,sources:["","webpack://./node_modules/@jetbrains/ring-ui/components/select/select-popup.css"],names:[],mappings:"AAAA,wGAAA;EAAA,qCAAA;CAAA,CAAA;;ACIA;EACE,gBAAgB;;EAEhB,kBAA6B;EAC7B,YAAY;;EAEZ,gBAAgB;;EAEhB,2CAA2C;EAC3C,wCAAwC;AAY1C;;AAVE;IACE,gBAAgB;IAChB,eAAe;;IAEf,mBAAmB;EACrB;;ADpBF,wGAAA;IAAA,6CAAA;GAAA,CAAA;;AC2BA;EAEE,oCAAoC;AACtC;;AAEA;EACE,UAAU;;EAEV,YAAY;AACd;;AAEA;EACE,YAAY;;EAEZ,QAAQ;AACV;;AAEA;EACE,4BAA4B;AAC9B;;AAEA;EACE,kBAAkB;;EAElB,aAAa;;EAEb,SAAS;EACT,kBAAmB;EACnB,kBAA8B;;EAE9B,kDAAkD;AAMpD;;AAJE;IACE,mBAA+B;IAC/B,iBAAkB;EACpB;;AAGF;EACE,kBAAkB;EAClB,QAAQ;EACR,UAAoB;;EAEpB,6BAA6B;AAM/B;;AAJE;IACE,WAAqB;IACrB,UAAU;EACZ;;AAGF;EACE,kBAAkB;AAWpB;;AATE;IACE,kBAAkB;;IAElB,kCAAkC;;IAElC,iBAAiB;;IAEjB,sDAAsD;EACxD;;AAGF;EACE,qBAAqB;;EAErB,aAAc;EACd,eAAyB;AAC3B;;AAEA;EACE,aAAa;EACb,8BAA8B;;EAE9B,mBAAmB;AACrB",sourcesContent:[null,'@import "../global/variables.css";\n\n@value unit from "../global/global.css";\n\n.filterWithTags {\n overflow: hidden;\n\n margin: calc(unit * 2) unit 0;\n padding: 3px;\n\n text-align: left;\n\n border: 1px solid var(--ring-borders-color);\n border-radius: var(--ring-border-radius);\n\n & .filterWrapper {\n padding-right: 0;\n padding-left: 0;\n\n border-bottom: none;\n }\n\n &:hover {\n border-color: var(--ring-border-hover-color);\n }\n}\n\n.filterWithTagsFocused,\n.filterWithTagsFocused.filterWithTagsFocused:hover {\n border-color: var(--ring-main-color);\n}\n\n.filterWithTagsInput {\n padding: 0;\n\n border: none;\n}\n\n.filter {\n flex-grow: 1;\n\n width: 0;\n}\n\n.popup {\n overscroll-behavior: contain;\n}\n\n.filterWrapper {\n position: relative;\n\n display: flex;\n\n margin: 0;\n padding-right: unit;\n padding-left: calc(unit * 5.5);\n\n border-bottom: 1px solid var(--ring-borders-color);\n\n [dir="rtl"] & {\n padding-right: calc(unit * 5.5);\n padding-left: unit;\n }\n}\n\n.filterIcon {\n position: absolute;\n top: 7px;\n left: calc(unit * 2);\n\n color: var(--ring-icon-color);\n\n [dir="rtl"] & {\n right: calc(unit * 2);\n left: auto;\n }\n}\n\n.bottomLine {\n text-align: center;\n\n &.bottomLineOverItem {\n position: relative;\n\n z-index: var(--ring-fixed-z-index);\n\n margin-top: -36px;\n\n background-color: var(--ring-content-background-color);\n }\n}\n\n.message {\n display: inline-block;\n\n margin: unit 0;\n padding: 0 calc(2 * unit);\n}\n\n.selectAll {\n display: flex;\n justify-content: space-between;\n\n padding: 8px 16px 0;\n}\n'],sourceRoot:""}]),s.locals={unit:`${l.default.locals.unit}`,filterWithTagsFocused:"filterWithTagsFocused_ffbf",filterWithTags:"filterWithTags_ff56",filterWrapper:"filterWrapper_dd63",filterWithTagsInput:"filterWithTagsInput_ab94",filter:"filter_deda",popup:"popup_f21d",filterIcon:"filterIcon_b648",bottomLine:"bottomLine_c880",bottomLineOverItem:"bottomLineOverItem_dfb4",message:"message_ccdf",selectAll:"selectAll_ff5e"};const u=s},2636:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>p});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9106),c=t(9892),s=t(5280),u=a()(o());u.i(s.A),u.i(l.default,"",!0),u.i(c.default,"",!0),u.push([e.id,'@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.select_e2a5:hover .value_b3a3,\n.select_e2a5:hover .icons_c4a9 {\n transition: none;\n\n color: var(--ring-main-color);\n}}\n\n.select_e2a5 {\n position: relative;\n\n display: inline-block;\n\n white-space: nowrap;\n\n color: var(--ring-text-color);\n}\n\n.toolbar_d3be {\n border-top: 1px solid var(--ring-line-color);\n}\n\n.button_ef00 {\n width: 100%;\n padding: 0;\n\n text-align: left;\n}\n\n[dir="rtl"] .button_ef00 {\n text-align: right;\n direction: ltr;\n }\n\n.toolbar_d3be .button_ef00 {\n height: 32px;\n margin: 8px 0;\n }\n\n.button_ef00.buttonSpaced_f316 {\n padding: 0 16px;\n }\n\n.icons_c4a9 {\n position: absolute;\n top: 0;\n right: 5px;\n bottom: 0;\n\n transition: color var(--ring-ease);\n\n color: var(--ring-icon-secondary-color);\n\n line-height: normal;\n}\n\n.inputMode_a6f6 .icons_c4a9 {\n font-size: var(--ring-font-size);\n }\n\n.selectedIcon_a62c {\n\n position: relative;\n top: 3px;\n\n display: inline-block;\n\n width: 16px;\n height: 16px;\n margin: 0 4px;\n\n background-repeat: no-repeat;\n background-position: center;\n\n background-size: contain;\n}\n\n.clearIcon_c750 {\n padding: 0 3px;\n\n vertical-align: -2px;\n}\n\n.sizeS_e8c3 {\n width: 96px;\n}\n\n.sizeM_ed34 {\n width: 240px;\n}\n\n.sizeL_c053 {\n width: 400px;\n}\n\n.sizeFULL_c585 {\n width: 100%;\n}\n\n.sizeAUTO_a07c {\n max-width: 100%;\n}\n\n.buttonMode_dd69 {\n position: relative;\n\n cursor: pointer;\n}\n\n.value_b3a3 {\n\n display: inline-block;\n\n box-sizing: border-box;\n width: 100%;\n height: 33px;\n padding: 0 0 3px;\n\n cursor: pointer;\n transition: color var(--ring-ease), border-color var(--ring-ease);\n text-align: left;\n vertical-align: top;\n\n color: var(--ring-text-color);\n\n border: none;\n border-bottom: 1px solid var(--ring-borders-color);\n outline: none;\n background: transparent;\n}\n\n.value_b3a3:focus {\n border-color: var(--ring-main-color);\n }\n\n.value_b3a3.open_f1b1,\n .value_b3a3:active {\n border-color: transparent;\n }\n\n.value_b3a3::-moz-focus-inner {\n padding: 0;\n\n border: 0;\n outline: 0;\n }\n\n.buttonContainer_b2b9 {\n position: relative;\n\n font-size: var(--ring-font-size);\n}\n\n.buttonValue_b4ad {\n\n display: block;\n\n width: 100%;\n padding-left: 8px;\n\n text-align: left;\n vertical-align: -8px;\n}\n\n.buttonValue_b4ad:focus-visible {\n box-shadow: inset 0 0 0 1px var(--ring-main-color);\n}\n\n.buttonValueOpen_d9d3.buttonValueOpen_d9d3 {\n box-shadow: inset 0 0 0 1px var(--ring-main-color);\n}\n\n.buttonValueEmpty_e6b3.buttonValueEmpty_e6b3 {\n color: var(--ring-disabled-color);\n}\n\n.heightS_b721 .buttonValue_b4ad {\n font-size: var(--ring-font-size);\n}\n\n.label_e56f {\n position: relative;\n\n color: var(--ring-secondary-color);\n}\n\n:focus-visible + .icons_c4a9,\n.value_b3a3:focus,\n.value_b3a3:focus + .icons_c4a9,\n.open_f1b1,\n.open_f1b1 + .icons_c4a9,\n.buttonValueOpen_d9d3 + .icons_c4a9 {\n transition: none;\n\n color: var(--ring-main-color);\n}\n\n.disabled_b89f {\n pointer-events: none;\n\n color: var(--ring-disabled-color);\n}\n\n.disabled_b89f .value_b3a3 {\n color: var(--ring-disabled-color);\n border-bottom-style: dashed;\n }\n\n.avatar_f4dd {\n margin-right: 4px;\n\n vertical-align: -5px;\n}\n\n.popup_acec {\n min-width: 240px;\n max-width: 320px;\n}\n\n.chevron_d51f.chevron_d51f {\n padding: 0 3px;\n\n transition: none;\n vertical-align: -1px;\n\n color: inherit;\n}\n\n.chevronIcon_f6cf.chevronIcon_f6cf {\n transition: none;\n\n color: inherit;\n}\n',"",{version:3,sources:["","webpack://./node_modules/@jetbrains/ring-ui/components/select/select.css"],names:[],mappings:"AAAA,wGAAA;;EAAA,iBAAA;;EAAA,8BAAA;CAAA,CAAA;;ACKA;EACE,kBAAkB;;EAElB,qBAAqB;;EAErB,mBAAmB;;EAEnB,6BAA6B;AAC/B;;AAEA;EACE,4CAA4C;AAC9C;;AAEA;EACE,WAAW;EACX,UAAU;;EAEV,gBAAgB;AAelB;;AAbE;IACE,iBAAiB;IACjB,cAAc;EAChB;;AAEA;IACE,YAAsB;IACtB,aAAc;EAChB;;AAEA;IACE,eAAyB;EAC3B;;AAGF;EACE,kBAAkB;EAClB,MAAM;EACN,UAAU;EACV,SAAS;;EAET,kCAAkC;;EAElC,uCAAuC;;EAEvC,mBAAmB;AAKrB;;AAHE;IACE,gCAAgC;EAClC;;AAGF;;EAGE,kBAAkB;EAClB,QAAQ;;EAER,qBAAqB;;EAErB,WAAqB;EACrB,YAAsB;EACtB,aAAa;;EAEb,4BAA4B;EAC5B,2BAA2B;;EAE3B,wBAAwB;AAC1B;;AAEA;EACE,cAAc;;EAEd,oBAAoB;AACtB;;AAEA;EACE,WAAsB;AACxB;;AAEA;EACE,YAAsB;AACxB;;AAEA;EACE,YAAsB;AACxB;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,kBAAkB;;EAElB,eAAe;AACjB;;AAEA;;EAIE,qBAAqB;;EAErB,sBAAsB;EACtB,WAAW;EACX,YAA4B;EAC5B,gBAAgB;;EAEhB,eAAe;EACf,iEAAiE;EACjE,gBAAgB;EAChB,mBAAmB;;EAEnB,6BAA6B;;EAE7B,YAAY;EACZ,kDAAkD;EAClD,aAAa;EACb,uBAAuB;AAiBzB;;AAfE;IACE,oCAAoC;EACtC;;AAEA;;IAEE,yBAAyB;EAC3B;;AAEA;IACE,UAAU;;IAEV,SAAS;IACT,UAAU;EACZ;;AAGF;EACE,kBAAkB;;EAElB,gCAAgC;AAClC;;AAEA;;EAGE,cAAc;;EAEd,WAAW;EACX,iBAAkB;;EAElB,gBAAgB;EAChB,oBAA8B;AAChC;;AAEA;EACE,kDAAgD;AAClD;;AAEA;EACE,kDAAgD;AAClD;;AAEA;EACE,iCAAiC;AACnC;;AAEA;EACE,gCAAgC;AAClC;;AAEA;EACE,kBAAkB;;EAElB,kCAAkC;AACpC;;AAEA;;;;;;EAQE,gBAAgB;;EAEhB,6BAA6B;AAC/B;;AAEA;EACE,oBAAoB;;EAEpB,iCAAiC;AAMnC;;AAJE;IACE,iCAAiC;IACjC,2BAA2B;EAC7B;;AAGF;EACE,iBAAiB;;EAEjB,oBAAoB;AACtB;;AAEA;EACE,gBAA0B;EAC1B,gBAA0B;AAC5B;;AAEA;EACE,cAAc;;EAEd,gBAAgB;EAChB,oBAAoB;;EAEpB,cAAc;AAChB;;AAEA;EACE,gBAAgB;;EAEhB,cAAc;AAChB",sourcesContent:[null,'@import "../global/variables.css";\n\n@value unit from "../global/global.css";\n@value button-shadow from "../button/button.css";\n\n.select {\n position: relative;\n\n display: inline-block;\n\n white-space: nowrap;\n\n color: var(--ring-text-color);\n}\n\n.toolbar {\n border-top: 1px solid var(--ring-line-color);\n}\n\n.button {\n width: 100%;\n padding: 0;\n\n text-align: left;\n\n [dir="rtl"] & {\n text-align: right;\n direction: ltr;\n }\n\n .toolbar & {\n height: calc(4 * unit);\n margin: unit 0;\n }\n\n &.buttonSpaced {\n padding: 0 calc(2 * unit);\n }\n}\n\n.icons {\n position: absolute;\n top: 0;\n right: 5px;\n bottom: 0;\n\n transition: color var(--ring-ease);\n\n color: var(--ring-icon-secondary-color);\n\n line-height: normal;\n\n .inputMode & {\n font-size: var(--ring-font-size);\n }\n}\n\n.selectedIcon {\n composes: resetButton from "../global/global.css";\n\n position: relative;\n top: 3px;\n\n display: inline-block;\n\n width: calc(2 * unit);\n height: calc(2 * unit);\n margin: 0 4px;\n\n background-repeat: no-repeat;\n background-position: center;\n\n background-size: contain;\n}\n\n.clearIcon {\n padding: 0 3px;\n\n vertical-align: -2px;\n}\n\n.sizeS {\n width: calc(unit * 12);\n}\n\n.sizeM {\n width: calc(unit * 30);\n}\n\n.sizeL {\n width: calc(unit * 50);\n}\n\n.sizeFULL {\n width: 100%;\n}\n\n.sizeAUTO {\n max-width: 100%;\n}\n\n.buttonMode {\n position: relative;\n\n cursor: pointer;\n}\n\n.value {\n composes: ellipsis from "../global/global.css";\n composes: font from "../global/global.css";\n\n display: inline-block;\n\n box-sizing: border-box;\n width: 100%;\n height: calc(unit * 4 + 1px);\n padding: 0 0 3px;\n\n cursor: pointer;\n transition: color var(--ring-ease), border-color var(--ring-ease);\n text-align: left;\n vertical-align: top;\n\n color: var(--ring-text-color);\n\n border: none;\n border-bottom: 1px solid var(--ring-borders-color);\n outline: none;\n background: transparent;\n\n &:focus {\n border-color: var(--ring-main-color);\n }\n\n &.open,\n &:active {\n border-color: transparent;\n }\n\n &::-moz-focus-inner {\n padding: 0;\n\n border: 0;\n outline: 0;\n }\n}\n\n.buttonContainer {\n position: relative;\n\n font-size: var(--ring-font-size);\n}\n\n.buttonValue {\n composes: ellipsis from "../global/global.css";\n\n display: block;\n\n width: 100%;\n padding-left: unit;\n\n text-align: left;\n vertical-align: calc(0 - unit);\n}\n\n.buttonValue:focus-visible {\n box-shadow: button-shadow var(--ring-main-color);\n}\n\n.buttonValueOpen.buttonValueOpen {\n box-shadow: button-shadow var(--ring-main-color);\n}\n\n.buttonValueEmpty.buttonValueEmpty {\n color: var(--ring-disabled-color);\n}\n\n.heightS .buttonValue {\n font-size: var(--ring-font-size);\n}\n\n.label {\n position: relative;\n\n color: var(--ring-secondary-color);\n}\n\n.select:hover .value,\n.select:hover .icons,\n:focus-visible + .icons,\n.value:focus,\n.value:focus + .icons,\n.open,\n.open + .icons,\n.buttonValueOpen + .icons {\n transition: none;\n\n color: var(--ring-main-color);\n}\n\n.disabled {\n pointer-events: none;\n\n color: var(--ring-disabled-color);\n\n & .value {\n color: var(--ring-disabled-color);\n border-bottom-style: dashed;\n }\n}\n\n.avatar {\n margin-right: 4px;\n\n vertical-align: -5px;\n}\n\n.popup {\n min-width: calc(unit * 30);\n max-width: calc(unit * 40);\n}\n\n.chevron.chevron {\n padding: 0 3px;\n\n transition: none;\n vertical-align: -1px;\n\n color: inherit;\n}\n\n.chevronIcon.chevronIcon {\n transition: none;\n\n color: inherit;\n}\n'],sourceRoot:""}]),u.locals={unit:`${l.default.locals.unit}`,"button-shadow":`${c.default.locals["button-shadow"]}`,select:"select_e2a5",value:`value_b3a3 ${l.default.locals.ellipsis} ${l.default.locals.font}`,icons:"icons_c4a9",toolbar:"toolbar_d3be",button:"button_ef00",buttonSpaced:"buttonSpaced_f316",inputMode:"inputMode_a6f6",selectedIcon:`selectedIcon_a62c ${l.default.locals.resetButton}`,clearIcon:"clearIcon_c750",sizeS:"sizeS_e8c3",sizeM:"sizeM_ed34",sizeL:"sizeL_c053",sizeFULL:"sizeFULL_c585",sizeAUTO:"sizeAUTO_a07c",buttonMode:"buttonMode_dd69",open:"open_f1b1",buttonContainer:"buttonContainer_b2b9",buttonValue:`buttonValue_b4ad ${l.default.locals.ellipsis}`,buttonValueOpen:"buttonValueOpen_d9d3",buttonValueEmpty:"buttonValueEmpty_e6b3",heightS:"heightS_b721",label:"label_e56f",disabled:"disabled_b89f",avatar:"avatar_f4dd",popup:"popup_acec",chevron:"chevron_d51f",chevronIcon:"chevronIcon_f6cf"};const p=u},8102:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>s});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(5280),c=a()(o());c.i(l.A),c.push([e.id,".trapButton_c32e {\n position: absolute;\n left: -9999px;\n}\n","",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/tab-trap/tab-trap.css"],names:[],mappings:"AAEA;EACE,kBAAkB;EAClB,aAAa;AACf",sourcesContent:['@import "../global/variables.css";\n\n.trapButton {\n position: absolute;\n left: -9999px;\n}\n'],sourceRoot:""}]),c.locals={trapButton:"trapButton_c32e"};const s=c},4561:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>u});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9106),c=t(5280),s=a()(o());s.i(c.A),s.i(l.default,"",!0),s.push([e.id,'@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.tag_b7aa:hover,\n.tagAngled_c869:hover::before {\n transition: none;\n\n background-color: var(--ring-tag-hover-background-color);\n}}\n\n.tag_b7aa {\n\n position: relative;\n z-index: 1;\n\n display: inline-flex;\n\n box-sizing: border-box;\n max-width: 100%;\n height: 20px;\n\n padding: 0 8px;\n\n cursor: pointer;\n\n vertical-align: top;\n\n color: var(--ring-text-color);\n\n border: none;\n border-radius: var(--ring-border-radius);\n\n font-size: 12px;\n line-height: var(--ring-line-height);\n}\n\n.tag_b7aa,\n.tagAngled_c869::before {\n transition: background-color var(--ring-ease);\n\n background-color: var(--ring-tag-background-color);\n}\n\n.withRemove_c0a5 {\n padding-right: 22px;\n}\n\n.container_cb34 {\n position: relative;\n\n display: inline-block;\n\n max-width: calc(100% - 4px);\n\n margin-right: 4px;\n\n white-space: nowrap;\n}\n\n.focused_fd92,\n.tag_b7aa:focus-visible {\n position: relative;\n\n outline: none;\n box-shadow: 0 0 0 2px var(--ring-border-hover-color);\n}\n\n.focused_fd92,\n.focused_fd92.tagAngled_c869::before,\n.tag_b7aa:focus-visible,\n.tagAngled_c869:focus-visible::before {\n transition: none;\n\n background-color: var(--ring-tag-hover-background-color);\n}\n\n.tagAngled_c869 {\n /* it needs to fix vertical alignment broken by "overflow: hidden". Remove this class, when IE11 will be deprecated */\n\n margin-bottom: -5px !important;\n\n margin-left: 8px;\n padding-left: 4px;\n\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.tagAngled_c869::before {\n position: absolute;\n z-index: -1;\n top: 0;\n left: 0;\n\n box-sizing: border-box;\n width: 12px;\n height: 12px;\n\n content: "";\n transform: scaleY(1.177) rotate(45deg);\n transform-origin: 0 0;\n\n border: none;\n }\n\n.tagAngled_c869.focused_fd92,\n .tagAngled_c869:focus {\n box-shadow: 0 0 0 1px var(--ring-border-hover-color) inset, 0 0 0 1px var(--ring-border-hover-color);\n }\n\n.tagAngled_c869:focus::before {\n box-shadow:\n 1px -1px var(--ring-border-hover-color) inset,\n -0.8px 0.8px 0 0.5px var(--ring-border-hover-color);\n }\n\n.content_a838 {\n}\n\n.disabled_b740.tag_b7aa,\n.disabled_b740.tagAngled_c869::before {\n pointer-events: none;\n\n color: var(--ring-disabled-color);\n background-color: var(--ring-disabled-background-color);\n}\n\n.remove_eff8 {\n position: absolute;\n z-index: 1;\n top: 2px;\n right: 0;\n\n height: auto;\n padding: 0 4px;\n\n line-height: 16px;\n}\n\n.removeIcon_accf.removeIcon_accf {\n color: var(--ring-icon-secondary-color);\n}\n\n.icon_e877 {\n margin-right: 6px;\n\n color: var(--ring-icon-secondary-color);\n}\n\n.icon_e877 svg {\n vertical-align: -3px;\n }\n\n.avatarContainer_ee1b {\n display: inline-block;\n overflow: hidden;\n\n box-sizing: border-box;\n width: 20px;\n height: 20px;\n margin-right: 4px;\n margin-left: -8px;\n\n vertical-align: top;\n\n border-top-left-radius: var(--ring-border-radius);\n border-bottom-left-radius: var(--ring-border-radius);\n}\n\n.customIcon_ac93 {\n max-width: 16px;\n max-height: 16px;\n\n margin-right: 4px;\n\n vertical-align: bottom;\n}\n\n.avatarIcon_a8ff {\n width: 20px;\n\n margin-right: -4px;\n\n -o-object-fit: contain;\n\n object-fit: contain;\n -o-object-position: center;\n object-position: center;\n}\n',"",{version:3,sources:["","webpack://./node_modules/@jetbrains/ring-ui/components/tag/tag.css"],names:[],mappings:"AAAA,wGAAA;;EAAA,iBAAA;;EAAA,yDAAA;CAAA,CAAA;;ACKA;;EAGE,kBAAkB;EAClB,UAAU;;EAEV,oBAAoB;;EAEpB,sBAAsB;EACtB,eAAe;EACf,YAAkB;;EAElB,cAAe;;EAEf,eAAe;;EAEf,mBAAmB;;EAEnB,6BAA6B;;EAE7B,YAAY;EACZ,wCAAwC;;EAExC,eAAe;EACf,oCAAoC;AACtC;;AAEA;;EAEE,6CAA6C;;EAE7C,kDAAkD;AACpD;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,kBAAkB;;EAElB,qBAAqB;;EAErB,2BAAgC;;EAEhC,iBAA4B;;EAE5B,mBAAmB;AACrB;;AAEA;;EAEE,kBAAkB;;EAElB,aAAa;EACb,oDAAoD;AACtD;;AAEA;;;;EAME,gBAAgB;;EAEhB,wDAAwD;AAC1D;;AAEA;EACE,qHAAqH;;EAErH,8BAA8B;;EAE9B,gBAAiB;EACjB,iBAA4B;;EAE5B,yBAAyB;EACzB,4BAA4B;AA6B9B;;AA3BE;IACE,kBAAkB;IAClB,WAAW;IACX,MAAM;IACN,OAAO;;IAEP,sBAAsB;IACtB,WAAW;IACX,YAAY;;IAEZ,WAAW;IACX,sCAAsC;IACtC,qBAAqB;;IAErB,YAAY;EACd;;AAEA;;IAEE,oGAAoG;EACtG;;AAEA;IACE;;yDAEqD;EACvD;;AAGF;AAEA;;AAEA;;EAEE,oBAAoB;;EAEpB,iCAAiC;EACjC,uDAAuD;AACzD;;AAEA;EACE,kBAAkB;EAClB,UAAU;EACV,QAAQ;EACR,QAAQ;;EAER,YAAY;EACZ,cAAyB;;EAEzB,iBAA2B;AAC7B;;AAEA;EACE,uCAAuC;AACzC;;AAEA;EACE,iBAAiB;;EAEjB,uCAAuC;AAKzC;;AAHE;IACE,oBAAoB;EACtB;;AAGF;EACE,qBAAqB;EACrB,gBAAgB;;EAEhB,sBAAsB;EACtB,WAAiB;EACjB,YAAkB;EAClB,iBAA4B;EAC5B,iBAA2B;;EAE3B,mBAAmB;;EAEnB,iDAAiD;EACjD,oDAAoD;AACtD;;AAEA;EACE,eAAyB;EACzB,gBAA0B;;EAE1B,iBAA4B;;EAE5B,sBAAsB;AACxB;;AAEA;EACE,WAAiB;;EAEjB,kBAAkB;;EAElB,sBAAmB;;KAAnB,mBAAmB;EACnB,0BAAuB;KAAvB,uBAAuB;AACzB",sourcesContent:[null,'@import "../global/variables.css";\n\n@value unit from "../global/global.css";\n@value max-height: 20px;\n\n.tag {\n composes: resetButton from "../global/global.css";\n\n position: relative;\n z-index: 1;\n\n display: inline-flex;\n\n box-sizing: border-box;\n max-width: 100%;\n height: max-height;\n\n padding: 0 unit;\n\n cursor: pointer;\n\n vertical-align: top;\n\n color: var(--ring-text-color);\n\n border: none;\n border-radius: var(--ring-border-radius);\n\n font-size: 12px;\n line-height: var(--ring-line-height);\n}\n\n.tag,\n.tagAngled::before {\n transition: background-color var(--ring-ease);\n\n background-color: var(--ring-tag-background-color);\n}\n\n.withRemove {\n padding-right: 22px;\n}\n\n.container {\n position: relative;\n\n display: inline-block;\n\n max-width: calc(100% - unit / 2);\n\n margin-right: calc(unit / 2);\n\n white-space: nowrap;\n}\n\n.focused,\n.tag:focus-visible {\n position: relative;\n\n outline: none;\n box-shadow: 0 0 0 2px var(--ring-border-hover-color);\n}\n\n.focused,\n.focused.tagAngled::before,\n.tag:focus-visible,\n.tagAngled:focus-visible::before,\n.tag:hover,\n.tagAngled:hover::before {\n transition: none;\n\n background-color: var(--ring-tag-hover-background-color);\n}\n\n.tagAngled {\n /* it needs to fix vertical alignment broken by "overflow: hidden". Remove this class, when IE11 will be deprecated */\n\n margin-bottom: -5px !important;\n\n margin-left: unit;\n padding-left: calc(unit / 2);\n\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n\n &::before {\n position: absolute;\n z-index: -1;\n top: 0;\n left: 0;\n\n box-sizing: border-box;\n width: 12px;\n height: 12px;\n\n content: "";\n transform: scaleY(1.177) rotate(45deg);\n transform-origin: 0 0;\n\n border: none;\n }\n\n &.focused,\n &:focus {\n box-shadow: 0 0 0 1px var(--ring-border-hover-color) inset, 0 0 0 1px var(--ring-border-hover-color);\n }\n\n &:focus::before {\n box-shadow:\n 1px -1px var(--ring-border-hover-color) inset,\n -0.8px 0.8px 0 0.5px var(--ring-border-hover-color);\n }\n}\n\n.content {\n composes: ellipsis from "../global/global.css";\n}\n\n.disabled.tag,\n.disabled.tagAngled::before {\n pointer-events: none;\n\n color: var(--ring-disabled-color);\n background-color: var(--ring-disabled-background-color);\n}\n\n.remove {\n position: absolute;\n z-index: 1;\n top: 2px;\n right: 0;\n\n height: auto;\n padding: 0 calc(unit / 2);\n\n line-height: calc(unit * 2);\n}\n\n.removeIcon.removeIcon {\n color: var(--ring-icon-secondary-color);\n}\n\n.icon {\n margin-right: 6px;\n\n color: var(--ring-icon-secondary-color);\n\n & svg {\n vertical-align: -3px;\n }\n}\n\n.avatarContainer {\n display: inline-block;\n overflow: hidden;\n\n box-sizing: border-box;\n width: max-height;\n height: max-height;\n margin-right: calc(unit / 2);\n margin-left: calc(0 - unit);\n\n vertical-align: top;\n\n border-top-left-radius: var(--ring-border-radius);\n border-bottom-left-radius: var(--ring-border-radius);\n}\n\n.customIcon {\n max-width: calc(unit * 2);\n max-height: calc(unit * 2);\n\n margin-right: calc(unit / 2);\n\n vertical-align: bottom;\n}\n\n.avatarIcon {\n width: max-height;\n\n margin-right: -4px;\n\n object-fit: contain;\n object-position: center;\n}\n'],sourceRoot:""}]),s.locals={unit:`${l.default.locals.unit}`,"max-height":"20px",tag:`tag_b7aa ${l.default.locals.resetButton}`,tagAngled:"tagAngled_c869",withRemove:"withRemove_c0a5",container:"container_cb34",focused:"focused_fd92",content:`content_a838 ${l.default.locals.ellipsis}`,disabled:"disabled_b740",remove:"remove_eff8",removeIcon:"removeIcon_accf",icon:"icon_e877",avatarContainer:"avatarContainer_ee1b",customIcon:"customIcon_ac93",avatarIcon:"avatarIcon_a8ff"};const u=s},6162:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>s});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(5280),c=a()(o());c.i(l.A),c.push([e.id,".text_f1dc {\n color: var(--ring-text-color);\n}\n\n.sizeS_b3aa {\n font-size: var(--ring-font-size-smaller);\n}\n\n.sizeM_ae72 {\n font-size: var(--ring-font-size);\n}\n\n.sizeL_f259 {\n font-size: var(--ring-font-size-larger);\n}\n\n.info_c0a4 {\n color: var(--ring-secondary-color);\n}\n","",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/text/text.css"],names:[],mappings:"AAEA;EACE,6BAA6B;AAC/B;;AAEA;EACE,wCAAwC;AAC1C;;AAEA;EACE,gCAAgC;AAClC;;AAEA;EACE,uCAAuC;AACzC;;AAEA;EACE,kCAAkC;AACpC",sourcesContent:['@import "../global/variables.css";\n\n.text {\n color: var(--ring-text-color);\n}\n\n.sizeS {\n font-size: var(--ring-font-size-smaller);\n}\n\n.sizeM {\n font-size: var(--ring-font-size);\n}\n\n.sizeL {\n font-size: var(--ring-font-size-larger);\n}\n\n.info {\n color: var(--ring-secondary-color);\n}\n'],sourceRoot:""}]),c.locals={text:"text_f1dc",sizeS:"sizeS_b3aa",sizeM:"sizeM_ae72",sizeL:"sizeL_f259",info:"info_c0a4"};const s=c},938:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>u});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9106),c=t(5280),s=a()(o());s.i(c.A),s.i(l.default,"",!0),s.push([e.id,".tooltip_fbfb {\n max-width: 400px;\n padding: 8px;\n\n text-align: left;\n\n color: var(--ring-text-color);\n}\n\n.long_b7a5 {\n padding: 8px 12px;\n\n font-size: var(--ring-font-size-smaller);\n line-height: var(--ring-line-height-lowest);\n}\n","",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/tooltip/tooltip.css"],names:[],mappings:"AAIA;EACE,gBAA0B;EAC1B,YAAa;;EAEb,gBAAgB;;EAEhB,6BAA6B;AAC/B;;AAEA;EACE,iBAA8B;;EAE9B,wCAAwC;EACxC,2CAA2C;AAC7C",sourcesContent:['@import "../global/variables.css";\n\n@value unit from "../global/global.css";\n\n.tooltip {\n max-width: calc(unit * 50);\n padding: unit;\n\n text-align: left;\n\n color: var(--ring-text-color);\n}\n\n.long {\n padding: unit calc(unit * 1.5);\n\n font-size: var(--ring-font-size-smaller);\n line-height: var(--ring-line-height-lowest);\n}\n'],sourceRoot:""}]),s.locals={unit:`${l.default.locals.unit}`,tooltip:"tooltip_fbfb",long:"long_b7a5"};const u=s},7156:e=>{"use strict";e.exports=function(e){var n=[];return n.toString=function(){return this.map((function(n){var t="",r=void 0!==n[5];return n[4]&&(t+="@supports (".concat(n[4],") {")),n[2]&&(t+="@media ".concat(n[2]," {")),r&&(t+="@layer".concat(n[5].length>0?" ".concat(n[5]):""," {")),t+=e(n),r&&(t+="}"),n[2]&&(t+="}"),n[4]&&(t+="}"),t})).join("")},n.i=function(e,t,r,o,i){"string"==typeof e&&(e=[[null,e,void 0]]);var a={};if(r)for(var l=0;l0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=i),t&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=t):u[2]=t),o&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=o):u[4]="".concat(o)),n.push(u))}},n}},1404:e=>{"use strict";e.exports=function(e){var n=e[1],t=e[3];if(!t)return n;if("function"==typeof btoa){var r=btoa(unescape(encodeURIComponent(JSON.stringify(t)))),o="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(r),i="/*# ".concat(o," */");return[n].concat([i]).join("\n")}return[n].join("\n")}},4504:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(7222);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},9102:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(9892);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},6860:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(1866);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},3912:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(5486);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},8764:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(6506);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},6620:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(9106);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},9468:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(5066);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},274:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(8976);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},5924:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(8266);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},7826:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(6960);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},1914:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(480);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},8130:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(1586);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},1564:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(8890);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},5103:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(4481);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},3006:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(2636);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},9344:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(8102);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},4512:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(4561);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},6932:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(6162);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},8132:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(938);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},8298:e=>{"use strict";var n=[];function t(e){for(var t=-1,r=0;r{"use strict";var n={};e.exports=function(e,t){var r=function(e){if(void 0===n[e]){var t=document.querySelector(e);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(e){t=null}n[e]=t}return n[e]}(e);if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(t)}},9742:e=>{"use strict";e.exports=function(e){var n=document.createElement("style");return e.setAttributes(n,e.attributes),e.insert(n,e.options),n}},9986:(e,n,t)=>{"use strict";e.exports=function(e){var n=t.nc;n&&e.setAttribute("nonce",n)}},5163:e=>{"use strict";e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var n=e.insertStyleElement(e);return{update:function(t){!function(e,n,t){var r="";t.supports&&(r+="@supports (".concat(t.supports,") {")),t.media&&(r+="@media ".concat(t.media," {"));var o=void 0!==t.layer;o&&(r+="@layer".concat(t.layer.length>0?" ".concat(t.layer):""," {")),r+=t.css,o&&(r+="}"),t.media&&(r+="}"),t.supports&&(r+="}");var i=t.sourceMap;i&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),n.styleTagTransform(r,e,n.options)}(n,e,t)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(n)}}}},6291:e=>{"use strict";e.exports=function(e,n){if(n.styleSheet)n.styleSheet.cssText=e;else{for(;n.firstChild;)n.removeChild(n.firstChild);n.appendChild(document.createTextNode(e))}}},9511:(e,n,t)=>{"use strict";var r=t(6556)("ArrayBuffer.prototype.byteLength",!0),o=t(4670);e.exports=function(e){return o(e)?r?r(e):e.byteLength:NaN}},3144:(e,n,t)=>{"use strict";var r=t(6743),o=t(1002),i=t(76),a=t(7119);e.exports=a||r.call(i,o)},2205:(e,n,t)=>{"use strict";var r=t(6743),o=t(1002),i=t(3144);e.exports=function(){return i(r,o,arguments)}},1002:e=>{"use strict";e.exports=Function.prototype.apply},76:e=>{"use strict";e.exports=Function.prototype.call},3126:(e,n,t)=>{"use strict";var r=t(6743),o=t(9675),i=t(76),a=t(3144);e.exports=function(e){if(e.length<1||"function"!=typeof e[0])throw new o("a function is required");return a(r,i,e)}},7119:e=>{"use strict";e.exports="undefined"!=typeof Reflect&&Reflect&&Reflect.apply},8075:(e,n,t)=>{"use strict";var r=t(453),o=t(487),i=o(r("String.prototype.indexOf"));e.exports=function(e,n){var t=r(e,!!n);return"function"==typeof t&&i(e,".prototype.")>-1?o(t):t}},487:(e,n,t)=>{"use strict";var r=t(6897),o=t(3036),i=t(3126),a=t(2205);e.exports=function(e){var n=i(arguments),t=e.length-(arguments.length-1);return r(n,1+(t>0?t:0),!0)},o?o(e.exports,"apply",{value:a}):e.exports.apply=a},6556:(e,n,t)=>{"use strict";var r=t(453),o=t(3126),i=o([r("%String.prototype.indexOf%")]);e.exports=function(e,n){var t=r(e,!!n);return"function"==typeof t&&i(e,".prototype.")>-1?o([t]):t}},5888:(e,n,t)=>{"use strict";e.exports=function(e,n){var t=this,r=t.constructor;return t.options=Object.assign({storeInstancesGlobally:!0},n||{}),t.callbacks={},t.directMap={},t.sequenceLevels={},t.resetTimer=null,t.ignoreNextKeyup=!1,t.ignoreNextKeypress=!1,t.nextExpectedAction=!1,t.element=e,t.addEvents(),t.options.storeInstancesGlobally&&r.instances.push(t),t},e.exports.prototype.bind=t(1210),e.exports.prototype.bindMultiple=t(4382),e.exports.prototype.unbind=t(3709),e.exports.prototype.trigger=t(3149),e.exports.prototype.reset=t(6726),e.exports.prototype.stopCallback=t(4446),e.exports.prototype.handleKey=t(4320),e.exports.prototype.addEvents=t(6687),e.exports.prototype.bindSingle=t(2214),e.exports.prototype.getKeyInfo=t(4174),e.exports.prototype.pickBestAction=t(6004),e.exports.prototype.getReverseMap=t(5193),e.exports.prototype.getMatches=t(9132),e.exports.prototype.resetSequences=t(3229),e.exports.prototype.fireCallback=t(7922),e.exports.prototype.bindSequence=t(3256),e.exports.prototype.resetSequenceTimer=t(602),e.exports.prototype.detach=t(3502),e.exports.instances=[],e.exports.reset=t(6255),e.exports.REVERSE_MAP=null},6687:(e,n,t)=>{"use strict";e.exports=function(){var e=this,n=t(2904),r=e.element;e.eventHandler=t(8178).bind(e),n(r,"keypress",e.eventHandler),n(r,"keydown",e.eventHandler),n(r,"keyup",e.eventHandler)}},1210:e=>{"use strict";e.exports=function(e,n,t){return e=e instanceof Array?e:[e],this.bindMultiple(e,n,t),this}},4382:e=>{"use strict";e.exports=function(e,n,t){for(var r=0;r{"use strict";e.exports=function(e,n,r,o){var i=this;function a(n){return function(){i.nextExpectedAction=n,++i.sequenceLevels[e],i.resetSequenceTimer()}}function l(n){var a;i.fireCallback(r,n,e),"keyup"!==o&&(a=t(3970),i.ignoreNextKeyup=a(n)),setTimeout((function(){i.resetSequences()}),10)}i.sequenceLevels[e]=0;for(var c=0;c{"use strict";e.exports=function(e,n,t,r,o){var i=this;i.directMap[e+":"+t]=n;var a,l=(e=e.replace(/\s+/g," ")).split(" ");l.length>1?i.bindSequence(e,l,n,t):(a=i.getKeyInfo(e,t),i.callbacks[a.key]=i.callbacks[a.key]||[],i.getMatches(a.key,a.modifiers,{type:a.action},r,e,o),i.callbacks[a.key][r?"unshift":"push"]({callback:n,modifiers:a.modifiers,action:a.action,seq:r,level:o,combo:e}))}},3502:(e,n,t)=>{var r=t(2904).off;e.exports=function(){var e=this,n=e.element;r(n,"keypress",e.eventHandler),r(n,"keydown",e.eventHandler),r(n,"keyup",e.eventHandler)}},2904:e=>{function n(e,n,t,r){return!e.addEventListener&&(n="on"+n),(e.addEventListener||e.attachEvent).call(e,n,t,r),t}e.exports=n,e.exports.on=n,e.exports.off=function(e,n,t,r){return!e.removeEventListener&&(n="on"+n),(e.removeEventListener||e.detachEvent).call(e,n,t,r),t}},7922:(e,n,t)=>{"use strict";e.exports=function(e,n,r,o){this.stopCallback(n,n.target||n.srcElement,r,o)||!1===e(n,r)&&(t(2156)(n),t(1849)(n))}},4174:(e,n,t)=>{"use strict";e.exports=function(e,n){var r,o,i,a,l,c,s=[];for(r=t(7486)(e),a=t(7641),l=t(7984),c=t(5962),i=0;i{"use strict";e.exports=function(e,n,r,o,i,a){var l,c,s,u,p=this,f=[],d=r.type;"keypress"!==d||r.code&&"Arrow"===r.code.slice(0,5)||(p.callbacks["any-character"]||[]).forEach((function(e){f.push(e)}));if(!p.callbacks[e])return f;for(s=t(5962),"keyup"===d&&s(e)&&(n=[e]),l=0;l{"use strict";e.exports=function(){var e,n=this.constructor;if(!n.REVERSE_MAP)for(var r in n.REVERSE_MAP={},e=t(6814))r>95&&r<112||e.hasOwnProperty(r)&&(n.REVERSE_MAP[e[r]]=r);return n.REVERSE_MAP}},4320:(e,n,t)=>{"use strict";e.exports=function(e,n,r){var o,i,a,l,c=this,s={},u=0,p=!1;for(o=c.getMatches(e,n,r),i=0;i{"use strict";e.exports=function(e){var n,r=this;"number"!=typeof e.which&&(e.which=e.keyCode);var o=t(3970)(e);void 0!==o&&("keyup"!==e.type||r.ignoreNextKeyup!==o?(n=t(5273),r.handleKey(o,n(e),e)):r.ignoreNextKeyup=!1)}},7238:e=>{"use strict";e.exports=function(e,n){return e.sort().join(",")===n.sort().join(",")}},6004:e=>{"use strict";e.exports=function(e,n,t){return t||(t=this.getReverseMap()[e]?"keydown":"keypress"),"keypress"===t&&n.length&&(t="keydown"),t}},6726:e=>{"use strict";e.exports=function(){return this.callbacks={},this.directMap={},this}},602:e=>{"use strict";e.exports=function(){var e=this;clearTimeout(e.resetTimer),e.resetTimer=setTimeout((function(){e.resetSequences()}),1e3)}},3229:e=>{"use strict";e.exports=function(e){var n=this;e=e||{};var t,r=!1;for(t in n.sequenceLevels)e[t]?r=!0:n.sequenceLevels[t]=0;r||(n.nextExpectedAction=!1)}},4446:e=>{"use strict";e.exports=function(e,n){if((" "+n.className+" ").indexOf(" combokeys ")>-1)return!1;var t=n.tagName.toLowerCase();return"input"===t||"select"===t||"textarea"===t||n.isContentEditable}},3149:e=>{"use strict";e.exports=function(e,n){return this.directMap[e+":"+n]&&this.directMap[e+":"+n]({},e),this}},3709:e=>{"use strict";e.exports=function(e,n){return this.bind(e,(function(){}),n)}},6255:e=>{"use strict";e.exports=function(){this.instances.forEach((function(e){e.reset()}))}},3970:(e,n,t)=>{"use strict";e.exports=function(e){var n,r;if(n=t(6814),r=t(4082),"keypress"===e.type){var o=String.fromCharCode(e.which);return e.shiftKey||(o=o.toLowerCase()),o}return void 0!==n[e.which]?n[e.which]:void 0!==r[e.which]?r[e.which]:String.fromCharCode(e.which).toLowerCase()}},5273:e=>{"use strict";e.exports=function(e){var n=[];return e.shiftKey&&n.push("shift"),e.altKey&&n.push("alt"),e.ctrlKey&&n.push("ctrl"),e.metaKey&&n.push("meta"),n}},5962:e=>{"use strict";e.exports=function(e){return"shift"===e||"ctrl"===e||"alt"===e||"meta"===e}},7486:e=>{"use strict";e.exports=function(e){return"+"===e?["+"]:e.split("+")}},2156:e=>{"use strict";e.exports=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1}},7984:e=>{"use strict";e.exports={"~":"`","!":"1","@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"}},7641:e=>{"use strict";e.exports={option:"alt",command:"meta",return:"enter",escape:"esc",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"}},4082:e=>{"use strict";e.exports={106:"*",107:"plus",109:"minus",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"}},6814:e=>{"use strict";e.exports={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",173:"minus",187:"plus",189:"minus",224:"meta"};for(var n=1;n<20;++n)e.exports[111+n]="f"+n;for(n=0;n<=9;++n)e.exports[n+96]=n},1849:e=>{"use strict";e.exports=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}},4982:(e,n,t)=>{"use strict";var r=t(6525),o=t(8075),i=t(1589),a=t(453),l=t(4552),c=t(920),s=t(7653),u=t(7244),p=t(4634),f=t(4670),d=t(2120),g=t(4035),h=t(7070),A=t(1189),b=t(1539),v=t(593),m=t(5767),y=t(9511),E=o("SharedArrayBuffer.prototype.byteLength",!0),C=o("Date.prototype.getTime"),w=Object.getPrototypeOf,x=o("Object.prototype.toString"),S=a("%Set%",!0),_=o("Map.prototype.has",!0),k=o("Map.prototype.get",!0),O=o("Map.prototype.size",!0),B=o("Set.prototype.add",!0),P=o("Set.prototype.delete",!0),T=o("Set.prototype.has",!0),I=o("Set.prototype.size",!0);function j(e,n,t,r){for(var o,i=l(e);(o=i.next())&&!o.done;)if(N(n,o.value,t,r))return P(e,o.value),!0;return!1}function z(e){return void 0===e?null:"object"!=typeof e?"symbol"!=typeof e&&("string"!=typeof e&&"number"!=typeof e||+e==+e):void 0}function D(e,n,t,o,i,a){var l=z(t);if(null!=l)return l;var c=k(n,l),s=r({},i,{strict:!1});return!(void 0===c&&!_(n,l)||!N(o,c,s,a))&&(!_(e,l)&&N(o,c,s,a))}function R(e,n,t){var r=z(t);return null!=r?r:T(n,r)&&!T(e,r)}function M(e,n,t,r,o,i){for(var a,c,s=l(e);(a=s.next())&&!a.done;)if(N(t,c=a.value,o,i)&&N(r,k(n,c),o,i))return P(e,c),!0;return!1}function N(e,n,t,o){var a=t||{};if(a.strict?s(e,n):e===n)return!0;if(b(e)!==b(n))return!1;if(!e||!n||"object"!=typeof e&&"object"!=typeof n)return a.strict?s(e,n):e==n;var c,P=o.has(e),z=o.has(n);if(P&&z){if(o.get(e)===o.get(n))return!0}else c={};return P||o.set(e,c),z||o.set(n,c),function(e,n,t,o){var a,c;if(typeof e!=typeof n)return!1;if(null==e||null==n)return!1;if(x(e)!==x(n))return!1;if(u(e)!==u(n))return!1;var s=p(e),b=p(n);if(s!==b)return!1;var P=e instanceof Error,z=n instanceof Error;if(P!==z)return!1;if((P||z)&&(e.name!==n.name||e.message!==n.message))return!1;var L=g(e),H=g(n);if(L!==H)return!1;if((L||H)&&(e.source!==n.source||i(e)!==i(n)))return!1;var U=d(e),W=d(n);if(U!==W)return!1;if((U||W)&&C(e)!==C(n))return!1;if(t.strict&&w&&w(e)!==w(n))return!1;var G=m(e),Y=m(n);if(G!==Y)return!1;if(G||Y){if(e.length!==n.length)return!1;for(a=0;a=0;a--)if(Z[a]!=J[a])return!1;for(a=Z.length-1;a>=0;a--)if(!N(e[c=Z[a]],n[c],t,o))return!1;var ee=v(e),ne=v(n);if(ee!==ne)return!1;if("Set"===ee||"Set"===ne)return function(e,n,t,r){if(I(e)!==I(n))return!1;var o,i,a,c=l(e),s=l(n);for(;(o=c.next())&&!o.done;)if(o.value&&"object"==typeof o.value)a||(a=new S),B(a,o.value);else if(!T(n,o.value)){if(t.strict)return!1;if(!R(e,n,o.value))return!1;a||(a=new S),B(a,o.value)}if(a){for(;(i=s.next())&&!i.done;)if(i.value&&"object"==typeof i.value){if(!j(a,i.value,t.strict,r))return!1}else if(!t.strict&&!T(e,i.value)&&!j(a,i.value,t.strict,r))return!1;return 0===I(a)}return!0}(e,n,t,o);if("Map"===ee)return function(e,n,t,o){if(O(e)!==O(n))return!1;var i,a,c,s,u,p,f=l(e),d=l(n);for(;(i=f.next())&&!i.done;)if(s=i.value[0],u=i.value[1],s&&"object"==typeof s)c||(c=new S),B(c,s);else if(void 0===(p=k(n,s))&&!_(n,s)||!N(u,p,t,o)){if(t.strict)return!1;if(!D(e,n,s,u,t,o))return!1;c||(c=new S),B(c,s)}if(c){for(;(a=d.next())&&!a.done;)if(s=a.value[0],p=a.value[1],s&&"object"==typeof s){if(!M(c,e,s,p,t,o))return!1}else if(!(t.strict||e.has(s)&&N(k(e,s),p,t,o)||M(c,e,s,p,r({},t,{strict:!1}),o)))return!1;return 0===I(c)}return!0}(e,n,t,o);return!0}(e,n,a,o)}function F(e){return!(!e||"object"!=typeof e||"number"!=typeof e.length)&&("function"==typeof e.copy&&"function"==typeof e.slice&&(!(e.length>0&&"number"!=typeof e[0])&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))))}e.exports=function(e,n,t){return N(e,n,t,c())}},41:(e,n,t)=>{"use strict";var r=t(3036),o=t(8068),i=t(9675),a=t(5795);e.exports=function(e,n,t){if(!e||"object"!=typeof e&&"function"!=typeof e)throw new i("`obj` must be an object or a function`");if("string"!=typeof n&&"symbol"!=typeof n)throw new i("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!=typeof arguments[3]&&null!==arguments[3])throw new i("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!=typeof arguments[4]&&null!==arguments[4])throw new i("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!=typeof arguments[5]&&null!==arguments[5])throw new i("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!=typeof arguments[6])throw new i("`loose`, if provided, must be a boolean");var l=arguments.length>3?arguments[3]:null,c=arguments.length>4?arguments[4]:null,s=arguments.length>5?arguments[5]:null,u=arguments.length>6&&arguments[6],p=!!a&&a(e,n);if(r)r(e,n,{configurable:null===s&&p?p.configurable:!s,enumerable:null===l&&p?p.enumerable:!l,value:t,writable:null===c&&p?p.writable:!c});else{if(!u&&(l||c||s))throw new o("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");e[n]=t}}},8452:(e,n,t)=>{"use strict";var r=t(1189),o="function"==typeof Symbol&&"symbol"==typeof Symbol("foo"),i=Object.prototype.toString,a=Array.prototype.concat,l=t(41),c=t(592)(),s=function(e,n,t,r){if(n in e)if(!0===r){if(e[n]===t)return}else if("function"!=typeof(o=r)||"[object Function]"!==i.call(o)||!r())return;var o;c?l(e,n,t,!0):l(e,n,t)},u=function(e,n){var t=arguments.length>2?arguments[2]:{},i=r(n);o&&(i=a.call(i,Object.getOwnPropertySymbols(n)));for(var l=0;l{"use strict";var r,o=t(3126),i=t(5795);try{r=[].__proto__===Array.prototype}catch(e){if(!e||"object"!=typeof e||!("code"in e)||"ERR_PROTO_ACCESS"!==e.code)throw e}var a=!!r&&i&&i(Object.prototype,"__proto__"),l=Object,c=l.getPrototypeOf;e.exports=a&&"function"==typeof a.get?o([a.get]):"function"==typeof c&&function(e){return c(null==e?e:l(e))}},3036:e=>{"use strict";var n=Object.defineProperty||!1;if(n)try{n({},"a",{value:1})}catch(e){n=!1}e.exports=n},1237:e=>{"use strict";e.exports=EvalError},9383:e=>{"use strict";e.exports=Error},9290:e=>{"use strict";e.exports=RangeError},9538:e=>{"use strict";e.exports=ReferenceError},8068:e=>{"use strict";e.exports=SyntaxError},9675:e=>{"use strict";e.exports=TypeError},5345:e=>{"use strict";e.exports=URIError},9612:e=>{"use strict";e.exports=Object},2682:(e,n,t)=>{"use strict";var r=t(9600),o=Object.prototype.toString,i=Object.prototype.hasOwnProperty;e.exports=function(e,n,t){if(!r(n))throw new TypeError("iterator must be a function");var a,l;arguments.length>=3&&(a=t),l=e,"[object Array]"===o.call(l)?function(e,n,t){for(var r=0,o=e.length;r{"use strict";var n=Object.prototype.toString,t=Math.max,r=function(e,n){for(var t=[],r=0;r{"use strict";var r=t(9353);e.exports=Function.prototype.bind||r},4462:e=>{"use strict";var n=function(){return"string"==typeof function(){}.name},t=Object.getOwnPropertyDescriptor;if(t)try{t([],"length")}catch(e){t=null}n.functionsHaveConfigurableNames=function(){if(!n()||!t)return!1;var e=t((function(){}),"name");return!!e&&!!e.configurable};var r=Function.prototype.bind;n.boundFunctionsHaveNames=function(){return n()&&"function"==typeof r&&""!==function(){}.bind().name},e.exports=n},453:(e,n,t)=>{"use strict";var r,o=t(9612),i=t(9383),a=t(1237),l=t(9290),c=t(9538),s=t(8068),u=t(9675),p=t(5345),f=t(1514),d=t(8968),g=t(6188),h=t(8002),A=t(5880),b=t(414),v=t(3093),m=Function,y=function(e){try{return m('"use strict"; return ('+e+").constructor;")()}catch(e){}},E=t(5795),C=t(3036),w=function(){throw new u},x=E?function(){try{return w}catch(e){try{return E(arguments,"callee").get}catch(e){return w}}}():w,S=t(4039)(),_=t(3628),k=t(1064),O=t(8648),B=t(1002),P=t(76),T={},I="undefined"!=typeof Uint8Array&&_?_(Uint8Array):r,j={__proto__:null,"%AggregateError%":"undefined"==typeof AggregateError?r:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?r:ArrayBuffer,"%ArrayIteratorPrototype%":S&&_?_([][Symbol.iterator]()):r,"%AsyncFromSyncIteratorPrototype%":r,"%AsyncFunction%":T,"%AsyncGenerator%":T,"%AsyncGeneratorFunction%":T,"%AsyncIteratorPrototype%":T,"%Atomics%":"undefined"==typeof Atomics?r:Atomics,"%BigInt%":"undefined"==typeof BigInt?r:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?r:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?r:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?r:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":i,"%eval%":eval,"%EvalError%":a,"%Float16Array%":"undefined"==typeof Float16Array?r:Float16Array,"%Float32Array%":"undefined"==typeof Float32Array?r:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?r:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?r:FinalizationRegistry,"%Function%":m,"%GeneratorFunction%":T,"%Int8Array%":"undefined"==typeof Int8Array?r:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?r:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?r:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":S&&_?_(_([][Symbol.iterator]())):r,"%JSON%":"object"==typeof JSON?JSON:r,"%Map%":"undefined"==typeof Map?r:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&S&&_?_((new Map)[Symbol.iterator]()):r,"%Math%":Math,"%Number%":Number,"%Object%":o,"%Object.getOwnPropertyDescriptor%":E,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?r:Promise,"%Proxy%":"undefined"==typeof Proxy?r:Proxy,"%RangeError%":l,"%ReferenceError%":c,"%Reflect%":"undefined"==typeof Reflect?r:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?r:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&S&&_?_((new Set)[Symbol.iterator]()):r,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?r:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":S&&_?_(""[Symbol.iterator]()):r,"%Symbol%":S?Symbol:r,"%SyntaxError%":s,"%ThrowTypeError%":x,"%TypedArray%":I,"%TypeError%":u,"%Uint8Array%":"undefined"==typeof Uint8Array?r:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?r:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?r:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?r:Uint32Array,"%URIError%":p,"%WeakMap%":"undefined"==typeof WeakMap?r:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?r:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?r:WeakSet,"%Function.prototype.call%":P,"%Function.prototype.apply%":B,"%Object.defineProperty%":C,"%Object.getPrototypeOf%":k,"%Math.abs%":f,"%Math.floor%":d,"%Math.max%":g,"%Math.min%":h,"%Math.pow%":A,"%Math.round%":b,"%Math.sign%":v,"%Reflect.getPrototypeOf%":O};if(_)try{null.error}catch(e){var z=_(_(e));j["%Error.prototype%"]=z}var D=function e(n){var t;if("%AsyncFunction%"===n)t=y("async function () {}");else if("%GeneratorFunction%"===n)t=y("function* () {}");else if("%AsyncGeneratorFunction%"===n)t=y("async function* () {}");else if("%AsyncGenerator%"===n){var r=e("%AsyncGeneratorFunction%");r&&(t=r.prototype)}else if("%AsyncIteratorPrototype%"===n){var o=e("%AsyncGenerator%");o&&_&&(t=_(o.prototype))}return j[n]=t,t},R={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},M=t(6743),N=t(9957),F=M.call(P,Array.prototype.concat),L=M.call(B,Array.prototype.splice),H=M.call(P,String.prototype.replace),U=M.call(P,String.prototype.slice),W=M.call(P,RegExp.prototype.exec),G=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,Y=/\\(\\)?/g,q=function(e,n){var t,r=e;if(N(R,r)&&(r="%"+(t=R[r])[0]+"%"),N(j,r)){var o=j[r];if(o===T&&(o=D(r)),void 0===o&&!n)throw new u("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:t,name:r,value:o}}throw new s("intrinsic "+e+" does not exist!")};e.exports=function(e,n){if("string"!=typeof e||0===e.length)throw new u("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof n)throw new u('"allowMissing" argument must be a boolean');if(null===W(/^%?[^%]*%?$/,e))throw new s("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var t=function(e){var n=U(e,0,1),t=U(e,-1);if("%"===n&&"%"!==t)throw new s("invalid intrinsic syntax, expected closing `%`");if("%"===t&&"%"!==n)throw new s("invalid intrinsic syntax, expected opening `%`");var r=[];return H(e,G,(function(e,n,t,o){r[r.length]=t?H(o,Y,"$1"):n||e})),r}(e),r=t.length>0?t[0]:"",o=q("%"+r+"%",n),i=o.name,a=o.value,l=!1,c=o.alias;c&&(r=c[0],L(t,F([0,1],c)));for(var p=1,f=!0;p=t.length){var A=E(a,d);a=(f=!!A)&&"get"in A&&!("originalValue"in A.get)?A.get:a[d]}else f=N(a,d),a=a[d];f&&!l&&(j[i]=a)}}return a}},1064:(e,n,t)=>{"use strict";var r=t(9612);e.exports=r.getPrototypeOf||null},8648:e=>{"use strict";e.exports="undefined"!=typeof Reflect&&Reflect.getPrototypeOf||null},3628:(e,n,t)=>{"use strict";var r=t(8648),o=t(1064),i=t(7176);e.exports=r?function(e){return r(e)}:o?function(e){if(!e||"object"!=typeof e&&"function"!=typeof e)throw new TypeError("getProto: not an object");return o(e)}:i?function(e){return i(e)}:null},6549:e=>{"use strict";e.exports=Object.getOwnPropertyDescriptor},5795:(e,n,t)=>{"use strict";var r=t(6549);if(r)try{r([],"length")}catch(e){r=null}e.exports=r},9790:e=>{"use strict";var n="undefined"!=typeof BigInt&&BigInt;e.exports=function(){return"function"==typeof n&&"function"==typeof BigInt&&"bigint"==typeof n(42)&&"bigint"==typeof BigInt(42)}},592:(e,n,t)=>{"use strict";var r=t(3036),o=function(){return!!r};o.hasArrayLengthDefineBug=function(){if(!r)return null;try{return 1!==r([],"length",{value:1}).length}catch(e){return!0}},e.exports=o},4039:(e,n,t)=>{"use strict";var r="undefined"!=typeof Symbol&&Symbol,o=t(1333);e.exports=function(){return"function"==typeof r&&("function"==typeof Symbol&&("symbol"==typeof r("foo")&&("symbol"==typeof Symbol("bar")&&o())))}},1333:e=>{"use strict";e.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},n=Symbol("test"),t=Object(n);if("string"==typeof n)return!1;if("[object Symbol]"!==Object.prototype.toString.call(n))return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;for(var r in e[n]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var o=Object.getOwnPropertySymbols(e);if(1!==o.length||o[0]!==n)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,n))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(e,n);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},9092:(e,n,t)=>{"use strict";var r=t(1333);e.exports=function(){return r()&&!!Symbol.toStringTag}},9957:(e,n,t)=>{"use strict";var r=Function.prototype.call,o=Object.prototype.hasOwnProperty,i=t(6743);e.exports=i.call(r,o)},63:(e,n,t)=>{"use strict";var r=t(9957),o=t(920)(),i=t(9675),a={assert:function(e,n){if(!e||"object"!=typeof e&&"function"!=typeof e)throw new i("`O` is not an object");if("string"!=typeof n)throw new i("`slot` must be a string");if(o.assert(e),!a.has(e,n))throw new i("`"+n+"` is not present on `O`")},get:function(e,n){if(!e||"object"!=typeof e&&"function"!=typeof e)throw new i("`O` is not an object");if("string"!=typeof n)throw new i("`slot` must be a string");var t=o.get(e);return t&&t["$"+n]},has:function(e,n){if(!e||"object"!=typeof e&&"function"!=typeof e)throw new i("`O` is not an object");if("string"!=typeof n)throw new i("`slot` must be a string");var t=o.get(e);return!!t&&r(t,"$"+n)},set:function(e,n,t){if(!e||"object"!=typeof e&&"function"!=typeof e)throw new i("`O` is not an object");if("string"!=typeof n)throw new i("`slot` must be a string");var r=o.get(e);r||(r={},o.set(e,r)),r["$"+n]=t}};Object.freeze&&Object.freeze(a),e.exports=a},7244:(e,n,t)=>{"use strict";var r=t(9092)(),o=t(6556)("Object.prototype.toString"),i=function(e){return!(r&&e&&"object"==typeof e&&Symbol.toStringTag in e)&&"[object Arguments]"===o(e)},a=function(e){return!!i(e)||null!==e&&"object"==typeof e&&"length"in e&&"number"==typeof e.length&&e.length>=0&&"[object Array]"!==o(e)&&"callee"in e&&"[object Function]"===o(e.callee)},l=function(){return i(arguments)}();i.isLegacyArguments=a,e.exports=l?i:a},4670:(e,n,t)=>{"use strict";var r=t(487),o=t(6556),i=t(453)("%ArrayBuffer%",!0),a=o("ArrayBuffer.prototype.byteLength",!0),l=o("Object.prototype.toString"),c=!!i&&!a&&new i(0).slice,s=!!c&&r(c);e.exports=a||s?function(e){if(!e||"object"!=typeof e)return!1;try{return a?a(e):s(e,0),!0}catch(e){return!1}}:i?function(e){return"[object ArrayBuffer]"===l(e)}:function(e){return!1}},9803:(e,n,t)=>{"use strict";if(t(9790)()){var r=BigInt.prototype.valueOf;e.exports=function(e){return null!=e&&"boolean"!=typeof e&&"string"!=typeof e&&"number"!=typeof e&&"symbol"!=typeof e&&"function"!=typeof e&&("bigint"==typeof e||function(e){try{return r.call(e),!0}catch(e){}return!1}(e))}}else e.exports=function(e){return!1}},5128:(e,n,t)=>{"use strict";var r=t(6556),o=r("Boolean.prototype.toString"),i=r("Object.prototype.toString"),a=t(9092)();e.exports=function(e){return"boolean"==typeof e||null!==e&&"object"==typeof e&&(a?function(e){try{return o(e),!0}catch(e){return!1}}(e):"[object Boolean]"===i(e))}},9600:e=>{"use strict";var n,t,r=Function.prototype.toString,o="object"==typeof Reflect&&null!==Reflect&&Reflect.apply;if("function"==typeof o&&"function"==typeof Object.defineProperty)try{n=Object.defineProperty({},"length",{get:function(){throw t}}),t={},o((function(){throw 42}),null,n)}catch(e){e!==t&&(o=null)}else o=null;var i=/^\s*class\b/,a=function(e){try{var n=r.call(e);return i.test(n)}catch(e){return!1}},l=function(e){try{return!a(e)&&(r.call(e),!0)}catch(e){return!1}},c=Object.prototype.toString,s="function"==typeof Symbol&&!!Symbol.toStringTag,u=!(0 in[,]),p=function(){return!1};if("object"==typeof document){var f=document.all;c.call(f)===c.call(document.all)&&(p=function(e){if((u||!e)&&(void 0===e||"object"==typeof e))try{var n=c.call(e);return("[object HTMLAllCollection]"===n||"[object HTML document.all class]"===n||"[object HTMLCollection]"===n||"[object Object]"===n)&&null==e("")}catch(e){}return!1})}e.exports=o?function(e){if(p(e))return!0;if(!e)return!1;if("function"!=typeof e&&"object"!=typeof e)return!1;try{o(e,null,n)}catch(e){if(e!==t)return!1}return!a(e)&&l(e)}:function(e){if(p(e))return!0;if(!e)return!1;if("function"!=typeof e&&"object"!=typeof e)return!1;if(s)return l(e);if(a(e))return!1;var n=c.call(e);return!("[object Function]"!==n&&"[object GeneratorFunction]"!==n&&!/^\[object HTML/.test(n))&&l(e)}},2120:(e,n,t)=>{"use strict";var r=t(6556),o=r("Date.prototype.getDay"),i=r("Object.prototype.toString"),a=t(9092)();e.exports=function(e){return"object"==typeof e&&null!==e&&(a?function(e){try{return o(e),!0}catch(e){return!1}}(e):"[object Date]"===i(e))}},1421:e=>{"use strict";var n,t="function"==typeof Map&&Map.prototype?Map:null,r="function"==typeof Set&&Set.prototype?Set:null;t||(n=function(e){return!1});var o=t?Map.prototype.has:null,i=r?Set.prototype.has:null;n||o||(n=function(e){return!1}),e.exports=n||function(e){if(!e||"object"!=typeof e)return!1;try{if(o.call(e),i)try{i.call(e)}catch(e){return!0}return e instanceof t}catch(e){}return!1}},1703:(e,n,t)=>{"use strict";var r=t(6556),o=r("Number.prototype.toString"),i=r("Object.prototype.toString"),a=t(9092)();e.exports=function(e){return"number"==typeof e||!(!e||"object"!=typeof e)&&(a?function(e){try{return o(e),!0}catch(e){return!1}}(e):"[object Number]"===i(e))}},4035:(e,n,t)=>{"use strict";var r,o=t(6556),i=t(9092)(),a=t(9957),l=t(5795);if(i){var c=o("RegExp.prototype.exec"),s={},u=function(){throw s},p={toString:u,valueOf:u};"symbol"==typeof Symbol.toPrimitive&&(p[Symbol.toPrimitive]=u),r=function(e){if(!e||"object"!=typeof e)return!1;var n=l(e,"lastIndex");if(!(n&&a(n,"value")))return!1;try{c(e,p)}catch(e){return e===s}}}else{var f=o("Object.prototype.toString");r=function(e){return!(!e||"object"!=typeof e&&"function"!=typeof e)&&"[object RegExp]"===f(e)}}e.exports=r},256:e=>{"use strict";var n,t="function"==typeof Map&&Map.prototype?Map:null,r="function"==typeof Set&&Set.prototype?Set:null;r||(n=function(e){return!1});var o=t?Map.prototype.has:null,i=r?Set.prototype.has:null;n||i||(n=function(e){return!1}),e.exports=n||function(e){if(!e||"object"!=typeof e)return!1;try{if(i.call(e),o)try{o.call(e)}catch(e){return!0}return e instanceof r}catch(e){}return!1}},7070:(e,n,t)=>{"use strict";var r=t(6556)("SharedArrayBuffer.prototype.byteLength",!0);e.exports=r?function(e){if(!e||"object"!=typeof e)return!1;try{return r(e),!0}catch(e){return!1}}:function(e){return!1}},4761:(e,n,t)=>{"use strict";var r=t(6556),o=r("String.prototype.valueOf"),i=r("Object.prototype.toString"),a=t(9092)();e.exports=function(e){return"string"==typeof e||!(!e||"object"!=typeof e)&&(a?function(e){try{return o(e),!0}catch(e){return!1}}(e):"[object String]"===i(e))}},3612:(e,n,t)=>{"use strict";var r=t(6556),o=r("Object.prototype.toString"),i=t(4039)(),a=t(9721);if(i){var l=r("Symbol.prototype.toString"),c=a(/^Symbol\(.*\)$/);e.exports=function(e){if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||"[object Symbol]"!==o(e))return!1;try{return function(e){return"symbol"==typeof e.valueOf()&&c(l(e))}(e)}catch(e){return!1}}}else e.exports=function(e){return!1}},7842:e=>{"use strict";var n,t="function"==typeof WeakMap&&WeakMap.prototype?WeakMap:null,r="function"==typeof WeakSet&&WeakSet.prototype?WeakSet:null;t||(n=function(e){return!1});var o=t?t.prototype.has:null,i=r?r.prototype.has:null;n||o||(n=function(e){return!1}),e.exports=n||function(e){if(!e||"object"!=typeof e)return!1;try{if(o.call(e,o),i)try{i.call(e,i)}catch(e){return!0}return e instanceof t}catch(e){}return!1}},2648:(e,n,t)=>{"use strict";var r=t(453),o=t(6556),i=r("%WeakSet%",!0),a=o("WeakSet.prototype.has",!0);if(a){var l=o("WeakMap.prototype.has",!0);e.exports=function(e){if(!e||"object"!=typeof e)return!1;try{if(a(e,a),l)try{l(e,l)}catch(e){return!0}return e instanceof i}catch(e){}return!1}}else e.exports=function(e){return!1}},4634:e=>{var n={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},1514:e=>{"use strict";e.exports=Math.abs},8968:e=>{"use strict";e.exports=Math.floor},4459:e=>{"use strict";e.exports=Number.isNaN||function(e){return e!=e}},6188:e=>{"use strict";e.exports=Math.max},8002:e=>{"use strict";e.exports=Math.min},5880:e=>{"use strict";e.exports=Math.pow},414:e=>{"use strict";e.exports=Math.round},3093:(e,n,t)=>{"use strict";var r=t(4459);e.exports=function(e){return r(e)||0===e?e:e<0?-1:1}},5228:e=>{"use strict"; +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/var n=Object.getOwnPropertySymbols,t=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var n={},t=0;t<10;t++)n["_"+String.fromCharCode(t)]=t;if("0123456789"!==Object.getOwnPropertyNames(n).map((function(e){return n[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,o){for(var i,a,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),c=1;c{var r="function"==typeof Map&&Map.prototype,o=Object.getOwnPropertyDescriptor&&r?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,i=r&&o&&"function"==typeof o.get?o.get:null,a=r&&Map.prototype.forEach,l="function"==typeof Set&&Set.prototype,c=Object.getOwnPropertyDescriptor&&l?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,s=l&&c&&"function"==typeof c.get?c.get:null,u=l&&Set.prototype.forEach,p="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,f="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,d="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,g=Boolean.prototype.valueOf,h=Object.prototype.toString,A=Function.prototype.toString,b=String.prototype.match,v=String.prototype.slice,m=String.prototype.replace,y=String.prototype.toUpperCase,E=String.prototype.toLowerCase,C=RegExp.prototype.test,w=Array.prototype.concat,x=Array.prototype.join,S=Array.prototype.slice,_=Math.floor,k="function"==typeof BigInt?BigInt.prototype.valueOf:null,O=Object.getOwnPropertySymbols,B="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,P="function"==typeof Symbol&&"object"==typeof Symbol.iterator,T="function"==typeof Symbol&&Symbol.toStringTag&&(typeof Symbol.toStringTag===P||"symbol")?Symbol.toStringTag:null,I=Object.prototype.propertyIsEnumerable,j=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null);function z(e,n){if(e===1/0||e===-1/0||e!=e||e&&e>-1e3&&e<1e3||C.call(/e/,n))return n;var t=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof e){var r=e<0?-_(-e):_(e);if(r!==e){var o=String(r),i=v.call(n,o.length+1);return m.call(o,t,"$&_")+"."+m.call(m.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return m.call(n,t,"$&_")}var D=t(2634),R=D.custom,M=Y(R)?R:null,N={__proto__:null,double:'"',single:"'"},F={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};function L(e,n,t){var r=t.quoteStyle||n,o=N[r];return o+e+o}function H(e){return m.call(String(e),/"/g,""")}function U(e){return!T||!("object"==typeof e&&(T in e||void 0!==e[T]))}function W(e){return"[object Array]"===$(e)&&U(e)}function G(e){return"[object RegExp]"===$(e)&&U(e)}function Y(e){if(P)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!B)return!1;try{return B.call(e),!0}catch(e){}return!1}e.exports=function e(n,r,o,l){var c=r||{};if(V(c,"quoteStyle")&&!V(N,c.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(V(c,"maxStringLength")&&("number"==typeof c.maxStringLength?c.maxStringLength<0&&c.maxStringLength!==1/0:null!==c.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var h=!V(c,"customInspect")||c.customInspect;if("boolean"!=typeof h&&"symbol"!==h)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(V(c,"indent")&&null!==c.indent&&"\t"!==c.indent&&!(parseInt(c.indent,10)===c.indent&&c.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(V(c,"numericSeparator")&&"boolean"!=typeof c.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var y=c.numericSeparator;if(void 0===n)return"undefined";if(null===n)return"null";if("boolean"==typeof n)return n?"true":"false";if("string"==typeof n)return Q(n,c);if("number"==typeof n){if(0===n)return 1/0/n>0?"0":"-0";var C=String(n);return y?z(n,C):C}if("bigint"==typeof n){var _=String(n)+"n";return y?z(n,_):_}var O=void 0===c.depth?5:c.depth;if(void 0===o&&(o=0),o>=O&&O>0&&"object"==typeof n)return W(n)?"[Array]":"[Object]";var R=function(e,n){var t;if("\t"===e.indent)t="\t";else{if(!("number"==typeof e.indent&&e.indent>0))return null;t=x.call(Array(e.indent+1)," ")}return{base:t,prev:x.call(Array(n+1),t)}}(c,o);if(void 0===l)l=[];else if(K(l,n)>=0)return"[Circular]";function F(n,t,r){if(t&&(l=S.call(l)).push(t),r){var i={depth:c.depth};return V(c,"quoteStyle")&&(i.quoteStyle=c.quoteStyle),e(n,i,o+1,l)}return e(n,c,o+1,l)}if("function"==typeof n&&!G(n)){var q=function(e){if(e.name)return e.name;var n=b.call(A.call(e),/^function\s*([\w$]+)/);if(n)return n[1];return null}(n),X=te(n,F);return"[Function"+(q?": "+q:" (anonymous)")+"]"+(X.length>0?" { "+x.call(X,", ")+" }":"")}if(Y(n)){var re=P?m.call(String(n),/^(Symbol\(.*\))_[^)]*$/,"$1"):B.call(n);return"object"!=typeof n||P?re:Z(re)}if(function(e){if(!e||"object"!=typeof e)return!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement)return!0;return"string"==typeof e.nodeName&&"function"==typeof e.getAttribute}(n)){for(var oe="<"+E.call(String(n.nodeName)),ie=n.attributes||[],ae=0;ae"}if(W(n)){if(0===n.length)return"[]";var le=te(n,F);return R&&!function(e){for(var n=0;n=0)return!1;return!0}(le)?"["+ne(le,R)+"]":"[ "+x.call(le,", ")+" ]"}if(function(e){return"[object Error]"===$(e)&&U(e)}(n)){var ce=te(n,F);return"cause"in Error.prototype||!("cause"in n)||I.call(n,"cause")?0===ce.length?"["+String(n)+"]":"{ ["+String(n)+"] "+x.call(ce,", ")+" }":"{ ["+String(n)+"] "+x.call(w.call("[cause]: "+F(n.cause),ce),", ")+" }"}if("object"==typeof n&&h){if(M&&"function"==typeof n[M]&&D)return D(n,{depth:O-o});if("symbol"!==h&&"function"==typeof n.inspect)return n.inspect()}if(function(e){if(!i||!e||"object"!=typeof e)return!1;try{i.call(e);try{s.call(e)}catch(e){return!0}return e instanceof Map}catch(e){}return!1}(n)){var se=[];return a&&a.call(n,(function(e,t){se.push(F(t,n,!0)+" => "+F(e,n))})),ee("Map",i.call(n),se,R)}if(function(e){if(!s||!e||"object"!=typeof e)return!1;try{s.call(e);try{i.call(e)}catch(e){return!0}return e instanceof Set}catch(e){}return!1}(n)){var ue=[];return u&&u.call(n,(function(e){ue.push(F(e,n))})),ee("Set",s.call(n),ue,R)}if(function(e){if(!p||!e||"object"!=typeof e)return!1;try{p.call(e,p);try{f.call(e,f)}catch(e){return!0}return e instanceof WeakMap}catch(e){}return!1}(n))return J("WeakMap");if(function(e){if(!f||!e||"object"!=typeof e)return!1;try{f.call(e,f);try{p.call(e,p)}catch(e){return!0}return e instanceof WeakSet}catch(e){}return!1}(n))return J("WeakSet");if(function(e){if(!d||!e||"object"!=typeof e)return!1;try{return d.call(e),!0}catch(e){}return!1}(n))return J("WeakRef");if(function(e){return"[object Number]"===$(e)&&U(e)}(n))return Z(F(Number(n)));if(function(e){if(!e||"object"!=typeof e||!k)return!1;try{return k.call(e),!0}catch(e){}return!1}(n))return Z(F(k.call(n)));if(function(e){return"[object Boolean]"===$(e)&&U(e)}(n))return Z(g.call(n));if(function(e){return"[object String]"===$(e)&&U(e)}(n))return Z(F(String(n)));if("undefined"!=typeof window&&n===window)return"{ [object Window] }";if("undefined"!=typeof globalThis&&n===globalThis||void 0!==t.g&&n===t.g)return"{ [object globalThis] }";if(!function(e){return"[object Date]"===$(e)&&U(e)}(n)&&!G(n)){var pe=te(n,F),fe=j?j(n)===Object.prototype:n instanceof Object||n.constructor===Object,de=n instanceof Object?"":"null prototype",ge=!fe&&T&&Object(n)===n&&T in n?v.call($(n),8,-1):de?"Object":"",he=(fe||"function"!=typeof n.constructor?"":n.constructor.name?n.constructor.name+" ":"")+(ge||de?"["+x.call(w.call([],ge||[],de||[]),": ")+"] ":"");return 0===pe.length?he+"{}":R?he+"{"+ne(pe,R)+"}":he+"{ "+x.call(pe,", ")+" }"}return String(n)};var q=Object.prototype.hasOwnProperty||function(e){return e in this};function V(e,n){return q.call(e,n)}function $(e){return h.call(e)}function K(e,n){if(e.indexOf)return e.indexOf(n);for(var t=0,r=e.length;tn.maxStringLength){var t=e.length-n.maxStringLength,r="... "+t+" more character"+(t>1?"s":"");return Q(v.call(e,0,n.maxStringLength),n)+r}var o=F[n.quoteStyle||"single"];return o.lastIndex=0,L(m.call(m.call(e,o,"\\$1"),/[\x00-\x1f]/g,X),"single",n)}function X(e){var n=e.charCodeAt(0),t={8:"b",9:"t",10:"n",12:"f",13:"r"}[n];return t?"\\"+t:"\\x"+(n<16?"0":"")+y.call(n.toString(16))}function Z(e){return"Object("+e+")"}function J(e){return e+" { ? }"}function ee(e,n,t,r){return e+" ("+n+") {"+(r?ne(t,r):x.call(t,", "))+"}"}function ne(e,n){if(0===e.length)return"";var t="\n"+n.prev+n.base;return t+x.call(e,","+t)+"\n"+n.prev}function te(e,n){var t=W(e),r=[];if(t){r.length=e.length;for(var o=0;o{"use strict";var n=function(e){return e!=e};e.exports=function(e,t){return 0===e&&0===t?1/e==1/t:e===t||!(!n(e)||!n(t))}},7653:(e,n,t)=>{"use strict";var r=t(8452),o=t(487),i=t(9211),a=t(9394),l=t(6576),c=o(a(),Object);r(c,{getPolyfill:a,implementation:i,shim:l}),e.exports=c},9394:(e,n,t)=>{"use strict";var r=t(9211);e.exports=function(){return"function"==typeof Object.is?Object.is:r}},6576:(e,n,t)=>{"use strict";var r=t(9394),o=t(8452);e.exports=function(){var e=r();return o(Object,{is:e},{is:function(){return Object.is!==e}}),e}},8875:(e,n,t)=>{"use strict";var r;if(!Object.keys){var o=Object.prototype.hasOwnProperty,i=Object.prototype.toString,a=t(1093),l=Object.prototype.propertyIsEnumerable,c=!l.call({toString:null},"toString"),s=l.call((function(){}),"prototype"),u=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],p=function(e){var n=e.constructor;return n&&n.prototype===e},f={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},d=function(){if("undefined"==typeof window)return!1;for(var e in window)try{if(!f["$"+e]&&o.call(window,e)&&null!==window[e]&&"object"==typeof window[e])try{p(window[e])}catch(e){return!0}}catch(e){return!0}return!1}();r=function(e){var n=null!==e&&"object"==typeof e,t="[object Function]"===i.call(e),r=a(e),l=n&&"[object String]"===i.call(e),f=[];if(!n&&!t&&!r)throw new TypeError("Object.keys called on a non-object");var g=s&&t;if(l&&e.length>0&&!o.call(e,0))for(var h=0;h0)for(var A=0;A{"use strict";var r=Array.prototype.slice,o=t(1093),i=Object.keys,a=i?function(e){return i(e)}:t(8875),l=Object.keys;a.shim=function(){if(Object.keys){var e=function(){var e=Object.keys(arguments);return e&&e.length===arguments.length}(1,2);e||(Object.keys=function(e){return o(e)?l(r.call(e)):l(e)})}else Object.keys=a;return Object.keys||a},e.exports=a},1093:e=>{"use strict";var n=Object.prototype.toString;e.exports=function(e){var t=n.call(e),r="[object Arguments]"===t;return r||(r="[object Array]"!==t&&null!==e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&"[object Function]"===n.call(e.callee)),r}},8403:(e,n,t)=>{"use strict";var r=t(1189),o=t(1333)(),i=t(6556),a=t(9612),l=i("Array.prototype.push"),c=i("Object.prototype.propertyIsEnumerable"),s=o?a.getOwnPropertySymbols:null;e.exports=function(e,n){if(null==e)throw new TypeError("target must be an object");var t=a(e);if(1===arguments.length)return t;for(var i=1;i{"use strict";var r=t(8452),o=t(487),i=t(8403),a=t(9133),l=t(984),c=o.apply(a()),s=function(e,n){return c(Object,arguments)};r(s,{getPolyfill:a,implementation:i,shim:l}),e.exports=s},9133:(e,n,t)=>{"use strict";var r=t(8403);e.exports=function(){return Object.assign?function(){if(!Object.assign)return!1;for(var e="abcdefghijklmnopqrst",n=e.split(""),t={},r=0;r{"use strict";var r=t(8452),o=t(9133);e.exports=function(){var e=o();return r(Object,{assign:e},{assign:function(){return Object.assign!==e}}),e}},6578:e=>{"use strict";e.exports=["Float16Array","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array"]},2694:(e,n,t)=>{"use strict";var r=t(6925);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,n,t,o,i,a){if(a!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function n(){return e}e.isRequired=e;var t={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:n,element:e,elementType:e,instanceOf:n,node:e,objectOf:n,oneOf:n,oneOfType:n,shape:n,exact:n,checkPropTypes:i,resetWarningCache:o};return t.PropTypes=t,t}},5556:(e,n,t)=>{e.exports=t(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},2551:(e,n,t)=>{"use strict";var r=t(6540),o=t(5228),i=t(9982); +/** @license React v17.0.2 + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function a(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,t=1;t